ni_nitdoc: new workflow for comment modification
[nit.git] / c_src / nitc._tables.c
index 891ad2c..3c3dce9 100644 (file)
@@ -1,16 +1,22 @@
 /* This C file is generated by NIT to compile program nitc. */
+#include "global._sep.h"
 #include "abstracttool._sep.h"
 #include "syntax._sep.h"
-#include "syntax___mmbuilder._sep.h"
-#include "syntax___syntax_base._sep.h"
-#include "parser._sep.h"
-#include "parser___parser_prod._sep.h"
-#include "parser___lexer._sep.h"
-#include "parser___parser_nodes._sep.h"
-#include "location._sep.h"
+#include "syntax___icode_generation._sep.h"
+#include "icode._sep.h"
+#include "icode___icode_tools._sep.h"
+#include "icode___icode_builder._sep.h"
+#include "icode___icode_base._sep.h"
+#include "metamodel._sep.h"
+#include "metamodel___vararg._sep.h"
+#include "metamodel___genericity._sep.h"
+#include "metamodel___type_formal._sep.h"
+#include "metamodel___inheritance._sep.h"
+#include "metamodel___static_type._sep.h"
+#include "metamodel___abstractmetamodel._sep.h"
+#include "metamodel___partial_order._sep.h"
 #include "standard._sep.h"
 #include "standard___environ._sep.h"
-#include "standard___symbol._sep.h"
 #include "standard___string._sep.h"
 #include "standard___collection._sep.h"
 #include "standard___collection___range._sep.h"
 #include "standard___string_search._sep.h"
 #include "standard___exec._sep.h"
 #include "standard___math._sep.h"
-#include "parser___tables._sep.h"
-#include "mmloader._sep.h"
-#include "metamodel._sep.h"
-#include "metamodel___vararg._sep.h"
-#include "metamodel___genericity._sep.h"
-#include "metamodel___type_formal._sep.h"
-#include "metamodel___inheritance._sep.h"
-#include "metamodel___static_type._sep.h"
-#include "metamodel___abstractmetamodel._sep.h"
-#include "metamodel___partial_order._sep.h"
+#include "standard___gc._sep.h"
+#include "location._sep.h"
+#include "symbol._sep.h"
 #include "metamodel___virtualtype._sep.h"
-#include "opts._sep.h"
-#include "primitive_info._sep.h"
-#include "syntax___icode_generation._sep.h"
-#include "icode._sep.h"
-#include "icode___icode_tools._sep.h"
-#include "icode___icode_builder._sep.h"
-#include "icode___icode_base._sep.h"
 #include "syntax___typing._sep.h"
 #include "syntax___scope._sep.h"
 #include "syntax___flow._sep.h"
+#include "syntax___syntax_base._sep.h"
+#include "parser._sep.h"
+#include "parser___parser_prod._sep.h"
+#include "parser___lexer._sep.h"
+#include "parser___parser_nodes._sep.h"
+#include "parser___tables._sep.h"
+#include "mmloader._sep.h"
+#include "toolcontext._sep.h"
+#include "opts._sep.h"
+#include "primitive_info._sep.h"
+#include "syntax___extern_type_inheritance._sep.h"
+#include "syntax___extern_inline._sep.h"
+#include "syntax___mmbuilder._sep.h"
 #include "nit_version._sep.h"
+#include "global___cha_analysis._sep.h"
+#include "global___reachable_method_analysis._sep.h"
+#include "program._sep.h"
+#include "global___rta_analysis._sep.h"
+#include "global___instantiated_type_analysis._sep.h"
+#include "global___reachable_as_init_impl._sep.h"
+#include "global___reachable_as_init._sep.h"
+#include "global___reachable_from_init_method_analysis_impl._sep.h"
+#include "global___reachable_from_init_method_analysis._sep.h"
+#include "global___dead_method_removal._sep.h"
+#include "global___inline_get_and_set._sep.h"
+#include "global___remove_out_of_init_get_test._sep.h"
 #include "separate_options._sep.h"
+#include "ffi._sep.h"
+#include "ffi___c._sep.h"
+#include "ffi___ffi_base._sep.h"
 #include "native_interface._sep.h"
 #include "native_interface___frontier._sep.h"
 #include "native_interface___ni_tools._sep.h"
 #include "compiling___icode_generator._sep.h"
 #include "compiling___compiling_base._sep.h"
 #include "utils._sep.h"
-#include "program._sep.h"
-#include "compiling___compiling_writer._sep.h"
+#include "compiling_writer._sep.h"
 #include "analysis._sep.h"
 #include "analysis___icode_dump._sep.h"
 #include "analysis___allocate_iregister_slots._sep.h"
 #include "analysis___inline_methods._sep.h"
-#include "analysis___cha_analysis._sep.h"
-#include "analysis___reachable_method_analysis._sep.h"
-#include "analysis___rta_analysis._sep.h"
-#include "analysis___instantiated_type_analysis._sep.h"
-#include "analysis___reachable_as_init_impl._sep.h"
-#include "analysis___reachable_as_init._sep.h"
-#include "analysis___reachable_from_init_method_analysis_impl._sep.h"
-#include "analysis___reachable_from_init_method_analysis._sep.h"
-#include "analysis___dead_method_removal._sep.h"
-#include "analysis___inline_get_and_set._sep.h"
-#include "analysis___remove_out_of_init_get_test._sep.h"
 #include "compiling___compiling_global._sep.h"
 #include "compiling___table_computation._sep.h"
 #include "compiling___compiling_icode._sep.h"
 #include "native_interface___ni_metamodel._sep.h"
+#include "c_tools._sep.h"
 #include "nitc._sep.h"
 #include <nit_common.h>
-static const char * const LOCATE_INIT_ATTRIBUTES__nitc___NitCompiler = "init var of NitCompiler";
 void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0);
 typedef void (*INIT_ATTRIBUTES__nitc___NitCompiler_t)(val_t p0);
 val_t NEW_nitc___NitCompiler(void);
-static const char * const LOCATE_CHECKNEW_nitc___NitCompiler = "check new NitCompiler";
 void CHECKNEW_nitc___NitCompiler(val_t p0);
 typedef void (*CHECKNEW_nitc___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__standard___kernel___Sys = "init var of Sys";
+void INIT_ATTRIBUTES__toolcontext___ToolContext(val_t p0);
+typedef void (*INIT_ATTRIBUTES__toolcontext___ToolContext_t)(val_t p0);
+val_t NEW_toolcontext___ToolContext(void);
+void CHECKNEW_toolcontext___ToolContext(val_t p0);
+typedef void (*CHECKNEW_toolcontext___ToolContext_t)(val_t p0);
+val_t NEW_ToolContext_toolcontext___ToolContext___init(void);
+typedef val_t (*NEW_ToolContext_toolcontext___ToolContext___init_t)(void);
 void INIT_ATTRIBUTES__standard___kernel___Sys(val_t p0);
 typedef void (*INIT_ATTRIBUTES__standard___kernel___Sys_t)(val_t p0);
 val_t NEW_standard___kernel___Sys(void);
-static const char * const LOCATE_CHECKNEW_standard___kernel___Sys = "check new Sys";
 void CHECKNEW_standard___kernel___Sys(val_t p0);
 typedef void (*CHECKNEW_standard___kernel___Sys_t)(val_t p0);
-static const char * const LOCATE_NEW_Sys_standard___kernel___Sys___init = "new Sys kernel::Sys::init";
 val_t NEW_Sys_standard___kernel___Sys___init(void);
 typedef val_t (*NEW_Sys_standard___kernel___Sys___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___collection___abstract_collection___Container = "init var of Container";
 void INIT_ATTRIBUTES__standard___collection___abstract_collection___Container(val_t p0);
 typedef void (*INIT_ATTRIBUTES__standard___collection___abstract_collection___Container_t)(val_t p0);
 val_t NEW_standard___collection___abstract_collection___Container(void);
-static const char * const LOCATE_CHECKNEW_standard___collection___abstract_collection___Container = "check new Container";
 void CHECKNEW_standard___collection___abstract_collection___Container(val_t p0);
 typedef void (*CHECKNEW_standard___collection___abstract_collection___Container_t)(val_t p0);
-static const char * const LOCATE_NEW_Container_standard___collection___abstract_collection___Container___init = "new Container abstract_collection::Container::init";
 val_t NEW_Container_standard___collection___abstract_collection___Container___init(val_t p0);
 typedef val_t (*NEW_Container_standard___collection___abstract_collection___Container___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___collection___abstract_collection___ContainerIterator = "init var of ContainerIterator";
 void INIT_ATTRIBUTES__standard___collection___abstract_collection___ContainerIterator(val_t p0);
 typedef void (*INIT_ATTRIBUTES__standard___collection___abstract_collection___ContainerIterator_t)(val_t p0);
 val_t NEW_standard___collection___abstract_collection___ContainerIterator(void);
-static const char * const LOCATE_CHECKNEW_standard___collection___abstract_collection___ContainerIterator = "check new ContainerIterator";
 void CHECKNEW_standard___collection___abstract_collection___ContainerIterator(val_t p0);
 typedef void (*CHECKNEW_standard___collection___abstract_collection___ContainerIterator_t)(val_t p0);
-static const char * const LOCATE_NEW_ContainerIterator_standard___collection___abstract_collection___ContainerIterator___init = "new ContainerIterator abstract_collection::ContainerIterator::init";
 val_t NEW_ContainerIterator_standard___collection___abstract_collection___ContainerIterator___init(val_t p0);
 typedef val_t (*NEW_ContainerIterator_standard___collection___abstract_collection___ContainerIterator___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___collection___abstract_collection___MapKeysIterator = "init var of MapKeysIterator";
 void INIT_ATTRIBUTES__standard___collection___abstract_collection___MapKeysIterator(val_t p0);
 typedef void (*INIT_ATTRIBUTES__standard___collection___abstract_collection___MapKeysIterator_t)(val_t p0);
 val_t NEW_standard___collection___abstract_collection___MapKeysIterator(void);
-static const char * const LOCATE_CHECKNEW_standard___collection___abstract_collection___MapKeysIterator = "check new MapKeysIterator";
 void CHECKNEW_standard___collection___abstract_collection___MapKeysIterator(val_t p0);
 typedef void (*CHECKNEW_standard___collection___abstract_collection___MapKeysIterator_t)(val_t p0);
-static const char * const LOCATE_NEW_MapKeysIterator_standard___collection___abstract_collection___MapKeysIterator___init = "new MapKeysIterator abstract_collection::MapKeysIterator::init";
 val_t NEW_MapKeysIterator_standard___collection___abstract_collection___MapKeysIterator___init(val_t p0);
 typedef val_t (*NEW_MapKeysIterator_standard___collection___abstract_collection___MapKeysIterator___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___collection___abstract_collection___MapValuesIterator = "init var of MapValuesIterator";
 void INIT_ATTRIBUTES__standard___collection___abstract_collection___MapValuesIterator(val_t p0);
 typedef void (*INIT_ATTRIBUTES__standard___collection___abstract_collection___MapValuesIterator_t)(val_t p0);
 val_t NEW_standard___collection___abstract_collection___MapValuesIterator(void);
-static const char * const LOCATE_CHECKNEW_standard___collection___abstract_collection___MapValuesIterator = "check new MapValuesIterator";
 void CHECKNEW_standard___collection___abstract_collection___MapValuesIterator(val_t p0);
 typedef void (*CHECKNEW_standard___collection___abstract_collection___MapValuesIterator_t)(val_t p0);
-static const char * const LOCATE_NEW_MapValuesIterator_standard___collection___abstract_collection___MapValuesIterator___init = "new MapValuesIterator abstract_collection::MapValuesIterator::init";
 val_t NEW_MapValuesIterator_standard___collection___abstract_collection___MapValuesIterator___init(val_t p0);
 typedef val_t (*NEW_MapValuesIterator_standard___collection___abstract_collection___MapValuesIterator___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___collection___abstract_collection___CoupleMapIterator = "init var of CoupleMapIterator";
 void INIT_ATTRIBUTES__standard___collection___abstract_collection___CoupleMapIterator(val_t p0);
 typedef void (*INIT_ATTRIBUTES__standard___collection___abstract_collection___CoupleMapIterator_t)(val_t p0);
 val_t NEW_standard___collection___abstract_collection___CoupleMapIterator(void);
-static const char * const LOCATE_CHECKNEW_standard___collection___abstract_collection___CoupleMapIterator = "check new CoupleMapIterator";
 void CHECKNEW_standard___collection___abstract_collection___CoupleMapIterator(val_t p0);
 typedef void (*CHECKNEW_standard___collection___abstract_collection___CoupleMapIterator_t)(val_t p0);
-static const char * const LOCATE_NEW_CoupleMapIterator_standard___collection___abstract_collection___CoupleMapIterator___init = "new CoupleMapIterator abstract_collection::CoupleMapIterator::init";
 val_t NEW_CoupleMapIterator_standard___collection___abstract_collection___CoupleMapIterator___init(val_t p0);
 typedef val_t (*NEW_CoupleMapIterator_standard___collection___abstract_collection___CoupleMapIterator___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___collection___abstract_collection___Couple = "init var of Couple";
 void INIT_ATTRIBUTES__standard___collection___abstract_collection___Couple(val_t p0);
 typedef void (*INIT_ATTRIBUTES__standard___collection___abstract_collection___Couple_t)(val_t p0);
 val_t NEW_standard___collection___abstract_collection___Couple(void);
-static const char * const LOCATE_CHECKNEW_standard___collection___abstract_collection___Couple = "check new Couple";
 void CHECKNEW_standard___collection___abstract_collection___Couple(val_t p0);
 typedef void (*CHECKNEW_standard___collection___abstract_collection___Couple_t)(val_t p0);
-static const char * const LOCATE_NEW_Couple_standard___collection___abstract_collection___Couple___init = "new Couple abstract_collection::Couple::init";
 val_t NEW_Couple_standard___collection___abstract_collection___Couple___init(val_t p0, val_t p1);
 typedef val_t (*NEW_Couple_standard___collection___abstract_collection___Couple___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___collection___range___Range = "init var of Range";
 void INIT_ATTRIBUTES__standard___collection___range___Range(val_t p0);
 typedef void (*INIT_ATTRIBUTES__standard___collection___range___Range_t)(val_t p0);
 val_t NEW_standard___collection___range___Range(void);
-static const char * const LOCATE_CHECKNEW_standard___collection___range___Range = "check new Range";
 void CHECKNEW_standard___collection___range___Range(val_t p0);
 typedef void (*CHECKNEW_standard___collection___range___Range_t)(val_t p0);
-static const char * const LOCATE_NEW_Range_standard___collection___range___Range___init = "new Range range::Range::init";
 val_t NEW_Range_standard___collection___range___Range___init(val_t p0, val_t p1);
 typedef val_t (*NEW_Range_standard___collection___range___Range___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_Range_standard___collection___range___Range___without_last = "new Range range::Range::without_last";
 val_t NEW_Range_standard___collection___range___Range___without_last(val_t p0, val_t p1);
 typedef val_t (*NEW_Range_standard___collection___range___Range___without_last_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___collection___range___IteratorRange = "init var of IteratorRange";
 void INIT_ATTRIBUTES__standard___collection___range___IteratorRange(val_t p0);
 typedef void (*INIT_ATTRIBUTES__standard___collection___range___IteratorRange_t)(val_t p0);
 val_t NEW_standard___collection___range___IteratorRange(void);
-static const char * const LOCATE_CHECKNEW_standard___collection___range___IteratorRange = "check new IteratorRange";
 void CHECKNEW_standard___collection___range___IteratorRange(val_t p0);
 typedef void (*CHECKNEW_standard___collection___range___IteratorRange_t)(val_t p0);
-static const char * const LOCATE_NEW_IteratorRange_standard___collection___range___IteratorRange___init = "new IteratorRange range::IteratorRange::init";
 val_t NEW_IteratorRange_standard___collection___range___IteratorRange___init(val_t p0);
 typedef val_t (*NEW_IteratorRange_standard___collection___range___IteratorRange___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___collection___list___List = "init var of List";
 void INIT_ATTRIBUTES__standard___collection___list___List(val_t p0);
 typedef void (*INIT_ATTRIBUTES__standard___collection___list___List_t)(val_t p0);
 val_t NEW_standard___collection___list___List(void);
-static const char * const LOCATE_CHECKNEW_standard___collection___list___List = "check new List";
 void CHECKNEW_standard___collection___list___List(val_t p0);
 typedef void (*CHECKNEW_standard___collection___list___List_t)(val_t p0);
-static const char * const LOCATE_NEW_List_standard___collection___list___List___init = "new List list::List::init";
 val_t NEW_List_standard___collection___list___List___init(void);
 typedef val_t (*NEW_List_standard___collection___list___List___init_t)(void);
-static const char * const LOCATE_NEW_List_standard___collection___list___List___from = "new List list::List::from";
 val_t NEW_List_standard___collection___list___List___from(val_t p0);
 typedef val_t (*NEW_List_standard___collection___list___List___from_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___collection___list___ListIterator = "init var of ListIterator";
 void INIT_ATTRIBUTES__standard___collection___list___ListIterator(val_t p0);
 typedef void (*INIT_ATTRIBUTES__standard___collection___list___ListIterator_t)(val_t p0);
 val_t NEW_standard___collection___list___ListIterator(void);
-static const char * const LOCATE_CHECKNEW_standard___collection___list___ListIterator = "check new ListIterator";
 void CHECKNEW_standard___collection___list___ListIterator(val_t p0);
 typedef void (*CHECKNEW_standard___collection___list___ListIterator_t)(val_t p0);
-static const char * const LOCATE_NEW_ListIterator_standard___collection___list___ListIterator___init = "new ListIterator list::ListIterator::init";
 val_t NEW_ListIterator_standard___collection___list___ListIterator___init(val_t p0);
 typedef val_t (*NEW_ListIterator_standard___collection___list___ListIterator___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___collection___list___ListNode = "init var of ListNode";
 void INIT_ATTRIBUTES__standard___collection___list___ListNode(val_t p0);
 typedef void (*INIT_ATTRIBUTES__standard___collection___list___ListNode_t)(val_t p0);
 val_t NEW_standard___collection___list___ListNode(void);
-static const char * const LOCATE_CHECKNEW_standard___collection___list___ListNode = "check new ListNode";
 void CHECKNEW_standard___collection___list___ListNode(val_t p0);
 typedef void (*CHECKNEW_standard___collection___list___ListNode_t)(val_t p0);
-static const char * const LOCATE_NEW_ListNode_standard___collection___list___ListNode___init = "new ListNode list::ListNode::init";
 val_t NEW_ListNode_standard___collection___list___ListNode___init(val_t p0);
 typedef val_t (*NEW_ListNode_standard___collection___list___ListNode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___collection___array___AbstractArrayRead = "init var of AbstractArrayRead";
-void INIT_ATTRIBUTES__standard___collection___array___AbstractArrayRead(val_t p0);
-typedef void (*INIT_ATTRIBUTES__standard___collection___array___AbstractArrayRead_t)(val_t p0);
-val_t NEW_standard___collection___array___AbstractArrayRead(void);
-static const char * const LOCATE_CHECKNEW_standard___collection___array___AbstractArrayRead = "check new AbstractArrayRead";
-void CHECKNEW_standard___collection___array___AbstractArrayRead(val_t p0);
-typedef void (*CHECKNEW_standard___collection___array___AbstractArrayRead_t)(val_t p0);
-static const char * const LOCATE_NEW_AbstractArrayRead_standard___collection___array___AbstractArrayRead___init = "new AbstractArrayRead array::AbstractArrayRead::init";
-val_t NEW_AbstractArrayRead_standard___collection___array___AbstractArrayRead___init(void);
-typedef val_t (*NEW_AbstractArrayRead_standard___collection___array___AbstractArrayRead___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___collection___array___AbstractArray = "init var of AbstractArray";
-void INIT_ATTRIBUTES__standard___collection___array___AbstractArray(val_t p0);
-typedef void (*INIT_ATTRIBUTES__standard___collection___array___AbstractArray_t)(val_t p0);
-val_t NEW_standard___collection___array___AbstractArray(void);
-static const char * const LOCATE_CHECKNEW_standard___collection___array___AbstractArray = "check new AbstractArray";
-void CHECKNEW_standard___collection___array___AbstractArray(val_t p0);
-typedef void (*CHECKNEW_standard___collection___array___AbstractArray_t)(val_t p0);
-static const char * const LOCATE_NEW_AbstractArray_standard___collection___array___AbstractArrayRead___init = "new AbstractArray array::AbstractArrayRead::init";
-val_t NEW_AbstractArray_standard___collection___array___AbstractArrayRead___init(void);
-typedef val_t (*NEW_AbstractArray_standard___collection___array___AbstractArrayRead___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___collection___array___Array = "init var of Array";
 void INIT_ATTRIBUTES__standard___collection___array___Array(val_t p0);
 typedef void (*INIT_ATTRIBUTES__standard___collection___array___Array_t)(val_t p0);
 val_t NEW_standard___collection___array___Array(void);
-static const char * const LOCATE_CHECKNEW_standard___collection___array___Array = "check new Array";
 void CHECKNEW_standard___collection___array___Array(val_t p0);
 typedef void (*CHECKNEW_standard___collection___array___Array_t)(val_t p0);
-static const char * const LOCATE_NEW_Array_standard___collection___array___Array___with_capacity = "new Array array::Array::with_capacity";
 val_t NEW_Array_standard___collection___array___Array___with_capacity(val_t p0);
 typedef val_t (*NEW_Array_standard___collection___array___Array___with_capacity_t)(val_t p0);
-static const char * const LOCATE_NEW_Array_standard___collection___array___Array___init = "new Array array::Array::init";
 val_t NEW_Array_standard___collection___array___Array___init(void);
 typedef val_t (*NEW_Array_standard___collection___array___Array___init_t)(void);
-static const char * const LOCATE_NEW_Array_standard___collection___array___Array___filled_with = "new Array array::Array::filled_with";
 val_t NEW_Array_standard___collection___array___Array___filled_with(val_t p0, val_t p1);
 typedef val_t (*NEW_Array_standard___collection___array___Array___filled_with_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_Array_standard___collection___array___Array___with_items = "new Array array::Array::with_items";
 val_t NEW_Array_standard___collection___array___Array___with_items(val_t p0);
 typedef val_t (*NEW_Array_standard___collection___array___Array___with_items_t)(val_t p0);
-static const char * const LOCATE_NEW_Array_standard___collection___array___Array___with_native = "new Array array::Array::with_native";
+val_t NEW_Array_standard___collection___array___Array___from(val_t p0);
+typedef val_t (*NEW_Array_standard___collection___array___Array___from_t)(val_t p0);
 val_t NEW_Array_standard___collection___array___Array___with_native(val_t p0, val_t p1);
 typedef val_t (*NEW_Array_standard___collection___array___Array___with_native_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___collection___array___ArrayIterator = "init var of ArrayIterator";
 void INIT_ATTRIBUTES__standard___collection___array___ArrayIterator(val_t p0);
 typedef void (*INIT_ATTRIBUTES__standard___collection___array___ArrayIterator_t)(val_t p0);
 val_t NEW_standard___collection___array___ArrayIterator(void);
-static const char * const LOCATE_CHECKNEW_standard___collection___array___ArrayIterator = "check new ArrayIterator";
 void CHECKNEW_standard___collection___array___ArrayIterator(val_t p0);
 typedef void (*CHECKNEW_standard___collection___array___ArrayIterator_t)(val_t p0);
-static const char * const LOCATE_NEW_ArrayIterator_standard___collection___array___ArrayIterator___init = "new ArrayIterator array::ArrayIterator::init";
 val_t NEW_ArrayIterator_standard___collection___array___ArrayIterator___init(val_t p0);
 typedef val_t (*NEW_ArrayIterator_standard___collection___array___ArrayIterator___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___collection___array___ArraySet = "init var of ArraySet";
 void INIT_ATTRIBUTES__standard___collection___array___ArraySet(val_t p0);
 typedef void (*INIT_ATTRIBUTES__standard___collection___array___ArraySet_t)(val_t p0);
 val_t NEW_standard___collection___array___ArraySet(void);
-static const char * const LOCATE_CHECKNEW_standard___collection___array___ArraySet = "check new ArraySet";
 void CHECKNEW_standard___collection___array___ArraySet(val_t p0);
 typedef void (*CHECKNEW_standard___collection___array___ArraySet_t)(val_t p0);
-static const char * const LOCATE_NEW_ArraySet_standard___collection___array___ArraySet___init = "new ArraySet array::ArraySet::init";
 val_t NEW_ArraySet_standard___collection___array___ArraySet___init(void);
 typedef val_t (*NEW_ArraySet_standard___collection___array___ArraySet___init_t)(void);
-static const char * const LOCATE_NEW_ArraySet_standard___collection___array___ArraySet___with_capacity = "new ArraySet array::ArraySet::with_capacity";
 val_t NEW_ArraySet_standard___collection___array___ArraySet___with_capacity(val_t p0);
 typedef val_t (*NEW_ArraySet_standard___collection___array___ArraySet___with_capacity_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___collection___array___ArraySetIterator = "init var of ArraySetIterator";
 void INIT_ATTRIBUTES__standard___collection___array___ArraySetIterator(val_t p0);
 typedef void (*INIT_ATTRIBUTES__standard___collection___array___ArraySetIterator_t)(val_t p0);
 val_t NEW_standard___collection___array___ArraySetIterator(void);
-static const char * const LOCATE_CHECKNEW_standard___collection___array___ArraySetIterator = "check new ArraySetIterator";
 void CHECKNEW_standard___collection___array___ArraySetIterator(val_t p0);
 typedef void (*CHECKNEW_standard___collection___array___ArraySetIterator_t)(val_t p0);
-static const char * const LOCATE_NEW_ArraySetIterator_standard___collection___array___ArraySetIterator___init = "new ArraySetIterator array::ArraySetIterator::init";
 val_t NEW_ArraySetIterator_standard___collection___array___ArraySetIterator___init(val_t p0);
 typedef val_t (*NEW_ArraySetIterator_standard___collection___array___ArraySetIterator___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___collection___array___ArrayMap = "init var of ArrayMap";
 void INIT_ATTRIBUTES__standard___collection___array___ArrayMap(val_t p0);
 typedef void (*INIT_ATTRIBUTES__standard___collection___array___ArrayMap_t)(val_t p0);
 val_t NEW_standard___collection___array___ArrayMap(void);
-static const char * const LOCATE_CHECKNEW_standard___collection___array___ArrayMap = "check new ArrayMap";
 void CHECKNEW_standard___collection___array___ArrayMap(val_t p0);
 typedef void (*CHECKNEW_standard___collection___array___ArrayMap_t)(val_t p0);
-static const char * const LOCATE_NEW_ArrayMap_standard___collection___array___ArrayMap___init = "new ArrayMap array::ArrayMap::init";
 val_t NEW_ArrayMap_standard___collection___array___ArrayMap___init(void);
 typedef val_t (*NEW_ArrayMap_standard___collection___array___ArrayMap___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___collection___array___ArrayMapKeys = "init var of ArrayMapKeys";
 void INIT_ATTRIBUTES__standard___collection___array___ArrayMapKeys(val_t p0);
 typedef void (*INIT_ATTRIBUTES__standard___collection___array___ArrayMapKeys_t)(val_t p0);
 val_t NEW_standard___collection___array___ArrayMapKeys(void);
-static const char * const LOCATE_CHECKNEW_standard___collection___array___ArrayMapKeys = "check new ArrayMapKeys";
 void CHECKNEW_standard___collection___array___ArrayMapKeys(val_t p0);
 typedef void (*CHECKNEW_standard___collection___array___ArrayMapKeys_t)(val_t p0);
-static const char * const LOCATE_NEW_ArrayMapKeys_standard___collection___array___ArrayMapKeys___init = "new ArrayMapKeys array::ArrayMapKeys::init";
 val_t NEW_ArrayMapKeys_standard___collection___array___ArrayMapKeys___init(val_t p0);
 typedef val_t (*NEW_ArrayMapKeys_standard___collection___array___ArrayMapKeys___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___collection___array___ArrayMapValues = "init var of ArrayMapValues";
 void INIT_ATTRIBUTES__standard___collection___array___ArrayMapValues(val_t p0);
 typedef void (*INIT_ATTRIBUTES__standard___collection___array___ArrayMapValues_t)(val_t p0);
 val_t NEW_standard___collection___array___ArrayMapValues(void);
-static const char * const LOCATE_CHECKNEW_standard___collection___array___ArrayMapValues = "check new ArrayMapValues";
 void CHECKNEW_standard___collection___array___ArrayMapValues(val_t p0);
 typedef void (*CHECKNEW_standard___collection___array___ArrayMapValues_t)(val_t p0);
-static const char * const LOCATE_NEW_ArrayMapValues_standard___collection___array___ArrayMapValues___init = "new ArrayMapValues array::ArrayMapValues::init";
 val_t NEW_ArrayMapValues_standard___collection___array___ArrayMapValues___init(val_t p0);
 typedef val_t (*NEW_ArrayMapValues_standard___collection___array___ArrayMapValues___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___collection___sorter___AbstractSorter = "init var of AbstractSorter";
-void INIT_ATTRIBUTES__standard___collection___sorter___AbstractSorter(val_t p0);
-typedef void (*INIT_ATTRIBUTES__standard___collection___sorter___AbstractSorter_t)(val_t p0);
-val_t NEW_standard___collection___sorter___AbstractSorter(void);
-static const char * const LOCATE_CHECKNEW_standard___collection___sorter___AbstractSorter = "check new AbstractSorter";
-void CHECKNEW_standard___collection___sorter___AbstractSorter(val_t p0);
-typedef void (*CHECKNEW_standard___collection___sorter___AbstractSorter_t)(val_t p0);
-static const char * const LOCATE_NEW_AbstractSorter_standard___collection___sorter___AbstractSorter___init = "new AbstractSorter sorter::AbstractSorter::init";
-val_t NEW_AbstractSorter_standard___collection___sorter___AbstractSorter___init(void);
-typedef val_t (*NEW_AbstractSorter_standard___collection___sorter___AbstractSorter___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___collection___sorter___ComparableSorter = "init var of ComparableSorter";
 void INIT_ATTRIBUTES__standard___collection___sorter___ComparableSorter(val_t p0);
 typedef void (*INIT_ATTRIBUTES__standard___collection___sorter___ComparableSorter_t)(val_t p0);
 val_t NEW_standard___collection___sorter___ComparableSorter(void);
-static const char * const LOCATE_CHECKNEW_standard___collection___sorter___ComparableSorter = "check new ComparableSorter";
 void CHECKNEW_standard___collection___sorter___ComparableSorter(val_t p0);
 typedef void (*CHECKNEW_standard___collection___sorter___ComparableSorter_t)(val_t p0);
-static const char * const LOCATE_NEW_ComparableSorter_standard___collection___sorter___ComparableSorter___init = "new ComparableSorter sorter::ComparableSorter::init";
 val_t NEW_ComparableSorter_standard___collection___sorter___ComparableSorter___init(void);
 typedef val_t (*NEW_ComparableSorter_standard___collection___sorter___ComparableSorter___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___collection___hash_collection___HashCollection = "init var of HashCollection";
-void INIT_ATTRIBUTES__standard___collection___hash_collection___HashCollection(val_t p0);
-typedef void (*INIT_ATTRIBUTES__standard___collection___hash_collection___HashCollection_t)(val_t p0);
-val_t NEW_standard___collection___hash_collection___HashCollection(void);
-static const char * const LOCATE_CHECKNEW_standard___collection___hash_collection___HashCollection = "check new HashCollection";
-void CHECKNEW_standard___collection___hash_collection___HashCollection(val_t p0);
-typedef void (*CHECKNEW_standard___collection___hash_collection___HashCollection_t)(val_t p0);
-static const char * const LOCATE_NEW_HashCollection_standard___collection___hash_collection___HashCollection___init = "new HashCollection hash_collection::HashCollection::init";
-val_t NEW_HashCollection_standard___collection___hash_collection___HashCollection___init(void);
-typedef val_t (*NEW_HashCollection_standard___collection___hash_collection___HashCollection___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___collection___hash_collection___HashNode = "init var of HashNode";
-void INIT_ATTRIBUTES__standard___collection___hash_collection___HashNode(val_t p0);
-typedef void (*INIT_ATTRIBUTES__standard___collection___hash_collection___HashNode_t)(val_t p0);
-val_t NEW_standard___collection___hash_collection___HashNode(void);
-static const char * const LOCATE_CHECKNEW_standard___collection___hash_collection___HashNode = "check new HashNode";
-void CHECKNEW_standard___collection___hash_collection___HashNode(val_t p0);
-typedef void (*CHECKNEW_standard___collection___hash_collection___HashNode_t)(val_t p0);
-static const char * const LOCATE_NEW_HashNode_standard___collection___hash_collection___HashNode___init = "new HashNode hash_collection::HashNode::init";
-val_t NEW_HashNode_standard___collection___hash_collection___HashNode___init(val_t p0);
-typedef val_t (*NEW_HashNode_standard___collection___hash_collection___HashNode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___collection___hash_collection___HashMap = "init var of HashMap";
 void INIT_ATTRIBUTES__standard___collection___hash_collection___HashMap(val_t p0);
 typedef void (*INIT_ATTRIBUTES__standard___collection___hash_collection___HashMap_t)(val_t p0);
 val_t NEW_standard___collection___hash_collection___HashMap(void);
-static const char * const LOCATE_CHECKNEW_standard___collection___hash_collection___HashMap = "check new HashMap";
 void CHECKNEW_standard___collection___hash_collection___HashMap(val_t p0);
 typedef void (*CHECKNEW_standard___collection___hash_collection___HashMap_t)(val_t p0);
-static const char * const LOCATE_NEW_HashMap_standard___collection___hash_collection___HashMap___init = "new HashMap hash_collection::HashMap::init";
 val_t NEW_HashMap_standard___collection___hash_collection___HashMap___init(void);
 typedef val_t (*NEW_HashMap_standard___collection___hash_collection___HashMap___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___collection___hash_collection___HashMapKeys = "init var of HashMapKeys";
 void INIT_ATTRIBUTES__standard___collection___hash_collection___HashMapKeys(val_t p0);
 typedef void (*INIT_ATTRIBUTES__standard___collection___hash_collection___HashMapKeys_t)(val_t p0);
 val_t NEW_standard___collection___hash_collection___HashMapKeys(void);
-static const char * const LOCATE_CHECKNEW_standard___collection___hash_collection___HashMapKeys = "check new HashMapKeys";
 void CHECKNEW_standard___collection___hash_collection___HashMapKeys(val_t p0);
 typedef void (*CHECKNEW_standard___collection___hash_collection___HashMapKeys_t)(val_t p0);
-static const char * const LOCATE_NEW_HashMapKeys_standard___collection___hash_collection___HashMapKeys___init = "new HashMapKeys hash_collection::HashMapKeys::init";
 val_t NEW_HashMapKeys_standard___collection___hash_collection___HashMapKeys___init(val_t p0);
 typedef val_t (*NEW_HashMapKeys_standard___collection___hash_collection___HashMapKeys___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___collection___hash_collection___HashMapValues = "init var of HashMapValues";
 void INIT_ATTRIBUTES__standard___collection___hash_collection___HashMapValues(val_t p0);
 typedef void (*INIT_ATTRIBUTES__standard___collection___hash_collection___HashMapValues_t)(val_t p0);
 val_t NEW_standard___collection___hash_collection___HashMapValues(void);
-static const char * const LOCATE_CHECKNEW_standard___collection___hash_collection___HashMapValues = "check new HashMapValues";
 void CHECKNEW_standard___collection___hash_collection___HashMapValues(val_t p0);
 typedef void (*CHECKNEW_standard___collection___hash_collection___HashMapValues_t)(val_t p0);
-static const char * const LOCATE_NEW_HashMapValues_standard___collection___hash_collection___HashMapValues___init = "new HashMapValues hash_collection::HashMapValues::init";
 val_t NEW_HashMapValues_standard___collection___hash_collection___HashMapValues___init(val_t p0);
 typedef val_t (*NEW_HashMapValues_standard___collection___hash_collection___HashMapValues___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___collection___hash_collection___HashMapNode = "init var of HashMapNode";
 void INIT_ATTRIBUTES__standard___collection___hash_collection___HashMapNode(val_t p0);
 typedef void (*INIT_ATTRIBUTES__standard___collection___hash_collection___HashMapNode_t)(val_t p0);
 val_t NEW_standard___collection___hash_collection___HashMapNode(void);
-static const char * const LOCATE_CHECKNEW_standard___collection___hash_collection___HashMapNode = "check new HashMapNode";
 void CHECKNEW_standard___collection___hash_collection___HashMapNode(val_t p0);
 typedef void (*CHECKNEW_standard___collection___hash_collection___HashMapNode_t)(val_t p0);
-static const char * const LOCATE_NEW_HashMapNode_standard___collection___hash_collection___HashMapNode___init = "new HashMapNode hash_collection::HashMapNode::init";
 val_t NEW_HashMapNode_standard___collection___hash_collection___HashMapNode___init(val_t p0, val_t p1);
 typedef val_t (*NEW_HashMapNode_standard___collection___hash_collection___HashMapNode___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___collection___hash_collection___HashMapIterator = "init var of HashMapIterator";
 void INIT_ATTRIBUTES__standard___collection___hash_collection___HashMapIterator(val_t p0);
 typedef void (*INIT_ATTRIBUTES__standard___collection___hash_collection___HashMapIterator_t)(val_t p0);
 val_t NEW_standard___collection___hash_collection___HashMapIterator(void);
-static const char * const LOCATE_CHECKNEW_standard___collection___hash_collection___HashMapIterator = "check new HashMapIterator";
 void CHECKNEW_standard___collection___hash_collection___HashMapIterator(val_t p0);
 typedef void (*CHECKNEW_standard___collection___hash_collection___HashMapIterator_t)(val_t p0);
-static const char * const LOCATE_NEW_HashMapIterator_standard___collection___hash_collection___HashMapIterator___init = "new HashMapIterator hash_collection::HashMapIterator::init";
 val_t NEW_HashMapIterator_standard___collection___hash_collection___HashMapIterator___init(val_t p0);
 typedef val_t (*NEW_HashMapIterator_standard___collection___hash_collection___HashMapIterator___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___collection___hash_collection___HashSet = "init var of HashSet";
 void INIT_ATTRIBUTES__standard___collection___hash_collection___HashSet(val_t p0);
 typedef void (*INIT_ATTRIBUTES__standard___collection___hash_collection___HashSet_t)(val_t p0);
 val_t NEW_standard___collection___hash_collection___HashSet(void);
-static const char * const LOCATE_CHECKNEW_standard___collection___hash_collection___HashSet = "check new HashSet";
 void CHECKNEW_standard___collection___hash_collection___HashSet(val_t p0);
 typedef void (*CHECKNEW_standard___collection___hash_collection___HashSet_t)(val_t p0);
-static const char * const LOCATE_NEW_HashSet_standard___collection___hash_collection___HashSet___init = "new HashSet hash_collection::HashSet::init";
 val_t NEW_HashSet_standard___collection___hash_collection___HashSet___init(void);
 typedef val_t (*NEW_HashSet_standard___collection___hash_collection___HashSet___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___collection___hash_collection___HashSetNode = "init var of HashSetNode";
+val_t NEW_HashSet_standard___collection___hash_collection___HashSet___from(val_t p0);
+typedef val_t (*NEW_HashSet_standard___collection___hash_collection___HashSet___from_t)(val_t p0);
 void INIT_ATTRIBUTES__standard___collection___hash_collection___HashSetNode(val_t p0);
 typedef void (*INIT_ATTRIBUTES__standard___collection___hash_collection___HashSetNode_t)(val_t p0);
 val_t NEW_standard___collection___hash_collection___HashSetNode(void);
-static const char * const LOCATE_CHECKNEW_standard___collection___hash_collection___HashSetNode = "check new HashSetNode";
 void CHECKNEW_standard___collection___hash_collection___HashSetNode(val_t p0);
 typedef void (*CHECKNEW_standard___collection___hash_collection___HashSetNode_t)(val_t p0);
-static const char * const LOCATE_NEW_HashSetNode_standard___collection___hash_collection___HashSetNode___init = "new HashSetNode hash_collection::HashSetNode::init";
 val_t NEW_HashSetNode_standard___collection___hash_collection___HashSetNode___init(val_t p0);
 typedef val_t (*NEW_HashSetNode_standard___collection___hash_collection___HashSetNode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___collection___hash_collection___HashSetIterator = "init var of HashSetIterator";
 void INIT_ATTRIBUTES__standard___collection___hash_collection___HashSetIterator(val_t p0);
 typedef void (*INIT_ATTRIBUTES__standard___collection___hash_collection___HashSetIterator_t)(val_t p0);
 val_t NEW_standard___collection___hash_collection___HashSetIterator(void);
-static const char * const LOCATE_CHECKNEW_standard___collection___hash_collection___HashSetIterator = "check new HashSetIterator";
 void CHECKNEW_standard___collection___hash_collection___HashSetIterator(val_t p0);
 typedef void (*CHECKNEW_standard___collection___hash_collection___HashSetIterator_t)(val_t p0);
-static const char * const LOCATE_NEW_HashSetIterator_standard___collection___hash_collection___HashSetIterator___init = "new HashSetIterator hash_collection::HashSetIterator::init";
 val_t NEW_HashSetIterator_standard___collection___hash_collection___HashSetIterator___init(val_t p0);
 typedef val_t (*NEW_HashSetIterator_standard___collection___hash_collection___HashSetIterator___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___string___String = "init var of String";
 void INIT_ATTRIBUTES__standard___string___String(val_t p0);
 typedef void (*INIT_ATTRIBUTES__standard___string___String_t)(val_t p0);
 val_t NEW_standard___string___String(void);
-static const char * const LOCATE_CHECKNEW_standard___string___String = "check new String";
 void CHECKNEW_standard___string___String(val_t p0);
 typedef void (*CHECKNEW_standard___string___String_t)(val_t p0);
-static const char * const LOCATE_NEW_String_standard___string___String___with_native = "new String string::String::with_native";
 val_t NEW_String_standard___string___String___with_native(val_t p0, val_t p1);
 typedef val_t (*NEW_String_standard___string___String___with_native_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_String_standard___string___String___from_cstring = "new String string::String::from_cstring";
 val_t NEW_String_standard___string___String___from_cstring(val_t p0);
 typedef val_t (*NEW_String_standard___string___String___from_cstring_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___string___Buffer = "init var of Buffer";
+val_t NEW_String_standard___string___String___from_substring(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_String_standard___string___String___from_substring_t)(val_t p0, val_t p1, val_t p2);
+val_t NEW_String_standard___string___String___copy_from_native(val_t p0);
+typedef val_t (*NEW_String_standard___string___String___copy_from_native_t)(val_t p0);
 void INIT_ATTRIBUTES__standard___string___Buffer(val_t p0);
 typedef void (*INIT_ATTRIBUTES__standard___string___Buffer_t)(val_t p0);
 val_t NEW_standard___string___Buffer(void);
-static const char * const LOCATE_CHECKNEW_standard___string___Buffer = "check new Buffer";
 void CHECKNEW_standard___string___Buffer(val_t p0);
 typedef void (*CHECKNEW_standard___string___Buffer_t)(val_t p0);
-static const char * const LOCATE_NEW_Buffer_standard___string___Buffer___init = "new Buffer string::Buffer::init";
 val_t NEW_Buffer_standard___string___Buffer___init(void);
 typedef val_t (*NEW_Buffer_standard___string___Buffer___init_t)(void);
-static const char * const LOCATE_NEW_Buffer_standard___string___Buffer___from = "new Buffer string::Buffer::from";
 val_t NEW_Buffer_standard___string___Buffer___from(val_t p0);
 typedef val_t (*NEW_Buffer_standard___string___Buffer___from_t)(val_t p0);
-static const char * const LOCATE_NEW_Buffer_standard___string___Buffer___with_capacity = "new Buffer string::Buffer::with_capacity";
 val_t NEW_Buffer_standard___string___Buffer___with_capacity(val_t p0);
 typedef val_t (*NEW_Buffer_standard___string___Buffer___with_capacity_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___string___StringCapable = "init var of StringCapable";
-void INIT_ATTRIBUTES__standard___string___StringCapable(val_t p0);
-typedef void (*INIT_ATTRIBUTES__standard___string___StringCapable_t)(val_t p0);
-val_t NEW_standard___string___StringCapable(void);
-static const char * const LOCATE_CHECKNEW_standard___string___StringCapable = "check new StringCapable";
-void CHECKNEW_standard___string___StringCapable(val_t p0);
-typedef void (*CHECKNEW_standard___string___StringCapable_t)(val_t p0);
-static const char * const LOCATE_NEW_StringCapable_standard___string___StringCapable___init = "new StringCapable string::StringCapable::init";
-val_t NEW_StringCapable_standard___string___StringCapable___init(void);
-typedef val_t (*NEW_StringCapable_standard___string___StringCapable___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___symbol___Symbol = "init var of Symbol";
-void INIT_ATTRIBUTES__standard___symbol___Symbol(val_t p0);
-typedef void (*INIT_ATTRIBUTES__standard___symbol___Symbol_t)(val_t p0);
-val_t NEW_standard___symbol___Symbol(void);
-static const char * const LOCATE_CHECKNEW_standard___symbol___Symbol = "check new Symbol";
-void CHECKNEW_standard___symbol___Symbol(val_t p0);
-typedef void (*CHECKNEW_standard___symbol___Symbol_t)(val_t p0);
-static const char * const LOCATE_NEW_Symbol_standard___symbol___Symbol___init = "new Symbol symbol::Symbol::init";
-val_t NEW_Symbol_standard___symbol___Symbol___init(val_t p0);
-typedef val_t (*NEW_Symbol_standard___symbol___Symbol___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___stream___IOS = "init var of IOS";
-void INIT_ATTRIBUTES__standard___stream___IOS(val_t p0);
-typedef void (*INIT_ATTRIBUTES__standard___stream___IOS_t)(val_t p0);
-val_t NEW_standard___stream___IOS(void);
-static const char * const LOCATE_CHECKNEW_standard___stream___IOS = "check new IOS";
-void CHECKNEW_standard___stream___IOS(val_t p0);
-typedef void (*CHECKNEW_standard___stream___IOS_t)(val_t p0);
-static const char * const LOCATE_NEW_IOS_standard___stream___IOS___init = "new IOS stream::IOS::init";
-val_t NEW_IOS_standard___stream___IOS___init(void);
-typedef val_t (*NEW_IOS_standard___stream___IOS___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___stream___IStream = "init var of IStream";
-void INIT_ATTRIBUTES__standard___stream___IStream(val_t p0);
-typedef void (*INIT_ATTRIBUTES__standard___stream___IStream_t)(val_t p0);
-val_t NEW_standard___stream___IStream(void);
-static const char * const LOCATE_CHECKNEW_standard___stream___IStream = "check new IStream";
-void CHECKNEW_standard___stream___IStream(val_t p0);
-typedef void (*CHECKNEW_standard___stream___IStream_t)(val_t p0);
-static const char * const LOCATE_NEW_IStream_standard___stream___IOS___init = "new IStream stream::IOS::init";
-val_t NEW_IStream_standard___stream___IOS___init(void);
-typedef val_t (*NEW_IStream_standard___stream___IOS___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___stream___OStream = "init var of OStream";
-void INIT_ATTRIBUTES__standard___stream___OStream(val_t p0);
-typedef void (*INIT_ATTRIBUTES__standard___stream___OStream_t)(val_t p0);
-val_t NEW_standard___stream___OStream(void);
-static const char * const LOCATE_CHECKNEW_standard___stream___OStream = "check new OStream";
-void CHECKNEW_standard___stream___OStream(val_t p0);
-typedef void (*CHECKNEW_standard___stream___OStream_t)(val_t p0);
-static const char * const LOCATE_NEW_OStream_standard___stream___IOS___init = "new OStream stream::IOS::init";
-val_t NEW_OStream_standard___stream___IOS___init(void);
-typedef val_t (*NEW_OStream_standard___stream___IOS___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___stream___BufferedIStream = "init var of BufferedIStream";
-void INIT_ATTRIBUTES__standard___stream___BufferedIStream(val_t p0);
-typedef void (*INIT_ATTRIBUTES__standard___stream___BufferedIStream_t)(val_t p0);
-val_t NEW_standard___stream___BufferedIStream(void);
-static const char * const LOCATE_CHECKNEW_standard___stream___BufferedIStream = "check new BufferedIStream";
-void CHECKNEW_standard___stream___BufferedIStream(val_t p0);
-typedef void (*CHECKNEW_standard___stream___BufferedIStream_t)(val_t p0);
-static const char * const LOCATE_NEW_BufferedIStream_standard___stream___IOS___init = "new BufferedIStream stream::IOS::init";
-val_t NEW_BufferedIStream_standard___stream___IOS___init(void);
-typedef val_t (*NEW_BufferedIStream_standard___stream___IOS___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___stream___IOStream = "init var of IOStream";
-void INIT_ATTRIBUTES__standard___stream___IOStream(val_t p0);
-typedef void (*INIT_ATTRIBUTES__standard___stream___IOStream_t)(val_t p0);
-val_t NEW_standard___stream___IOStream(void);
-static const char * const LOCATE_CHECKNEW_standard___stream___IOStream = "check new IOStream";
-void CHECKNEW_standard___stream___IOStream(val_t p0);
-typedef void (*CHECKNEW_standard___stream___IOStream_t)(val_t p0);
-static const char * const LOCATE_NEW_IOStream_standard___stream___IOS___init = "new IOStream stream::IOS::init";
-val_t NEW_IOStream_standard___stream___IOS___init(void);
-typedef val_t (*NEW_IOStream_standard___stream___IOS___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___stream___FDStream = "init var of FDStream";
-void INIT_ATTRIBUTES__standard___stream___FDStream(val_t p0);
-typedef void (*INIT_ATTRIBUTES__standard___stream___FDStream_t)(val_t p0);
-val_t NEW_standard___stream___FDStream(void);
-static const char * const LOCATE_CHECKNEW_standard___stream___FDStream = "check new FDStream";
-void CHECKNEW_standard___stream___FDStream(val_t p0);
-typedef void (*CHECKNEW_standard___stream___FDStream_t)(val_t p0);
-static const char * const LOCATE_NEW_FDStream_standard___stream___FDStream___init = "new FDStream stream::FDStream::init";
-val_t NEW_FDStream_standard___stream___FDStream___init(val_t p0);
-typedef val_t (*NEW_FDStream_standard___stream___FDStream___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___stream___FDIStream = "init var of FDIStream";
 void INIT_ATTRIBUTES__standard___stream___FDIStream(val_t p0);
 typedef void (*INIT_ATTRIBUTES__standard___stream___FDIStream_t)(val_t p0);
 val_t NEW_standard___stream___FDIStream(void);
-static const char * const LOCATE_CHECKNEW_standard___stream___FDIStream = "check new FDIStream";
 void CHECKNEW_standard___stream___FDIStream(val_t p0);
 typedef void (*CHECKNEW_standard___stream___FDIStream_t)(val_t p0);
-static const char * const LOCATE_NEW_FDIStream_standard___stream___FDIStream___init = "new FDIStream stream::FDIStream::init";
 val_t NEW_FDIStream_standard___stream___FDIStream___init(val_t p0);
 typedef val_t (*NEW_FDIStream_standard___stream___FDIStream___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___stream___FDOStream = "init var of FDOStream";
 void INIT_ATTRIBUTES__standard___stream___FDOStream(val_t p0);
 typedef void (*INIT_ATTRIBUTES__standard___stream___FDOStream_t)(val_t p0);
 val_t NEW_standard___stream___FDOStream(void);
-static const char * const LOCATE_CHECKNEW_standard___stream___FDOStream = "check new FDOStream";
 void CHECKNEW_standard___stream___FDOStream(val_t p0);
 typedef void (*CHECKNEW_standard___stream___FDOStream_t)(val_t p0);
-static const char * const LOCATE_NEW_FDOStream_standard___stream___FDOStream___init = "new FDOStream stream::FDOStream::init";
 val_t NEW_FDOStream_standard___stream___FDOStream___init(val_t p0);
 typedef val_t (*NEW_FDOStream_standard___stream___FDOStream___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___stream___FDIOStream = "init var of FDIOStream";
 void INIT_ATTRIBUTES__standard___stream___FDIOStream(val_t p0);
 typedef void (*INIT_ATTRIBUTES__standard___stream___FDIOStream_t)(val_t p0);
 val_t NEW_standard___stream___FDIOStream(void);
-static const char * const LOCATE_CHECKNEW_standard___stream___FDIOStream = "check new FDIOStream";
 void CHECKNEW_standard___stream___FDIOStream(val_t p0);
 typedef void (*CHECKNEW_standard___stream___FDIOStream_t)(val_t p0);
-static const char * const LOCATE_NEW_FDIOStream_standard___stream___FDIOStream___init = "new FDIOStream stream::FDIOStream::init";
 val_t NEW_FDIOStream_standard___stream___FDIOStream___init(val_t p0);
 typedef val_t (*NEW_FDIOStream_standard___stream___FDIOStream___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___string_search___BM_Pattern = "init var of BM_Pattern";
 void INIT_ATTRIBUTES__standard___string_search___BM_Pattern(val_t p0);
 typedef void (*INIT_ATTRIBUTES__standard___string_search___BM_Pattern_t)(val_t p0);
 val_t NEW_standard___string_search___BM_Pattern(void);
-static const char * const LOCATE_CHECKNEW_standard___string_search___BM_Pattern = "check new BM_Pattern";
 void CHECKNEW_standard___string_search___BM_Pattern(val_t p0);
 typedef void (*CHECKNEW_standard___string_search___BM_Pattern_t)(val_t p0);
-static const char * const LOCATE_NEW_BM_Pattern_standard___string_search___BM_Pattern___init = "new BM_Pattern string_search::BM_Pattern::init";
 val_t NEW_BM_Pattern_standard___string_search___BM_Pattern___init(val_t p0);
 typedef val_t (*NEW_BM_Pattern_standard___string_search___BM_Pattern___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___string_search___Match = "init var of Match";
 void INIT_ATTRIBUTES__standard___string_search___Match(val_t p0);
 typedef void (*INIT_ATTRIBUTES__standard___string_search___Match_t)(val_t p0);
 val_t NEW_standard___string_search___Match(void);
-static const char * const LOCATE_CHECKNEW_standard___string_search___Match = "check new Match";
 void CHECKNEW_standard___string_search___Match(val_t p0);
 typedef void (*CHECKNEW_standard___string_search___Match_t)(val_t p0);
-static const char * const LOCATE_NEW_Match_standard___string_search___Match___init = "new Match string_search::Match::init";
 val_t NEW_Match_standard___string_search___Match___init(val_t p0, val_t p1, val_t p2);
 typedef val_t (*NEW_Match_standard___string_search___Match___init_t)(val_t p0, val_t p1, val_t p2);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___file___FStream = "init var of FStream";
-void INIT_ATTRIBUTES__standard___file___FStream(val_t p0);
-typedef void (*INIT_ATTRIBUTES__standard___file___FStream_t)(val_t p0);
-val_t NEW_standard___file___FStream(void);
-static const char * const LOCATE_CHECKNEW_standard___file___FStream = "check new FStream";
-void CHECKNEW_standard___file___FStream(val_t p0);
-typedef void (*CHECKNEW_standard___file___FStream_t)(val_t p0);
-static const char * const LOCATE_NEW_FStream_standard___stream___IOS___init = "new FStream stream::IOS::init";
-val_t NEW_FStream_standard___stream___IOS___init(void);
-typedef val_t (*NEW_FStream_standard___stream___IOS___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___file___IFStream = "init var of IFStream";
 void INIT_ATTRIBUTES__standard___file___IFStream(val_t p0);
 typedef void (*INIT_ATTRIBUTES__standard___file___IFStream_t)(val_t p0);
 val_t NEW_standard___file___IFStream(void);
-static const char * const LOCATE_CHECKNEW_standard___file___IFStream = "check new IFStream";
 void CHECKNEW_standard___file___IFStream(val_t p0);
 typedef void (*CHECKNEW_standard___file___IFStream_t)(val_t p0);
-static const char * const LOCATE_NEW_IFStream_standard___file___IFStream___open = "new IFStream file::IFStream::open";
 val_t NEW_IFStream_standard___file___IFStream___open(val_t p0);
 typedef val_t (*NEW_IFStream_standard___file___IFStream___open_t)(val_t p0);
-static const char * const LOCATE_NEW_IFStream_standard___file___IFStream___init = "new IFStream file::IFStream::init";
 val_t NEW_IFStream_standard___file___IFStream___init(void);
 typedef val_t (*NEW_IFStream_standard___file___IFStream___init_t)(void);
-static const char * const LOCATE_NEW_IFStream_standard___file___IFStream___without_file = "new IFStream file::IFStream::without_file";
 val_t NEW_IFStream_standard___file___IFStream___without_file(void);
 typedef val_t (*NEW_IFStream_standard___file___IFStream___without_file_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___file___OFStream = "init var of OFStream";
 void INIT_ATTRIBUTES__standard___file___OFStream(val_t p0);
 typedef void (*INIT_ATTRIBUTES__standard___file___OFStream_t)(val_t p0);
 val_t NEW_standard___file___OFStream(void);
-static const char * const LOCATE_CHECKNEW_standard___file___OFStream = "check new OFStream";
 void CHECKNEW_standard___file___OFStream(val_t p0);
 typedef void (*CHECKNEW_standard___file___OFStream_t)(val_t p0);
-static const char * const LOCATE_NEW_OFStream_standard___file___OFStream___open = "new OFStream file::OFStream::open";
 val_t NEW_OFStream_standard___file___OFStream___open(val_t p0);
 typedef val_t (*NEW_OFStream_standard___file___OFStream___open_t)(val_t p0);
-static const char * const LOCATE_NEW_OFStream_standard___file___OFStream___init = "new OFStream file::OFStream::init";
 val_t NEW_OFStream_standard___file___OFStream___init(void);
 typedef val_t (*NEW_OFStream_standard___file___OFStream___init_t)(void);
-static const char * const LOCATE_NEW_OFStream_standard___file___OFStream___without_file = "new OFStream file::OFStream::without_file";
 val_t NEW_OFStream_standard___file___OFStream___without_file(void);
 typedef val_t (*NEW_OFStream_standard___file___OFStream___without_file_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___file___Stdin = "init var of Stdin";
 void INIT_ATTRIBUTES__standard___file___Stdin(val_t p0);
 typedef void (*INIT_ATTRIBUTES__standard___file___Stdin_t)(val_t p0);
 val_t NEW_standard___file___Stdin(void);
-static const char * const LOCATE_CHECKNEW_standard___file___Stdin = "check new Stdin";
 void CHECKNEW_standard___file___Stdin(val_t p0);
 typedef void (*CHECKNEW_standard___file___Stdin_t)(val_t p0);
-static const char * const LOCATE_NEW_Stdin_standard___file___Stdin___init = "new Stdin file::Stdin::init";
 val_t NEW_Stdin_standard___file___Stdin___init(void);
 typedef val_t (*NEW_Stdin_standard___file___Stdin___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___file___Stdout = "init var of Stdout";
 void INIT_ATTRIBUTES__standard___file___Stdout(val_t p0);
 typedef void (*INIT_ATTRIBUTES__standard___file___Stdout_t)(val_t p0);
 val_t NEW_standard___file___Stdout(void);
-static const char * const LOCATE_CHECKNEW_standard___file___Stdout = "check new Stdout";
 void CHECKNEW_standard___file___Stdout(val_t p0);
 typedef void (*CHECKNEW_standard___file___Stdout_t)(val_t p0);
-static const char * const LOCATE_NEW_Stdout_standard___file___Stdout___init = "new Stdout file::Stdout::init";
 val_t NEW_Stdout_standard___file___Stdout___init(void);
 typedef val_t (*NEW_Stdout_standard___file___Stdout___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___file___Stderr = "init var of Stderr";
 void INIT_ATTRIBUTES__standard___file___Stderr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__standard___file___Stderr_t)(val_t p0);
 val_t NEW_standard___file___Stderr(void);
-static const char * const LOCATE_CHECKNEW_standard___file___Stderr = "check new Stderr";
 void CHECKNEW_standard___file___Stderr(val_t p0);
 typedef void (*CHECKNEW_standard___file___Stderr_t)(val_t p0);
-static const char * const LOCATE_NEW_Stderr_standard___file___Stderr___init = "new Stderr file::Stderr::init";
 val_t NEW_Stderr_standard___file___Stderr___init(void);
 typedef val_t (*NEW_Stderr_standard___file___Stderr___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___exec___Process = "init var of Process";
 void INIT_ATTRIBUTES__standard___exec___Process(val_t p0);
 typedef void (*INIT_ATTRIBUTES__standard___exec___Process_t)(val_t p0);
 val_t NEW_standard___exec___Process(void);
-static const char * const LOCATE_CHECKNEW_standard___exec___Process = "check new Process";
 void CHECKNEW_standard___exec___Process(val_t p0);
 typedef void (*CHECKNEW_standard___exec___Process_t)(val_t p0);
-static const char * const LOCATE_NEW_Process_standard___exec___Process___init = "new Process exec::Process::init";
 val_t NEW_Process_standard___exec___Process___init(val_t p0, val_t p1);
 typedef val_t (*NEW_Process_standard___exec___Process___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_Process_standard___exec___Process___init_ = "new Process exec::Process::init_";
 val_t NEW_Process_standard___exec___Process___init_(val_t p0);
 typedef val_t (*NEW_Process_standard___exec___Process___init__t)(val_t p0);
-static const char * const LOCATE_NEW_Process_standard___exec___Process___execute = "new Process exec::Process::execute";
 val_t NEW_Process_standard___exec___Process___execute(val_t p0, val_t p1, val_t p2);
 typedef val_t (*NEW_Process_standard___exec___Process___execute_t)(val_t p0, val_t p1, val_t p2);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___exec___IProcess = "init var of IProcess";
 void INIT_ATTRIBUTES__standard___exec___IProcess(val_t p0);
 typedef void (*INIT_ATTRIBUTES__standard___exec___IProcess_t)(val_t p0);
 val_t NEW_standard___exec___IProcess(void);
-static const char * const LOCATE_CHECKNEW_standard___exec___IProcess = "check new IProcess";
 void CHECKNEW_standard___exec___IProcess(val_t p0);
 typedef void (*CHECKNEW_standard___exec___IProcess_t)(val_t p0);
-static const char * const LOCATE_NEW_IProcess_standard___exec___IProcess___init = "new IProcess exec::IProcess::init";
 val_t NEW_IProcess_standard___exec___IProcess___init(val_t p0, val_t p1);
 typedef val_t (*NEW_IProcess_standard___exec___IProcess___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_IProcess_standard___exec___IProcess___init_ = "new IProcess exec::IProcess::init_";
 val_t NEW_IProcess_standard___exec___IProcess___init_(val_t p0);
 typedef val_t (*NEW_IProcess_standard___exec___IProcess___init__t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___exec___OProcess = "init var of OProcess";
 void INIT_ATTRIBUTES__standard___exec___OProcess(val_t p0);
 typedef void (*INIT_ATTRIBUTES__standard___exec___OProcess_t)(val_t p0);
 val_t NEW_standard___exec___OProcess(void);
-static const char * const LOCATE_CHECKNEW_standard___exec___OProcess = "check new OProcess";
 void CHECKNEW_standard___exec___OProcess(val_t p0);
 typedef void (*CHECKNEW_standard___exec___OProcess_t)(val_t p0);
-static const char * const LOCATE_NEW_OProcess_standard___exec___OProcess___init = "new OProcess exec::OProcess::init";
 val_t NEW_OProcess_standard___exec___OProcess___init(val_t p0, val_t p1);
 typedef val_t (*NEW_OProcess_standard___exec___OProcess___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_OProcess_standard___exec___OProcess___init_ = "new OProcess exec::OProcess::init_";
 val_t NEW_OProcess_standard___exec___OProcess___init_(val_t p0);
 typedef val_t (*NEW_OProcess_standard___exec___OProcess___init__t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__standard___exec___IOProcess = "init var of IOProcess";
 void INIT_ATTRIBUTES__standard___exec___IOProcess(val_t p0);
 typedef void (*INIT_ATTRIBUTES__standard___exec___IOProcess_t)(val_t p0);
 val_t NEW_standard___exec___IOProcess(void);
-static const char * const LOCATE_CHECKNEW_standard___exec___IOProcess = "check new IOProcess";
 void CHECKNEW_standard___exec___IOProcess(val_t p0);
 typedef void (*CHECKNEW_standard___exec___IOProcess_t)(val_t p0);
-static const char * const LOCATE_NEW_IOProcess_standard___exec___IOProcess___init = "new IOProcess exec::IOProcess::init";
 val_t NEW_IOProcess_standard___exec___IOProcess___init(val_t p0, val_t p1);
 typedef val_t (*NEW_IOProcess_standard___exec___IOProcess___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_IOProcess_standard___exec___IOProcess___init_ = "new IOProcess exec::IOProcess::init_";
 val_t NEW_IOProcess_standard___exec___IOProcess___init_(val_t p0);
 typedef val_t (*NEW_IOProcess_standard___exec___IOProcess___init__t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__location___SourceFile = "init var of SourceFile";
+void INIT_ATTRIBUTES__metamodel___partial_order___PartialOrder(val_t p0);
+typedef void (*INIT_ATTRIBUTES__metamodel___partial_order___PartialOrder_t)(val_t p0);
+val_t NEW_metamodel___partial_order___PartialOrder(void);
+void CHECKNEW_metamodel___partial_order___PartialOrder(val_t p0);
+typedef void (*CHECKNEW_metamodel___partial_order___PartialOrder_t)(val_t p0);
+val_t NEW_PartialOrder_metamodel___partial_order___PartialOrder___init(void);
+typedef val_t (*NEW_PartialOrder_metamodel___partial_order___PartialOrder___init_t)(void);
+void INIT_ATTRIBUTES__metamodel___partial_order___PartialOrderElement(val_t p0);
+typedef void (*INIT_ATTRIBUTES__metamodel___partial_order___PartialOrderElement_t)(val_t p0);
+val_t NEW_metamodel___partial_order___PartialOrderElement(void);
+void CHECKNEW_metamodel___partial_order___PartialOrderElement(val_t p0);
+typedef void (*CHECKNEW_metamodel___partial_order___PartialOrderElement_t)(val_t p0);
+val_t NEW_PartialOrderElement_metamodel___partial_order___PartialOrderElement___init(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_PartialOrderElement_metamodel___partial_order___PartialOrderElement___init_t)(val_t p0, val_t p1, val_t p2);
 void INIT_ATTRIBUTES__location___SourceFile(val_t p0);
 typedef void (*INIT_ATTRIBUTES__location___SourceFile_t)(val_t p0);
 val_t NEW_location___SourceFile(void);
-static const char * const LOCATE_CHECKNEW_location___SourceFile = "check new SourceFile";
 void CHECKNEW_location___SourceFile(val_t p0);
 typedef void (*CHECKNEW_location___SourceFile_t)(val_t p0);
-static const char * const LOCATE_NEW_SourceFile_location___SourceFile___init = "new SourceFile location::SourceFile::init";
 val_t NEW_SourceFile_location___SourceFile___init(val_t p0, val_t p1);
 typedef val_t (*NEW_SourceFile_location___SourceFile___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__location___Location = "init var of Location";
+val_t NEW_SourceFile_location___SourceFile___from_string(val_t p0, val_t p1);
+typedef val_t (*NEW_SourceFile_location___SourceFile___from_string_t)(val_t p0, val_t p1);
 void INIT_ATTRIBUTES__location___Location(val_t p0);
 typedef void (*INIT_ATTRIBUTES__location___Location_t)(val_t p0);
 val_t NEW_location___Location(void);
-static const char * const LOCATE_CHECKNEW_location___Location = "check new Location";
 void CHECKNEW_location___Location(val_t p0);
 typedef void (*CHECKNEW_location___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__parser___parser_nodes___TEol = "init var of TEol";
+void INIT_ATTRIBUTES__symbol___Symbol(val_t p0);
+typedef void (*INIT_ATTRIBUTES__symbol___Symbol_t)(val_t p0);
+val_t NEW_symbol___Symbol(void);
+void CHECKNEW_symbol___Symbol(val_t p0);
+typedef void (*CHECKNEW_symbol___Symbol_t)(val_t p0);
+val_t NEW_Symbol_symbol___Symbol___init(val_t p0);
+typedef val_t (*NEW_Symbol_symbol___Symbol___init_t)(val_t p0);
+void INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMDirectory(val_t p0);
+typedef void (*INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMDirectory_t)(val_t p0);
+val_t NEW_metamodel___abstractmetamodel___MMDirectory(void);
+void CHECKNEW_metamodel___abstractmetamodel___MMDirectory(val_t p0);
+typedef void (*CHECKNEW_metamodel___abstractmetamodel___MMDirectory_t)(val_t p0);
+val_t NEW_MMDirectory_metamodel___abstractmetamodel___MMDirectory___init(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_MMDirectory_metamodel___abstractmetamodel___MMDirectory___init_t)(val_t p0, val_t p1, val_t p2);
+void INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMGlobalClass(val_t p0);
+typedef void (*INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMGlobalClass_t)(val_t p0);
+val_t NEW_metamodel___abstractmetamodel___MMGlobalClass(void);
+void CHECKNEW_metamodel___abstractmetamodel___MMGlobalClass(val_t p0);
+typedef void (*CHECKNEW_metamodel___abstractmetamodel___MMGlobalClass_t)(val_t p0);
+val_t NEW_MMGlobalClass_metamodel___abstractmetamodel___MMGlobalClass___init(val_t p0);
+typedef val_t (*NEW_MMGlobalClass_metamodel___abstractmetamodel___MMGlobalClass___init_t)(val_t p0);
+void INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMGlobalProperty(val_t p0);
+typedef void (*INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMGlobalProperty_t)(val_t p0);
+val_t NEW_metamodel___abstractmetamodel___MMGlobalProperty(void);
+void CHECKNEW_metamodel___abstractmetamodel___MMGlobalProperty(val_t p0);
+typedef void (*CHECKNEW_metamodel___abstractmetamodel___MMGlobalProperty_t)(val_t p0);
+val_t NEW_MMGlobalProperty_metamodel___abstractmetamodel___MMGlobalProperty___init(val_t p0);
+typedef val_t (*NEW_MMGlobalProperty_metamodel___abstractmetamodel___MMGlobalProperty___init_t)(val_t p0);
+void INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMExplicitImport(val_t p0);
+typedef void (*INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMExplicitImport_t)(val_t p0);
+val_t NEW_metamodel___abstractmetamodel___MMExplicitImport(void);
+void CHECKNEW_metamodel___abstractmetamodel___MMExplicitImport(val_t p0);
+typedef void (*CHECKNEW_metamodel___abstractmetamodel___MMExplicitImport_t)(val_t p0);
+val_t NEW_MMExplicitImport_metamodel___abstractmetamodel___MMExplicitImport___init(val_t p0, val_t p1);
+typedef val_t (*NEW_MMExplicitImport_metamodel___abstractmetamodel___MMExplicitImport___init_t)(val_t p0, val_t p1);
+void INIT_ATTRIBUTES__metamodel___static_type___MMParam(val_t p0);
+typedef void (*INIT_ATTRIBUTES__metamodel___static_type___MMParam_t)(val_t p0);
+val_t NEW_metamodel___static_type___MMParam(void);
+void CHECKNEW_metamodel___static_type___MMParam(val_t p0);
+typedef void (*CHECKNEW_metamodel___static_type___MMParam_t)(val_t p0);
+val_t NEW_MMParam_metamodel___static_type___MMParam___init(val_t p0, val_t p1);
+typedef val_t (*NEW_MMParam_metamodel___static_type___MMParam___init_t)(val_t p0, val_t p1);
+void INIT_ATTRIBUTES__metamodel___static_type___MMSignature(val_t p0);
+typedef void (*INIT_ATTRIBUTES__metamodel___static_type___MMSignature_t)(val_t p0);
+val_t NEW_metamodel___static_type___MMSignature(void);
+void CHECKNEW_metamodel___static_type___MMSignature(val_t p0);
+typedef void (*CHECKNEW_metamodel___static_type___MMSignature_t)(val_t p0);
+val_t NEW_MMSignature_metamodel___static_type___MMSignature___init(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_MMSignature_metamodel___static_type___MMSignature___init_t)(val_t p0, val_t p1, val_t p2);
+void INIT_ATTRIBUTES__metamodel___static_type___MMClosure(val_t p0);
+typedef void (*INIT_ATTRIBUTES__metamodel___static_type___MMClosure_t)(val_t p0);
+val_t NEW_metamodel___static_type___MMClosure(void);
+void CHECKNEW_metamodel___static_type___MMClosure(val_t p0);
+typedef void (*CHECKNEW_metamodel___static_type___MMClosure_t)(val_t p0);
+val_t NEW_MMClosure_metamodel___static_type___MMClosure___init(val_t p0, val_t p1, val_t p2, val_t p3);
+typedef val_t (*NEW_MMClosure_metamodel___static_type___MMClosure___init_t)(val_t p0, val_t p1, val_t p2, val_t p3);
+void INIT_ATTRIBUTES__metamodel___static_type___MMNullableType(val_t p0);
+typedef void (*INIT_ATTRIBUTES__metamodel___static_type___MMNullableType_t)(val_t p0);
+val_t NEW_metamodel___static_type___MMNullableType(void);
+void CHECKNEW_metamodel___static_type___MMNullableType(val_t p0);
+typedef void (*CHECKNEW_metamodel___static_type___MMNullableType_t)(val_t p0);
+val_t NEW_MMNullableType_metamodel___static_type___MMNullableType___init(val_t p0);
+typedef val_t (*NEW_MMNullableType_metamodel___static_type___MMNullableType___init_t)(val_t p0);
+void INIT_ATTRIBUTES__metamodel___static_type___MMTypeSimpleClass(val_t p0);
+typedef void (*INIT_ATTRIBUTES__metamodel___static_type___MMTypeSimpleClass_t)(val_t p0);
+val_t NEW_metamodel___static_type___MMTypeSimpleClass(void);
+void CHECKNEW_metamodel___static_type___MMTypeSimpleClass(val_t p0);
+typedef void (*CHECKNEW_metamodel___static_type___MMTypeSimpleClass_t)(val_t p0);
+val_t NEW_MMTypeSimpleClass_metamodel___static_type___MMTypeSimpleClass___init(val_t p0);
+typedef val_t (*NEW_MMTypeSimpleClass_metamodel___static_type___MMTypeSimpleClass___init_t)(val_t p0);
+void INIT_ATTRIBUTES__metamodel___static_type___MMTypeNone(val_t p0);
+typedef void (*INIT_ATTRIBUTES__metamodel___static_type___MMTypeNone_t)(val_t p0);
+val_t NEW_metamodel___static_type___MMTypeNone(void);
+void CHECKNEW_metamodel___static_type___MMTypeNone(val_t p0);
+typedef void (*CHECKNEW_metamodel___static_type___MMTypeNone_t)(val_t p0);
+val_t NEW_MMTypeNone_metamodel___static_type___MMTypeNone___init(val_t p0);
+typedef val_t (*NEW_MMTypeNone_metamodel___static_type___MMTypeNone___init_t)(val_t p0);
+void INIT_ATTRIBUTES__metamodel___static_type___MMImportedCast(val_t p0);
+typedef void (*INIT_ATTRIBUTES__metamodel___static_type___MMImportedCast_t)(val_t p0);
+val_t NEW_metamodel___static_type___MMImportedCast(void);
+void CHECKNEW_metamodel___static_type___MMImportedCast(val_t p0);
+typedef void (*CHECKNEW_metamodel___static_type___MMImportedCast_t)(val_t p0);
+val_t NEW_MMImportedCast_metamodel___static_type___MMImportedCast___init(val_t p0, val_t p1);
+typedef val_t (*NEW_MMImportedCast_metamodel___static_type___MMImportedCast___init_t)(val_t p0, val_t p1);
+void INIT_ATTRIBUTES__metamodel___inheritance___MMImplicitLocalClass(val_t p0);
+typedef void (*INIT_ATTRIBUTES__metamodel___inheritance___MMImplicitLocalClass_t)(val_t p0);
+val_t NEW_metamodel___inheritance___MMImplicitLocalClass(void);
+void CHECKNEW_metamodel___inheritance___MMImplicitLocalClass(val_t p0);
+typedef void (*CHECKNEW_metamodel___inheritance___MMImplicitLocalClass_t)(val_t p0);
+val_t NEW_MMImplicitLocalClass_metamodel___inheritance___MMImplicitLocalClass___init(val_t p0, val_t p1);
+typedef val_t (*NEW_MMImplicitLocalClass_metamodel___inheritance___MMImplicitLocalClass___init_t)(val_t p0, val_t p1);
+void INIT_ATTRIBUTES__metamodel___inheritance___MMRefineAncestor(val_t p0);
+typedef void (*INIT_ATTRIBUTES__metamodel___inheritance___MMRefineAncestor_t)(val_t p0);
+val_t NEW_metamodel___inheritance___MMRefineAncestor(void);
+void CHECKNEW_metamodel___inheritance___MMRefineAncestor(val_t p0);
+typedef void (*CHECKNEW_metamodel___inheritance___MMRefineAncestor_t)(val_t p0);
+val_t NEW_MMRefineAncestor_metamodel___inheritance___MMRefineAncestor___init(val_t p0, val_t p1);
+typedef val_t (*NEW_MMRefineAncestor_metamodel___inheritance___MMRefineAncestor___init_t)(val_t p0, val_t p1);
+void INIT_ATTRIBUTES__metamodel___inheritance___MMSpecAncestor(val_t p0);
+typedef void (*INIT_ATTRIBUTES__metamodel___inheritance___MMSpecAncestor_t)(val_t p0);
+val_t NEW_metamodel___inheritance___MMSpecAncestor(void);
+void CHECKNEW_metamodel___inheritance___MMSpecAncestor(val_t p0);
+typedef void (*CHECKNEW_metamodel___inheritance___MMSpecAncestor_t)(val_t p0);
+val_t NEW_MMSpecAncestor_metamodel___inheritance___MMSpecAncestor___init(val_t p0, val_t p1);
+typedef val_t (*NEW_MMSpecAncestor_metamodel___inheritance___MMSpecAncestor___init_t)(val_t p0, val_t p1);
+void INIT_ATTRIBUTES__metamodel___inheritance___MMDefaultAncestor(val_t p0);
+typedef void (*INIT_ATTRIBUTES__metamodel___inheritance___MMDefaultAncestor_t)(val_t p0);
+val_t NEW_metamodel___inheritance___MMDefaultAncestor(void);
+void CHECKNEW_metamodel___inheritance___MMDefaultAncestor(val_t p0);
+typedef void (*CHECKNEW_metamodel___inheritance___MMDefaultAncestor_t)(val_t p0);
+val_t NEW_MMDefaultAncestor_metamodel___inheritance___MMDefaultAncestor___init(val_t p0, val_t p1);
+typedef val_t (*NEW_MMDefaultAncestor_metamodel___inheritance___MMDefaultAncestor___init_t)(val_t p0, val_t p1);
+void INIT_ATTRIBUTES__metamodel___genericity___MMTypeGeneric(val_t p0);
+typedef void (*INIT_ATTRIBUTES__metamodel___genericity___MMTypeGeneric_t)(val_t p0);
+val_t NEW_metamodel___genericity___MMTypeGeneric(void);
+void CHECKNEW_metamodel___genericity___MMTypeGeneric(val_t p0);
+typedef void (*CHECKNEW_metamodel___genericity___MMTypeGeneric_t)(val_t p0);
+val_t NEW_MMTypeGeneric_metamodel___genericity___MMTypeGeneric___init(val_t p0, val_t p1);
+typedef val_t (*NEW_MMTypeGeneric_metamodel___genericity___MMTypeGeneric___init_t)(val_t p0, val_t p1);
+void INIT_ATTRIBUTES__metamodel___genericity___MMTypeFormalParameter(val_t p0);
+typedef void (*INIT_ATTRIBUTES__metamodel___genericity___MMTypeFormalParameter_t)(val_t p0);
+val_t NEW_metamodel___genericity___MMTypeFormalParameter(void);
+void CHECKNEW_metamodel___genericity___MMTypeFormalParameter(val_t p0);
+typedef void (*CHECKNEW_metamodel___genericity___MMTypeFormalParameter_t)(val_t p0);
+val_t NEW_MMTypeFormalParameter_metamodel___genericity___MMTypeFormalParameter___with_bound(val_t p0, val_t p1, val_t p2, val_t p3);
+typedef val_t (*NEW_MMTypeFormalParameter_metamodel___genericity___MMTypeFormalParameter___with_bound_t)(val_t p0, val_t p1, val_t p2, val_t p3);
+val_t NEW_MMTypeFormalParameter_metamodel___genericity___MMTypeFormalParameter___init(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_MMTypeFormalParameter_metamodel___genericity___MMTypeFormalParameter___init_t)(val_t p0, val_t p1, val_t p2);
+void INIT_ATTRIBUTES__metamodel___virtualtype___MMVirtualType(val_t p0);
+typedef void (*INIT_ATTRIBUTES__metamodel___virtualtype___MMVirtualType_t)(val_t p0);
+val_t NEW_metamodel___virtualtype___MMVirtualType(void);
+void CHECKNEW_metamodel___virtualtype___MMVirtualType(val_t p0);
+typedef void (*CHECKNEW_metamodel___virtualtype___MMVirtualType_t)(val_t p0);
+val_t NEW_MMVirtualType_metamodel___virtualtype___MMVirtualType___init(val_t p0, val_t p1);
+typedef val_t (*NEW_MMVirtualType_metamodel___virtualtype___MMVirtualType___init_t)(val_t p0, val_t p1);
+void INIT_ATTRIBUTES__icode___icode_base___IRegister(val_t p0);
+typedef void (*INIT_ATTRIBUTES__icode___icode_base___IRegister_t)(val_t p0);
+val_t NEW_icode___icode_base___IRegister(void);
+void CHECKNEW_icode___icode_base___IRegister(val_t p0);
+typedef void (*CHECKNEW_icode___icode_base___IRegister_t)(val_t p0);
+val_t NEW_IRegister_icode___icode_base___IRegister___init(val_t p0);
+typedef val_t (*NEW_IRegister_icode___icode_base___IRegister___init_t)(val_t p0);
+void INIT_ATTRIBUTES__icode___icode_base___IEscapeMark(val_t p0);
+typedef void (*INIT_ATTRIBUTES__icode___icode_base___IEscapeMark_t)(val_t p0);
+val_t NEW_icode___icode_base___IEscapeMark(void);
+void CHECKNEW_icode___icode_base___IEscapeMark(val_t p0);
+typedef void (*CHECKNEW_icode___icode_base___IEscapeMark_t)(val_t p0);
+val_t NEW_IEscapeMark_icode___icode_base___IEscapeMark___init(void);
+typedef val_t (*NEW_IEscapeMark_icode___icode_base___IEscapeMark___init_t)(void);
+void INIT_ATTRIBUTES__icode___icode_base___IClosureDecl(val_t p0);
+typedef void (*INIT_ATTRIBUTES__icode___icode_base___IClosureDecl_t)(val_t p0);
+val_t NEW_icode___icode_base___IClosureDecl(void);
+void CHECKNEW_icode___icode_base___IClosureDecl(val_t p0);
+typedef void (*CHECKNEW_icode___icode_base___IClosureDecl_t)(val_t p0);
+val_t NEW_IClosureDecl_icode___icode_base___IClosureDecl___init(val_t p0);
+typedef val_t (*NEW_IClosureDecl_icode___icode_base___IClosureDecl___init_t)(val_t p0);
+void INIT_ATTRIBUTES__icode___icode_base___IRoutine(val_t p0);
+typedef void (*INIT_ATTRIBUTES__icode___icode_base___IRoutine_t)(val_t p0);
+val_t NEW_icode___icode_base___IRoutine(void);
+void CHECKNEW_icode___icode_base___IRoutine(val_t p0);
+typedef void (*CHECKNEW_icode___icode_base___IRoutine_t)(val_t p0);
+val_t NEW_IRoutine_icode___icode_base___IRoutine___init(val_t p0, val_t p1);
+typedef val_t (*NEW_IRoutine_icode___icode_base___IRoutine___init_t)(val_t p0, val_t p1);
+void INIT_ATTRIBUTES__icode___icode_base___IClosureDef(val_t p0);
+typedef void (*INIT_ATTRIBUTES__icode___icode_base___IClosureDef_t)(val_t p0);
+val_t NEW_icode___icode_base___IClosureDef(void);
+void CHECKNEW_icode___icode_base___IClosureDef(val_t p0);
+typedef void (*CHECKNEW_icode___icode_base___IClosureDef_t)(val_t p0);
+val_t NEW_IClosureDef_icode___icode_base___IClosureDef___init(val_t p0, val_t p1);
+typedef val_t (*NEW_IClosureDef_icode___icode_base___IClosureDef___init_t)(val_t p0, val_t p1);
+void INIT_ATTRIBUTES__icode___icode_base___ISeq(val_t p0);
+typedef void (*INIT_ATTRIBUTES__icode___icode_base___ISeq_t)(val_t p0);
+val_t NEW_icode___icode_base___ISeq(void);
+void CHECKNEW_icode___icode_base___ISeq(val_t p0);
+typedef void (*CHECKNEW_icode___icode_base___ISeq_t)(val_t p0);
+val_t NEW_ISeq_icode___icode_base___ISeq___init(void);
+typedef val_t (*NEW_ISeq_icode___icode_base___ISeq___init_t)(void);
+void INIT_ATTRIBUTES__icode___icode_base___ILoop(val_t p0);
+typedef void (*INIT_ATTRIBUTES__icode___icode_base___ILoop_t)(val_t p0);
+val_t NEW_icode___icode_base___ILoop(void);
+void CHECKNEW_icode___icode_base___ILoop(val_t p0);
+typedef void (*CHECKNEW_icode___icode_base___ILoop_t)(val_t p0);
+val_t NEW_ILoop_icode___icode_base___ILoop___init(void);
+typedef val_t (*NEW_ILoop_icode___icode_base___ILoop___init_t)(void);
+void INIT_ATTRIBUTES__icode___icode_base___IIf(val_t p0);
+typedef void (*INIT_ATTRIBUTES__icode___icode_base___IIf_t)(val_t p0);
+val_t NEW_icode___icode_base___IIf(void);
+void CHECKNEW_icode___icode_base___IIf(val_t p0);
+typedef void (*CHECKNEW_icode___icode_base___IIf_t)(val_t p0);
+val_t NEW_IIf_icode___icode_base___IIf___init(val_t p0);
+typedef val_t (*NEW_IIf_icode___icode_base___IIf___init_t)(val_t p0);
+void INIT_ATTRIBUTES__icode___icode_base___IEscape(val_t p0);
+typedef void (*INIT_ATTRIBUTES__icode___icode_base___IEscape_t)(val_t p0);
+val_t NEW_icode___icode_base___IEscape(void);
+void CHECKNEW_icode___icode_base___IEscape(val_t p0);
+typedef void (*CHECKNEW_icode___icode_base___IEscape_t)(val_t p0);
+val_t NEW_IEscape_icode___icode_base___IEscape___init(val_t p0);
+typedef val_t (*NEW_IEscape_icode___icode_base___IEscape___init_t)(val_t p0);
+void INIT_ATTRIBUTES__icode___icode_base___IAbort(val_t p0);
+typedef void (*INIT_ATTRIBUTES__icode___icode_base___IAbort_t)(val_t p0);
+val_t NEW_icode___icode_base___IAbort(void);
+void CHECKNEW_icode___icode_base___IAbort(val_t p0);
+typedef void (*CHECKNEW_icode___icode_base___IAbort_t)(val_t p0);
+val_t NEW_IAbort_icode___icode_base___IAbort___init(val_t p0, val_t p1);
+typedef val_t (*NEW_IAbort_icode___icode_base___IAbort___init_t)(val_t p0, val_t p1);
+void INIT_ATTRIBUTES__icode___icode_base___ICall(val_t p0);
+typedef void (*INIT_ATTRIBUTES__icode___icode_base___ICall_t)(val_t p0);
+val_t NEW_icode___icode_base___ICall(void);
+void CHECKNEW_icode___icode_base___ICall(val_t p0);
+typedef void (*CHECKNEW_icode___icode_base___ICall_t)(val_t p0);
+val_t NEW_ICall_icode___icode_base___ICall___init(val_t p0, val_t p1);
+typedef val_t (*NEW_ICall_icode___icode_base___ICall___init_t)(val_t p0, val_t p1);
+void INIT_ATTRIBUTES__icode___icode_base___ISuper(val_t p0);
+typedef void (*INIT_ATTRIBUTES__icode___icode_base___ISuper_t)(val_t p0);
+val_t NEW_icode___icode_base___ISuper(void);
+void CHECKNEW_icode___icode_base___ISuper(val_t p0);
+typedef void (*CHECKNEW_icode___icode_base___ISuper_t)(val_t p0);
+val_t NEW_ISuper_icode___icode_base___ISuper___init(val_t p0, val_t p1);
+typedef val_t (*NEW_ISuper_icode___icode_base___ISuper___init_t)(val_t p0, val_t p1);
+void INIT_ATTRIBUTES__icode___icode_base___INew(val_t p0);
+typedef void (*INIT_ATTRIBUTES__icode___icode_base___INew_t)(val_t p0);
+val_t NEW_icode___icode_base___INew(void);
+void CHECKNEW_icode___icode_base___INew(val_t p0);
+typedef void (*CHECKNEW_icode___icode_base___INew_t)(val_t p0);
+val_t NEW_INew_icode___icode_base___INew___init(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_INew_icode___icode_base___INew___init_t)(val_t p0, val_t p1, val_t p2);
+void INIT_ATTRIBUTES__icode___icode_base___IAllocateInstance(val_t p0);
+typedef void (*INIT_ATTRIBUTES__icode___icode_base___IAllocateInstance_t)(val_t p0);
+val_t NEW_icode___icode_base___IAllocateInstance(void);
+void CHECKNEW_icode___icode_base___IAllocateInstance(val_t p0);
+typedef void (*CHECKNEW_icode___icode_base___IAllocateInstance_t)(val_t p0);
+val_t NEW_IAllocateInstance_icode___icode_base___IAllocateInstance___init(val_t p0);
+typedef val_t (*NEW_IAllocateInstance_icode___icode_base___IAllocateInstance___init_t)(val_t p0);
+void INIT_ATTRIBUTES__icode___icode_base___IStaticCall(val_t p0);
+typedef void (*INIT_ATTRIBUTES__icode___icode_base___IStaticCall_t)(val_t p0);
+val_t NEW_icode___icode_base___IStaticCall(void);
+void CHECKNEW_icode___icode_base___IStaticCall(val_t p0);
+typedef void (*CHECKNEW_icode___icode_base___IStaticCall_t)(val_t p0);
+val_t NEW_IStaticCall_icode___icode_base___IStaticCall___init(val_t p0, val_t p1);
+typedef val_t (*NEW_IStaticCall_icode___icode_base___IStaticCall___init_t)(val_t p0, val_t p1);
+void INIT_ATTRIBUTES__icode___icode_base___ICheckInstance(val_t p0);
+typedef void (*INIT_ATTRIBUTES__icode___icode_base___ICheckInstance_t)(val_t p0);
+val_t NEW_icode___icode_base___ICheckInstance(void);
+void CHECKNEW_icode___icode_base___ICheckInstance(val_t p0);
+typedef void (*CHECKNEW_icode___icode_base___ICheckInstance_t)(val_t p0);
+val_t NEW_ICheckInstance_icode___icode_base___ICheckInstance___init(val_t p0, val_t p1);
+typedef val_t (*NEW_ICheckInstance_icode___icode_base___ICheckInstance___init_t)(val_t p0, val_t p1);
+void INIT_ATTRIBUTES__icode___icode_base___IInitAttributes(val_t p0);
+typedef void (*INIT_ATTRIBUTES__icode___icode_base___IInitAttributes_t)(val_t p0);
+val_t NEW_icode___icode_base___IInitAttributes(void);
+void CHECKNEW_icode___icode_base___IInitAttributes(val_t p0);
+typedef void (*CHECKNEW_icode___icode_base___IInitAttributes_t)(val_t p0);
+val_t NEW_IInitAttributes_icode___icode_base___IInitAttributes___init(val_t p0, val_t p1);
+typedef val_t (*NEW_IInitAttributes_icode___icode_base___IInitAttributes___init_t)(val_t p0, val_t p1);
+void INIT_ATTRIBUTES__icode___icode_base___IClosCall(val_t p0);
+typedef void (*INIT_ATTRIBUTES__icode___icode_base___IClosCall_t)(val_t p0);
+val_t NEW_icode___icode_base___IClosCall(void);
+void CHECKNEW_icode___icode_base___IClosCall(val_t p0);
+typedef void (*CHECKNEW_icode___icode_base___IClosCall_t)(val_t p0);
+val_t NEW_IClosCall_icode___icode_base___IClosCall___init(val_t p0, val_t p1);
+typedef val_t (*NEW_IClosCall_icode___icode_base___IClosCall___init_t)(val_t p0, val_t p1);
+void INIT_ATTRIBUTES__icode___icode_base___INative(val_t p0);
+typedef void (*INIT_ATTRIBUTES__icode___icode_base___INative_t)(val_t p0);
+val_t NEW_icode___icode_base___INative(void);
+void CHECKNEW_icode___icode_base___INative(val_t p0);
+typedef void (*CHECKNEW_icode___icode_base___INative_t)(val_t p0);
+val_t NEW_INative_icode___icode_base___INative___init(val_t p0, val_t p1);
+typedef val_t (*NEW_INative_icode___icode_base___INative___init_t)(val_t p0, val_t p1);
+void INIT_ATTRIBUTES__icode___icode_base___IIntValue(val_t p0);
+typedef void (*INIT_ATTRIBUTES__icode___icode_base___IIntValue_t)(val_t p0);
+val_t NEW_icode___icode_base___IIntValue(void);
+void CHECKNEW_icode___icode_base___IIntValue(val_t p0);
+typedef void (*CHECKNEW_icode___icode_base___IIntValue_t)(val_t p0);
+val_t NEW_IIntValue_icode___icode_base___IIntValue___init(val_t p0);
+typedef val_t (*NEW_IIntValue_icode___icode_base___IIntValue___init_t)(val_t p0);
+void INIT_ATTRIBUTES__icode___icode_base___IBoolValue(val_t p0);
+typedef void (*INIT_ATTRIBUTES__icode___icode_base___IBoolValue_t)(val_t p0);
+val_t NEW_icode___icode_base___IBoolValue(void);
+void CHECKNEW_icode___icode_base___IBoolValue(val_t p0);
+typedef void (*CHECKNEW_icode___icode_base___IBoolValue_t)(val_t p0);
+val_t NEW_IBoolValue_icode___icode_base___IBoolValue___init(val_t p0);
+typedef val_t (*NEW_IBoolValue_icode___icode_base___IBoolValue___init_t)(val_t p0);
+void INIT_ATTRIBUTES__icode___icode_base___IStringValue(val_t p0);
+typedef void (*INIT_ATTRIBUTES__icode___icode_base___IStringValue_t)(val_t p0);
+val_t NEW_icode___icode_base___IStringValue(void);
+void CHECKNEW_icode___icode_base___IStringValue(val_t p0);
+typedef void (*CHECKNEW_icode___icode_base___IStringValue_t)(val_t p0);
+val_t NEW_IStringValue_icode___icode_base___IStringValue___init(val_t p0);
+typedef val_t (*NEW_IStringValue_icode___icode_base___IStringValue___init_t)(val_t p0);
+void INIT_ATTRIBUTES__icode___icode_base___IFloatValue(val_t p0);
+typedef void (*INIT_ATTRIBUTES__icode___icode_base___IFloatValue_t)(val_t p0);
+val_t NEW_icode___icode_base___IFloatValue(void);
+void CHECKNEW_icode___icode_base___IFloatValue(val_t p0);
+typedef void (*CHECKNEW_icode___icode_base___IFloatValue_t)(val_t p0);
+val_t NEW_IFloatValue_icode___icode_base___IFloatValue___init(val_t p0);
+typedef val_t (*NEW_IFloatValue_icode___icode_base___IFloatValue___init_t)(val_t p0);
+void INIT_ATTRIBUTES__icode___icode_base___ICharValue(val_t p0);
+typedef void (*INIT_ATTRIBUTES__icode___icode_base___ICharValue_t)(val_t p0);
+val_t NEW_icode___icode_base___ICharValue(void);
+void CHECKNEW_icode___icode_base___ICharValue(val_t p0);
+typedef void (*CHECKNEW_icode___icode_base___ICharValue_t)(val_t p0);
+val_t NEW_ICharValue_icode___icode_base___ICharValue___init(val_t p0);
+typedef val_t (*NEW_ICharValue_icode___icode_base___ICharValue___init_t)(val_t p0);
+void INIT_ATTRIBUTES__icode___icode_base___IMove(val_t p0);
+typedef void (*INIT_ATTRIBUTES__icode___icode_base___IMove_t)(val_t p0);
+val_t NEW_icode___icode_base___IMove(void);
+void CHECKNEW_icode___icode_base___IMove(val_t p0);
+typedef void (*CHECKNEW_icode___icode_base___IMove_t)(val_t p0);
+val_t NEW_IMove_icode___icode_base___IMove___init(val_t p0, val_t p1);
+typedef val_t (*NEW_IMove_icode___icode_base___IMove___init_t)(val_t p0, val_t p1);
+void INIT_ATTRIBUTES__icode___icode_base___IAttrRead(val_t p0);
+typedef void (*INIT_ATTRIBUTES__icode___icode_base___IAttrRead_t)(val_t p0);
+val_t NEW_icode___icode_base___IAttrRead(void);
+void CHECKNEW_icode___icode_base___IAttrRead(val_t p0);
+typedef void (*CHECKNEW_icode___icode_base___IAttrRead_t)(val_t p0);
+val_t NEW_IAttrRead_icode___icode_base___IAttrRead___init(val_t p0, val_t p1);
+typedef val_t (*NEW_IAttrRead_icode___icode_base___IAttrRead___init_t)(val_t p0, val_t p1);
+void INIT_ATTRIBUTES__icode___icode_base___IAttrWrite(val_t p0);
+typedef void (*INIT_ATTRIBUTES__icode___icode_base___IAttrWrite_t)(val_t p0);
+val_t NEW_icode___icode_base___IAttrWrite(void);
+void CHECKNEW_icode___icode_base___IAttrWrite(val_t p0);
+typedef void (*CHECKNEW_icode___icode_base___IAttrWrite_t)(val_t p0);
+val_t NEW_IAttrWrite_icode___icode_base___IAttrWrite___init(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_IAttrWrite_icode___icode_base___IAttrWrite___init_t)(val_t p0, val_t p1, val_t p2);
+void INIT_ATTRIBUTES__icode___icode_base___IAttrIsset(val_t p0);
+typedef void (*INIT_ATTRIBUTES__icode___icode_base___IAttrIsset_t)(val_t p0);
+val_t NEW_icode___icode_base___IAttrIsset(void);
+void CHECKNEW_icode___icode_base___IAttrIsset(val_t p0);
+typedef void (*CHECKNEW_icode___icode_base___IAttrIsset_t)(val_t p0);
+val_t NEW_IAttrIsset_icode___icode_base___IAttrIsset___init(val_t p0, val_t p1);
+typedef val_t (*NEW_IAttrIsset_icode___icode_base___IAttrIsset___init_t)(val_t p0, val_t p1);
+void INIT_ATTRIBUTES__icode___icode_base___ITypeCheck(val_t p0);
+typedef void (*INIT_ATTRIBUTES__icode___icode_base___ITypeCheck_t)(val_t p0);
+val_t NEW_icode___icode_base___ITypeCheck(void);
+void CHECKNEW_icode___icode_base___ITypeCheck(val_t p0);
+typedef void (*CHECKNEW_icode___icode_base___ITypeCheck_t)(val_t p0);
+val_t NEW_ITypeCheck_icode___icode_base___ITypeCheck___init(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_ITypeCheck_icode___icode_base___ITypeCheck___init_t)(val_t p0, val_t p1, val_t p2);
+void INIT_ATTRIBUTES__icode___icode_base___IIs(val_t p0);
+typedef void (*INIT_ATTRIBUTES__icode___icode_base___IIs_t)(val_t p0);
+val_t NEW_icode___icode_base___IIs(void);
+void CHECKNEW_icode___icode_base___IIs(val_t p0);
+typedef void (*CHECKNEW_icode___icode_base___IIs_t)(val_t p0);
+val_t NEW_IIs_icode___icode_base___IIs___init(val_t p0, val_t p1);
+typedef val_t (*NEW_IIs_icode___icode_base___IIs___init_t)(val_t p0, val_t p1);
+void INIT_ATTRIBUTES__icode___icode_base___INot(val_t p0);
+typedef void (*INIT_ATTRIBUTES__icode___icode_base___INot_t)(val_t p0);
+val_t NEW_icode___icode_base___INot(void);
+void CHECKNEW_icode___icode_base___INot(val_t p0);
+typedef void (*CHECKNEW_icode___icode_base___INot_t)(val_t p0);
+val_t NEW_INot_icode___icode_base___INot___init(val_t p0);
+typedef val_t (*NEW_INot_icode___icode_base___INot___init_t)(val_t p0);
+void INIT_ATTRIBUTES__icode___icode_base___IOnce(val_t p0);
+typedef void (*INIT_ATTRIBUTES__icode___icode_base___IOnce_t)(val_t p0);
+val_t NEW_icode___icode_base___IOnce(void);
+void CHECKNEW_icode___icode_base___IOnce(val_t p0);
+typedef void (*CHECKNEW_icode___icode_base___IOnce_t)(val_t p0);
+val_t NEW_IOnce_icode___icode_base___IOnce___init(void);
+typedef val_t (*NEW_IOnce_icode___icode_base___IOnce___init_t)(void);
+void INIT_ATTRIBUTES__icode___icode_base___IHasClos(val_t p0);
+typedef void (*INIT_ATTRIBUTES__icode___icode_base___IHasClos_t)(val_t p0);
+val_t NEW_icode___icode_base___IHasClos(void);
+void CHECKNEW_icode___icode_base___IHasClos(val_t p0);
+typedef void (*CHECKNEW_icode___icode_base___IHasClos_t)(val_t p0);
+val_t NEW_IHasClos_icode___icode_base___IHasClos___init(val_t p0);
+typedef val_t (*NEW_IHasClos_icode___icode_base___IHasClos___init_t)(val_t p0);
+void INIT_ATTRIBUTES__icode___icode_builder___ICodeBuilder(val_t p0);
+typedef void (*INIT_ATTRIBUTES__icode___icode_builder___ICodeBuilder_t)(val_t p0);
+val_t NEW_icode___icode_builder___ICodeBuilder(void);
+void CHECKNEW_icode___icode_builder___ICodeBuilder(val_t p0);
+typedef void (*CHECKNEW_icode___icode_builder___ICodeBuilder_t)(val_t p0);
+val_t NEW_ICodeBuilder_icode___icode_builder___ICodeBuilder___init(val_t p0, val_t p1);
+typedef val_t (*NEW_ICodeBuilder_icode___icode_builder___ICodeBuilder___init_t)(val_t p0, val_t p1);
+void INIT_ATTRIBUTES__icode___icode_tools___ICodeDupContext(val_t p0);
+typedef void (*INIT_ATTRIBUTES__icode___icode_tools___ICodeDupContext_t)(val_t p0);
+val_t NEW_icode___icode_tools___ICodeDupContext(void);
+void CHECKNEW_icode___icode_tools___ICodeDupContext(val_t p0);
+typedef void (*CHECKNEW_icode___icode_tools___ICodeDupContext_t)(val_t p0);
+val_t NEW_ICodeDupContext_icode___icode_tools___ICodeDupContext___init(val_t p0);
+typedef val_t (*NEW_ICodeDupContext_icode___icode_tools___ICodeDupContext___init_t)(val_t p0);
 void INIT_ATTRIBUTES__parser___parser_nodes___TEol(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TEol_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TEol(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TEol = "check new TEol";
 void CHECKNEW_parser___parser_nodes___TEol(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TEol_t)(val_t p0);
-static const char * const LOCATE_NEW_TEol_parser___lexer___TEol___init_tk = "new TEol lexer::TEol::init_tk";
-val_t NEW_TEol_parser___lexer___TEol___init_tk(val_t p0, val_t p1);
-typedef val_t (*NEW_TEol_parser___lexer___TEol___init_tk_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_TEol_parser___parser_nodes___ANode___init = "new TEol parser_nodes::ANode::init";
-val_t NEW_TEol_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TEol_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TComment = "init var of TComment";
+val_t NEW_TEol_parser___lexer___TEol___init_tk(val_t p0);
+typedef val_t (*NEW_TEol_parser___lexer___TEol___init_tk_t)(val_t p0);
+val_t NEW_TEol_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TEol_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TComment(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TComment_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TComment(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TComment = "check new TComment";
 void CHECKNEW_parser___parser_nodes___TComment(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TComment_t)(val_t p0);
-static const char * const LOCATE_NEW_TComment_parser___lexer___TComment___init_tk = "new TComment lexer::TComment::init_tk";
-val_t NEW_TComment_parser___lexer___TComment___init_tk(val_t p0, val_t p1);
-typedef val_t (*NEW_TComment_parser___lexer___TComment___init_tk_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_TComment_parser___parser_nodes___ANode___init = "new TComment parser_nodes::ANode::init";
-val_t NEW_TComment_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TComment_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwmodule = "init var of TKwmodule";
+val_t NEW_TComment_parser___lexer___TComment___init_tk(val_t p0);
+typedef val_t (*NEW_TComment_parser___lexer___TComment___init_tk_t)(val_t p0);
+val_t NEW_TComment_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TComment_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwmodule(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TKwmodule_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TKwmodule(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TKwmodule = "check new TKwmodule";
 void CHECKNEW_parser___parser_nodes___TKwmodule(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TKwmodule_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwmodule_parser___lexer___TKwmodule___init_tk = "new TKwmodule lexer::TKwmodule::init_tk";
-val_t NEW_TKwmodule_parser___lexer___TKwmodule___init_tk(val_t p0, val_t p1);
-typedef val_t (*NEW_TKwmodule_parser___lexer___TKwmodule___init_tk_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_TKwmodule_parser___parser_nodes___ANode___init = "new TKwmodule parser_nodes::ANode::init";
-val_t NEW_TKwmodule_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TKwmodule_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwimport = "init var of TKwimport";
+val_t NEW_TKwmodule_parser___lexer___TKwmodule___init_tk(val_t p0);
+typedef val_t (*NEW_TKwmodule_parser___lexer___TKwmodule___init_tk_t)(val_t p0);
+val_t NEW_TKwmodule_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TKwmodule_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwimport(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TKwimport_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TKwimport(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TKwimport = "check new TKwimport";
 void CHECKNEW_parser___parser_nodes___TKwimport(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TKwimport_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwimport_parser___lexer___TKwimport___init_tk = "new TKwimport lexer::TKwimport::init_tk";
 val_t NEW_TKwimport_parser___lexer___TKwimport___init_tk(val_t p0);
 typedef val_t (*NEW_TKwimport_parser___lexer___TKwimport___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwimport_parser___parser_nodes___ANode___init = "new TKwimport parser_nodes::ANode::init";
-val_t NEW_TKwimport_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TKwimport_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwclass = "init var of TKwclass";
+val_t NEW_TKwimport_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TKwimport_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwclass(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TKwclass_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TKwclass(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TKwclass = "check new TKwclass";
 void CHECKNEW_parser___parser_nodes___TKwclass(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TKwclass_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwclass_parser___lexer___TKwclass___init_tk = "new TKwclass lexer::TKwclass::init_tk";
 val_t NEW_TKwclass_parser___lexer___TKwclass___init_tk(val_t p0);
 typedef val_t (*NEW_TKwclass_parser___lexer___TKwclass___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwclass_parser___parser_nodes___ANode___init = "new TKwclass parser_nodes::ANode::init";
-val_t NEW_TKwclass_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TKwclass_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwabstract = "init var of TKwabstract";
+val_t NEW_TKwclass_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TKwclass_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwabstract(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TKwabstract_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TKwabstract(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TKwabstract = "check new TKwabstract";
 void CHECKNEW_parser___parser_nodes___TKwabstract(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TKwabstract_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwabstract_parser___lexer___TKwabstract___init_tk = "new TKwabstract lexer::TKwabstract::init_tk";
 val_t NEW_TKwabstract_parser___lexer___TKwabstract___init_tk(val_t p0);
 typedef val_t (*NEW_TKwabstract_parser___lexer___TKwabstract___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwabstract_parser___parser_nodes___ANode___init = "new TKwabstract parser_nodes::ANode::init";
-val_t NEW_TKwabstract_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TKwabstract_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwinterface = "init var of TKwinterface";
+val_t NEW_TKwabstract_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TKwabstract_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwinterface(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TKwinterface_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TKwinterface(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TKwinterface = "check new TKwinterface";
 void CHECKNEW_parser___parser_nodes___TKwinterface(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TKwinterface_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwinterface_parser___lexer___TKwinterface___init_tk = "new TKwinterface lexer::TKwinterface::init_tk";
 val_t NEW_TKwinterface_parser___lexer___TKwinterface___init_tk(val_t p0);
 typedef val_t (*NEW_TKwinterface_parser___lexer___TKwinterface___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwinterface_parser___parser_nodes___ANode___init = "new TKwinterface parser_nodes::ANode::init";
-val_t NEW_TKwinterface_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TKwinterface_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwenum = "init var of TKwenum";
+val_t NEW_TKwinterface_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TKwinterface_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwenum(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TKwenum_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TKwenum(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TKwenum = "check new TKwenum";
 void CHECKNEW_parser___parser_nodes___TKwenum(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TKwenum_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwenum_parser___lexer___TKwenum___init_tk = "new TKwenum lexer::TKwenum::init_tk";
-val_t NEW_TKwenum_parser___lexer___TKwenum___init_tk(val_t p0, val_t p1);
-typedef val_t (*NEW_TKwenum_parser___lexer___TKwenum___init_tk_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_TKwenum_parser___parser_nodes___ANode___init = "new TKwenum parser_nodes::ANode::init";
-val_t NEW_TKwenum_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TKwenum_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwspecial = "init var of TKwspecial";
-void INIT_ATTRIBUTES__parser___parser_nodes___TKwspecial(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TKwspecial_t)(val_t p0);
-val_t NEW_parser___parser_nodes___TKwspecial(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TKwspecial = "check new TKwspecial";
-void CHECKNEW_parser___parser_nodes___TKwspecial(val_t p0);
-typedef void (*CHECKNEW_parser___parser_nodes___TKwspecial_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwspecial_parser___lexer___TKwspecial___init_tk = "new TKwspecial lexer::TKwspecial::init_tk";
-val_t NEW_TKwspecial_parser___lexer___TKwspecial___init_tk(val_t p0);
-typedef val_t (*NEW_TKwspecial_parser___lexer___TKwspecial___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwspecial_parser___parser_nodes___ANode___init = "new TKwspecial parser_nodes::ANode::init";
-val_t NEW_TKwspecial_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TKwspecial_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwend = "init var of TKwend";
+val_t NEW_TKwenum_parser___lexer___TKwenum___init_tk(val_t p0);
+typedef val_t (*NEW_TKwenum_parser___lexer___TKwenum___init_tk_t)(val_t p0);
+val_t NEW_TKwenum_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TKwenum_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwend(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TKwend_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TKwend(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TKwend = "check new TKwend";
 void CHECKNEW_parser___parser_nodes___TKwend(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TKwend_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwend_parser___lexer___TKwend___init_tk = "new TKwend lexer::TKwend::init_tk";
 val_t NEW_TKwend_parser___lexer___TKwend___init_tk(val_t p0);
 typedef val_t (*NEW_TKwend_parser___lexer___TKwend___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwend_parser___parser_nodes___ANode___init = "new TKwend parser_nodes::ANode::init";
-val_t NEW_TKwend_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TKwend_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwmeth = "init var of TKwmeth";
+val_t NEW_TKwend_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TKwend_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwmeth(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TKwmeth_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TKwmeth(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TKwmeth = "check new TKwmeth";
 void CHECKNEW_parser___parser_nodes___TKwmeth(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TKwmeth_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwmeth_parser___lexer___TKwmeth___init_tk = "new TKwmeth lexer::TKwmeth::init_tk";
 val_t NEW_TKwmeth_parser___lexer___TKwmeth___init_tk(val_t p0);
 typedef val_t (*NEW_TKwmeth_parser___lexer___TKwmeth___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwmeth_parser___parser_nodes___ANode___init = "new TKwmeth parser_nodes::ANode::init";
-val_t NEW_TKwmeth_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TKwmeth_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwtype = "init var of TKwtype";
+val_t NEW_TKwmeth_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TKwmeth_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwtype(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TKwtype_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TKwtype(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TKwtype = "check new TKwtype";
 void CHECKNEW_parser___parser_nodes___TKwtype(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TKwtype_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwtype_parser___lexer___TKwtype___init_tk = "new TKwtype lexer::TKwtype::init_tk";
 val_t NEW_TKwtype_parser___lexer___TKwtype___init_tk(val_t p0);
 typedef val_t (*NEW_TKwtype_parser___lexer___TKwtype___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwtype_parser___parser_nodes___ANode___init = "new TKwtype parser_nodes::ANode::init";
-val_t NEW_TKwtype_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TKwtype_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwinit = "init var of TKwinit";
+val_t NEW_TKwtype_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TKwtype_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwinit(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TKwinit_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TKwinit(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TKwinit = "check new TKwinit";
 void CHECKNEW_parser___parser_nodes___TKwinit(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TKwinit_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwinit_parser___lexer___TKwinit___init_tk = "new TKwinit lexer::TKwinit::init_tk";
 val_t NEW_TKwinit_parser___lexer___TKwinit___init_tk(val_t p0);
 typedef val_t (*NEW_TKwinit_parser___lexer___TKwinit___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwinit_parser___parser_nodes___ANode___init = "new TKwinit parser_nodes::ANode::init";
-val_t NEW_TKwinit_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TKwinit_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwredef = "init var of TKwredef";
+val_t NEW_TKwinit_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TKwinit_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwredef(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TKwredef_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TKwredef(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TKwredef = "check new TKwredef";
 void CHECKNEW_parser___parser_nodes___TKwredef(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TKwredef_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwredef_parser___lexer___TKwredef___init_tk = "new TKwredef lexer::TKwredef::init_tk";
 val_t NEW_TKwredef_parser___lexer___TKwredef___init_tk(val_t p0);
 typedef val_t (*NEW_TKwredef_parser___lexer___TKwredef___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwredef_parser___parser_nodes___ANode___init = "new TKwredef parser_nodes::ANode::init";
-val_t NEW_TKwredef_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TKwredef_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwis = "init var of TKwis";
+val_t NEW_TKwredef_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TKwredef_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwis(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TKwis_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TKwis(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TKwis = "check new TKwis";
 void CHECKNEW_parser___parser_nodes___TKwis(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TKwis_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwis_parser___lexer___TKwis___init_tk = "new TKwis lexer::TKwis::init_tk";
 val_t NEW_TKwis_parser___lexer___TKwis___init_tk(val_t p0);
 typedef val_t (*NEW_TKwis_parser___lexer___TKwis___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwis_parser___parser_nodes___ANode___init = "new TKwis parser_nodes::ANode::init";
-val_t NEW_TKwis_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TKwis_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwdo = "init var of TKwdo";
+val_t NEW_TKwis_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TKwis_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwdo(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TKwdo_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TKwdo(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TKwdo = "check new TKwdo";
 void CHECKNEW_parser___parser_nodes___TKwdo(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TKwdo_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwdo_parser___lexer___TKwdo___init_tk = "new TKwdo lexer::TKwdo::init_tk";
 val_t NEW_TKwdo_parser___lexer___TKwdo___init_tk(val_t p0);
 typedef val_t (*NEW_TKwdo_parser___lexer___TKwdo___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwdo_parser___parser_nodes___ANode___init = "new TKwdo parser_nodes::ANode::init";
-val_t NEW_TKwdo_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TKwdo_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwreadable = "init var of TKwreadable";
+val_t NEW_TKwdo_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TKwdo_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwreadable(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TKwreadable_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TKwreadable(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TKwreadable = "check new TKwreadable";
 void CHECKNEW_parser___parser_nodes___TKwreadable(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TKwreadable_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwreadable_parser___lexer___TKwreadable___init_tk = "new TKwreadable lexer::TKwreadable::init_tk";
 val_t NEW_TKwreadable_parser___lexer___TKwreadable___init_tk(val_t p0);
 typedef val_t (*NEW_TKwreadable_parser___lexer___TKwreadable___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwreadable_parser___parser_nodes___ANode___init = "new TKwreadable parser_nodes::ANode::init";
-val_t NEW_TKwreadable_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TKwreadable_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwwritable = "init var of TKwwritable";
+val_t NEW_TKwreadable_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TKwreadable_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwwritable(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TKwwritable_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TKwwritable(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TKwwritable = "check new TKwwritable";
 void CHECKNEW_parser___parser_nodes___TKwwritable(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TKwwritable_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwwritable_parser___lexer___TKwwritable___init_tk = "new TKwwritable lexer::TKwwritable::init_tk";
 val_t NEW_TKwwritable_parser___lexer___TKwwritable___init_tk(val_t p0);
 typedef val_t (*NEW_TKwwritable_parser___lexer___TKwwritable___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwwritable_parser___parser_nodes___ANode___init = "new TKwwritable parser_nodes::ANode::init";
-val_t NEW_TKwwritable_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TKwwritable_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwvar = "init var of TKwvar";
+val_t NEW_TKwwritable_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TKwwritable_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwvar(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TKwvar_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TKwvar(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TKwvar = "check new TKwvar";
 void CHECKNEW_parser___parser_nodes___TKwvar(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TKwvar_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwvar_parser___lexer___TKwvar___init_tk = "new TKwvar lexer::TKwvar::init_tk";
 val_t NEW_TKwvar_parser___lexer___TKwvar___init_tk(val_t p0);
 typedef val_t (*NEW_TKwvar_parser___lexer___TKwvar___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwvar_parser___parser_nodes___ANode___init = "new TKwvar parser_nodes::ANode::init";
-val_t NEW_TKwvar_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TKwvar_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwintern = "init var of TKwintern";
+val_t NEW_TKwvar_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TKwvar_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwintern(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TKwintern_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TKwintern(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TKwintern = "check new TKwintern";
 void CHECKNEW_parser___parser_nodes___TKwintern(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TKwintern_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwintern_parser___lexer___TKwintern___init_tk = "new TKwintern lexer::TKwintern::init_tk";
 val_t NEW_TKwintern_parser___lexer___TKwintern___init_tk(val_t p0);
 typedef val_t (*NEW_TKwintern_parser___lexer___TKwintern___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwintern_parser___parser_nodes___ANode___init = "new TKwintern parser_nodes::ANode::init";
-val_t NEW_TKwintern_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TKwintern_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwextern = "init var of TKwextern";
+val_t NEW_TKwintern_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TKwintern_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwextern(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TKwextern_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TKwextern(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TKwextern = "check new TKwextern";
 void CHECKNEW_parser___parser_nodes___TKwextern(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TKwextern_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwextern_parser___lexer___TKwextern___init_tk = "new TKwextern lexer::TKwextern::init_tk";
 val_t NEW_TKwextern_parser___lexer___TKwextern___init_tk(val_t p0);
 typedef val_t (*NEW_TKwextern_parser___lexer___TKwextern___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwextern_parser___parser_nodes___ANode___init = "new TKwextern parser_nodes::ANode::init";
-val_t NEW_TKwextern_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TKwextern_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwprotected = "init var of TKwprotected";
+val_t NEW_TKwextern_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TKwextern_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwprotected(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TKwprotected_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TKwprotected(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TKwprotected = "check new TKwprotected";
 void CHECKNEW_parser___parser_nodes___TKwprotected(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TKwprotected_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwprotected_parser___lexer___TKwprotected___init_tk = "new TKwprotected lexer::TKwprotected::init_tk";
 val_t NEW_TKwprotected_parser___lexer___TKwprotected___init_tk(val_t p0);
 typedef val_t (*NEW_TKwprotected_parser___lexer___TKwprotected___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwprotected_parser___parser_nodes___ANode___init = "new TKwprotected parser_nodes::ANode::init";
-val_t NEW_TKwprotected_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TKwprotected_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwprivate = "init var of TKwprivate";
+val_t NEW_TKwprotected_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TKwprotected_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwprivate(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TKwprivate_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TKwprivate(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TKwprivate = "check new TKwprivate";
 void CHECKNEW_parser___parser_nodes___TKwprivate(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TKwprivate_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwprivate_parser___lexer___TKwprivate___init_tk = "new TKwprivate lexer::TKwprivate::init_tk";
 val_t NEW_TKwprivate_parser___lexer___TKwprivate___init_tk(val_t p0);
 typedef val_t (*NEW_TKwprivate_parser___lexer___TKwprivate___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwprivate_parser___parser_nodes___ANode___init = "new TKwprivate parser_nodes::ANode::init";
-val_t NEW_TKwprivate_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TKwprivate_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwintrude = "init var of TKwintrude";
+val_t NEW_TKwprivate_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TKwprivate_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwintrude(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TKwintrude_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TKwintrude(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TKwintrude = "check new TKwintrude";
 void CHECKNEW_parser___parser_nodes___TKwintrude(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TKwintrude_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwintrude_parser___lexer___TKwintrude___init_tk = "new TKwintrude lexer::TKwintrude::init_tk";
 val_t NEW_TKwintrude_parser___lexer___TKwintrude___init_tk(val_t p0);
 typedef val_t (*NEW_TKwintrude_parser___lexer___TKwintrude___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwintrude_parser___parser_nodes___ANode___init = "new TKwintrude parser_nodes::ANode::init";
-val_t NEW_TKwintrude_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TKwintrude_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwif = "init var of TKwif";
+val_t NEW_TKwintrude_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TKwintrude_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwif(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TKwif_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TKwif(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TKwif = "check new TKwif";
 void CHECKNEW_parser___parser_nodes___TKwif(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TKwif_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwif_parser___lexer___TKwif___init_tk = "new TKwif lexer::TKwif::init_tk";
 val_t NEW_TKwif_parser___lexer___TKwif___init_tk(val_t p0);
 typedef val_t (*NEW_TKwif_parser___lexer___TKwif___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwif_parser___parser_nodes___ANode___init = "new TKwif parser_nodes::ANode::init";
-val_t NEW_TKwif_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TKwif_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwthen = "init var of TKwthen";
+val_t NEW_TKwif_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TKwif_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwthen(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TKwthen_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TKwthen(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TKwthen = "check new TKwthen";
 void CHECKNEW_parser___parser_nodes___TKwthen(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TKwthen_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwthen_parser___lexer___TKwthen___init_tk = "new TKwthen lexer::TKwthen::init_tk";
 val_t NEW_TKwthen_parser___lexer___TKwthen___init_tk(val_t p0);
 typedef val_t (*NEW_TKwthen_parser___lexer___TKwthen___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwthen_parser___parser_nodes___ANode___init = "new TKwthen parser_nodes::ANode::init";
-val_t NEW_TKwthen_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TKwthen_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwelse = "init var of TKwelse";
+val_t NEW_TKwthen_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TKwthen_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwelse(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TKwelse_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TKwelse(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TKwelse = "check new TKwelse";
 void CHECKNEW_parser___parser_nodes___TKwelse(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TKwelse_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwelse_parser___lexer___TKwelse___init_tk = "new TKwelse lexer::TKwelse::init_tk";
 val_t NEW_TKwelse_parser___lexer___TKwelse___init_tk(val_t p0);
 typedef val_t (*NEW_TKwelse_parser___lexer___TKwelse___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwelse_parser___parser_nodes___ANode___init = "new TKwelse parser_nodes::ANode::init";
-val_t NEW_TKwelse_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TKwelse_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwwhile = "init var of TKwwhile";
+val_t NEW_TKwelse_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TKwelse_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwwhile(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TKwwhile_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TKwwhile(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TKwwhile = "check new TKwwhile";
 void CHECKNEW_parser___parser_nodes___TKwwhile(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TKwwhile_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwwhile_parser___lexer___TKwwhile___init_tk = "new TKwwhile lexer::TKwwhile::init_tk";
 val_t NEW_TKwwhile_parser___lexer___TKwwhile___init_tk(val_t p0);
 typedef val_t (*NEW_TKwwhile_parser___lexer___TKwwhile___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwwhile_parser___parser_nodes___ANode___init = "new TKwwhile parser_nodes::ANode::init";
-val_t NEW_TKwwhile_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TKwwhile_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwloop = "init var of TKwloop";
+val_t NEW_TKwwhile_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TKwwhile_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwloop(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TKwloop_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TKwloop(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TKwloop = "check new TKwloop";
 void CHECKNEW_parser___parser_nodes___TKwloop(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TKwloop_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwloop_parser___lexer___TKwloop___init_tk = "new TKwloop lexer::TKwloop::init_tk";
 val_t NEW_TKwloop_parser___lexer___TKwloop___init_tk(val_t p0);
 typedef val_t (*NEW_TKwloop_parser___lexer___TKwloop___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwloop_parser___parser_nodes___ANode___init = "new TKwloop parser_nodes::ANode::init";
-val_t NEW_TKwloop_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TKwloop_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwfor = "init var of TKwfor";
+val_t NEW_TKwloop_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TKwloop_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwfor(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TKwfor_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TKwfor(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TKwfor = "check new TKwfor";
 void CHECKNEW_parser___parser_nodes___TKwfor(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TKwfor_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwfor_parser___lexer___TKwfor___init_tk = "new TKwfor lexer::TKwfor::init_tk";
 val_t NEW_TKwfor_parser___lexer___TKwfor___init_tk(val_t p0);
 typedef val_t (*NEW_TKwfor_parser___lexer___TKwfor___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwfor_parser___parser_nodes___ANode___init = "new TKwfor parser_nodes::ANode::init";
-val_t NEW_TKwfor_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TKwfor_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwin = "init var of TKwin";
+val_t NEW_TKwfor_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TKwfor_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwin(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TKwin_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TKwin(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TKwin = "check new TKwin";
 void CHECKNEW_parser___parser_nodes___TKwin(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TKwin_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwin_parser___lexer___TKwin___init_tk = "new TKwin lexer::TKwin::init_tk";
 val_t NEW_TKwin_parser___lexer___TKwin___init_tk(val_t p0);
 typedef val_t (*NEW_TKwin_parser___lexer___TKwin___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwin_parser___parser_nodes___ANode___init = "new TKwin parser_nodes::ANode::init";
-val_t NEW_TKwin_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TKwin_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwand = "init var of TKwand";
+val_t NEW_TKwin_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TKwin_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwand(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TKwand_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TKwand(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TKwand = "check new TKwand";
 void CHECKNEW_parser___parser_nodes___TKwand(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TKwand_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwand_parser___lexer___TKwand___init_tk = "new TKwand lexer::TKwand::init_tk";
 val_t NEW_TKwand_parser___lexer___TKwand___init_tk(val_t p0);
 typedef val_t (*NEW_TKwand_parser___lexer___TKwand___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwand_parser___parser_nodes___ANode___init = "new TKwand parser_nodes::ANode::init";
-val_t NEW_TKwand_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TKwand_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwor = "init var of TKwor";
+val_t NEW_TKwand_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TKwand_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwor(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TKwor_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TKwor(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TKwor = "check new TKwor";
 void CHECKNEW_parser___parser_nodes___TKwor(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TKwor_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwor_parser___lexer___TKwor___init_tk = "new TKwor lexer::TKwor::init_tk";
 val_t NEW_TKwor_parser___lexer___TKwor___init_tk(val_t p0);
 typedef val_t (*NEW_TKwor_parser___lexer___TKwor___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwor_parser___parser_nodes___ANode___init = "new TKwor parser_nodes::ANode::init";
-val_t NEW_TKwor_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TKwor_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwnot = "init var of TKwnot";
+val_t NEW_TKwor_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TKwor_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwnot(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TKwnot_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TKwnot(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TKwnot = "check new TKwnot";
 void CHECKNEW_parser___parser_nodes___TKwnot(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TKwnot_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwnot_parser___lexer___TKwnot___init_tk = "new TKwnot lexer::TKwnot::init_tk";
 val_t NEW_TKwnot_parser___lexer___TKwnot___init_tk(val_t p0);
 typedef val_t (*NEW_TKwnot_parser___lexer___TKwnot___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwnot_parser___parser_nodes___ANode___init = "new TKwnot parser_nodes::ANode::init";
-val_t NEW_TKwnot_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TKwnot_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwreturn = "init var of TKwreturn";
+val_t NEW_TKwnot_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TKwnot_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwreturn(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TKwreturn_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TKwreturn(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TKwreturn = "check new TKwreturn";
 void CHECKNEW_parser___parser_nodes___TKwreturn(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TKwreturn_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwreturn_parser___lexer___TKwreturn___init_tk = "new TKwreturn lexer::TKwreturn::init_tk";
 val_t NEW_TKwreturn_parser___lexer___TKwreturn___init_tk(val_t p0);
 typedef val_t (*NEW_TKwreturn_parser___lexer___TKwreturn___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwreturn_parser___parser_nodes___ANode___init = "new TKwreturn parser_nodes::ANode::init";
-val_t NEW_TKwreturn_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TKwreturn_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwcontinue = "init var of TKwcontinue";
+val_t NEW_TKwreturn_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TKwreturn_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwcontinue(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TKwcontinue_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TKwcontinue(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TKwcontinue = "check new TKwcontinue";
 void CHECKNEW_parser___parser_nodes___TKwcontinue(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TKwcontinue_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwcontinue_parser___lexer___TKwcontinue___init_tk = "new TKwcontinue lexer::TKwcontinue::init_tk";
 val_t NEW_TKwcontinue_parser___lexer___TKwcontinue___init_tk(val_t p0);
 typedef val_t (*NEW_TKwcontinue_parser___lexer___TKwcontinue___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwcontinue_parser___parser_nodes___ANode___init = "new TKwcontinue parser_nodes::ANode::init";
-val_t NEW_TKwcontinue_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TKwcontinue_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwbreak = "init var of TKwbreak";
+val_t NEW_TKwcontinue_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TKwcontinue_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwbreak(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TKwbreak_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TKwbreak(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TKwbreak = "check new TKwbreak";
 void CHECKNEW_parser___parser_nodes___TKwbreak(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TKwbreak_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwbreak_parser___lexer___TKwbreak___init_tk = "new TKwbreak lexer::TKwbreak::init_tk";
 val_t NEW_TKwbreak_parser___lexer___TKwbreak___init_tk(val_t p0);
 typedef val_t (*NEW_TKwbreak_parser___lexer___TKwbreak___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwbreak_parser___parser_nodes___ANode___init = "new TKwbreak parser_nodes::ANode::init";
-val_t NEW_TKwbreak_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TKwbreak_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwabort = "init var of TKwabort";
+val_t NEW_TKwbreak_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TKwbreak_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwabort(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TKwabort_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TKwabort(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TKwabort = "check new TKwabort";
 void CHECKNEW_parser___parser_nodes___TKwabort(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TKwabort_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwabort_parser___lexer___TKwabort___init_tk = "new TKwabort lexer::TKwabort::init_tk";
 val_t NEW_TKwabort_parser___lexer___TKwabort___init_tk(val_t p0);
 typedef val_t (*NEW_TKwabort_parser___lexer___TKwabort___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwabort_parser___parser_nodes___ANode___init = "new TKwabort parser_nodes::ANode::init";
-val_t NEW_TKwabort_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TKwabort_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwassert = "init var of TKwassert";
+val_t NEW_TKwabort_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TKwabort_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwassert(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TKwassert_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TKwassert(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TKwassert = "check new TKwassert";
 void CHECKNEW_parser___parser_nodes___TKwassert(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TKwassert_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwassert_parser___lexer___TKwassert___init_tk = "new TKwassert lexer::TKwassert::init_tk";
 val_t NEW_TKwassert_parser___lexer___TKwassert___init_tk(val_t p0);
 typedef val_t (*NEW_TKwassert_parser___lexer___TKwassert___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwassert_parser___parser_nodes___ANode___init = "new TKwassert parser_nodes::ANode::init";
-val_t NEW_TKwassert_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TKwassert_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwnew = "init var of TKwnew";
+val_t NEW_TKwassert_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TKwassert_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwnew(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TKwnew_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TKwnew(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TKwnew = "check new TKwnew";
 void CHECKNEW_parser___parser_nodes___TKwnew(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TKwnew_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwnew_parser___lexer___TKwnew___init_tk = "new TKwnew lexer::TKwnew::init_tk";
 val_t NEW_TKwnew_parser___lexer___TKwnew___init_tk(val_t p0);
 typedef val_t (*NEW_TKwnew_parser___lexer___TKwnew___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwnew_parser___parser_nodes___ANode___init = "new TKwnew parser_nodes::ANode::init";
-val_t NEW_TKwnew_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TKwnew_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwisa = "init var of TKwisa";
+val_t NEW_TKwnew_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TKwnew_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwisa(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TKwisa_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TKwisa(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TKwisa = "check new TKwisa";
 void CHECKNEW_parser___parser_nodes___TKwisa(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TKwisa_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwisa_parser___lexer___TKwisa___init_tk = "new TKwisa lexer::TKwisa::init_tk";
 val_t NEW_TKwisa_parser___lexer___TKwisa___init_tk(val_t p0);
 typedef val_t (*NEW_TKwisa_parser___lexer___TKwisa___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwisa_parser___parser_nodes___ANode___init = "new TKwisa parser_nodes::ANode::init";
-val_t NEW_TKwisa_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TKwisa_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwonce = "init var of TKwonce";
+val_t NEW_TKwisa_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TKwisa_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwonce(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TKwonce_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TKwonce(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TKwonce = "check new TKwonce";
 void CHECKNEW_parser___parser_nodes___TKwonce(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TKwonce_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwonce_parser___lexer___TKwonce___init_tk = "new TKwonce lexer::TKwonce::init_tk";
 val_t NEW_TKwonce_parser___lexer___TKwonce___init_tk(val_t p0);
 typedef val_t (*NEW_TKwonce_parser___lexer___TKwonce___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwonce_parser___parser_nodes___ANode___init = "new TKwonce parser_nodes::ANode::init";
-val_t NEW_TKwonce_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TKwonce_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwsuper = "init var of TKwsuper";
+val_t NEW_TKwonce_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TKwonce_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwsuper(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TKwsuper_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TKwsuper(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TKwsuper = "check new TKwsuper";
 void CHECKNEW_parser___parser_nodes___TKwsuper(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TKwsuper_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwsuper_parser___lexer___TKwsuper___init_tk = "new TKwsuper lexer::TKwsuper::init_tk";
 val_t NEW_TKwsuper_parser___lexer___TKwsuper___init_tk(val_t p0);
 typedef val_t (*NEW_TKwsuper_parser___lexer___TKwsuper___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwsuper_parser___parser_nodes___ANode___init = "new TKwsuper parser_nodes::ANode::init";
-val_t NEW_TKwsuper_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TKwsuper_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwself = "init var of TKwself";
+val_t NEW_TKwsuper_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TKwsuper_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwself(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TKwself_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TKwself(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TKwself = "check new TKwself";
 void CHECKNEW_parser___parser_nodes___TKwself(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TKwself_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwself_parser___lexer___TKwself___init_tk = "new TKwself lexer::TKwself::init_tk";
 val_t NEW_TKwself_parser___lexer___TKwself___init_tk(val_t p0);
 typedef val_t (*NEW_TKwself_parser___lexer___TKwself___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwself_parser___parser_nodes___ANode___init = "new TKwself parser_nodes::ANode::init";
-val_t NEW_TKwself_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TKwself_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwtrue = "init var of TKwtrue";
+val_t NEW_TKwself_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TKwself_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwtrue(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TKwtrue_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TKwtrue(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TKwtrue = "check new TKwtrue";
 void CHECKNEW_parser___parser_nodes___TKwtrue(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TKwtrue_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwtrue_parser___lexer___TKwtrue___init_tk = "new TKwtrue lexer::TKwtrue::init_tk";
 val_t NEW_TKwtrue_parser___lexer___TKwtrue___init_tk(val_t p0);
 typedef val_t (*NEW_TKwtrue_parser___lexer___TKwtrue___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwtrue_parser___parser_nodes___ANode___init = "new TKwtrue parser_nodes::ANode::init";
-val_t NEW_TKwtrue_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TKwtrue_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwfalse = "init var of TKwfalse";
+val_t NEW_TKwtrue_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TKwtrue_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwfalse(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TKwfalse_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TKwfalse(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TKwfalse = "check new TKwfalse";
 void CHECKNEW_parser___parser_nodes___TKwfalse(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TKwfalse_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwfalse_parser___lexer___TKwfalse___init_tk = "new TKwfalse lexer::TKwfalse::init_tk";
 val_t NEW_TKwfalse_parser___lexer___TKwfalse___init_tk(val_t p0);
 typedef val_t (*NEW_TKwfalse_parser___lexer___TKwfalse___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwfalse_parser___parser_nodes___ANode___init = "new TKwfalse parser_nodes::ANode::init";
-val_t NEW_TKwfalse_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TKwfalse_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwnull = "init var of TKwnull";
+val_t NEW_TKwfalse_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TKwfalse_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwnull(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TKwnull_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TKwnull(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TKwnull = "check new TKwnull";
 void CHECKNEW_parser___parser_nodes___TKwnull(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TKwnull_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwnull_parser___lexer___TKwnull___init_tk = "new TKwnull lexer::TKwnull::init_tk";
 val_t NEW_TKwnull_parser___lexer___TKwnull___init_tk(val_t p0);
 typedef val_t (*NEW_TKwnull_parser___lexer___TKwnull___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwnull_parser___parser_nodes___ANode___init = "new TKwnull parser_nodes::ANode::init";
-val_t NEW_TKwnull_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TKwnull_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwas = "init var of TKwas";
+val_t NEW_TKwnull_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TKwnull_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwas(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TKwas_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TKwas(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TKwas = "check new TKwas";
 void CHECKNEW_parser___parser_nodes___TKwas(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TKwas_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwas_parser___lexer___TKwas___init_tk = "new TKwas lexer::TKwas::init_tk";
 val_t NEW_TKwas_parser___lexer___TKwas___init_tk(val_t p0);
 typedef val_t (*NEW_TKwas_parser___lexer___TKwas___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwas_parser___parser_nodes___ANode___init = "new TKwas parser_nodes::ANode::init";
-val_t NEW_TKwas_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TKwas_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwnullable = "init var of TKwnullable";
+val_t NEW_TKwas_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TKwas_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwnullable(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TKwnullable_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TKwnullable(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TKwnullable = "check new TKwnullable";
 void CHECKNEW_parser___parser_nodes___TKwnullable(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TKwnullable_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwnullable_parser___lexer___TKwnullable___init_tk = "new TKwnullable lexer::TKwnullable::init_tk";
 val_t NEW_TKwnullable_parser___lexer___TKwnullable___init_tk(val_t p0);
 typedef val_t (*NEW_TKwnullable_parser___lexer___TKwnullable___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwnullable_parser___parser_nodes___ANode___init = "new TKwnullable parser_nodes::ANode::init";
-val_t NEW_TKwnullable_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TKwnullable_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwisset = "init var of TKwisset";
+val_t NEW_TKwnullable_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TKwnullable_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwisset(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TKwisset_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TKwisset(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TKwisset = "check new TKwisset";
 void CHECKNEW_parser___parser_nodes___TKwisset(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TKwisset_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwisset_parser___lexer___TKwisset___init_tk = "new TKwisset lexer::TKwisset::init_tk";
 val_t NEW_TKwisset_parser___lexer___TKwisset___init_tk(val_t p0);
 typedef val_t (*NEW_TKwisset_parser___lexer___TKwisset___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwisset_parser___parser_nodes___ANode___init = "new TKwisset parser_nodes::ANode::init";
-val_t NEW_TKwisset_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TKwisset_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwlabel = "init var of TKwlabel";
+val_t NEW_TKwisset_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TKwisset_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TKwlabel(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TKwlabel_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TKwlabel(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TKwlabel = "check new TKwlabel";
 void CHECKNEW_parser___parser_nodes___TKwlabel(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TKwlabel_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwlabel_parser___lexer___TKwlabel___init_tk = "new TKwlabel lexer::TKwlabel::init_tk";
 val_t NEW_TKwlabel_parser___lexer___TKwlabel___init_tk(val_t p0);
 typedef val_t (*NEW_TKwlabel_parser___lexer___TKwlabel___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwlabel_parser___parser_nodes___ANode___init = "new TKwlabel parser_nodes::ANode::init";
-val_t NEW_TKwlabel_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TKwlabel_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TOpar = "init var of TOpar";
+val_t NEW_TKwlabel_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TKwlabel_parser___parser_nodes___ANode___init_t)(void);
+void INIT_ATTRIBUTES__parser___parser_nodes___TKwdebug(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TKwdebug_t)(val_t p0);
+val_t NEW_parser___parser_nodes___TKwdebug(void);
+void CHECKNEW_parser___parser_nodes___TKwdebug(val_t p0);
+typedef void (*CHECKNEW_parser___parser_nodes___TKwdebug_t)(val_t p0);
+val_t NEW_TKwdebug_parser___lexer___TKwdebug___init_tk(val_t p0);
+typedef val_t (*NEW_TKwdebug_parser___lexer___TKwdebug___init_tk_t)(val_t p0);
+val_t NEW_TKwdebug_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TKwdebug_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TOpar(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TOpar_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TOpar(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TOpar = "check new TOpar";
 void CHECKNEW_parser___parser_nodes___TOpar(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TOpar_t)(val_t p0);
-static const char * const LOCATE_NEW_TOpar_parser___lexer___TOpar___init_tk = "new TOpar lexer::TOpar::init_tk";
 val_t NEW_TOpar_parser___lexer___TOpar___init_tk(val_t p0);
 typedef val_t (*NEW_TOpar_parser___lexer___TOpar___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TOpar_parser___parser_nodes___ANode___init = "new TOpar parser_nodes::ANode::init";
-val_t NEW_TOpar_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TOpar_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TCpar = "init var of TCpar";
+val_t NEW_TOpar_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TOpar_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TCpar(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TCpar_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TCpar(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TCpar = "check new TCpar";
 void CHECKNEW_parser___parser_nodes___TCpar(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TCpar_t)(val_t p0);
-static const char * const LOCATE_NEW_TCpar_parser___lexer___TCpar___init_tk = "new TCpar lexer::TCpar::init_tk";
 val_t NEW_TCpar_parser___lexer___TCpar___init_tk(val_t p0);
 typedef val_t (*NEW_TCpar_parser___lexer___TCpar___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TCpar_parser___parser_nodes___ANode___init = "new TCpar parser_nodes::ANode::init";
-val_t NEW_TCpar_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TCpar_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TObra = "init var of TObra";
+val_t NEW_TCpar_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TCpar_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TObra(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TObra_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TObra(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TObra = "check new TObra";
 void CHECKNEW_parser___parser_nodes___TObra(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TObra_t)(val_t p0);
-static const char * const LOCATE_NEW_TObra_parser___lexer___TObra___init_tk = "new TObra lexer::TObra::init_tk";
 val_t NEW_TObra_parser___lexer___TObra___init_tk(val_t p0);
 typedef val_t (*NEW_TObra_parser___lexer___TObra___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TObra_parser___parser_nodes___ANode___init = "new TObra parser_nodes::ANode::init";
-val_t NEW_TObra_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TObra_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TCbra = "init var of TCbra";
+val_t NEW_TObra_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TObra_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TCbra(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TCbra_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TCbra(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TCbra = "check new TCbra";
 void CHECKNEW_parser___parser_nodes___TCbra(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TCbra_t)(val_t p0);
-static const char * const LOCATE_NEW_TCbra_parser___lexer___TCbra___init_tk = "new TCbra lexer::TCbra::init_tk";
 val_t NEW_TCbra_parser___lexer___TCbra___init_tk(val_t p0);
 typedef val_t (*NEW_TCbra_parser___lexer___TCbra___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TCbra_parser___parser_nodes___ANode___init = "new TCbra parser_nodes::ANode::init";
-val_t NEW_TCbra_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TCbra_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TComma = "init var of TComma";
+val_t NEW_TCbra_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TCbra_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TComma(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TComma_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TComma(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TComma = "check new TComma";
 void CHECKNEW_parser___parser_nodes___TComma(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TComma_t)(val_t p0);
-static const char * const LOCATE_NEW_TComma_parser___lexer___TComma___init_tk = "new TComma lexer::TComma::init_tk";
 val_t NEW_TComma_parser___lexer___TComma___init_tk(val_t p0);
 typedef val_t (*NEW_TComma_parser___lexer___TComma___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TComma_parser___parser_nodes___ANode___init = "new TComma parser_nodes::ANode::init";
-val_t NEW_TComma_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TComma_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TColumn = "init var of TColumn";
+val_t NEW_TComma_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TComma_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TColumn(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TColumn_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TColumn(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TColumn = "check new TColumn";
 void CHECKNEW_parser___parser_nodes___TColumn(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TColumn_t)(val_t p0);
-static const char * const LOCATE_NEW_TColumn_parser___lexer___TColumn___init_tk = "new TColumn lexer::TColumn::init_tk";
 val_t NEW_TColumn_parser___lexer___TColumn___init_tk(val_t p0);
 typedef val_t (*NEW_TColumn_parser___lexer___TColumn___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TColumn_parser___parser_nodes___ANode___init = "new TColumn parser_nodes::ANode::init";
-val_t NEW_TColumn_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TColumn_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TQuad = "init var of TQuad";
+val_t NEW_TColumn_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TColumn_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TQuad(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TQuad_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TQuad(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TQuad = "check new TQuad";
 void CHECKNEW_parser___parser_nodes___TQuad(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TQuad_t)(val_t p0);
-static const char * const LOCATE_NEW_TQuad_parser___lexer___TQuad___init_tk = "new TQuad lexer::TQuad::init_tk";
 val_t NEW_TQuad_parser___lexer___TQuad___init_tk(val_t p0);
 typedef val_t (*NEW_TQuad_parser___lexer___TQuad___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TQuad_parser___parser_nodes___ANode___init = "new TQuad parser_nodes::ANode::init";
-val_t NEW_TQuad_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TQuad_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TAssign = "init var of TAssign";
+val_t NEW_TQuad_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TQuad_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TAssign(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TAssign_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TAssign(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TAssign = "check new TAssign";
 void CHECKNEW_parser___parser_nodes___TAssign(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TAssign_t)(val_t p0);
-static const char * const LOCATE_NEW_TAssign_parser___lexer___TAssign___init_tk = "new TAssign lexer::TAssign::init_tk";
 val_t NEW_TAssign_parser___lexer___TAssign___init_tk(val_t p0);
 typedef val_t (*NEW_TAssign_parser___lexer___TAssign___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TAssign_parser___parser_nodes___ANode___init = "new TAssign parser_nodes::ANode::init";
-val_t NEW_TAssign_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TAssign_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TPluseq = "init var of TPluseq";
+val_t NEW_TAssign_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TAssign_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TPluseq(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TPluseq_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TPluseq(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TPluseq = "check new TPluseq";
 void CHECKNEW_parser___parser_nodes___TPluseq(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TPluseq_t)(val_t p0);
-static const char * const LOCATE_NEW_TPluseq_parser___lexer___TPluseq___init_tk = "new TPluseq lexer::TPluseq::init_tk";
 val_t NEW_TPluseq_parser___lexer___TPluseq___init_tk(val_t p0);
 typedef val_t (*NEW_TPluseq_parser___lexer___TPluseq___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TPluseq_parser___parser_nodes___ANode___init = "new TPluseq parser_nodes::ANode::init";
-val_t NEW_TPluseq_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TPluseq_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TMinuseq = "init var of TMinuseq";
+val_t NEW_TPluseq_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TPluseq_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TMinuseq(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TMinuseq_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TMinuseq(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TMinuseq = "check new TMinuseq";
 void CHECKNEW_parser___parser_nodes___TMinuseq(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TMinuseq_t)(val_t p0);
-static const char * const LOCATE_NEW_TMinuseq_parser___lexer___TMinuseq___init_tk = "new TMinuseq lexer::TMinuseq::init_tk";
 val_t NEW_TMinuseq_parser___lexer___TMinuseq___init_tk(val_t p0);
 typedef val_t (*NEW_TMinuseq_parser___lexer___TMinuseq___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TMinuseq_parser___parser_nodes___ANode___init = "new TMinuseq parser_nodes::ANode::init";
-val_t NEW_TMinuseq_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TMinuseq_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TDotdotdot = "init var of TDotdotdot";
+val_t NEW_TMinuseq_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TMinuseq_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TDotdotdot(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TDotdotdot_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TDotdotdot(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TDotdotdot = "check new TDotdotdot";
 void CHECKNEW_parser___parser_nodes___TDotdotdot(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TDotdotdot_t)(val_t p0);
-static const char * const LOCATE_NEW_TDotdotdot_parser___lexer___TDotdotdot___init_tk = "new TDotdotdot lexer::TDotdotdot::init_tk";
 val_t NEW_TDotdotdot_parser___lexer___TDotdotdot___init_tk(val_t p0);
 typedef val_t (*NEW_TDotdotdot_parser___lexer___TDotdotdot___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TDotdotdot_parser___parser_nodes___ANode___init = "new TDotdotdot parser_nodes::ANode::init";
-val_t NEW_TDotdotdot_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TDotdotdot_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TDotdot = "init var of TDotdot";
+val_t NEW_TDotdotdot_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TDotdotdot_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TDotdot(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TDotdot_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TDotdot(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TDotdot = "check new TDotdot";
 void CHECKNEW_parser___parser_nodes___TDotdot(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TDotdot_t)(val_t p0);
-static const char * const LOCATE_NEW_TDotdot_parser___lexer___TDotdot___init_tk = "new TDotdot lexer::TDotdot::init_tk";
 val_t NEW_TDotdot_parser___lexer___TDotdot___init_tk(val_t p0);
 typedef val_t (*NEW_TDotdot_parser___lexer___TDotdot___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TDotdot_parser___parser_nodes___ANode___init = "new TDotdot parser_nodes::ANode::init";
-val_t NEW_TDotdot_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TDotdot_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TDot = "init var of TDot";
+val_t NEW_TDotdot_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TDotdot_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TDot(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TDot_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TDot(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TDot = "check new TDot";
 void CHECKNEW_parser___parser_nodes___TDot(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TDot_t)(val_t p0);
-static const char * const LOCATE_NEW_TDot_parser___lexer___TDot___init_tk = "new TDot lexer::TDot::init_tk";
 val_t NEW_TDot_parser___lexer___TDot___init_tk(val_t p0);
 typedef val_t (*NEW_TDot_parser___lexer___TDot___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TDot_parser___parser_nodes___ANode___init = "new TDot parser_nodes::ANode::init";
-val_t NEW_TDot_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TDot_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TPlus = "init var of TPlus";
+val_t NEW_TDot_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TDot_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TPlus(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TPlus_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TPlus(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TPlus = "check new TPlus";
 void CHECKNEW_parser___parser_nodes___TPlus(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TPlus_t)(val_t p0);
-static const char * const LOCATE_NEW_TPlus_parser___lexer___TPlus___init_tk = "new TPlus lexer::TPlus::init_tk";
 val_t NEW_TPlus_parser___lexer___TPlus___init_tk(val_t p0);
 typedef val_t (*NEW_TPlus_parser___lexer___TPlus___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TPlus_parser___parser_nodes___ANode___init = "new TPlus parser_nodes::ANode::init";
-val_t NEW_TPlus_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TPlus_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TMinus = "init var of TMinus";
+val_t NEW_TPlus_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TPlus_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TMinus(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TMinus_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TMinus(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TMinus = "check new TMinus";
 void CHECKNEW_parser___parser_nodes___TMinus(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TMinus_t)(val_t p0);
-static const char * const LOCATE_NEW_TMinus_parser___lexer___TMinus___init_tk = "new TMinus lexer::TMinus::init_tk";
 val_t NEW_TMinus_parser___lexer___TMinus___init_tk(val_t p0);
 typedef val_t (*NEW_TMinus_parser___lexer___TMinus___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TMinus_parser___parser_nodes___ANode___init = "new TMinus parser_nodes::ANode::init";
-val_t NEW_TMinus_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TMinus_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TStar = "init var of TStar";
+val_t NEW_TMinus_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TMinus_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TStar(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TStar_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TStar(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TStar = "check new TStar";
 void CHECKNEW_parser___parser_nodes___TStar(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TStar_t)(val_t p0);
-static const char * const LOCATE_NEW_TStar_parser___lexer___TStar___init_tk = "new TStar lexer::TStar::init_tk";
 val_t NEW_TStar_parser___lexer___TStar___init_tk(val_t p0);
 typedef val_t (*NEW_TStar_parser___lexer___TStar___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TStar_parser___parser_nodes___ANode___init = "new TStar parser_nodes::ANode::init";
-val_t NEW_TStar_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TStar_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TSlash = "init var of TSlash";
+val_t NEW_TStar_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TStar_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TSlash(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TSlash_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TSlash(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TSlash = "check new TSlash";
 void CHECKNEW_parser___parser_nodes___TSlash(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TSlash_t)(val_t p0);
-static const char * const LOCATE_NEW_TSlash_parser___lexer___TSlash___init_tk = "new TSlash lexer::TSlash::init_tk";
 val_t NEW_TSlash_parser___lexer___TSlash___init_tk(val_t p0);
 typedef val_t (*NEW_TSlash_parser___lexer___TSlash___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TSlash_parser___parser_nodes___ANode___init = "new TSlash parser_nodes::ANode::init";
-val_t NEW_TSlash_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TSlash_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TPercent = "init var of TPercent";
+val_t NEW_TSlash_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TSlash_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TPercent(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TPercent_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TPercent(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TPercent = "check new TPercent";
 void CHECKNEW_parser___parser_nodes___TPercent(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TPercent_t)(val_t p0);
-static const char * const LOCATE_NEW_TPercent_parser___lexer___TPercent___init_tk = "new TPercent lexer::TPercent::init_tk";
 val_t NEW_TPercent_parser___lexer___TPercent___init_tk(val_t p0);
 typedef val_t (*NEW_TPercent_parser___lexer___TPercent___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TPercent_parser___parser_nodes___ANode___init = "new TPercent parser_nodes::ANode::init";
-val_t NEW_TPercent_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TPercent_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TEq = "init var of TEq";
+val_t NEW_TPercent_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TPercent_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TEq(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TEq_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TEq(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TEq = "check new TEq";
 void CHECKNEW_parser___parser_nodes___TEq(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TEq_t)(val_t p0);
-static const char * const LOCATE_NEW_TEq_parser___lexer___TEq___init_tk = "new TEq lexer::TEq::init_tk";
 val_t NEW_TEq_parser___lexer___TEq___init_tk(val_t p0);
 typedef val_t (*NEW_TEq_parser___lexer___TEq___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TEq_parser___parser_nodes___ANode___init = "new TEq parser_nodes::ANode::init";
-val_t NEW_TEq_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TEq_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TNe = "init var of TNe";
+val_t NEW_TEq_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TEq_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TNe(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TNe_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TNe(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TNe = "check new TNe";
 void CHECKNEW_parser___parser_nodes___TNe(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TNe_t)(val_t p0);
-static const char * const LOCATE_NEW_TNe_parser___lexer___TNe___init_tk = "new TNe lexer::TNe::init_tk";
 val_t NEW_TNe_parser___lexer___TNe___init_tk(val_t p0);
 typedef val_t (*NEW_TNe_parser___lexer___TNe___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TNe_parser___parser_nodes___ANode___init = "new TNe parser_nodes::ANode::init";
-val_t NEW_TNe_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TNe_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TLt = "init var of TLt";
+val_t NEW_TNe_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TNe_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TLt(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TLt_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TLt(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TLt = "check new TLt";
 void CHECKNEW_parser___parser_nodes___TLt(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TLt_t)(val_t p0);
-static const char * const LOCATE_NEW_TLt_parser___lexer___TLt___init_tk = "new TLt lexer::TLt::init_tk";
 val_t NEW_TLt_parser___lexer___TLt___init_tk(val_t p0);
 typedef val_t (*NEW_TLt_parser___lexer___TLt___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TLt_parser___parser_nodes___ANode___init = "new TLt parser_nodes::ANode::init";
-val_t NEW_TLt_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TLt_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TLe = "init var of TLe";
+val_t NEW_TLt_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TLt_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TLe(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TLe_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TLe(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TLe = "check new TLe";
 void CHECKNEW_parser___parser_nodes___TLe(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TLe_t)(val_t p0);
-static const char * const LOCATE_NEW_TLe_parser___lexer___TLe___init_tk = "new TLe lexer::TLe::init_tk";
 val_t NEW_TLe_parser___lexer___TLe___init_tk(val_t p0);
 typedef val_t (*NEW_TLe_parser___lexer___TLe___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TLe_parser___parser_nodes___ANode___init = "new TLe parser_nodes::ANode::init";
-val_t NEW_TLe_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TLe_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TLl = "init var of TLl";
+val_t NEW_TLe_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TLe_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TLl(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TLl_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TLl(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TLl = "check new TLl";
 void CHECKNEW_parser___parser_nodes___TLl(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TLl_t)(val_t p0);
-static const char * const LOCATE_NEW_TLl_parser___lexer___TLl___init_tk = "new TLl lexer::TLl::init_tk";
 val_t NEW_TLl_parser___lexer___TLl___init_tk(val_t p0);
 typedef val_t (*NEW_TLl_parser___lexer___TLl___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TLl_parser___parser_nodes___ANode___init = "new TLl parser_nodes::ANode::init";
-val_t NEW_TLl_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TLl_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TGt = "init var of TGt";
+val_t NEW_TLl_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TLl_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TGt(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TGt_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TGt(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TGt = "check new TGt";
 void CHECKNEW_parser___parser_nodes___TGt(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TGt_t)(val_t p0);
-static const char * const LOCATE_NEW_TGt_parser___lexer___TGt___init_tk = "new TGt lexer::TGt::init_tk";
 val_t NEW_TGt_parser___lexer___TGt___init_tk(val_t p0);
 typedef val_t (*NEW_TGt_parser___lexer___TGt___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TGt_parser___parser_nodes___ANode___init = "new TGt parser_nodes::ANode::init";
-val_t NEW_TGt_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TGt_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TGe = "init var of TGe";
+val_t NEW_TGt_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TGt_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TGe(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TGe_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TGe(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TGe = "check new TGe";
 void CHECKNEW_parser___parser_nodes___TGe(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TGe_t)(val_t p0);
-static const char * const LOCATE_NEW_TGe_parser___lexer___TGe___init_tk = "new TGe lexer::TGe::init_tk";
 val_t NEW_TGe_parser___lexer___TGe___init_tk(val_t p0);
 typedef val_t (*NEW_TGe_parser___lexer___TGe___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TGe_parser___parser_nodes___ANode___init = "new TGe parser_nodes::ANode::init";
-val_t NEW_TGe_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TGe_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TGg = "init var of TGg";
+val_t NEW_TGe_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TGe_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TGg(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TGg_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TGg(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TGg = "check new TGg";
 void CHECKNEW_parser___parser_nodes___TGg(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TGg_t)(val_t p0);
-static const char * const LOCATE_NEW_TGg_parser___lexer___TGg___init_tk = "new TGg lexer::TGg::init_tk";
 val_t NEW_TGg_parser___lexer___TGg___init_tk(val_t p0);
 typedef val_t (*NEW_TGg_parser___lexer___TGg___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TGg_parser___parser_nodes___ANode___init = "new TGg parser_nodes::ANode::init";
-val_t NEW_TGg_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TGg_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TStarship = "init var of TStarship";
+val_t NEW_TGg_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TGg_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TStarship(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TStarship_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TStarship(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TStarship = "check new TStarship";
 void CHECKNEW_parser___parser_nodes___TStarship(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TStarship_t)(val_t p0);
-static const char * const LOCATE_NEW_TStarship_parser___lexer___TStarship___init_tk = "new TStarship lexer::TStarship::init_tk";
 val_t NEW_TStarship_parser___lexer___TStarship___init_tk(val_t p0);
 typedef val_t (*NEW_TStarship_parser___lexer___TStarship___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TStarship_parser___parser_nodes___ANode___init = "new TStarship parser_nodes::ANode::init";
-val_t NEW_TStarship_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TStarship_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TBang = "init var of TBang";
+val_t NEW_TStarship_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TStarship_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TBang(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TBang_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TBang(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TBang = "check new TBang";
 void CHECKNEW_parser___parser_nodes___TBang(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TBang_t)(val_t p0);
-static const char * const LOCATE_NEW_TBang_parser___lexer___TBang___init_tk = "new TBang lexer::TBang::init_tk";
 val_t NEW_TBang_parser___lexer___TBang___init_tk(val_t p0);
 typedef val_t (*NEW_TBang_parser___lexer___TBang___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TBang_parser___parser_nodes___ANode___init = "new TBang parser_nodes::ANode::init";
-val_t NEW_TBang_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TBang_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TClassid = "init var of TClassid";
+val_t NEW_TBang_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TBang_parser___parser_nodes___ANode___init_t)(void);
+void INIT_ATTRIBUTES__parser___parser_nodes___TAt(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TAt_t)(val_t p0);
+val_t NEW_parser___parser_nodes___TAt(void);
+void CHECKNEW_parser___parser_nodes___TAt(val_t p0);
+typedef void (*CHECKNEW_parser___parser_nodes___TAt_t)(val_t p0);
+val_t NEW_TAt_parser___lexer___TAt___init_tk(val_t p0);
+typedef val_t (*NEW_TAt_parser___lexer___TAt___init_tk_t)(val_t p0);
+val_t NEW_TAt_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TAt_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TClassid(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TClassid_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TClassid(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TClassid = "check new TClassid";
 void CHECKNEW_parser___parser_nodes___TClassid(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TClassid_t)(val_t p0);
-static const char * const LOCATE_NEW_TClassid_parser___lexer___TClassid___init_tk = "new TClassid lexer::TClassid::init_tk";
-val_t NEW_TClassid_parser___lexer___TClassid___init_tk(val_t p0, val_t p1);
-typedef val_t (*NEW_TClassid_parser___lexer___TClassid___init_tk_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_TClassid_parser___parser_nodes___ANode___init = "new TClassid parser_nodes::ANode::init";
-val_t NEW_TClassid_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TClassid_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TId = "init var of TId";
+val_t NEW_TClassid_parser___lexer___TClassid___init_tk(val_t p0);
+typedef val_t (*NEW_TClassid_parser___lexer___TClassid___init_tk_t)(val_t p0);
+val_t NEW_TClassid_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TClassid_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TId(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TId_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TId(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TId = "check new TId";
 void CHECKNEW_parser___parser_nodes___TId(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TId_t)(val_t p0);
-static const char * const LOCATE_NEW_TId_parser___lexer___TId___init_tk = "new TId lexer::TId::init_tk";
-val_t NEW_TId_parser___lexer___TId___init_tk(val_t p0, val_t p1);
-typedef val_t (*NEW_TId_parser___lexer___TId___init_tk_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_TId_parser___parser_nodes___ANode___init = "new TId parser_nodes::ANode::init";
-val_t NEW_TId_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TId_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TAttrid = "init var of TAttrid";
+val_t NEW_TId_parser___lexer___TId___init_tk(val_t p0);
+typedef val_t (*NEW_TId_parser___lexer___TId___init_tk_t)(val_t p0);
+val_t NEW_TId_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TId_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TAttrid(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TAttrid_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TAttrid(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TAttrid = "check new TAttrid";
 void CHECKNEW_parser___parser_nodes___TAttrid(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TAttrid_t)(val_t p0);
-static const char * const LOCATE_NEW_TAttrid_parser___lexer___TAttrid___init_tk = "new TAttrid lexer::TAttrid::init_tk";
-val_t NEW_TAttrid_parser___lexer___TAttrid___init_tk(val_t p0, val_t p1);
-typedef val_t (*NEW_TAttrid_parser___lexer___TAttrid___init_tk_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_TAttrid_parser___parser_nodes___ANode___init = "new TAttrid parser_nodes::ANode::init";
-val_t NEW_TAttrid_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TAttrid_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TNumber = "init var of TNumber";
+val_t NEW_TAttrid_parser___lexer___TAttrid___init_tk(val_t p0);
+typedef val_t (*NEW_TAttrid_parser___lexer___TAttrid___init_tk_t)(val_t p0);
+val_t NEW_TAttrid_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TAttrid_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TNumber(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TNumber_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TNumber(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TNumber = "check new TNumber";
 void CHECKNEW_parser___parser_nodes___TNumber(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TNumber_t)(val_t p0);
-static const char * const LOCATE_NEW_TNumber_parser___lexer___TNumber___init_tk = "new TNumber lexer::TNumber::init_tk";
-val_t NEW_TNumber_parser___lexer___TNumber___init_tk(val_t p0, val_t p1);
-typedef val_t (*NEW_TNumber_parser___lexer___TNumber___init_tk_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_TNumber_parser___parser_nodes___ANode___init = "new TNumber parser_nodes::ANode::init";
-val_t NEW_TNumber_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TNumber_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TFloat = "init var of TFloat";
+val_t NEW_TNumber_parser___lexer___TNumber___init_tk(val_t p0);
+typedef val_t (*NEW_TNumber_parser___lexer___TNumber___init_tk_t)(val_t p0);
+val_t NEW_TNumber_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TNumber_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TFloat(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TFloat_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TFloat(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TFloat = "check new TFloat";
 void CHECKNEW_parser___parser_nodes___TFloat(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TFloat_t)(val_t p0);
-static const char * const LOCATE_NEW_TFloat_parser___lexer___TFloat___init_tk = "new TFloat lexer::TFloat::init_tk";
-val_t NEW_TFloat_parser___lexer___TFloat___init_tk(val_t p0, val_t p1);
-typedef val_t (*NEW_TFloat_parser___lexer___TFloat___init_tk_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_TFloat_parser___parser_nodes___ANode___init = "new TFloat parser_nodes::ANode::init";
-val_t NEW_TFloat_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TFloat_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TChar = "init var of TChar";
+val_t NEW_TFloat_parser___lexer___TFloat___init_tk(val_t p0);
+typedef val_t (*NEW_TFloat_parser___lexer___TFloat___init_tk_t)(val_t p0);
+val_t NEW_TFloat_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TFloat_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TChar(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TChar_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TChar(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TChar = "check new TChar";
 void CHECKNEW_parser___parser_nodes___TChar(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TChar_t)(val_t p0);
-static const char * const LOCATE_NEW_TChar_parser___lexer___TChar___init_tk = "new TChar lexer::TChar::init_tk";
-val_t NEW_TChar_parser___lexer___TChar___init_tk(val_t p0, val_t p1);
-typedef val_t (*NEW_TChar_parser___lexer___TChar___init_tk_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_TChar_parser___parser_nodes___ANode___init = "new TChar parser_nodes::ANode::init";
-val_t NEW_TChar_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TChar_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TString = "init var of TString";
+val_t NEW_TChar_parser___lexer___TChar___init_tk(val_t p0);
+typedef val_t (*NEW_TChar_parser___lexer___TChar___init_tk_t)(val_t p0);
+val_t NEW_TChar_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TChar_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TString(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TString_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TString(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TString = "check new TString";
 void CHECKNEW_parser___parser_nodes___TString(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TString_t)(val_t p0);
-static const char * const LOCATE_NEW_TString_parser___lexer___TString___init_tk = "new TString lexer::TString::init_tk";
-val_t NEW_TString_parser___lexer___TString___init_tk(val_t p0, val_t p1);
-typedef val_t (*NEW_TString_parser___lexer___TString___init_tk_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_TString_parser___parser_nodes___ANode___init = "new TString parser_nodes::ANode::init";
-val_t NEW_TString_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TString_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TStartString = "init var of TStartString";
+val_t NEW_TString_parser___lexer___TString___init_tk(val_t p0);
+typedef val_t (*NEW_TString_parser___lexer___TString___init_tk_t)(val_t p0);
+val_t NEW_TString_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TString_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TStartString(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TStartString_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TStartString(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TStartString = "check new TStartString";
 void CHECKNEW_parser___parser_nodes___TStartString(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TStartString_t)(val_t p0);
-static const char * const LOCATE_NEW_TStartString_parser___lexer___TStartString___init_tk = "new TStartString lexer::TStartString::init_tk";
-val_t NEW_TStartString_parser___lexer___TStartString___init_tk(val_t p0, val_t p1);
-typedef val_t (*NEW_TStartString_parser___lexer___TStartString___init_tk_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_TStartString_parser___parser_nodes___ANode___init = "new TStartString parser_nodes::ANode::init";
-val_t NEW_TStartString_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TStartString_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TMidString = "init var of TMidString";
+val_t NEW_TStartString_parser___lexer___TStartString___init_tk(val_t p0);
+typedef val_t (*NEW_TStartString_parser___lexer___TStartString___init_tk_t)(val_t p0);
+val_t NEW_TStartString_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TStartString_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TMidString(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TMidString_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TMidString(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TMidString = "check new TMidString";
 void CHECKNEW_parser___parser_nodes___TMidString(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TMidString_t)(val_t p0);
-static const char * const LOCATE_NEW_TMidString_parser___lexer___TMidString___init_tk = "new TMidString lexer::TMidString::init_tk";
-val_t NEW_TMidString_parser___lexer___TMidString___init_tk(val_t p0, val_t p1);
-typedef val_t (*NEW_TMidString_parser___lexer___TMidString___init_tk_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_TMidString_parser___parser_nodes___ANode___init = "new TMidString parser_nodes::ANode::init";
-val_t NEW_TMidString_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TMidString_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TEndString = "init var of TEndString";
+val_t NEW_TMidString_parser___lexer___TMidString___init_tk(val_t p0);
+typedef val_t (*NEW_TMidString_parser___lexer___TMidString___init_tk_t)(val_t p0);
+val_t NEW_TMidString_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TMidString_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___TEndString(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TEndString_t)(val_t p0);
 val_t NEW_parser___parser_nodes___TEndString(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___TEndString = "check new TEndString";
 void CHECKNEW_parser___parser_nodes___TEndString(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___TEndString_t)(val_t p0);
-static const char * const LOCATE_NEW_TEndString_parser___lexer___TEndString___init_tk = "new TEndString lexer::TEndString::init_tk";
-val_t NEW_TEndString_parser___lexer___TEndString___init_tk(val_t p0, val_t p1);
-typedef val_t (*NEW_TEndString_parser___lexer___TEndString___init_tk_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_TEndString_parser___parser_nodes___ANode___init = "new TEndString parser_nodes::ANode::init";
-val_t NEW_TEndString_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TEndString_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___EOF = "init var of EOF";
+val_t NEW_TEndString_parser___lexer___TEndString___init_tk(val_t p0);
+typedef val_t (*NEW_TEndString_parser___lexer___TEndString___init_tk_t)(val_t p0);
+val_t NEW_TEndString_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TEndString_parser___parser_nodes___ANode___init_t)(void);
+void INIT_ATTRIBUTES__parser___parser_nodes___TBadString(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TBadString_t)(val_t p0);
+val_t NEW_parser___parser_nodes___TBadString(void);
+void CHECKNEW_parser___parser_nodes___TBadString(val_t p0);
+typedef void (*CHECKNEW_parser___parser_nodes___TBadString_t)(val_t p0);
+val_t NEW_TBadString_parser___lexer___TBadString___init_tk(val_t p0);
+typedef val_t (*NEW_TBadString_parser___lexer___TBadString___init_tk_t)(val_t p0);
+val_t NEW_TBadString_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TBadString_parser___parser_nodes___ANode___init_t)(void);
+void INIT_ATTRIBUTES__parser___parser_nodes___TBadChar(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TBadChar_t)(val_t p0);
+val_t NEW_parser___parser_nodes___TBadChar(void);
+void CHECKNEW_parser___parser_nodes___TBadChar(val_t p0);
+typedef void (*CHECKNEW_parser___parser_nodes___TBadChar_t)(val_t p0);
+val_t NEW_TBadChar_parser___lexer___TBadChar___init_tk(val_t p0);
+typedef val_t (*NEW_TBadChar_parser___lexer___TBadChar___init_tk_t)(val_t p0);
+val_t NEW_TBadChar_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TBadChar_parser___parser_nodes___ANode___init_t)(void);
+void INIT_ATTRIBUTES__parser___parser_nodes___TExternCodeSegment(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___TExternCodeSegment_t)(val_t p0);
+val_t NEW_parser___parser_nodes___TExternCodeSegment(void);
+void CHECKNEW_parser___parser_nodes___TExternCodeSegment(val_t p0);
+typedef void (*CHECKNEW_parser___parser_nodes___TExternCodeSegment_t)(val_t p0);
+val_t NEW_TExternCodeSegment_parser___lexer___TExternCodeSegment___init_tk(val_t p0);
+typedef val_t (*NEW_TExternCodeSegment_parser___lexer___TExternCodeSegment___init_tk_t)(val_t p0);
+val_t NEW_TExternCodeSegment_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_TExternCodeSegment_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___EOF(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___EOF_t)(val_t p0);
 val_t NEW_parser___parser_nodes___EOF(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___EOF = "check new EOF";
 void CHECKNEW_parser___parser_nodes___EOF(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___EOF_t)(val_t p0);
-static const char * const LOCATE_NEW_EOF_parser___lexer___EOF___init = "new EOF lexer::EOF::init";
-val_t NEW_EOF_parser___lexer___EOF___init(val_t p0);
-typedef val_t (*NEW_EOF_parser___lexer___EOF___init_t)(val_t p0);
-static const char * const LOCATE_NEW_EOF_parser___parser_nodes___EOF___noinit = "new EOF parser_nodes::EOF::noinit";
-val_t NEW_EOF_parser___parser_nodes___EOF___noinit(void);
-typedef val_t (*NEW_EOF_parser___parser_nodes___EOF___noinit_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AError = "init var of AError";
+val_t NEW_EOF_parser___lexer___EOF___init_tk(val_t p0);
+typedef val_t (*NEW_EOF_parser___lexer___EOF___init_tk_t)(val_t p0);
+val_t NEW_EOF_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_EOF_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AError(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AError_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AError(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AError = "check new AError";
 void CHECKNEW_parser___parser_nodes___AError(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AError_t)(val_t p0);
-static const char * const LOCATE_NEW_AError_parser___lexer___AError___init_error = "new AError lexer::AError::init_error";
 val_t NEW_AError_parser___lexer___AError___init_error(val_t p0, val_t p1);
 typedef val_t (*NEW_AError_parser___lexer___AError___init_error_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_AError_parser___parser_nodes___AError___noinit = "new AError parser_nodes::AError::noinit";
-val_t NEW_AError_parser___parser_nodes___AError___noinit(void);
-typedef val_t (*NEW_AError_parser___parser_nodes___AError___noinit_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AModule = "init var of AModule";
+val_t NEW_AError_parser___lexer___EOF___init_tk(val_t p0);
+typedef val_t (*NEW_AError_parser___lexer___EOF___init_tk_t)(val_t p0);
+val_t NEW_AError_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AError_parser___parser_nodes___ANode___init_t)(void);
+void INIT_ATTRIBUTES__parser___parser_nodes___ALexerError(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ALexerError_t)(val_t p0);
+val_t NEW_parser___parser_nodes___ALexerError(void);
+void CHECKNEW_parser___parser_nodes___ALexerError(val_t p0);
+typedef void (*CHECKNEW_parser___parser_nodes___ALexerError_t)(val_t p0);
+val_t NEW_ALexerError_parser___lexer___ALexerError___init_lexer_error(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_ALexerError_parser___lexer___ALexerError___init_lexer_error_t)(val_t p0, val_t p1, val_t p2);
+val_t NEW_ALexerError_parser___lexer___AError___init_error(val_t p0, val_t p1);
+typedef val_t (*NEW_ALexerError_parser___lexer___AError___init_error_t)(val_t p0, val_t p1);
+val_t NEW_ALexerError_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_ALexerError_parser___parser_nodes___ANode___init_t)(void);
+val_t NEW_ALexerError_parser___lexer___EOF___init_tk(val_t p0);
+typedef val_t (*NEW_ALexerError_parser___lexer___EOF___init_tk_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___parser_nodes___AParserError(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AParserError_t)(val_t p0);
+val_t NEW_parser___parser_nodes___AParserError(void);
+void CHECKNEW_parser___parser_nodes___AParserError(val_t p0);
+typedef void (*CHECKNEW_parser___parser_nodes___AParserError_t)(val_t p0);
+val_t NEW_AParserError_parser___lexer___AParserError___init_parser_error(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_AParserError_parser___lexer___AParserError___init_parser_error_t)(val_t p0, val_t p1, val_t p2);
+val_t NEW_AParserError_parser___lexer___AError___init_error(val_t p0, val_t p1);
+typedef val_t (*NEW_AParserError_parser___lexer___AError___init_error_t)(val_t p0, val_t p1);
+val_t NEW_AParserError_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AParserError_parser___parser_nodes___ANode___init_t)(void);
+val_t NEW_AParserError_parser___lexer___EOF___init_tk(val_t p0);
+typedef val_t (*NEW_AParserError_parser___lexer___EOF___init_tk_t)(val_t p0);
 void INIT_ATTRIBUTES__parser___parser_nodes___AModule(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AModule_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AModule(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AModule = "check new AModule";
 void CHECKNEW_parser___parser_nodes___AModule(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AModule_t)(val_t p0);
-static const char * const LOCATE_NEW_AModule_parser___parser_prod___AModule___empty_init = "new AModule parser_prod::AModule::empty_init";
 val_t NEW_AModule_parser___parser_prod___AModule___empty_init(void);
 typedef val_t (*NEW_AModule_parser___parser_prod___AModule___empty_init_t)(void);
-static const char * const LOCATE_NEW_AModule_parser___parser_prod___AModule___init_amodule = "new AModule parser_prod::AModule::init_amodule";
-val_t NEW_AModule_parser___parser_prod___AModule___init_amodule(val_t p0, val_t p1, val_t p2);
-typedef val_t (*NEW_AModule_parser___parser_prod___AModule___init_amodule_t)(val_t p0, val_t p1, val_t p2);
-static const char * const LOCATE_NEW_AModule_parser___parser_nodes___ANode___init = "new AModule parser_nodes::ANode::init";
-val_t NEW_AModule_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AModule_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AModuledecl = "init var of AModuledecl";
+val_t NEW_AModule_parser___parser_prod___AModule___init_amodule(val_t p0, val_t p1, val_t p2, val_t p3);
+typedef val_t (*NEW_AModule_parser___parser_prod___AModule___init_amodule_t)(val_t p0, val_t p1, val_t p2, val_t p3);
+val_t NEW_AModule_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AModule_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AModuledecl(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AModuledecl_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AModuledecl(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AModuledecl = "check new AModuledecl";
 void CHECKNEW_parser___parser_nodes___AModuledecl(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AModuledecl_t)(val_t p0);
-static const char * const LOCATE_NEW_AModuledecl_parser___parser_prod___AModuledecl___empty_init = "new AModuledecl parser_prod::AModuledecl::empty_init";
 val_t NEW_AModuledecl_parser___parser_prod___AModuledecl___empty_init(void);
 typedef val_t (*NEW_AModuledecl_parser___parser_prod___AModuledecl___empty_init_t)(void);
-static const char * const LOCATE_NEW_AModuledecl_parser___parser_prod___AModuledecl___init_amoduledecl = "new AModuledecl parser_prod::AModuledecl::init_amoduledecl";
-val_t NEW_AModuledecl_parser___parser_prod___AModuledecl___init_amoduledecl(val_t p0, val_t p1, val_t p2);
-typedef val_t (*NEW_AModuledecl_parser___parser_prod___AModuledecl___init_amoduledecl_t)(val_t p0, val_t p1, val_t p2);
-static const char * const LOCATE_NEW_AModuledecl_parser___parser_nodes___ANode___init = "new AModuledecl parser_nodes::ANode::init";
-val_t NEW_AModuledecl_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AModuledecl_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AImport = "init var of AImport";
-void INIT_ATTRIBUTES__parser___parser_nodes___AImport(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AImport_t)(val_t p0);
-val_t NEW_parser___parser_nodes___AImport(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AImport = "check new AImport";
-void CHECKNEW_parser___parser_nodes___AImport(val_t p0);
-typedef void (*CHECKNEW_parser___parser_nodes___AImport_t)(val_t p0);
-static const char * const LOCATE_NEW_AImport_parser___parser_nodes___ANode___init = "new AImport parser_nodes::ANode::init";
-val_t NEW_AImport_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AImport_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AStdImport = "init var of AStdImport";
+val_t NEW_AModuledecl_parser___parser_prod___AModuledecl___init_amoduledecl(val_t p0, val_t p1, val_t p2, val_t p3);
+typedef val_t (*NEW_AModuledecl_parser___parser_prod___AModuledecl___init_amoduledecl_t)(val_t p0, val_t p1, val_t p2, val_t p3);
+val_t NEW_AModuledecl_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AModuledecl_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AStdImport(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AStdImport_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AStdImport(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AStdImport = "check new AStdImport";
 void CHECKNEW_parser___parser_nodes___AStdImport(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AStdImport_t)(val_t p0);
-static const char * const LOCATE_NEW_AStdImport_parser___parser_prod___AStdImport___empty_init = "new AStdImport parser_prod::AStdImport::empty_init";
 val_t NEW_AStdImport_parser___parser_prod___AStdImport___empty_init(void);
 typedef val_t (*NEW_AStdImport_parser___parser_prod___AStdImport___empty_init_t)(void);
-static const char * const LOCATE_NEW_AStdImport_parser___parser_prod___AStdImport___init_astdimport = "new AStdImport parser_prod::AStdImport::init_astdimport";
-val_t NEW_AStdImport_parser___parser_prod___AStdImport___init_astdimport(val_t p0, val_t p1, val_t p2);
-typedef val_t (*NEW_AStdImport_parser___parser_prod___AStdImport___init_astdimport_t)(val_t p0, val_t p1, val_t p2);
-static const char * const LOCATE_NEW_AStdImport_parser___parser_nodes___ANode___init = "new AStdImport parser_nodes::ANode::init";
-val_t NEW_AStdImport_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AStdImport_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ANoImport = "init var of ANoImport";
+val_t NEW_AStdImport_parser___parser_prod___AStdImport___init_astdimport(val_t p0, val_t p1, val_t p2, val_t p3);
+typedef val_t (*NEW_AStdImport_parser___parser_prod___AStdImport___init_astdimport_t)(val_t p0, val_t p1, val_t p2, val_t p3);
+val_t NEW_AStdImport_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AStdImport_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___ANoImport(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ANoImport_t)(val_t p0);
 val_t NEW_parser___parser_nodes___ANoImport(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___ANoImport = "check new ANoImport";
 void CHECKNEW_parser___parser_nodes___ANoImport(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___ANoImport_t)(val_t p0);
-static const char * const LOCATE_NEW_ANoImport_parser___parser_prod___ANoImport___empty_init = "new ANoImport parser_prod::ANoImport::empty_init";
 val_t NEW_ANoImport_parser___parser_prod___ANoImport___empty_init(void);
 typedef val_t (*NEW_ANoImport_parser___parser_prod___ANoImport___empty_init_t)(void);
-static const char * const LOCATE_NEW_ANoImport_parser___parser_prod___ANoImport___init_anoimport = "new ANoImport parser_prod::ANoImport::init_anoimport";
 val_t NEW_ANoImport_parser___parser_prod___ANoImport___init_anoimport(val_t p0, val_t p1, val_t p2);
 typedef val_t (*NEW_ANoImport_parser___parser_prod___ANoImport___init_anoimport_t)(val_t p0, val_t p1, val_t p2);
-static const char * const LOCATE_NEW_ANoImport_parser___parser_nodes___ANode___init = "new ANoImport parser_nodes::ANode::init";
-val_t NEW_ANoImport_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ANoImport_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AVisibility = "init var of AVisibility";
-void INIT_ATTRIBUTES__parser___parser_nodes___AVisibility(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AVisibility_t)(val_t p0);
-val_t NEW_parser___parser_nodes___AVisibility(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AVisibility = "check new AVisibility";
-void CHECKNEW_parser___parser_nodes___AVisibility(val_t p0);
-typedef void (*CHECKNEW_parser___parser_nodes___AVisibility_t)(val_t p0);
-static const char * const LOCATE_NEW_AVisibility_parser___parser_nodes___ANode___init = "new AVisibility parser_nodes::ANode::init";
-val_t NEW_AVisibility_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AVisibility_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___APublicVisibility = "init var of APublicVisibility";
+val_t NEW_ANoImport_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_ANoImport_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___APublicVisibility(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___APublicVisibility_t)(val_t p0);
 val_t NEW_parser___parser_nodes___APublicVisibility(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___APublicVisibility = "check new APublicVisibility";
 void CHECKNEW_parser___parser_nodes___APublicVisibility(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___APublicVisibility_t)(val_t p0);
-static const char * const LOCATE_NEW_APublicVisibility_parser___parser_prod___APublicVisibility___empty_init = "new APublicVisibility parser_prod::APublicVisibility::empty_init";
 val_t NEW_APublicVisibility_parser___parser_prod___APublicVisibility___empty_init(void);
 typedef val_t (*NEW_APublicVisibility_parser___parser_prod___APublicVisibility___empty_init_t)(void);
-static const char * const LOCATE_NEW_APublicVisibility_parser___parser_prod___APublicVisibility___init_apublicvisibility = "new APublicVisibility parser_prod::APublicVisibility::init_apublicvisibility";
 val_t NEW_APublicVisibility_parser___parser_prod___APublicVisibility___init_apublicvisibility(void);
 typedef val_t (*NEW_APublicVisibility_parser___parser_prod___APublicVisibility___init_apublicvisibility_t)(void);
-static const char * const LOCATE_NEW_APublicVisibility_parser___parser_nodes___ANode___init = "new APublicVisibility parser_nodes::ANode::init";
-val_t NEW_APublicVisibility_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_APublicVisibility_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___APrivateVisibility = "init var of APrivateVisibility";
+val_t NEW_APublicVisibility_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_APublicVisibility_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___APrivateVisibility(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___APrivateVisibility_t)(val_t p0);
 val_t NEW_parser___parser_nodes___APrivateVisibility(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___APrivateVisibility = "check new APrivateVisibility";
 void CHECKNEW_parser___parser_nodes___APrivateVisibility(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___APrivateVisibility_t)(val_t p0);
-static const char * const LOCATE_NEW_APrivateVisibility_parser___parser_prod___APrivateVisibility___empty_init = "new APrivateVisibility parser_prod::APrivateVisibility::empty_init";
 val_t NEW_APrivateVisibility_parser___parser_prod___APrivateVisibility___empty_init(void);
 typedef val_t (*NEW_APrivateVisibility_parser___parser_prod___APrivateVisibility___empty_init_t)(void);
-static const char * const LOCATE_NEW_APrivateVisibility_parser___parser_prod___APrivateVisibility___init_aprivatevisibility = "new APrivateVisibility parser_prod::APrivateVisibility::init_aprivatevisibility";
 val_t NEW_APrivateVisibility_parser___parser_prod___APrivateVisibility___init_aprivatevisibility(val_t p0);
 typedef val_t (*NEW_APrivateVisibility_parser___parser_prod___APrivateVisibility___init_aprivatevisibility_t)(val_t p0);
-static const char * const LOCATE_NEW_APrivateVisibility_parser___parser_nodes___ANode___init = "new APrivateVisibility parser_nodes::ANode::init";
-val_t NEW_APrivateVisibility_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_APrivateVisibility_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AProtectedVisibility = "init var of AProtectedVisibility";
+val_t NEW_APrivateVisibility_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_APrivateVisibility_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AProtectedVisibility(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AProtectedVisibility_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AProtectedVisibility(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AProtectedVisibility = "check new AProtectedVisibility";
 void CHECKNEW_parser___parser_nodes___AProtectedVisibility(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AProtectedVisibility_t)(val_t p0);
-static const char * const LOCATE_NEW_AProtectedVisibility_parser___parser_prod___AProtectedVisibility___empty_init = "new AProtectedVisibility parser_prod::AProtectedVisibility::empty_init";
 val_t NEW_AProtectedVisibility_parser___parser_prod___AProtectedVisibility___empty_init(void);
 typedef val_t (*NEW_AProtectedVisibility_parser___parser_prod___AProtectedVisibility___empty_init_t)(void);
-static const char * const LOCATE_NEW_AProtectedVisibility_parser___parser_prod___AProtectedVisibility___init_aprotectedvisibility = "new AProtectedVisibility parser_prod::AProtectedVisibility::init_aprotectedvisibility";
 val_t NEW_AProtectedVisibility_parser___parser_prod___AProtectedVisibility___init_aprotectedvisibility(val_t p0);
 typedef val_t (*NEW_AProtectedVisibility_parser___parser_prod___AProtectedVisibility___init_aprotectedvisibility_t)(val_t p0);
-static const char * const LOCATE_NEW_AProtectedVisibility_parser___parser_nodes___ANode___init = "new AProtectedVisibility parser_nodes::ANode::init";
-val_t NEW_AProtectedVisibility_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AProtectedVisibility_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AIntrudeVisibility = "init var of AIntrudeVisibility";
+val_t NEW_AProtectedVisibility_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AProtectedVisibility_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AIntrudeVisibility(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AIntrudeVisibility_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AIntrudeVisibility(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AIntrudeVisibility = "check new AIntrudeVisibility";
 void CHECKNEW_parser___parser_nodes___AIntrudeVisibility(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AIntrudeVisibility_t)(val_t p0);
-static const char * const LOCATE_NEW_AIntrudeVisibility_parser___parser_prod___AIntrudeVisibility___empty_init = "new AIntrudeVisibility parser_prod::AIntrudeVisibility::empty_init";
 val_t NEW_AIntrudeVisibility_parser___parser_prod___AIntrudeVisibility___empty_init(void);
 typedef val_t (*NEW_AIntrudeVisibility_parser___parser_prod___AIntrudeVisibility___empty_init_t)(void);
-static const char * const LOCATE_NEW_AIntrudeVisibility_parser___parser_prod___AIntrudeVisibility___init_aintrudevisibility = "new AIntrudeVisibility parser_prod::AIntrudeVisibility::init_aintrudevisibility";
 val_t NEW_AIntrudeVisibility_parser___parser_prod___AIntrudeVisibility___init_aintrudevisibility(val_t p0);
 typedef val_t (*NEW_AIntrudeVisibility_parser___parser_prod___AIntrudeVisibility___init_aintrudevisibility_t)(val_t p0);
-static const char * const LOCATE_NEW_AIntrudeVisibility_parser___parser_nodes___ANode___init = "new AIntrudeVisibility parser_nodes::ANode::init";
-val_t NEW_AIntrudeVisibility_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AIntrudeVisibility_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AClassdef = "init var of AClassdef";
-void INIT_ATTRIBUTES__parser___parser_nodes___AClassdef(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AClassdef_t)(val_t p0);
-val_t NEW_parser___parser_nodes___AClassdef(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AClassdef = "check new AClassdef";
-void CHECKNEW_parser___parser_nodes___AClassdef(val_t p0);
-typedef void (*CHECKNEW_parser___parser_nodes___AClassdef_t)(val_t p0);
-static const char * const LOCATE_NEW_AClassdef_parser___parser_nodes___ANode___init = "new AClassdef parser_nodes::ANode::init";
-val_t NEW_AClassdef_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AClassdef_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AStdClassdef = "init var of AStdClassdef";
+val_t NEW_AIntrudeVisibility_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AIntrudeVisibility_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AStdClassdef(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AStdClassdef_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AStdClassdef(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AStdClassdef = "check new AStdClassdef";
 void CHECKNEW_parser___parser_nodes___AStdClassdef(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AStdClassdef_t)(val_t p0);
-static const char * const LOCATE_NEW_AStdClassdef_parser___parser_prod___AStdClassdef___empty_init = "new AStdClassdef parser_prod::AStdClassdef::empty_init";
 val_t NEW_AStdClassdef_parser___parser_prod___AStdClassdef___empty_init(void);
 typedef val_t (*NEW_AStdClassdef_parser___parser_prod___AStdClassdef___empty_init_t)(void);
-static const char * const LOCATE_NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef = "new AStdClassdef parser_prod::AStdClassdef::init_astdclassdef";
-val_t NEW_AStdClassdef_parser___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___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___parser_nodes___ANode___init = "new AStdClassdef parser_nodes::ANode::init";
-val_t NEW_AStdClassdef_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AStdClassdef_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ATopClassdef = "init var of ATopClassdef";
+val_t NEW_AStdClassdef_parser___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, val_t p8, val_t p9, val_t p10);
+typedef val_t (*NEW_AStdClassdef_parser___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, val_t p8, val_t p9, val_t p10);
+val_t NEW_AStdClassdef_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AStdClassdef_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___ATopClassdef(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ATopClassdef_t)(val_t p0);
 val_t NEW_parser___parser_nodes___ATopClassdef(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___ATopClassdef = "check new ATopClassdef";
 void CHECKNEW_parser___parser_nodes___ATopClassdef(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___ATopClassdef_t)(val_t p0);
-static const char * const LOCATE_NEW_ATopClassdef_parser___parser_prod___ATopClassdef___empty_init = "new ATopClassdef parser_prod::ATopClassdef::empty_init";
 val_t NEW_ATopClassdef_parser___parser_prod___ATopClassdef___empty_init(void);
 typedef val_t (*NEW_ATopClassdef_parser___parser_prod___ATopClassdef___empty_init_t)(void);
-static const char * const LOCATE_NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef = "new ATopClassdef parser_prod::ATopClassdef::init_atopclassdef";
 val_t NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(val_t p0);
 typedef val_t (*NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef_t)(val_t p0);
-static const char * const LOCATE_NEW_ATopClassdef_parser___parser_nodes___ANode___init = "new ATopClassdef parser_nodes::ANode::init";
-val_t NEW_ATopClassdef_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ATopClassdef_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AMainClassdef = "init var of AMainClassdef";
+val_t NEW_ATopClassdef_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_ATopClassdef_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AMainClassdef(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AMainClassdef_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AMainClassdef(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AMainClassdef = "check new AMainClassdef";
 void CHECKNEW_parser___parser_nodes___AMainClassdef(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AMainClassdef_t)(val_t p0);
-static const char * const LOCATE_NEW_AMainClassdef_parser___parser_prod___AMainClassdef___empty_init = "new AMainClassdef parser_prod::AMainClassdef::empty_init";
 val_t NEW_AMainClassdef_parser___parser_prod___AMainClassdef___empty_init(void);
 typedef val_t (*NEW_AMainClassdef_parser___parser_prod___AMainClassdef___empty_init_t)(void);
-static const char * const LOCATE_NEW_AMainClassdef_parser___parser_prod___AMainClassdef___init_amainclassdef = "new AMainClassdef parser_prod::AMainClassdef::init_amainclassdef";
 val_t NEW_AMainClassdef_parser___parser_prod___AMainClassdef___init_amainclassdef(val_t p0);
 typedef val_t (*NEW_AMainClassdef_parser___parser_prod___AMainClassdef___init_amainclassdef_t)(val_t p0);
-static const char * const LOCATE_NEW_AMainClassdef_parser___parser_nodes___ANode___init = "new AMainClassdef parser_nodes::ANode::init";
-val_t NEW_AMainClassdef_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AMainClassdef_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AClasskind = "init var of AClasskind";
-void INIT_ATTRIBUTES__parser___parser_nodes___AClasskind(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AClasskind_t)(val_t p0);
-val_t NEW_parser___parser_nodes___AClasskind(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AClasskind = "check new AClasskind";
-void CHECKNEW_parser___parser_nodes___AClasskind(val_t p0);
-typedef void (*CHECKNEW_parser___parser_nodes___AClasskind_t)(val_t p0);
-static const char * const LOCATE_NEW_AClasskind_parser___parser_nodes___ANode___init = "new AClasskind parser_nodes::ANode::init";
-val_t NEW_AClasskind_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AClasskind_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AConcreteClasskind = "init var of AConcreteClasskind";
+val_t NEW_AMainClassdef_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AMainClassdef_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AConcreteClasskind(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AConcreteClasskind_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AConcreteClasskind(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AConcreteClasskind = "check new AConcreteClasskind";
 void CHECKNEW_parser___parser_nodes___AConcreteClasskind(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AConcreteClasskind_t)(val_t p0);
-static const char * const LOCATE_NEW_AConcreteClasskind_parser___parser_prod___AConcreteClasskind___empty_init = "new AConcreteClasskind parser_prod::AConcreteClasskind::empty_init";
 val_t NEW_AConcreteClasskind_parser___parser_prod___AConcreteClasskind___empty_init(void);
 typedef val_t (*NEW_AConcreteClasskind_parser___parser_prod___AConcreteClasskind___empty_init_t)(void);
-static const char * const LOCATE_NEW_AConcreteClasskind_parser___parser_prod___AConcreteClasskind___init_aconcreteclasskind = "new AConcreteClasskind parser_prod::AConcreteClasskind::init_aconcreteclasskind";
 val_t NEW_AConcreteClasskind_parser___parser_prod___AConcreteClasskind___init_aconcreteclasskind(val_t p0);
 typedef val_t (*NEW_AConcreteClasskind_parser___parser_prod___AConcreteClasskind___init_aconcreteclasskind_t)(val_t p0);
-static const char * const LOCATE_NEW_AConcreteClasskind_parser___parser_nodes___ANode___init = "new AConcreteClasskind parser_nodes::ANode::init";
-val_t NEW_AConcreteClasskind_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AConcreteClasskind_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AAbstractClasskind = "init var of AAbstractClasskind";
+val_t NEW_AConcreteClasskind_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AConcreteClasskind_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AAbstractClasskind(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AAbstractClasskind_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AAbstractClasskind(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AAbstractClasskind = "check new AAbstractClasskind";
 void CHECKNEW_parser___parser_nodes___AAbstractClasskind(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AAbstractClasskind_t)(val_t p0);
-static const char * const LOCATE_NEW_AAbstractClasskind_parser___parser_prod___AAbstractClasskind___empty_init = "new AAbstractClasskind parser_prod::AAbstractClasskind::empty_init";
 val_t NEW_AAbstractClasskind_parser___parser_prod___AAbstractClasskind___empty_init(void);
 typedef val_t (*NEW_AAbstractClasskind_parser___parser_prod___AAbstractClasskind___empty_init_t)(void);
-static const char * const LOCATE_NEW_AAbstractClasskind_parser___parser_prod___AAbstractClasskind___init_aabstractclasskind = "new AAbstractClasskind parser_prod::AAbstractClasskind::init_aabstractclasskind";
 val_t NEW_AAbstractClasskind_parser___parser_prod___AAbstractClasskind___init_aabstractclasskind(val_t p0, val_t p1);
 typedef val_t (*NEW_AAbstractClasskind_parser___parser_prod___AAbstractClasskind___init_aabstractclasskind_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_AAbstractClasskind_parser___parser_nodes___ANode___init = "new AAbstractClasskind parser_nodes::ANode::init";
-val_t NEW_AAbstractClasskind_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AAbstractClasskind_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AInterfaceClasskind = "init var of AInterfaceClasskind";
+val_t NEW_AAbstractClasskind_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AAbstractClasskind_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AInterfaceClasskind(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AInterfaceClasskind_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AInterfaceClasskind(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AInterfaceClasskind = "check new AInterfaceClasskind";
 void CHECKNEW_parser___parser_nodes___AInterfaceClasskind(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AInterfaceClasskind_t)(val_t p0);
-static const char * const LOCATE_NEW_AInterfaceClasskind_parser___parser_prod___AInterfaceClasskind___empty_init = "new AInterfaceClasskind parser_prod::AInterfaceClasskind::empty_init";
 val_t NEW_AInterfaceClasskind_parser___parser_prod___AInterfaceClasskind___empty_init(void);
 typedef val_t (*NEW_AInterfaceClasskind_parser___parser_prod___AInterfaceClasskind___empty_init_t)(void);
-static const char * const LOCATE_NEW_AInterfaceClasskind_parser___parser_prod___AInterfaceClasskind___init_ainterfaceclasskind = "new AInterfaceClasskind parser_prod::AInterfaceClasskind::init_ainterfaceclasskind";
 val_t NEW_AInterfaceClasskind_parser___parser_prod___AInterfaceClasskind___init_ainterfaceclasskind(val_t p0);
 typedef val_t (*NEW_AInterfaceClasskind_parser___parser_prod___AInterfaceClasskind___init_ainterfaceclasskind_t)(val_t p0);
-static const char * const LOCATE_NEW_AInterfaceClasskind_parser___parser_nodes___ANode___init = "new AInterfaceClasskind parser_nodes::ANode::init";
-val_t NEW_AInterfaceClasskind_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AInterfaceClasskind_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AEnumClasskind = "init var of AEnumClasskind";
+val_t NEW_AInterfaceClasskind_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AInterfaceClasskind_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AEnumClasskind(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AEnumClasskind_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AEnumClasskind(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AEnumClasskind = "check new AEnumClasskind";
 void CHECKNEW_parser___parser_nodes___AEnumClasskind(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AEnumClasskind_t)(val_t p0);
-static const char * const LOCATE_NEW_AEnumClasskind_parser___parser_prod___AEnumClasskind___empty_init = "new AEnumClasskind parser_prod::AEnumClasskind::empty_init";
 val_t NEW_AEnumClasskind_parser___parser_prod___AEnumClasskind___empty_init(void);
 typedef val_t (*NEW_AEnumClasskind_parser___parser_prod___AEnumClasskind___empty_init_t)(void);
-static const char * const LOCATE_NEW_AEnumClasskind_parser___parser_prod___AEnumClasskind___init_aenumclasskind = "new AEnumClasskind parser_prod::AEnumClasskind::init_aenumclasskind";
 val_t NEW_AEnumClasskind_parser___parser_prod___AEnumClasskind___init_aenumclasskind(val_t p0);
 typedef val_t (*NEW_AEnumClasskind_parser___parser_prod___AEnumClasskind___init_aenumclasskind_t)(val_t p0);
-static const char * const LOCATE_NEW_AEnumClasskind_parser___parser_nodes___ANode___init = "new AEnumClasskind parser_nodes::ANode::init";
-val_t NEW_AEnumClasskind_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AEnumClasskind_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AExternClasskind = "init var of AExternClasskind";
+val_t NEW_AEnumClasskind_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AEnumClasskind_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AExternClasskind(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AExternClasskind_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AExternClasskind(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AExternClasskind = "check new AExternClasskind";
 void CHECKNEW_parser___parser_nodes___AExternClasskind(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AExternClasskind_t)(val_t p0);
-static const char * const LOCATE_NEW_AExternClasskind_parser___parser_prod___AExternClasskind___empty_init = "new AExternClasskind parser_prod::AExternClasskind::empty_init";
 val_t NEW_AExternClasskind_parser___parser_prod___AExternClasskind___empty_init(void);
 typedef val_t (*NEW_AExternClasskind_parser___parser_prod___AExternClasskind___empty_init_t)(void);
-static const char * const LOCATE_NEW_AExternClasskind_parser___parser_prod___AExternClasskind___init_aexternclasskind = "new AExternClasskind parser_prod::AExternClasskind::init_aexternclasskind";
-val_t NEW_AExternClasskind_parser___parser_prod___AExternClasskind___init_aexternclasskind(val_t p0);
-typedef val_t (*NEW_AExternClasskind_parser___parser_prod___AExternClasskind___init_aexternclasskind_t)(val_t p0);
-static const char * const LOCATE_NEW_AExternClasskind_parser___parser_nodes___ANode___init = "new AExternClasskind parser_nodes::ANode::init";
-val_t NEW_AExternClasskind_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AExternClasskind_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AFormaldef = "init var of AFormaldef";
+val_t NEW_AExternClasskind_parser___parser_prod___AExternClasskind___init_aexternclasskind(val_t p0, val_t p1);
+typedef val_t (*NEW_AExternClasskind_parser___parser_prod___AExternClasskind___init_aexternclasskind_t)(val_t p0, val_t p1);
+val_t NEW_AExternClasskind_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AExternClasskind_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AFormaldef(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AFormaldef_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AFormaldef(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AFormaldef = "check new AFormaldef";
 void CHECKNEW_parser___parser_nodes___AFormaldef(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AFormaldef_t)(val_t p0);
-static const char * const LOCATE_NEW_AFormaldef_parser___parser_prod___AFormaldef___empty_init = "new AFormaldef parser_prod::AFormaldef::empty_init";
 val_t NEW_AFormaldef_parser___parser_prod___AFormaldef___empty_init(void);
 typedef val_t (*NEW_AFormaldef_parser___parser_prod___AFormaldef___empty_init_t)(void);
-static const char * const LOCATE_NEW_AFormaldef_parser___parser_prod___AFormaldef___init_aformaldef = "new AFormaldef parser_prod::AFormaldef::init_aformaldef";
-val_t NEW_AFormaldef_parser___parser_prod___AFormaldef___init_aformaldef(val_t p0, val_t p1);
-typedef val_t (*NEW_AFormaldef_parser___parser_prod___AFormaldef___init_aformaldef_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_AFormaldef_parser___parser_nodes___ANode___init = "new AFormaldef parser_nodes::ANode::init";
-val_t NEW_AFormaldef_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AFormaldef_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ASuperclass = "init var of ASuperclass";
+val_t NEW_AFormaldef_parser___parser_prod___AFormaldef___init_aformaldef(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_AFormaldef_parser___parser_prod___AFormaldef___init_aformaldef_t)(val_t p0, val_t p1, val_t p2);
+val_t NEW_AFormaldef_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AFormaldef_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___ASuperclass(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ASuperclass_t)(val_t p0);
 val_t NEW_parser___parser_nodes___ASuperclass(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___ASuperclass = "check new ASuperclass";
 void CHECKNEW_parser___parser_nodes___ASuperclass(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___ASuperclass_t)(val_t p0);
-static const char * const LOCATE_NEW_ASuperclass_parser___parser_prod___ASuperclass___empty_init = "new ASuperclass parser_prod::ASuperclass::empty_init";
 val_t NEW_ASuperclass_parser___parser_prod___ASuperclass___empty_init(void);
 typedef val_t (*NEW_ASuperclass_parser___parser_prod___ASuperclass___empty_init_t)(void);
-static const char * const LOCATE_NEW_ASuperclass_parser___parser_prod___ASuperclass___init_asuperclass = "new ASuperclass parser_prod::ASuperclass::init_asuperclass";
 val_t NEW_ASuperclass_parser___parser_prod___ASuperclass___init_asuperclass(val_t p0, val_t p1, val_t p2);
 typedef val_t (*NEW_ASuperclass_parser___parser_prod___ASuperclass___init_asuperclass_t)(val_t p0, val_t p1, val_t p2);
-static const char * const LOCATE_NEW_ASuperclass_parser___parser_nodes___ANode___init = "new ASuperclass parser_nodes::ANode::init";
-val_t NEW_ASuperclass_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ASuperclass_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___APropdef = "init var of APropdef";
-void INIT_ATTRIBUTES__parser___parser_nodes___APropdef(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___APropdef_t)(val_t p0);
-val_t NEW_parser___parser_nodes___APropdef(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___APropdef = "check new APropdef";
-void CHECKNEW_parser___parser_nodes___APropdef(val_t p0);
-typedef void (*CHECKNEW_parser___parser_nodes___APropdef_t)(val_t p0);
-static const char * const LOCATE_NEW_APropdef_parser___parser_nodes___ANode___init = "new APropdef parser_nodes::ANode::init";
-val_t NEW_APropdef_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_APropdef_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AAttrPropdef = "init var of AAttrPropdef";
+val_t NEW_ASuperclass_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_ASuperclass_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AAttrPropdef(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AAttrPropdef_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AAttrPropdef(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AAttrPropdef = "check new AAttrPropdef";
 void CHECKNEW_parser___parser_nodes___AAttrPropdef(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AAttrPropdef_t)(val_t p0);
-static const char * const LOCATE_NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___empty_init = "new AAttrPropdef parser_prod::AAttrPropdef::empty_init";
 val_t NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___empty_init(void);
 typedef val_t (*NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___empty_init_t)(void);
-static const char * const LOCATE_NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef = "new AAttrPropdef parser_prod::AAttrPropdef::init_aattrpropdef";
-val_t NEW_AAttrPropdef_parser___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___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___parser_nodes___ANode___init = "new AAttrPropdef parser_nodes::ANode::init";
-val_t NEW_AAttrPropdef_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AAttrPropdef_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AMethPropdef = "init var of AMethPropdef";
-void INIT_ATTRIBUTES__parser___parser_nodes___AMethPropdef(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AMethPropdef_t)(val_t p0);
-val_t NEW_parser___parser_nodes___AMethPropdef(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AMethPropdef = "check new AMethPropdef";
-void CHECKNEW_parser___parser_nodes___AMethPropdef(val_t p0);
-typedef void (*CHECKNEW_parser___parser_nodes___AMethPropdef_t)(val_t p0);
-static const char * const LOCATE_NEW_AMethPropdef_parser___parser_prod___AMethPropdef___empty_init = "new AMethPropdef parser_prod::AMethPropdef::empty_init";
-val_t NEW_AMethPropdef_parser___parser_prod___AMethPropdef___empty_init(void);
-typedef val_t (*NEW_AMethPropdef_parser___parser_prod___AMethPropdef___empty_init_t)(void);
-static const char * const LOCATE_NEW_AMethPropdef_parser___parser_prod___AMethPropdef___init_amethpropdef = "new AMethPropdef parser_prod::AMethPropdef::init_amethpropdef";
-val_t NEW_AMethPropdef_parser___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___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___parser_nodes___ANode___init = "new AMethPropdef parser_nodes::ANode::init";
-val_t NEW_AMethPropdef_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AMethPropdef_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ADeferredMethPropdef = "init var of ADeferredMethPropdef";
+val_t NEW_AAttrPropdef_parser___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, val_t p10);
+typedef val_t (*NEW_AAttrPropdef_parser___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, val_t p10);
+val_t NEW_AAttrPropdef_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AAttrPropdef_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___ADeferredMethPropdef(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ADeferredMethPropdef_t)(val_t p0);
 val_t NEW_parser___parser_nodes___ADeferredMethPropdef(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___ADeferredMethPropdef = "check new ADeferredMethPropdef";
 void CHECKNEW_parser___parser_nodes___ADeferredMethPropdef(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___ADeferredMethPropdef_t)(val_t p0);
-static const char * const LOCATE_NEW_ADeferredMethPropdef_parser___parser_prod___AMethPropdef___empty_init = "new ADeferredMethPropdef parser_prod::AMethPropdef::empty_init";
 val_t NEW_ADeferredMethPropdef_parser___parser_prod___AMethPropdef___empty_init(void);
 typedef val_t (*NEW_ADeferredMethPropdef_parser___parser_prod___AMethPropdef___empty_init_t)(void);
-static const char * const LOCATE_NEW_ADeferredMethPropdef_parser___parser_prod___ADeferredMethPropdef___empty_init = "new ADeferredMethPropdef parser_prod::ADeferredMethPropdef::empty_init";
 val_t NEW_ADeferredMethPropdef_parser___parser_prod___ADeferredMethPropdef___empty_init(void);
 typedef val_t (*NEW_ADeferredMethPropdef_parser___parser_prod___ADeferredMethPropdef___empty_init_t)(void);
-static const char * const LOCATE_NEW_ADeferredMethPropdef_parser___parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef = "new ADeferredMethPropdef parser_prod::ADeferredMethPropdef::init_adeferredmethpropdef";
-val_t NEW_ADeferredMethPropdef_parser___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___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___parser_nodes___ANode___init = "new ADeferredMethPropdef parser_nodes::ANode::init";
-val_t NEW_ADeferredMethPropdef_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ADeferredMethPropdef_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_NEW_ADeferredMethPropdef_parser___parser_prod___AMethPropdef___init_amethpropdef = "new ADeferredMethPropdef parser_prod::AMethPropdef::init_amethpropdef";
+val_t NEW_ADeferredMethPropdef_parser___parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef(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_ADeferredMethPropdef_parser___parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef_t)(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6);
+val_t NEW_ADeferredMethPropdef_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_ADeferredMethPropdef_parser___parser_nodes___ANode___init_t)(void);
 val_t NEW_ADeferredMethPropdef_parser___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___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__parser___parser_nodes___AInternMethPropdef = "init var of AInternMethPropdef";
 void INIT_ATTRIBUTES__parser___parser_nodes___AInternMethPropdef(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AInternMethPropdef_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AInternMethPropdef(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AInternMethPropdef = "check new AInternMethPropdef";
 void CHECKNEW_parser___parser_nodes___AInternMethPropdef(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AInternMethPropdef_t)(val_t p0);
-static const char * const LOCATE_NEW_AInternMethPropdef_parser___parser_prod___AMethPropdef___empty_init = "new AInternMethPropdef parser_prod::AMethPropdef::empty_init";
 val_t NEW_AInternMethPropdef_parser___parser_prod___AMethPropdef___empty_init(void);
 typedef val_t (*NEW_AInternMethPropdef_parser___parser_prod___AMethPropdef___empty_init_t)(void);
-static const char * const LOCATE_NEW_AInternMethPropdef_parser___parser_prod___AInternMethPropdef___empty_init = "new AInternMethPropdef parser_prod::AInternMethPropdef::empty_init";
 val_t NEW_AInternMethPropdef_parser___parser_prod___AInternMethPropdef___empty_init(void);
 typedef val_t (*NEW_AInternMethPropdef_parser___parser_prod___AInternMethPropdef___empty_init_t)(void);
-static const char * const LOCATE_NEW_AInternMethPropdef_parser___parser_prod___AInternMethPropdef___init_ainternmethpropdef = "new AInternMethPropdef parser_prod::AInternMethPropdef::init_ainternmethpropdef";
 val_t NEW_AInternMethPropdef_parser___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___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___parser_nodes___ANode___init = "new AInternMethPropdef parser_nodes::ANode::init";
-val_t NEW_AInternMethPropdef_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AInternMethPropdef_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_NEW_AInternMethPropdef_parser___parser_prod___AMethPropdef___init_amethpropdef = "new AInternMethPropdef parser_prod::AMethPropdef::init_amethpropdef";
+val_t NEW_AInternMethPropdef_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AInternMethPropdef_parser___parser_nodes___ANode___init_t)(void);
 val_t NEW_AInternMethPropdef_parser___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___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__parser___parser_nodes___AExternPropdef = "init var of AExternPropdef";
-void INIT_ATTRIBUTES__parser___parser_nodes___AExternPropdef(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AExternPropdef_t)(val_t p0);
-val_t NEW_parser___parser_nodes___AExternPropdef(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AExternPropdef = "check new AExternPropdef";
-void CHECKNEW_parser___parser_nodes___AExternPropdef(val_t p0);
-typedef void (*CHECKNEW_parser___parser_nodes___AExternPropdef_t)(val_t p0);
-static const char * const LOCATE_NEW_AExternPropdef_parser___parser_nodes___ANode___init = "new AExternPropdef parser_nodes::ANode::init";
-val_t NEW_AExternPropdef_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AExternPropdef_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_NEW_AExternPropdef_parser___parser_prod___AMethPropdef___empty_init = "new AExternPropdef parser_prod::AMethPropdef::empty_init";
-val_t NEW_AExternPropdef_parser___parser_prod___AMethPropdef___empty_init(void);
-typedef val_t (*NEW_AExternPropdef_parser___parser_prod___AMethPropdef___empty_init_t)(void);
-static const char * const LOCATE_NEW_AExternPropdef_parser___parser_prod___AMethPropdef___init_amethpropdef = "new AExternPropdef parser_prod::AMethPropdef::init_amethpropdef";
-val_t NEW_AExternPropdef_parser___parser_prod___AMethPropdef___init_amethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
-typedef val_t (*NEW_AExternPropdef_parser___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__parser___parser_nodes___AExternMethPropdef = "init var of AExternMethPropdef";
 void INIT_ATTRIBUTES__parser___parser_nodes___AExternMethPropdef(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AExternMethPropdef_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AExternMethPropdef(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AExternMethPropdef = "check new AExternMethPropdef";
 void CHECKNEW_parser___parser_nodes___AExternMethPropdef(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AExternMethPropdef_t)(val_t p0);
-static const char * const LOCATE_NEW_AExternMethPropdef_parser___parser_prod___AMethPropdef___empty_init = "new AExternMethPropdef parser_prod::AMethPropdef::empty_init";
 val_t NEW_AExternMethPropdef_parser___parser_prod___AMethPropdef___empty_init(void);
 typedef val_t (*NEW_AExternMethPropdef_parser___parser_prod___AMethPropdef___empty_init_t)(void);
-static const char * const LOCATE_NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___empty_init = "new AExternMethPropdef parser_prod::AExternMethPropdef::empty_init";
 val_t NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___empty_init(void);
 typedef val_t (*NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___empty_init_t)(void);
-static const char * const LOCATE_NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef = "new AExternMethPropdef parser_prod::AExternMethPropdef::init_aexternmethpropdef";
-val_t NEW_AExternMethPropdef_parser___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, val_t p7);
-typedef val_t (*NEW_AExternMethPropdef_parser___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, val_t p7);
-static const char * const LOCATE_NEW_AExternMethPropdef_parser___parser_nodes___ANode___init = "new AExternMethPropdef parser_nodes::ANode::init";
-val_t NEW_AExternMethPropdef_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AExternMethPropdef_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_NEW_AExternMethPropdef_parser___parser_prod___AMethPropdef___init_amethpropdef = "new AExternMethPropdef parser_prod::AMethPropdef::init_amethpropdef";
+val_t NEW_AExternMethPropdef_parser___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, val_t p7, val_t p8);
+typedef val_t (*NEW_AExternMethPropdef_parser___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, val_t p7, val_t p8);
+val_t NEW_AExternMethPropdef_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AExternMethPropdef_parser___parser_nodes___ANode___init_t)(void);
 val_t NEW_AExternMethPropdef_parser___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___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__parser___parser_nodes___AConcreteMethPropdef = "init var of AConcreteMethPropdef";
 void INIT_ATTRIBUTES__parser___parser_nodes___AConcreteMethPropdef(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AConcreteMethPropdef_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AConcreteMethPropdef(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AConcreteMethPropdef = "check new AConcreteMethPropdef";
 void CHECKNEW_parser___parser_nodes___AConcreteMethPropdef(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AConcreteMethPropdef_t)(val_t p0);
-static const char * const LOCATE_NEW_AConcreteMethPropdef_parser___parser_prod___AMethPropdef___empty_init = "new AConcreteMethPropdef parser_prod::AMethPropdef::empty_init";
 val_t NEW_AConcreteMethPropdef_parser___parser_prod___AMethPropdef___empty_init(void);
 typedef val_t (*NEW_AConcreteMethPropdef_parser___parser_prod___AMethPropdef___empty_init_t)(void);
-static const char * const LOCATE_NEW_AConcreteMethPropdef_parser___parser_prod___AConcreteMethPropdef___empty_init = "new AConcreteMethPropdef parser_prod::AConcreteMethPropdef::empty_init";
 val_t NEW_AConcreteMethPropdef_parser___parser_prod___AConcreteMethPropdef___empty_init(void);
 typedef val_t (*NEW_AConcreteMethPropdef_parser___parser_prod___AConcreteMethPropdef___empty_init_t)(void);
-static const char * const LOCATE_NEW_AConcreteMethPropdef_parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef = "new AConcreteMethPropdef parser_prod::AConcreteMethPropdef::init_aconcretemethpropdef";
-val_t NEW_AConcreteMethPropdef_parser___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___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___parser_nodes___ANode___init = "new AConcreteMethPropdef parser_nodes::ANode::init";
-val_t NEW_AConcreteMethPropdef_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AConcreteMethPropdef_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_NEW_AConcreteMethPropdef_parser___parser_prod___AMethPropdef___init_amethpropdef = "new AConcreteMethPropdef parser_prod::AMethPropdef::init_amethpropdef";
+val_t NEW_AConcreteMethPropdef_parser___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, val_t p7);
+typedef val_t (*NEW_AConcreteMethPropdef_parser___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, val_t p7);
+val_t NEW_AConcreteMethPropdef_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AConcreteMethPropdef_parser___parser_nodes___ANode___init_t)(void);
 val_t NEW_AConcreteMethPropdef_parser___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___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__parser___parser_nodes___AInitPropdef = "init var of AInitPropdef";
-void INIT_ATTRIBUTES__parser___parser_nodes___AInitPropdef(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AInitPropdef_t)(val_t p0);
-val_t NEW_parser___parser_nodes___AInitPropdef(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AInitPropdef = "check new AInitPropdef";
-void CHECKNEW_parser___parser_nodes___AInitPropdef(val_t p0);
-typedef void (*CHECKNEW_parser___parser_nodes___AInitPropdef_t)(val_t p0);
-static const char * const LOCATE_NEW_AInitPropdef_parser___parser_nodes___AInitPropdef___init = "new AInitPropdef parser_nodes::AInitPropdef::init";
-val_t NEW_AInitPropdef_parser___parser_nodes___AInitPropdef___init(void);
-typedef val_t (*NEW_AInitPropdef_parser___parser_nodes___AInitPropdef___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AConcreteInitPropdef = "init var of AConcreteInitPropdef";
 void INIT_ATTRIBUTES__parser___parser_nodes___AConcreteInitPropdef(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AConcreteInitPropdef_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AConcreteInitPropdef(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AConcreteInitPropdef = "check new AConcreteInitPropdef";
 void CHECKNEW_parser___parser_nodes___AConcreteInitPropdef(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AConcreteInitPropdef_t)(val_t p0);
-static const char * const LOCATE_NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___empty_init = "new AConcreteInitPropdef parser_prod::AConcreteInitPropdef::empty_init";
+val_t NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteMethPropdef___empty_init(void);
+typedef val_t (*NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteMethPropdef___empty_init_t)(void);
 val_t NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___empty_init(void);
 typedef val_t (*NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___empty_init_t)(void);
-static const char * const LOCATE_NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef = "new AConcreteInitPropdef parser_prod::AConcreteInitPropdef::init_aconcreteinitpropdef";
-val_t NEW_AConcreteInitPropdef_parser___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___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___parser_nodes___AConcreteInitPropdef___init = "new AConcreteInitPropdef parser_nodes::AConcreteInitPropdef::init";
-val_t NEW_AConcreteInitPropdef_parser___parser_nodes___AConcreteInitPropdef___init(void);
-typedef val_t (*NEW_AConcreteInitPropdef_parser___parser_nodes___AConcreteInitPropdef___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AExternInitPropdef = "init var of AExternInitPropdef";
+val_t NEW_AConcreteInitPropdef_parser___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, val_t p7);
+typedef val_t (*NEW_AConcreteInitPropdef_parser___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, val_t p7);
+val_t NEW_AConcreteInitPropdef_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AConcreteInitPropdef_parser___parser_nodes___ANode___init_t)(void);
+val_t NEW_AConcreteInitPropdef_parser___parser_prod___AMethPropdef___empty_init(void);
+typedef val_t (*NEW_AConcreteInitPropdef_parser___parser_prod___AMethPropdef___empty_init_t)(void);
+val_t NEW_AConcreteInitPropdef_parser___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, val_t p7);
+typedef val_t (*NEW_AConcreteInitPropdef_parser___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, val_t p7);
+val_t NEW_AConcreteInitPropdef_parser___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___parser_prod___AMethPropdef___init_amethpropdef_t)(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
 void INIT_ATTRIBUTES__parser___parser_nodes___AExternInitPropdef(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AExternInitPropdef_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AExternInitPropdef(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AExternInitPropdef = "check new AExternInitPropdef";
 void CHECKNEW_parser___parser_nodes___AExternInitPropdef(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AExternInitPropdef_t)(val_t p0);
-static const char * const LOCATE_NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___empty_init = "new AExternInitPropdef parser_prod::AExternInitPropdef::empty_init";
+val_t NEW_AExternInitPropdef_parser___parser_prod___AMethPropdef___empty_init(void);
+typedef val_t (*NEW_AExternInitPropdef_parser___parser_prod___AMethPropdef___empty_init_t)(void);
 val_t NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___empty_init(void);
 typedef val_t (*NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___empty_init_t)(void);
-static const char * const LOCATE_NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef = "new AExternInitPropdef parser_prod::AExternInitPropdef::init_aexterninitpropdef";
-val_t NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(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_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef_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_AExternInitPropdef_parser___parser_nodes___AExternInitPropdef___init = "new AExternInitPropdef parser_nodes::AExternInitPropdef::init";
-val_t NEW_AExternInitPropdef_parser___parser_nodes___AExternInitPropdef___init(void);
-typedef val_t (*NEW_AExternInitPropdef_parser___parser_nodes___AExternInitPropdef___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AMainMethPropdef = "init var of AMainMethPropdef";
+val_t NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(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);
+typedef val_t (*NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef_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 NEW_AExternInitPropdef_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AExternInitPropdef_parser___parser_nodes___ANode___init_t)(void);
+val_t NEW_AExternInitPropdef_parser___parser_prod___AMethPropdef___init_amethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
+typedef val_t (*NEW_AExternInitPropdef_parser___parser_prod___AMethPropdef___init_amethpropdef_t)(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
 void INIT_ATTRIBUTES__parser___parser_nodes___AMainMethPropdef(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AMainMethPropdef_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AMainMethPropdef(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AMainMethPropdef = "check new AMainMethPropdef";
 void CHECKNEW_parser___parser_nodes___AMainMethPropdef(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AMainMethPropdef_t)(val_t p0);
-static const char * const LOCATE_NEW_AMainMethPropdef_parser___parser_prod___AConcreteMethPropdef___empty_init = "new AMainMethPropdef parser_prod::AConcreteMethPropdef::empty_init";
 val_t NEW_AMainMethPropdef_parser___parser_prod___AConcreteMethPropdef___empty_init(void);
 typedef val_t (*NEW_AMainMethPropdef_parser___parser_prod___AConcreteMethPropdef___empty_init_t)(void);
-static const char * const LOCATE_NEW_AMainMethPropdef_parser___parser_prod___AMainMethPropdef___empty_init = "new AMainMethPropdef parser_prod::AMainMethPropdef::empty_init";
 val_t NEW_AMainMethPropdef_parser___parser_prod___AMainMethPropdef___empty_init(void);
 typedef val_t (*NEW_AMainMethPropdef_parser___parser_prod___AMainMethPropdef___empty_init_t)(void);
-static const char * const LOCATE_NEW_AMainMethPropdef_parser___parser_prod___AMainMethPropdef___init_amainmethpropdef = "new AMainMethPropdef parser_prod::AMainMethPropdef::init_amainmethpropdef";
 val_t NEW_AMainMethPropdef_parser___parser_prod___AMainMethPropdef___init_amainmethpropdef(val_t p0, val_t p1);
 typedef val_t (*NEW_AMainMethPropdef_parser___parser_prod___AMainMethPropdef___init_amainmethpropdef_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_AMainMethPropdef_parser___parser_nodes___ANode___init = "new AMainMethPropdef parser_nodes::ANode::init";
-val_t NEW_AMainMethPropdef_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AMainMethPropdef_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_NEW_AMainMethPropdef_parser___parser_prod___AMethPropdef___empty_init = "new AMainMethPropdef parser_prod::AMethPropdef::empty_init";
+val_t NEW_AMainMethPropdef_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AMainMethPropdef_parser___parser_nodes___ANode___init_t)(void);
 val_t NEW_AMainMethPropdef_parser___parser_prod___AMethPropdef___empty_init(void);
 typedef val_t (*NEW_AMainMethPropdef_parser___parser_prod___AMethPropdef___empty_init_t)(void);
-static const char * const LOCATE_NEW_AMainMethPropdef_parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef = "new AMainMethPropdef parser_prod::AConcreteMethPropdef::init_aconcretemethpropdef";
-val_t NEW_AMainMethPropdef_parser___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___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___parser_prod___AMethPropdef___init_amethpropdef = "new AMainMethPropdef parser_prod::AMethPropdef::init_amethpropdef";
+val_t NEW_AMainMethPropdef_parser___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, val_t p7);
+typedef val_t (*NEW_AMainMethPropdef_parser___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, val_t p7);
 val_t NEW_AMainMethPropdef_parser___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___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__parser___parser_nodes___AExternCalls = "init var of AExternCalls";
 void INIT_ATTRIBUTES__parser___parser_nodes___AExternCalls(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AExternCalls_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AExternCalls(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AExternCalls = "check new AExternCalls";
 void CHECKNEW_parser___parser_nodes___AExternCalls(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AExternCalls_t)(val_t p0);
-static const char * const LOCATE_NEW_AExternCalls_parser___parser_prod___AExternCalls___empty_init = "new AExternCalls parser_prod::AExternCalls::empty_init";
 val_t NEW_AExternCalls_parser___parser_prod___AExternCalls___empty_init(void);
 typedef val_t (*NEW_AExternCalls_parser___parser_prod___AExternCalls___empty_init_t)(void);
-static const char * const LOCATE_NEW_AExternCalls_parser___parser_prod___AExternCalls___init_aexterncalls = "new AExternCalls parser_prod::AExternCalls::init_aexterncalls";
 val_t NEW_AExternCalls_parser___parser_prod___AExternCalls___init_aexterncalls(val_t p0, val_t p1);
 typedef val_t (*NEW_AExternCalls_parser___parser_prod___AExternCalls___init_aexterncalls_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_AExternCalls_parser___parser_nodes___ANode___init = "new AExternCalls parser_nodes::ANode::init";
-val_t NEW_AExternCalls_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AExternCalls_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AExternCall = "init var of AExternCall";
-void INIT_ATTRIBUTES__parser___parser_nodes___AExternCall(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AExternCall_t)(val_t p0);
-val_t NEW_parser___parser_nodes___AExternCall(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AExternCall = "check new AExternCall";
-void CHECKNEW_parser___parser_nodes___AExternCall(val_t p0);
-typedef void (*CHECKNEW_parser___parser_nodes___AExternCall_t)(val_t p0);
-static const char * const LOCATE_NEW_AExternCall_parser___parser_prod___AExternCall___empty_init = "new AExternCall parser_prod::AExternCall::empty_init";
-val_t NEW_AExternCall_parser___parser_prod___AExternCall___empty_init(void);
-typedef val_t (*NEW_AExternCall_parser___parser_prod___AExternCall___empty_init_t)(void);
-static const char * const LOCATE_NEW_AExternCall_parser___parser_prod___AExternCall___init_aexterncall = "new AExternCall parser_prod::AExternCall::init_aexterncall";
-val_t NEW_AExternCall_parser___parser_prod___AExternCall___init_aexterncall(void);
-typedef val_t (*NEW_AExternCall_parser___parser_prod___AExternCall___init_aexterncall_t)(void);
-static const char * const LOCATE_NEW_AExternCall_parser___parser_nodes___ANode___init = "new AExternCall parser_nodes::ANode::init";
-val_t NEW_AExternCall_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AExternCall_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___APropExternCall = "init var of APropExternCall";
-void INIT_ATTRIBUTES__parser___parser_nodes___APropExternCall(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___APropExternCall_t)(val_t p0);
-val_t NEW_parser___parser_nodes___APropExternCall(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___APropExternCall = "check new APropExternCall";
-void CHECKNEW_parser___parser_nodes___APropExternCall(val_t p0);
-typedef void (*CHECKNEW_parser___parser_nodes___APropExternCall_t)(val_t p0);
-static const char * const LOCATE_NEW_APropExternCall_parser___parser_nodes___ANode___init = "new APropExternCall parser_nodes::ANode::init";
-val_t NEW_APropExternCall_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_APropExternCall_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_NEW_APropExternCall_parser___parser_prod___AExternCall___empty_init = "new APropExternCall parser_prod::AExternCall::empty_init";
-val_t NEW_APropExternCall_parser___parser_prod___AExternCall___empty_init(void);
-typedef val_t (*NEW_APropExternCall_parser___parser_prod___AExternCall___empty_init_t)(void);
-static const char * const LOCATE_NEW_APropExternCall_parser___parser_prod___AExternCall___init_aexterncall = "new APropExternCall parser_prod::AExternCall::init_aexterncall";
-val_t NEW_APropExternCall_parser___parser_prod___AExternCall___init_aexterncall(void);
-typedef val_t (*NEW_APropExternCall_parser___parser_prod___AExternCall___init_aexterncall_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ALocalPropExternCall = "init var of ALocalPropExternCall";
+val_t NEW_AExternCalls_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AExternCalls_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___ALocalPropExternCall(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ALocalPropExternCall_t)(val_t p0);
 val_t NEW_parser___parser_nodes___ALocalPropExternCall(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___ALocalPropExternCall = "check new ALocalPropExternCall";
 void CHECKNEW_parser___parser_nodes___ALocalPropExternCall(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___ALocalPropExternCall_t)(val_t p0);
-static const char * const LOCATE_NEW_ALocalPropExternCall_parser___parser_prod___AExternCall___empty_init = "new ALocalPropExternCall parser_prod::AExternCall::empty_init";
 val_t NEW_ALocalPropExternCall_parser___parser_prod___AExternCall___empty_init(void);
 typedef val_t (*NEW_ALocalPropExternCall_parser___parser_prod___AExternCall___empty_init_t)(void);
-static const char * const LOCATE_NEW_ALocalPropExternCall_parser___parser_prod___ALocalPropExternCall___empty_init = "new ALocalPropExternCall parser_prod::ALocalPropExternCall::empty_init";
 val_t NEW_ALocalPropExternCall_parser___parser_prod___ALocalPropExternCall___empty_init(void);
 typedef val_t (*NEW_ALocalPropExternCall_parser___parser_prod___ALocalPropExternCall___empty_init_t)(void);
-static const char * const LOCATE_NEW_ALocalPropExternCall_parser___parser_prod___ALocalPropExternCall___init_alocalpropexterncall = "new ALocalPropExternCall parser_prod::ALocalPropExternCall::init_alocalpropexterncall";
 val_t NEW_ALocalPropExternCall_parser___parser_prod___ALocalPropExternCall___init_alocalpropexterncall(val_t p0);
 typedef val_t (*NEW_ALocalPropExternCall_parser___parser_prod___ALocalPropExternCall___init_alocalpropexterncall_t)(val_t p0);
-static const char * const LOCATE_NEW_ALocalPropExternCall_parser___parser_nodes___ANode___init = "new ALocalPropExternCall parser_nodes::ANode::init";
-val_t NEW_ALocalPropExternCall_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ALocalPropExternCall_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_NEW_ALocalPropExternCall_parser___parser_prod___AExternCall___init_aexterncall = "new ALocalPropExternCall parser_prod::AExternCall::init_aexterncall";
+val_t NEW_ALocalPropExternCall_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_ALocalPropExternCall_parser___parser_nodes___ANode___init_t)(void);
 val_t NEW_ALocalPropExternCall_parser___parser_prod___AExternCall___init_aexterncall(void);
 typedef val_t (*NEW_ALocalPropExternCall_parser___parser_prod___AExternCall___init_aexterncall_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AFullPropExternCall = "init var of AFullPropExternCall";
 void INIT_ATTRIBUTES__parser___parser_nodes___AFullPropExternCall(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AFullPropExternCall_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AFullPropExternCall(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AFullPropExternCall = "check new AFullPropExternCall";
 void CHECKNEW_parser___parser_nodes___AFullPropExternCall(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AFullPropExternCall_t)(val_t p0);
-static const char * const LOCATE_NEW_AFullPropExternCall_parser___parser_prod___AExternCall___empty_init = "new AFullPropExternCall parser_prod::AExternCall::empty_init";
 val_t NEW_AFullPropExternCall_parser___parser_prod___AExternCall___empty_init(void);
 typedef val_t (*NEW_AFullPropExternCall_parser___parser_prod___AExternCall___empty_init_t)(void);
-static const char * const LOCATE_NEW_AFullPropExternCall_parser___parser_prod___AFullPropExternCall___empty_init = "new AFullPropExternCall parser_prod::AFullPropExternCall::empty_init";
 val_t NEW_AFullPropExternCall_parser___parser_prod___AFullPropExternCall___empty_init(void);
 typedef val_t (*NEW_AFullPropExternCall_parser___parser_prod___AFullPropExternCall___empty_init_t)(void);
-static const char * const LOCATE_NEW_AFullPropExternCall_parser___parser_prod___AFullPropExternCall___init_afullpropexterncall = "new AFullPropExternCall parser_prod::AFullPropExternCall::init_afullpropexterncall";
 val_t NEW_AFullPropExternCall_parser___parser_prod___AFullPropExternCall___init_afullpropexterncall(val_t p0, val_t p1, val_t p2);
 typedef val_t (*NEW_AFullPropExternCall_parser___parser_prod___AFullPropExternCall___init_afullpropexterncall_t)(val_t p0, val_t p1, val_t p2);
-static const char * const LOCATE_NEW_AFullPropExternCall_parser___parser_nodes___ANode___init = "new AFullPropExternCall parser_nodes::ANode::init";
-val_t NEW_AFullPropExternCall_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AFullPropExternCall_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_NEW_AFullPropExternCall_parser___parser_prod___AExternCall___init_aexterncall = "new AFullPropExternCall parser_prod::AExternCall::init_aexterncall";
+val_t NEW_AFullPropExternCall_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AFullPropExternCall_parser___parser_nodes___ANode___init_t)(void);
 val_t NEW_AFullPropExternCall_parser___parser_prod___AExternCall___init_aexterncall(void);
 typedef val_t (*NEW_AFullPropExternCall_parser___parser_prod___AExternCall___init_aexterncall_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AInitPropExternCall = "init var of AInitPropExternCall";
 void INIT_ATTRIBUTES__parser___parser_nodes___AInitPropExternCall(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AInitPropExternCall_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AInitPropExternCall(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AInitPropExternCall = "check new AInitPropExternCall";
 void CHECKNEW_parser___parser_nodes___AInitPropExternCall(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AInitPropExternCall_t)(val_t p0);
-static const char * const LOCATE_NEW_AInitPropExternCall_parser___parser_prod___AExternCall___empty_init = "new AInitPropExternCall parser_prod::AExternCall::empty_init";
 val_t NEW_AInitPropExternCall_parser___parser_prod___AExternCall___empty_init(void);
 typedef val_t (*NEW_AInitPropExternCall_parser___parser_prod___AExternCall___empty_init_t)(void);
-static const char * const LOCATE_NEW_AInitPropExternCall_parser___parser_prod___AInitPropExternCall___empty_init = "new AInitPropExternCall parser_prod::AInitPropExternCall::empty_init";
 val_t NEW_AInitPropExternCall_parser___parser_prod___AInitPropExternCall___empty_init(void);
 typedef val_t (*NEW_AInitPropExternCall_parser___parser_prod___AInitPropExternCall___empty_init_t)(void);
-static const char * const LOCATE_NEW_AInitPropExternCall_parser___parser_prod___AInitPropExternCall___init_ainitpropexterncall = "new AInitPropExternCall parser_prod::AInitPropExternCall::init_ainitpropexterncall";
 val_t NEW_AInitPropExternCall_parser___parser_prod___AInitPropExternCall___init_ainitpropexterncall(val_t p0);
 typedef val_t (*NEW_AInitPropExternCall_parser___parser_prod___AInitPropExternCall___init_ainitpropexterncall_t)(val_t p0);
-static const char * const LOCATE_NEW_AInitPropExternCall_parser___parser_nodes___ANode___init = "new AInitPropExternCall parser_nodes::ANode::init";
-val_t NEW_AInitPropExternCall_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AInitPropExternCall_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_NEW_AInitPropExternCall_parser___parser_prod___AExternCall___init_aexterncall = "new AInitPropExternCall parser_prod::AExternCall::init_aexterncall";
+val_t NEW_AInitPropExternCall_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AInitPropExternCall_parser___parser_nodes___ANode___init_t)(void);
 val_t NEW_AInitPropExternCall_parser___parser_prod___AExternCall___init_aexterncall(void);
 typedef val_t (*NEW_AInitPropExternCall_parser___parser_prod___AExternCall___init_aexterncall_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ASuperExternCall = "init var of ASuperExternCall";
 void INIT_ATTRIBUTES__parser___parser_nodes___ASuperExternCall(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ASuperExternCall_t)(val_t p0);
 val_t NEW_parser___parser_nodes___ASuperExternCall(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___ASuperExternCall = "check new ASuperExternCall";
 void CHECKNEW_parser___parser_nodes___ASuperExternCall(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___ASuperExternCall_t)(val_t p0);
-static const char * const LOCATE_NEW_ASuperExternCall_parser___parser_prod___AExternCall___empty_init = "new ASuperExternCall parser_prod::AExternCall::empty_init";
 val_t NEW_ASuperExternCall_parser___parser_prod___AExternCall___empty_init(void);
 typedef val_t (*NEW_ASuperExternCall_parser___parser_prod___AExternCall___empty_init_t)(void);
-static const char * const LOCATE_NEW_ASuperExternCall_parser___parser_prod___ASuperExternCall___empty_init = "new ASuperExternCall parser_prod::ASuperExternCall::empty_init";
 val_t NEW_ASuperExternCall_parser___parser_prod___ASuperExternCall___empty_init(void);
 typedef val_t (*NEW_ASuperExternCall_parser___parser_prod___ASuperExternCall___empty_init_t)(void);
-static const char * const LOCATE_NEW_ASuperExternCall_parser___parser_prod___ASuperExternCall___init_asuperexterncall = "new ASuperExternCall parser_prod::ASuperExternCall::init_asuperexterncall";
 val_t NEW_ASuperExternCall_parser___parser_prod___ASuperExternCall___init_asuperexterncall(val_t p0);
 typedef val_t (*NEW_ASuperExternCall_parser___parser_prod___ASuperExternCall___init_asuperexterncall_t)(val_t p0);
-static const char * const LOCATE_NEW_ASuperExternCall_parser___parser_nodes___ANode___init = "new ASuperExternCall parser_nodes::ANode::init";
-val_t NEW_ASuperExternCall_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ASuperExternCall_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_NEW_ASuperExternCall_parser___parser_prod___AExternCall___init_aexterncall = "new ASuperExternCall parser_prod::AExternCall::init_aexterncall";
+val_t NEW_ASuperExternCall_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_ASuperExternCall_parser___parser_nodes___ANode___init_t)(void);
 val_t NEW_ASuperExternCall_parser___parser_prod___AExternCall___init_aexterncall(void);
 typedef val_t (*NEW_ASuperExternCall_parser___parser_prod___AExternCall___init_aexterncall_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ACastExternCall = "init var of ACastExternCall";
-void INIT_ATTRIBUTES__parser___parser_nodes___ACastExternCall(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ACastExternCall_t)(val_t p0);
-val_t NEW_parser___parser_nodes___ACastExternCall(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___ACastExternCall = "check new ACastExternCall";
-void CHECKNEW_parser___parser_nodes___ACastExternCall(val_t p0);
-typedef void (*CHECKNEW_parser___parser_nodes___ACastExternCall_t)(val_t p0);
-static const char * const LOCATE_NEW_ACastExternCall_parser___parser_nodes___ANode___init = "new ACastExternCall parser_nodes::ANode::init";
-val_t NEW_ACastExternCall_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ACastExternCall_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_NEW_ACastExternCall_parser___parser_prod___AExternCall___empty_init = "new ACastExternCall parser_prod::AExternCall::empty_init";
-val_t NEW_ACastExternCall_parser___parser_prod___AExternCall___empty_init(void);
-typedef val_t (*NEW_ACastExternCall_parser___parser_prod___AExternCall___empty_init_t)(void);
-static const char * const LOCATE_NEW_ACastExternCall_parser___parser_prod___AExternCall___init_aexterncall = "new ACastExternCall parser_prod::AExternCall::init_aexterncall";
-val_t NEW_ACastExternCall_parser___parser_prod___AExternCall___init_aexterncall(void);
-typedef val_t (*NEW_ACastExternCall_parser___parser_prod___AExternCall___init_aexterncall_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ACastAsExternCall = "init var of ACastAsExternCall";
 void INIT_ATTRIBUTES__parser___parser_nodes___ACastAsExternCall(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ACastAsExternCall_t)(val_t p0);
 val_t NEW_parser___parser_nodes___ACastAsExternCall(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___ACastAsExternCall = "check new ACastAsExternCall";
 void CHECKNEW_parser___parser_nodes___ACastAsExternCall(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___ACastAsExternCall_t)(val_t p0);
-static const char * const LOCATE_NEW_ACastAsExternCall_parser___parser_prod___AExternCall___empty_init = "new ACastAsExternCall parser_prod::AExternCall::empty_init";
 val_t NEW_ACastAsExternCall_parser___parser_prod___AExternCall___empty_init(void);
 typedef val_t (*NEW_ACastAsExternCall_parser___parser_prod___AExternCall___empty_init_t)(void);
-static const char * const LOCATE_NEW_ACastAsExternCall_parser___parser_prod___ACastAsExternCall___empty_init = "new ACastAsExternCall parser_prod::ACastAsExternCall::empty_init";
 val_t NEW_ACastAsExternCall_parser___parser_prod___ACastAsExternCall___empty_init(void);
 typedef val_t (*NEW_ACastAsExternCall_parser___parser_prod___ACastAsExternCall___empty_init_t)(void);
-static const char * const LOCATE_NEW_ACastAsExternCall_parser___parser_prod___ACastAsExternCall___init_acastasexterncall = "new ACastAsExternCall parser_prod::ACastAsExternCall::init_acastasexterncall";
 val_t NEW_ACastAsExternCall_parser___parser_prod___ACastAsExternCall___init_acastasexterncall(val_t p0, val_t p1, val_t p2);
 typedef val_t (*NEW_ACastAsExternCall_parser___parser_prod___ACastAsExternCall___init_acastasexterncall_t)(val_t p0, val_t p1, val_t p2);
-static const char * const LOCATE_NEW_ACastAsExternCall_parser___parser_nodes___ANode___init = "new ACastAsExternCall parser_nodes::ANode::init";
-val_t NEW_ACastAsExternCall_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ACastAsExternCall_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_NEW_ACastAsExternCall_parser___parser_prod___AExternCall___init_aexterncall = "new ACastAsExternCall parser_prod::AExternCall::init_aexterncall";
+val_t NEW_ACastAsExternCall_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_ACastAsExternCall_parser___parser_nodes___ANode___init_t)(void);
 val_t NEW_ACastAsExternCall_parser___parser_prod___AExternCall___init_aexterncall(void);
 typedef val_t (*NEW_ACastAsExternCall_parser___parser_prod___AExternCall___init_aexterncall_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AAsNullableExternCall = "init var of AAsNullableExternCall";
 void INIT_ATTRIBUTES__parser___parser_nodes___AAsNullableExternCall(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AAsNullableExternCall_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AAsNullableExternCall(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AAsNullableExternCall = "check new AAsNullableExternCall";
 void CHECKNEW_parser___parser_nodes___AAsNullableExternCall(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AAsNullableExternCall_t)(val_t p0);
-static const char * const LOCATE_NEW_AAsNullableExternCall_parser___parser_prod___AExternCall___empty_init = "new AAsNullableExternCall parser_prod::AExternCall::empty_init";
 val_t NEW_AAsNullableExternCall_parser___parser_prod___AExternCall___empty_init(void);
 typedef val_t (*NEW_AAsNullableExternCall_parser___parser_prod___AExternCall___empty_init_t)(void);
-static const char * const LOCATE_NEW_AAsNullableExternCall_parser___parser_prod___AAsNullableExternCall___empty_init = "new AAsNullableExternCall parser_prod::AAsNullableExternCall::empty_init";
 val_t NEW_AAsNullableExternCall_parser___parser_prod___AAsNullableExternCall___empty_init(void);
 typedef val_t (*NEW_AAsNullableExternCall_parser___parser_prod___AAsNullableExternCall___empty_init_t)(void);
-static const char * const LOCATE_NEW_AAsNullableExternCall_parser___parser_prod___AAsNullableExternCall___init_aasnullableexterncall = "new AAsNullableExternCall parser_prod::AAsNullableExternCall::init_aasnullableexterncall";
 val_t NEW_AAsNullableExternCall_parser___parser_prod___AAsNullableExternCall___init_aasnullableexterncall(val_t p0, val_t p1, val_t p2);
 typedef val_t (*NEW_AAsNullableExternCall_parser___parser_prod___AAsNullableExternCall___init_aasnullableexterncall_t)(val_t p0, val_t p1, val_t p2);
-static const char * const LOCATE_NEW_AAsNullableExternCall_parser___parser_nodes___ANode___init = "new AAsNullableExternCall parser_nodes::ANode::init";
-val_t NEW_AAsNullableExternCall_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AAsNullableExternCall_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_NEW_AAsNullableExternCall_parser___parser_prod___AExternCall___init_aexterncall = "new AAsNullableExternCall parser_prod::AExternCall::init_aexterncall";
+val_t NEW_AAsNullableExternCall_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AAsNullableExternCall_parser___parser_nodes___ANode___init_t)(void);
 val_t NEW_AAsNullableExternCall_parser___parser_prod___AExternCall___init_aexterncall(void);
 typedef val_t (*NEW_AAsNullableExternCall_parser___parser_prod___AExternCall___init_aexterncall_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AAsNotNullableExternCall = "init var of AAsNotNullableExternCall";
 void INIT_ATTRIBUTES__parser___parser_nodes___AAsNotNullableExternCall(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AAsNotNullableExternCall_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AAsNotNullableExternCall(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AAsNotNullableExternCall = "check new AAsNotNullableExternCall";
 void CHECKNEW_parser___parser_nodes___AAsNotNullableExternCall(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AAsNotNullableExternCall_t)(val_t p0);
-static const char * const LOCATE_NEW_AAsNotNullableExternCall_parser___parser_prod___AExternCall___empty_init = "new AAsNotNullableExternCall parser_prod::AExternCall::empty_init";
 val_t NEW_AAsNotNullableExternCall_parser___parser_prod___AExternCall___empty_init(void);
 typedef val_t (*NEW_AAsNotNullableExternCall_parser___parser_prod___AExternCall___empty_init_t)(void);
-static const char * const LOCATE_NEW_AAsNotNullableExternCall_parser___parser_prod___AAsNotNullableExternCall___empty_init = "new AAsNotNullableExternCall parser_prod::AAsNotNullableExternCall::empty_init";
 val_t NEW_AAsNotNullableExternCall_parser___parser_prod___AAsNotNullableExternCall___empty_init(void);
 typedef val_t (*NEW_AAsNotNullableExternCall_parser___parser_prod___AAsNotNullableExternCall___empty_init_t)(void);
-static const char * const LOCATE_NEW_AAsNotNullableExternCall_parser___parser_prod___AAsNotNullableExternCall___init_aasnotnullableexterncall = "new AAsNotNullableExternCall parser_prod::AAsNotNullableExternCall::init_aasnotnullableexterncall";
 val_t NEW_AAsNotNullableExternCall_parser___parser_prod___AAsNotNullableExternCall___init_aasnotnullableexterncall(val_t p0, val_t p1, val_t p2, val_t p3);
 typedef val_t (*NEW_AAsNotNullableExternCall_parser___parser_prod___AAsNotNullableExternCall___init_aasnotnullableexterncall_t)(val_t p0, val_t p1, val_t p2, val_t p3);
-static const char * const LOCATE_NEW_AAsNotNullableExternCall_parser___parser_nodes___ANode___init = "new AAsNotNullableExternCall parser_nodes::ANode::init";
-val_t NEW_AAsNotNullableExternCall_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AAsNotNullableExternCall_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_NEW_AAsNotNullableExternCall_parser___parser_prod___AExternCall___init_aexterncall = "new AAsNotNullableExternCall parser_prod::AExternCall::init_aexterncall";
+val_t NEW_AAsNotNullableExternCall_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AAsNotNullableExternCall_parser___parser_nodes___ANode___init_t)(void);
 val_t NEW_AAsNotNullableExternCall_parser___parser_prod___AExternCall___init_aexterncall(void);
 typedef val_t (*NEW_AAsNotNullableExternCall_parser___parser_prod___AExternCall___init_aexterncall_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ATypePropdef = "init var of ATypePropdef";
 void INIT_ATTRIBUTES__parser___parser_nodes___ATypePropdef(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ATypePropdef_t)(val_t p0);
 val_t NEW_parser___parser_nodes___ATypePropdef(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___ATypePropdef = "check new ATypePropdef";
 void CHECKNEW_parser___parser_nodes___ATypePropdef(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___ATypePropdef_t)(val_t p0);
-static const char * const LOCATE_NEW_ATypePropdef_parser___parser_prod___ATypePropdef___empty_init = "new ATypePropdef parser_prod::ATypePropdef::empty_init";
 val_t NEW_ATypePropdef_parser___parser_prod___ATypePropdef___empty_init(void);
 typedef val_t (*NEW_ATypePropdef_parser___parser_prod___ATypePropdef___empty_init_t)(void);
-static const char * const LOCATE_NEW_ATypePropdef_parser___parser_prod___ATypePropdef___init_atypepropdef = "new ATypePropdef parser_prod::ATypePropdef::init_atypepropdef";
-val_t NEW_ATypePropdef_parser___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___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___parser_nodes___ANode___init = "new ATypePropdef parser_nodes::ANode::init";
-val_t NEW_ATypePropdef_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ATypePropdef_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AAble = "init var of AAble";
-void INIT_ATTRIBUTES__parser___parser_nodes___AAble(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AAble_t)(val_t p0);
-val_t NEW_parser___parser_nodes___AAble(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AAble = "check new AAble";
-void CHECKNEW_parser___parser_nodes___AAble(val_t p0);
-typedef void (*CHECKNEW_parser___parser_nodes___AAble_t)(val_t p0);
-static const char * const LOCATE_NEW_AAble_parser___parser_nodes___ANode___init = "new AAble parser_nodes::ANode::init";
-val_t NEW_AAble_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AAble_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AReadAble = "init var of AReadAble";
+val_t NEW_ATypePropdef_parser___parser_prod___ATypePropdef___init_atypepropdef(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_ATypePropdef_parser___parser_prod___ATypePropdef___init_atypepropdef_t)(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6);
+val_t NEW_ATypePropdef_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_ATypePropdef_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AReadAble(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AReadAble_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AReadAble(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AReadAble = "check new AReadAble";
 void CHECKNEW_parser___parser_nodes___AReadAble(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AReadAble_t)(val_t p0);
-static const char * const LOCATE_NEW_AReadAble_parser___parser_prod___AReadAble___empty_init = "new AReadAble parser_prod::AReadAble::empty_init";
 val_t NEW_AReadAble_parser___parser_prod___AReadAble___empty_init(void);
 typedef val_t (*NEW_AReadAble_parser___parser_prod___AReadAble___empty_init_t)(void);
-static const char * const LOCATE_NEW_AReadAble_parser___parser_prod___AReadAble___init_areadable = "new AReadAble parser_prod::AReadAble::init_areadable";
 val_t NEW_AReadAble_parser___parser_prod___AReadAble___init_areadable(val_t p0, val_t p1);
 typedef val_t (*NEW_AReadAble_parser___parser_prod___AReadAble___init_areadable_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_AReadAble_parser___parser_nodes___ANode___init = "new AReadAble parser_nodes::ANode::init";
-val_t NEW_AReadAble_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AReadAble_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AWriteAble = "init var of AWriteAble";
+val_t NEW_AReadAble_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AReadAble_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AWriteAble(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AWriteAble_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AWriteAble(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AWriteAble = "check new AWriteAble";
 void CHECKNEW_parser___parser_nodes___AWriteAble(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AWriteAble_t)(val_t p0);
-static const char * const LOCATE_NEW_AWriteAble_parser___parser_prod___AWriteAble___empty_init = "new AWriteAble parser_prod::AWriteAble::empty_init";
 val_t NEW_AWriteAble_parser___parser_prod___AWriteAble___empty_init(void);
 typedef val_t (*NEW_AWriteAble_parser___parser_prod___AWriteAble___empty_init_t)(void);
-static const char * const LOCATE_NEW_AWriteAble_parser___parser_prod___AWriteAble___init_awriteable = "new AWriteAble parser_prod::AWriteAble::init_awriteable";
 val_t NEW_AWriteAble_parser___parser_prod___AWriteAble___init_awriteable(val_t p0, val_t p1, val_t p2);
 typedef val_t (*NEW_AWriteAble_parser___parser_prod___AWriteAble___init_awriteable_t)(val_t p0, val_t p1, val_t p2);
-static const char * const LOCATE_NEW_AWriteAble_parser___parser_nodes___ANode___init = "new AWriteAble parser_nodes::ANode::init";
-val_t NEW_AWriteAble_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AWriteAble_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AMethid = "init var of AMethid";
-void INIT_ATTRIBUTES__parser___parser_nodes___AMethid(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AMethid_t)(val_t p0);
-val_t NEW_parser___parser_nodes___AMethid(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AMethid = "check new AMethid";
-void CHECKNEW_parser___parser_nodes___AMethid(val_t p0);
-typedef void (*CHECKNEW_parser___parser_nodes___AMethid_t)(val_t p0);
-static const char * const LOCATE_NEW_AMethid_parser___parser_nodes___ANode___init = "new AMethid parser_nodes::ANode::init";
-val_t NEW_AMethid_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AMethid_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AIdMethid = "init var of AIdMethid";
+val_t NEW_AWriteAble_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AWriteAble_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AIdMethid(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AIdMethid_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AIdMethid(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AIdMethid = "check new AIdMethid";
 void CHECKNEW_parser___parser_nodes___AIdMethid(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AIdMethid_t)(val_t p0);
-static const char * const LOCATE_NEW_AIdMethid_parser___parser_prod___AIdMethid___empty_init = "new AIdMethid parser_prod::AIdMethid::empty_init";
 val_t NEW_AIdMethid_parser___parser_prod___AIdMethid___empty_init(void);
 typedef val_t (*NEW_AIdMethid_parser___parser_prod___AIdMethid___empty_init_t)(void);
-static const char * const LOCATE_NEW_AIdMethid_parser___parser_prod___AIdMethid___init_aidmethid = "new AIdMethid parser_prod::AIdMethid::init_aidmethid";
 val_t NEW_AIdMethid_parser___parser_prod___AIdMethid___init_aidmethid(val_t p0);
 typedef val_t (*NEW_AIdMethid_parser___parser_prod___AIdMethid___init_aidmethid_t)(val_t p0);
-static const char * const LOCATE_NEW_AIdMethid_parser___parser_nodes___ANode___init = "new AIdMethid parser_nodes::ANode::init";
-val_t NEW_AIdMethid_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AIdMethid_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___APlusMethid = "init var of APlusMethid";
+val_t NEW_AIdMethid_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AIdMethid_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___APlusMethid(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___APlusMethid_t)(val_t p0);
 val_t NEW_parser___parser_nodes___APlusMethid(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___APlusMethid = "check new APlusMethid";
 void CHECKNEW_parser___parser_nodes___APlusMethid(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___APlusMethid_t)(val_t p0);
-static const char * const LOCATE_NEW_APlusMethid_parser___parser_prod___APlusMethid___empty_init = "new APlusMethid parser_prod::APlusMethid::empty_init";
 val_t NEW_APlusMethid_parser___parser_prod___APlusMethid___empty_init(void);
 typedef val_t (*NEW_APlusMethid_parser___parser_prod___APlusMethid___empty_init_t)(void);
-static const char * const LOCATE_NEW_APlusMethid_parser___parser_prod___APlusMethid___init_aplusmethid = "new APlusMethid parser_prod::APlusMethid::init_aplusmethid";
 val_t NEW_APlusMethid_parser___parser_prod___APlusMethid___init_aplusmethid(val_t p0);
 typedef val_t (*NEW_APlusMethid_parser___parser_prod___APlusMethid___init_aplusmethid_t)(val_t p0);
-static const char * const LOCATE_NEW_APlusMethid_parser___parser_nodes___ANode___init = "new APlusMethid parser_nodes::ANode::init";
-val_t NEW_APlusMethid_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_APlusMethid_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AMinusMethid = "init var of AMinusMethid";
+val_t NEW_APlusMethid_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_APlusMethid_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AMinusMethid(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AMinusMethid_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AMinusMethid(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AMinusMethid = "check new AMinusMethid";
 void CHECKNEW_parser___parser_nodes___AMinusMethid(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AMinusMethid_t)(val_t p0);
-static const char * const LOCATE_NEW_AMinusMethid_parser___parser_prod___AMinusMethid___empty_init = "new AMinusMethid parser_prod::AMinusMethid::empty_init";
 val_t NEW_AMinusMethid_parser___parser_prod___AMinusMethid___empty_init(void);
 typedef val_t (*NEW_AMinusMethid_parser___parser_prod___AMinusMethid___empty_init_t)(void);
-static const char * const LOCATE_NEW_AMinusMethid_parser___parser_prod___AMinusMethid___init_aminusmethid = "new AMinusMethid parser_prod::AMinusMethid::init_aminusmethid";
 val_t NEW_AMinusMethid_parser___parser_prod___AMinusMethid___init_aminusmethid(val_t p0);
 typedef val_t (*NEW_AMinusMethid_parser___parser_prod___AMinusMethid___init_aminusmethid_t)(val_t p0);
-static const char * const LOCATE_NEW_AMinusMethid_parser___parser_nodes___ANode___init = "new AMinusMethid parser_nodes::ANode::init";
-val_t NEW_AMinusMethid_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AMinusMethid_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AStarMethid = "init var of AStarMethid";
+val_t NEW_AMinusMethid_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AMinusMethid_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AStarMethid(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AStarMethid_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AStarMethid(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AStarMethid = "check new AStarMethid";
 void CHECKNEW_parser___parser_nodes___AStarMethid(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AStarMethid_t)(val_t p0);
-static const char * const LOCATE_NEW_AStarMethid_parser___parser_prod___AStarMethid___empty_init = "new AStarMethid parser_prod::AStarMethid::empty_init";
 val_t NEW_AStarMethid_parser___parser_prod___AStarMethid___empty_init(void);
 typedef val_t (*NEW_AStarMethid_parser___parser_prod___AStarMethid___empty_init_t)(void);
-static const char * const LOCATE_NEW_AStarMethid_parser___parser_prod___AStarMethid___init_astarmethid = "new AStarMethid parser_prod::AStarMethid::init_astarmethid";
 val_t NEW_AStarMethid_parser___parser_prod___AStarMethid___init_astarmethid(val_t p0);
 typedef val_t (*NEW_AStarMethid_parser___parser_prod___AStarMethid___init_astarmethid_t)(val_t p0);
-static const char * const LOCATE_NEW_AStarMethid_parser___parser_nodes___ANode___init = "new AStarMethid parser_nodes::ANode::init";
-val_t NEW_AStarMethid_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AStarMethid_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ASlashMethid = "init var of ASlashMethid";
+val_t NEW_AStarMethid_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AStarMethid_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___ASlashMethid(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ASlashMethid_t)(val_t p0);
 val_t NEW_parser___parser_nodes___ASlashMethid(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___ASlashMethid = "check new ASlashMethid";
 void CHECKNEW_parser___parser_nodes___ASlashMethid(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___ASlashMethid_t)(val_t p0);
-static const char * const LOCATE_NEW_ASlashMethid_parser___parser_prod___ASlashMethid___empty_init = "new ASlashMethid parser_prod::ASlashMethid::empty_init";
 val_t NEW_ASlashMethid_parser___parser_prod___ASlashMethid___empty_init(void);
 typedef val_t (*NEW_ASlashMethid_parser___parser_prod___ASlashMethid___empty_init_t)(void);
-static const char * const LOCATE_NEW_ASlashMethid_parser___parser_prod___ASlashMethid___init_aslashmethid = "new ASlashMethid parser_prod::ASlashMethid::init_aslashmethid";
 val_t NEW_ASlashMethid_parser___parser_prod___ASlashMethid___init_aslashmethid(val_t p0);
 typedef val_t (*NEW_ASlashMethid_parser___parser_prod___ASlashMethid___init_aslashmethid_t)(val_t p0);
-static const char * const LOCATE_NEW_ASlashMethid_parser___parser_nodes___ANode___init = "new ASlashMethid parser_nodes::ANode::init";
-val_t NEW_ASlashMethid_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ASlashMethid_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___APercentMethid = "init var of APercentMethid";
+val_t NEW_ASlashMethid_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_ASlashMethid_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___APercentMethid(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___APercentMethid_t)(val_t p0);
 val_t NEW_parser___parser_nodes___APercentMethid(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___APercentMethid = "check new APercentMethid";
 void CHECKNEW_parser___parser_nodes___APercentMethid(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___APercentMethid_t)(val_t p0);
-static const char * const LOCATE_NEW_APercentMethid_parser___parser_prod___APercentMethid___empty_init = "new APercentMethid parser_prod::APercentMethid::empty_init";
 val_t NEW_APercentMethid_parser___parser_prod___APercentMethid___empty_init(void);
 typedef val_t (*NEW_APercentMethid_parser___parser_prod___APercentMethid___empty_init_t)(void);
-static const char * const LOCATE_NEW_APercentMethid_parser___parser_prod___APercentMethid___init_apercentmethid = "new APercentMethid parser_prod::APercentMethid::init_apercentmethid";
 val_t NEW_APercentMethid_parser___parser_prod___APercentMethid___init_apercentmethid(val_t p0);
 typedef val_t (*NEW_APercentMethid_parser___parser_prod___APercentMethid___init_apercentmethid_t)(val_t p0);
-static const char * const LOCATE_NEW_APercentMethid_parser___parser_nodes___ANode___init = "new APercentMethid parser_nodes::ANode::init";
-val_t NEW_APercentMethid_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_APercentMethid_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AEqMethid = "init var of AEqMethid";
+val_t NEW_APercentMethid_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_APercentMethid_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AEqMethid(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AEqMethid_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AEqMethid(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AEqMethid = "check new AEqMethid";
 void CHECKNEW_parser___parser_nodes___AEqMethid(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AEqMethid_t)(val_t p0);
-static const char * const LOCATE_NEW_AEqMethid_parser___parser_prod___AEqMethid___empty_init = "new AEqMethid parser_prod::AEqMethid::empty_init";
 val_t NEW_AEqMethid_parser___parser_prod___AEqMethid___empty_init(void);
 typedef val_t (*NEW_AEqMethid_parser___parser_prod___AEqMethid___empty_init_t)(void);
-static const char * const LOCATE_NEW_AEqMethid_parser___parser_prod___AEqMethid___init_aeqmethid = "new AEqMethid parser_prod::AEqMethid::init_aeqmethid";
 val_t NEW_AEqMethid_parser___parser_prod___AEqMethid___init_aeqmethid(val_t p0);
 typedef val_t (*NEW_AEqMethid_parser___parser_prod___AEqMethid___init_aeqmethid_t)(val_t p0);
-static const char * const LOCATE_NEW_AEqMethid_parser___parser_nodes___ANode___init = "new AEqMethid parser_nodes::ANode::init";
-val_t NEW_AEqMethid_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AEqMethid_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ANeMethid = "init var of ANeMethid";
+val_t NEW_AEqMethid_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AEqMethid_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___ANeMethid(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ANeMethid_t)(val_t p0);
 val_t NEW_parser___parser_nodes___ANeMethid(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___ANeMethid = "check new ANeMethid";
 void CHECKNEW_parser___parser_nodes___ANeMethid(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___ANeMethid_t)(val_t p0);
-static const char * const LOCATE_NEW_ANeMethid_parser___parser_prod___ANeMethid___empty_init = "new ANeMethid parser_prod::ANeMethid::empty_init";
 val_t NEW_ANeMethid_parser___parser_prod___ANeMethid___empty_init(void);
 typedef val_t (*NEW_ANeMethid_parser___parser_prod___ANeMethid___empty_init_t)(void);
-static const char * const LOCATE_NEW_ANeMethid_parser___parser_prod___ANeMethid___init_anemethid = "new ANeMethid parser_prod::ANeMethid::init_anemethid";
 val_t NEW_ANeMethid_parser___parser_prod___ANeMethid___init_anemethid(val_t p0);
 typedef val_t (*NEW_ANeMethid_parser___parser_prod___ANeMethid___init_anemethid_t)(val_t p0);
-static const char * const LOCATE_NEW_ANeMethid_parser___parser_nodes___ANode___init = "new ANeMethid parser_nodes::ANode::init";
-val_t NEW_ANeMethid_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ANeMethid_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ALeMethid = "init var of ALeMethid";
+val_t NEW_ANeMethid_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_ANeMethid_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___ALeMethid(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ALeMethid_t)(val_t p0);
 val_t NEW_parser___parser_nodes___ALeMethid(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___ALeMethid = "check new ALeMethid";
 void CHECKNEW_parser___parser_nodes___ALeMethid(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___ALeMethid_t)(val_t p0);
-static const char * const LOCATE_NEW_ALeMethid_parser___parser_prod___ALeMethid___empty_init = "new ALeMethid parser_prod::ALeMethid::empty_init";
 val_t NEW_ALeMethid_parser___parser_prod___ALeMethid___empty_init(void);
 typedef val_t (*NEW_ALeMethid_parser___parser_prod___ALeMethid___empty_init_t)(void);
-static const char * const LOCATE_NEW_ALeMethid_parser___parser_prod___ALeMethid___init_alemethid = "new ALeMethid parser_prod::ALeMethid::init_alemethid";
 val_t NEW_ALeMethid_parser___parser_prod___ALeMethid___init_alemethid(val_t p0);
 typedef val_t (*NEW_ALeMethid_parser___parser_prod___ALeMethid___init_alemethid_t)(val_t p0);
-static const char * const LOCATE_NEW_ALeMethid_parser___parser_nodes___ANode___init = "new ALeMethid parser_nodes::ANode::init";
-val_t NEW_ALeMethid_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ALeMethid_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AGeMethid = "init var of AGeMethid";
+val_t NEW_ALeMethid_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_ALeMethid_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AGeMethid(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AGeMethid_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AGeMethid(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AGeMethid = "check new AGeMethid";
 void CHECKNEW_parser___parser_nodes___AGeMethid(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AGeMethid_t)(val_t p0);
-static const char * const LOCATE_NEW_AGeMethid_parser___parser_prod___AGeMethid___empty_init = "new AGeMethid parser_prod::AGeMethid::empty_init";
 val_t NEW_AGeMethid_parser___parser_prod___AGeMethid___empty_init(void);
 typedef val_t (*NEW_AGeMethid_parser___parser_prod___AGeMethid___empty_init_t)(void);
-static const char * const LOCATE_NEW_AGeMethid_parser___parser_prod___AGeMethid___init_agemethid = "new AGeMethid parser_prod::AGeMethid::init_agemethid";
 val_t NEW_AGeMethid_parser___parser_prod___AGeMethid___init_agemethid(val_t p0);
 typedef val_t (*NEW_AGeMethid_parser___parser_prod___AGeMethid___init_agemethid_t)(val_t p0);
-static const char * const LOCATE_NEW_AGeMethid_parser___parser_nodes___ANode___init = "new AGeMethid parser_nodes::ANode::init";
-val_t NEW_AGeMethid_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AGeMethid_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ALtMethid = "init var of ALtMethid";
+val_t NEW_AGeMethid_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AGeMethid_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___ALtMethid(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ALtMethid_t)(val_t p0);
 val_t NEW_parser___parser_nodes___ALtMethid(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___ALtMethid = "check new ALtMethid";
 void CHECKNEW_parser___parser_nodes___ALtMethid(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___ALtMethid_t)(val_t p0);
-static const char * const LOCATE_NEW_ALtMethid_parser___parser_prod___ALtMethid___empty_init = "new ALtMethid parser_prod::ALtMethid::empty_init";
 val_t NEW_ALtMethid_parser___parser_prod___ALtMethid___empty_init(void);
 typedef val_t (*NEW_ALtMethid_parser___parser_prod___ALtMethid___empty_init_t)(void);
-static const char * const LOCATE_NEW_ALtMethid_parser___parser_prod___ALtMethid___init_altmethid = "new ALtMethid parser_prod::ALtMethid::init_altmethid";
 val_t NEW_ALtMethid_parser___parser_prod___ALtMethid___init_altmethid(val_t p0);
 typedef val_t (*NEW_ALtMethid_parser___parser_prod___ALtMethid___init_altmethid_t)(val_t p0);
-static const char * const LOCATE_NEW_ALtMethid_parser___parser_nodes___ANode___init = "new ALtMethid parser_nodes::ANode::init";
-val_t NEW_ALtMethid_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ALtMethid_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AGtMethid = "init var of AGtMethid";
+val_t NEW_ALtMethid_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_ALtMethid_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AGtMethid(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AGtMethid_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AGtMethid(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AGtMethid = "check new AGtMethid";
 void CHECKNEW_parser___parser_nodes___AGtMethid(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AGtMethid_t)(val_t p0);
-static const char * const LOCATE_NEW_AGtMethid_parser___parser_prod___AGtMethid___empty_init = "new AGtMethid parser_prod::AGtMethid::empty_init";
 val_t NEW_AGtMethid_parser___parser_prod___AGtMethid___empty_init(void);
 typedef val_t (*NEW_AGtMethid_parser___parser_prod___AGtMethid___empty_init_t)(void);
-static const char * const LOCATE_NEW_AGtMethid_parser___parser_prod___AGtMethid___init_agtmethid = "new AGtMethid parser_prod::AGtMethid::init_agtmethid";
 val_t NEW_AGtMethid_parser___parser_prod___AGtMethid___init_agtmethid(val_t p0);
 typedef val_t (*NEW_AGtMethid_parser___parser_prod___AGtMethid___init_agtmethid_t)(val_t p0);
-static const char * const LOCATE_NEW_AGtMethid_parser___parser_nodes___ANode___init = "new AGtMethid parser_nodes::ANode::init";
-val_t NEW_AGtMethid_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AGtMethid_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ALlMethid = "init var of ALlMethid";
+val_t NEW_AGtMethid_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AGtMethid_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___ALlMethid(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ALlMethid_t)(val_t p0);
 val_t NEW_parser___parser_nodes___ALlMethid(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___ALlMethid = "check new ALlMethid";
 void CHECKNEW_parser___parser_nodes___ALlMethid(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___ALlMethid_t)(val_t p0);
-static const char * const LOCATE_NEW_ALlMethid_parser___parser_prod___ALlMethid___empty_init = "new ALlMethid parser_prod::ALlMethid::empty_init";
 val_t NEW_ALlMethid_parser___parser_prod___ALlMethid___empty_init(void);
 typedef val_t (*NEW_ALlMethid_parser___parser_prod___ALlMethid___empty_init_t)(void);
-static const char * const LOCATE_NEW_ALlMethid_parser___parser_prod___ALlMethid___init_allmethid = "new ALlMethid parser_prod::ALlMethid::init_allmethid";
 val_t NEW_ALlMethid_parser___parser_prod___ALlMethid___init_allmethid(val_t p0);
 typedef val_t (*NEW_ALlMethid_parser___parser_prod___ALlMethid___init_allmethid_t)(val_t p0);
-static const char * const LOCATE_NEW_ALlMethid_parser___parser_nodes___ANode___init = "new ALlMethid parser_nodes::ANode::init";
-val_t NEW_ALlMethid_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ALlMethid_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AGgMethid = "init var of AGgMethid";
+val_t NEW_ALlMethid_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_ALlMethid_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AGgMethid(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AGgMethid_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AGgMethid(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AGgMethid = "check new AGgMethid";
 void CHECKNEW_parser___parser_nodes___AGgMethid(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AGgMethid_t)(val_t p0);
-static const char * const LOCATE_NEW_AGgMethid_parser___parser_prod___AGgMethid___empty_init = "new AGgMethid parser_prod::AGgMethid::empty_init";
 val_t NEW_AGgMethid_parser___parser_prod___AGgMethid___empty_init(void);
 typedef val_t (*NEW_AGgMethid_parser___parser_prod___AGgMethid___empty_init_t)(void);
-static const char * const LOCATE_NEW_AGgMethid_parser___parser_prod___AGgMethid___init_aggmethid = "new AGgMethid parser_prod::AGgMethid::init_aggmethid";
 val_t NEW_AGgMethid_parser___parser_prod___AGgMethid___init_aggmethid(val_t p0);
 typedef val_t (*NEW_AGgMethid_parser___parser_prod___AGgMethid___init_aggmethid_t)(val_t p0);
-static const char * const LOCATE_NEW_AGgMethid_parser___parser_nodes___ANode___init = "new AGgMethid parser_nodes::ANode::init";
-val_t NEW_AGgMethid_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AGgMethid_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ABraMethid = "init var of ABraMethid";
+val_t NEW_AGgMethid_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AGgMethid_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___ABraMethid(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ABraMethid_t)(val_t p0);
 val_t NEW_parser___parser_nodes___ABraMethid(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___ABraMethid = "check new ABraMethid";
 void CHECKNEW_parser___parser_nodes___ABraMethid(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___ABraMethid_t)(val_t p0);
-static const char * const LOCATE_NEW_ABraMethid_parser___parser_prod___ABraMethid___empty_init = "new ABraMethid parser_prod::ABraMethid::empty_init";
 val_t NEW_ABraMethid_parser___parser_prod___ABraMethid___empty_init(void);
 typedef val_t (*NEW_ABraMethid_parser___parser_prod___ABraMethid___empty_init_t)(void);
-static const char * const LOCATE_NEW_ABraMethid_parser___parser_prod___ABraMethid___init_abramethid = "new ABraMethid parser_prod::ABraMethid::init_abramethid";
 val_t NEW_ABraMethid_parser___parser_prod___ABraMethid___init_abramethid(val_t p0, val_t p1);
 typedef val_t (*NEW_ABraMethid_parser___parser_prod___ABraMethid___init_abramethid_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_ABraMethid_parser___parser_nodes___ANode___init = "new ABraMethid parser_nodes::ANode::init";
-val_t NEW_ABraMethid_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ABraMethid_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AStarshipMethid = "init var of AStarshipMethid";
+val_t NEW_ABraMethid_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_ABraMethid_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AStarshipMethid(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AStarshipMethid_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AStarshipMethid(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AStarshipMethid = "check new AStarshipMethid";
 void CHECKNEW_parser___parser_nodes___AStarshipMethid(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AStarshipMethid_t)(val_t p0);
-static const char * const LOCATE_NEW_AStarshipMethid_parser___parser_prod___AStarshipMethid___empty_init = "new AStarshipMethid parser_prod::AStarshipMethid::empty_init";
 val_t NEW_AStarshipMethid_parser___parser_prod___AStarshipMethid___empty_init(void);
 typedef val_t (*NEW_AStarshipMethid_parser___parser_prod___AStarshipMethid___empty_init_t)(void);
-static const char * const LOCATE_NEW_AStarshipMethid_parser___parser_prod___AStarshipMethid___init_astarshipmethid = "new AStarshipMethid parser_prod::AStarshipMethid::init_astarshipmethid";
 val_t NEW_AStarshipMethid_parser___parser_prod___AStarshipMethid___init_astarshipmethid(val_t p0);
 typedef val_t (*NEW_AStarshipMethid_parser___parser_prod___AStarshipMethid___init_astarshipmethid_t)(val_t p0);
-static const char * const LOCATE_NEW_AStarshipMethid_parser___parser_nodes___ANode___init = "new AStarshipMethid parser_nodes::ANode::init";
-val_t NEW_AStarshipMethid_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AStarshipMethid_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AAssignMethid = "init var of AAssignMethid";
+val_t NEW_AStarshipMethid_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AStarshipMethid_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AAssignMethid(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AAssignMethid_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AAssignMethid(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AAssignMethid = "check new AAssignMethid";
 void CHECKNEW_parser___parser_nodes___AAssignMethid(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AAssignMethid_t)(val_t p0);
-static const char * const LOCATE_NEW_AAssignMethid_parser___parser_prod___AAssignMethid___empty_init = "new AAssignMethid parser_prod::AAssignMethid::empty_init";
 val_t NEW_AAssignMethid_parser___parser_prod___AAssignMethid___empty_init(void);
 typedef val_t (*NEW_AAssignMethid_parser___parser_prod___AAssignMethid___empty_init_t)(void);
-static const char * const LOCATE_NEW_AAssignMethid_parser___parser_prod___AAssignMethid___init_aassignmethid = "new AAssignMethid parser_prod::AAssignMethid::init_aassignmethid";
 val_t NEW_AAssignMethid_parser___parser_prod___AAssignMethid___init_aassignmethid(val_t p0, val_t p1);
 typedef val_t (*NEW_AAssignMethid_parser___parser_prod___AAssignMethid___init_aassignmethid_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_AAssignMethid_parser___parser_nodes___ANode___init = "new AAssignMethid parser_nodes::ANode::init";
-val_t NEW_AAssignMethid_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AAssignMethid_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ABraassignMethid = "init var of ABraassignMethid";
+val_t NEW_AAssignMethid_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AAssignMethid_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___ABraassignMethid(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ABraassignMethid_t)(val_t p0);
 val_t NEW_parser___parser_nodes___ABraassignMethid(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___ABraassignMethid = "check new ABraassignMethid";
 void CHECKNEW_parser___parser_nodes___ABraassignMethid(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___ABraassignMethid_t)(val_t p0);
-static const char * const LOCATE_NEW_ABraassignMethid_parser___parser_prod___ABraassignMethid___empty_init = "new ABraassignMethid parser_prod::ABraassignMethid::empty_init";
 val_t NEW_ABraassignMethid_parser___parser_prod___ABraassignMethid___empty_init(void);
 typedef val_t (*NEW_ABraassignMethid_parser___parser_prod___ABraassignMethid___empty_init_t)(void);
-static const char * const LOCATE_NEW_ABraassignMethid_parser___parser_prod___ABraassignMethid___init_abraassignmethid = "new ABraassignMethid parser_prod::ABraassignMethid::init_abraassignmethid";
 val_t NEW_ABraassignMethid_parser___parser_prod___ABraassignMethid___init_abraassignmethid(val_t p0, val_t p1, val_t p2);
 typedef val_t (*NEW_ABraassignMethid_parser___parser_prod___ABraassignMethid___init_abraassignmethid_t)(val_t p0, val_t p1, val_t p2);
-static const char * const LOCATE_NEW_ABraassignMethid_parser___parser_nodes___ANode___init = "new ABraassignMethid parser_nodes::ANode::init";
-val_t NEW_ABraassignMethid_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ABraassignMethid_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ASignature = "init var of ASignature";
+val_t NEW_ABraassignMethid_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_ABraassignMethid_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___ASignature(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ASignature_t)(val_t p0);
 val_t NEW_parser___parser_nodes___ASignature(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___ASignature = "check new ASignature";
 void CHECKNEW_parser___parser_nodes___ASignature(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___ASignature_t)(val_t p0);
-static const char * const LOCATE_NEW_ASignature_parser___parser_prod___ASignature___empty_init = "new ASignature parser_prod::ASignature::empty_init";
 val_t NEW_ASignature_parser___parser_prod___ASignature___empty_init(void);
 typedef val_t (*NEW_ASignature_parser___parser_prod___ASignature___empty_init_t)(void);
-static const char * const LOCATE_NEW_ASignature_parser___parser_prod___ASignature___init_asignature = "new ASignature parser_prod::ASignature::init_asignature";
-val_t NEW_ASignature_parser___parser_prod___ASignature___init_asignature(val_t p0, val_t p1, val_t p2);
-typedef val_t (*NEW_ASignature_parser___parser_prod___ASignature___init_asignature_t)(val_t p0, val_t p1, val_t p2);
-static const char * const LOCATE_NEW_ASignature_parser___parser_nodes___ANode___init = "new ASignature parser_nodes::ANode::init";
-val_t NEW_ASignature_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ASignature_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AParam = "init var of AParam";
+val_t NEW_ASignature_parser___parser_prod___ASignature___init_asignature(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
+typedef val_t (*NEW_ASignature_parser___parser_prod___ASignature___init_asignature_t)(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
+val_t NEW_ASignature_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_ASignature_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AParam(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AParam_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AParam(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AParam = "check new AParam";
 void CHECKNEW_parser___parser_nodes___AParam(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AParam_t)(val_t p0);
-static const char * const LOCATE_NEW_AParam_parser___parser_prod___AParam___empty_init = "new AParam parser_prod::AParam::empty_init";
 val_t NEW_AParam_parser___parser_prod___AParam___empty_init(void);
 typedef val_t (*NEW_AParam_parser___parser_prod___AParam___empty_init_t)(void);
-static const char * const LOCATE_NEW_AParam_parser___parser_prod___AParam___init_aparam = "new AParam parser_prod::AParam::init_aparam";
-val_t NEW_AParam_parser___parser_prod___AParam___init_aparam(val_t p0, val_t p1, val_t p2);
-typedef val_t (*NEW_AParam_parser___parser_prod___AParam___init_aparam_t)(val_t p0, val_t p1, val_t p2);
-static const char * const LOCATE_NEW_AParam_parser___parser_nodes___ANode___init = "new AParam parser_nodes::ANode::init";
-val_t NEW_AParam_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AParam_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AClosureDecl = "init var of AClosureDecl";
+val_t NEW_AParam_parser___parser_prod___AParam___init_aparam(val_t p0, val_t p1, val_t p2, val_t p3);
+typedef val_t (*NEW_AParam_parser___parser_prod___AParam___init_aparam_t)(val_t p0, val_t p1, val_t p2, val_t p3);
+val_t NEW_AParam_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AParam_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AClosureDecl(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AClosureDecl_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AClosureDecl(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AClosureDecl = "check new AClosureDecl";
 void CHECKNEW_parser___parser_nodes___AClosureDecl(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AClosureDecl_t)(val_t p0);
-static const char * const LOCATE_NEW_AClosureDecl_parser___parser_prod___AClosureDecl___empty_init = "new AClosureDecl parser_prod::AClosureDecl::empty_init";
 val_t NEW_AClosureDecl_parser___parser_prod___AClosureDecl___empty_init(void);
 typedef val_t (*NEW_AClosureDecl_parser___parser_prod___AClosureDecl___empty_init_t)(void);
-static const char * const LOCATE_NEW_AClosureDecl_parser___parser_prod___AClosureDecl___init_aclosuredecl = "new AClosureDecl parser_prod::AClosureDecl::init_aclosuredecl";
 val_t NEW_AClosureDecl_parser___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___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___parser_nodes___ANode___init = "new AClosureDecl parser_nodes::ANode::init";
-val_t NEW_AClosureDecl_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AClosureDecl_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AType = "init var of AType";
+val_t NEW_AClosureDecl_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AClosureDecl_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AType(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AType_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AType(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AType = "check new AType";
 void CHECKNEW_parser___parser_nodes___AType(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AType_t)(val_t p0);
-static const char * const LOCATE_NEW_AType_parser___parser_prod___AType___empty_init = "new AType parser_prod::AType::empty_init";
 val_t NEW_AType_parser___parser_prod___AType___empty_init(void);
 typedef val_t (*NEW_AType_parser___parser_prod___AType___empty_init_t)(void);
-static const char * const LOCATE_NEW_AType_parser___parser_prod___AType___init_atype = "new AType parser_prod::AType::init_atype";
-val_t NEW_AType_parser___parser_prod___AType___init_atype(val_t p0, val_t p1, val_t p2);
-typedef val_t (*NEW_AType_parser___parser_prod___AType___init_atype_t)(val_t p0, val_t p1, val_t p2);
-static const char * const LOCATE_NEW_AType_parser___parser_nodes___ANode___init = "new AType parser_nodes::ANode::init";
-val_t NEW_AType_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AType_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ALabel = "init var of ALabel";
+val_t NEW_AType_parser___parser_prod___AType___init_atype(val_t p0, val_t p1, val_t p2, val_t p3);
+typedef val_t (*NEW_AType_parser___parser_prod___AType___init_atype_t)(val_t p0, val_t p1, val_t p2, val_t p3);
+val_t NEW_AType_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AType_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___ALabel(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ALabel_t)(val_t p0);
 val_t NEW_parser___parser_nodes___ALabel(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___ALabel = "check new ALabel";
 void CHECKNEW_parser___parser_nodes___ALabel(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___ALabel_t)(val_t p0);
-static const char * const LOCATE_NEW_ALabel_parser___parser_prod___ALabel___empty_init = "new ALabel parser_prod::ALabel::empty_init";
 val_t NEW_ALabel_parser___parser_prod___ALabel___empty_init(void);
 typedef val_t (*NEW_ALabel_parser___parser_prod___ALabel___empty_init_t)(void);
-static const char * const LOCATE_NEW_ALabel_parser___parser_prod___ALabel___init_alabel = "new ALabel parser_prod::ALabel::init_alabel";
 val_t NEW_ALabel_parser___parser_prod___ALabel___init_alabel(val_t p0, val_t p1);
 typedef val_t (*NEW_ALabel_parser___parser_prod___ALabel___init_alabel_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_ALabel_parser___parser_nodes___ANode___init = "new ALabel parser_nodes::ANode::init";
-val_t NEW_ALabel_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ALabel_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AExpr = "init var of AExpr";
-void INIT_ATTRIBUTES__parser___parser_nodes___AExpr(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AExpr_t)(val_t p0);
-val_t NEW_parser___parser_nodes___AExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AExpr = "check new AExpr";
-void CHECKNEW_parser___parser_nodes___AExpr(val_t p0);
-typedef void (*CHECKNEW_parser___parser_nodes___AExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AExpr_parser___parser_nodes___ANode___init = "new AExpr parser_nodes::ANode::init";
-val_t NEW_AExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ABlockExpr = "init var of ABlockExpr";
+val_t NEW_ALabel_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_ALabel_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___ABlockExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ABlockExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___ABlockExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___ABlockExpr = "check new ABlockExpr";
 void CHECKNEW_parser___parser_nodes___ABlockExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___ABlockExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_ABlockExpr_parser___parser_prod___ABlockExpr___empty_init = "new ABlockExpr parser_prod::ABlockExpr::empty_init";
 val_t NEW_ABlockExpr_parser___parser_prod___ABlockExpr___empty_init(void);
 typedef val_t (*NEW_ABlockExpr_parser___parser_prod___ABlockExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_ABlockExpr_parser___parser_prod___ABlockExpr___init_ablockexpr = "new ABlockExpr parser_prod::ABlockExpr::init_ablockexpr";
-val_t NEW_ABlockExpr_parser___parser_prod___ABlockExpr___init_ablockexpr(val_t p0);
-typedef val_t (*NEW_ABlockExpr_parser___parser_prod___ABlockExpr___init_ablockexpr_t)(val_t p0);
-static const char * const LOCATE_NEW_ABlockExpr_parser___parser_nodes___ANode___init = "new ABlockExpr parser_nodes::ANode::init";
-val_t NEW_ABlockExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ABlockExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AVardeclExpr = "init var of AVardeclExpr";
+val_t NEW_ABlockExpr_parser___parser_prod___ABlockExpr___init_ablockexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_ABlockExpr_parser___parser_prod___ABlockExpr___init_ablockexpr_t)(val_t p0, val_t p1);
+val_t NEW_ABlockExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_ABlockExpr_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AVardeclExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AVardeclExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AVardeclExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AVardeclExpr = "check new AVardeclExpr";
 void CHECKNEW_parser___parser_nodes___AVardeclExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AVardeclExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AVardeclExpr_parser___parser_prod___AVardeclExpr___empty_init = "new AVardeclExpr parser_prod::AVardeclExpr::empty_init";
 val_t NEW_AVardeclExpr_parser___parser_prod___AVardeclExpr___empty_init(void);
 typedef val_t (*NEW_AVardeclExpr_parser___parser_prod___AVardeclExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AVardeclExpr_parser___parser_prod___AVardeclExpr___init_avardeclexpr = "new AVardeclExpr parser_prod::AVardeclExpr::init_avardeclexpr";
-val_t NEW_AVardeclExpr_parser___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___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___parser_nodes___ANode___init = "new AVardeclExpr parser_nodes::ANode::init";
-val_t NEW_AVardeclExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AVardeclExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AReturnExpr = "init var of AReturnExpr";
+val_t NEW_AVardeclExpr_parser___parser_prod___AVardeclExpr___init_avardeclexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5);
+typedef val_t (*NEW_AVardeclExpr_parser___parser_prod___AVardeclExpr___init_avardeclexpr_t)(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5);
+val_t NEW_AVardeclExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AVardeclExpr_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AReturnExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AReturnExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AReturnExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AReturnExpr = "check new AReturnExpr";
 void CHECKNEW_parser___parser_nodes___AReturnExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AReturnExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AReturnExpr_parser___parser_prod___AReturnExpr___empty_init = "new AReturnExpr parser_prod::AReturnExpr::empty_init";
 val_t NEW_AReturnExpr_parser___parser_prod___AReturnExpr___empty_init(void);
 typedef val_t (*NEW_AReturnExpr_parser___parser_prod___AReturnExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AReturnExpr_parser___parser_prod___AReturnExpr___init_areturnexpr = "new AReturnExpr parser_prod::AReturnExpr::init_areturnexpr";
 val_t NEW_AReturnExpr_parser___parser_prod___AReturnExpr___init_areturnexpr(val_t p0, val_t p1);
 typedef val_t (*NEW_AReturnExpr_parser___parser_prod___AReturnExpr___init_areturnexpr_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_AReturnExpr_parser___parser_nodes___ANode___init = "new AReturnExpr parser_nodes::ANode::init";
-val_t NEW_AReturnExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AReturnExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ALabelable = "init var of ALabelable";
-void INIT_ATTRIBUTES__parser___parser_nodes___ALabelable(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ALabelable_t)(val_t p0);
-val_t NEW_parser___parser_nodes___ALabelable(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___ALabelable = "check new ALabelable";
-void CHECKNEW_parser___parser_nodes___ALabelable(val_t p0);
-typedef void (*CHECKNEW_parser___parser_nodes___ALabelable_t)(val_t p0);
-static const char * const LOCATE_NEW_ALabelable_parser___parser_nodes___ANode___init = "new ALabelable parser_nodes::ANode::init";
-val_t NEW_ALabelable_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ALabelable_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ABreakExpr = "init var of ABreakExpr";
+val_t NEW_AReturnExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AReturnExpr_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___ABreakExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ABreakExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___ABreakExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___ABreakExpr = "check new ABreakExpr";
 void CHECKNEW_parser___parser_nodes___ABreakExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___ABreakExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_ABreakExpr_parser___parser_prod___ABreakExpr___empty_init = "new ABreakExpr parser_prod::ABreakExpr::empty_init";
 val_t NEW_ABreakExpr_parser___parser_prod___ABreakExpr___empty_init(void);
 typedef val_t (*NEW_ABreakExpr_parser___parser_prod___ABreakExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_ABreakExpr_parser___parser_prod___ABreakExpr___init_abreakexpr = "new ABreakExpr parser_prod::ABreakExpr::init_abreakexpr";
 val_t NEW_ABreakExpr_parser___parser_prod___ABreakExpr___init_abreakexpr(val_t p0, val_t p1, val_t p2);
 typedef val_t (*NEW_ABreakExpr_parser___parser_prod___ABreakExpr___init_abreakexpr_t)(val_t p0, val_t p1, val_t p2);
-static const char * const LOCATE_NEW_ABreakExpr_parser___parser_nodes___ANode___init = "new ABreakExpr parser_nodes::ANode::init";
-val_t NEW_ABreakExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ABreakExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AAbortExpr = "init var of AAbortExpr";
+val_t NEW_ABreakExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_ABreakExpr_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AAbortExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AAbortExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AAbortExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AAbortExpr = "check new AAbortExpr";
 void CHECKNEW_parser___parser_nodes___AAbortExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AAbortExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AAbortExpr_parser___parser_prod___AAbortExpr___empty_init = "new AAbortExpr parser_prod::AAbortExpr::empty_init";
 val_t NEW_AAbortExpr_parser___parser_prod___AAbortExpr___empty_init(void);
 typedef val_t (*NEW_AAbortExpr_parser___parser_prod___AAbortExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AAbortExpr_parser___parser_prod___AAbortExpr___init_aabortexpr = "new AAbortExpr parser_prod::AAbortExpr::init_aabortexpr";
 val_t NEW_AAbortExpr_parser___parser_prod___AAbortExpr___init_aabortexpr(val_t p0);
 typedef val_t (*NEW_AAbortExpr_parser___parser_prod___AAbortExpr___init_aabortexpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AAbortExpr_parser___parser_nodes___ANode___init = "new AAbortExpr parser_nodes::ANode::init";
-val_t NEW_AAbortExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AAbortExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AContinueExpr = "init var of AContinueExpr";
+val_t NEW_AAbortExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AAbortExpr_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AContinueExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AContinueExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AContinueExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AContinueExpr = "check new AContinueExpr";
 void CHECKNEW_parser___parser_nodes___AContinueExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AContinueExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AContinueExpr_parser___parser_prod___AContinueExpr___empty_init = "new AContinueExpr parser_prod::AContinueExpr::empty_init";
 val_t NEW_AContinueExpr_parser___parser_prod___AContinueExpr___empty_init(void);
 typedef val_t (*NEW_AContinueExpr_parser___parser_prod___AContinueExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AContinueExpr_parser___parser_prod___AContinueExpr___init_acontinueexpr = "new AContinueExpr parser_prod::AContinueExpr::init_acontinueexpr";
 val_t NEW_AContinueExpr_parser___parser_prod___AContinueExpr___init_acontinueexpr(val_t p0, val_t p1, val_t p2);
 typedef val_t (*NEW_AContinueExpr_parser___parser_prod___AContinueExpr___init_acontinueexpr_t)(val_t p0, val_t p1, val_t p2);
-static const char * const LOCATE_NEW_AContinueExpr_parser___parser_nodes___ANode___init = "new AContinueExpr parser_nodes::ANode::init";
-val_t NEW_AContinueExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AContinueExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ADoExpr = "init var of ADoExpr";
+val_t NEW_AContinueExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AContinueExpr_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___ADoExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ADoExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___ADoExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___ADoExpr = "check new ADoExpr";
 void CHECKNEW_parser___parser_nodes___ADoExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___ADoExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_ADoExpr_parser___parser_prod___ADoExpr___empty_init = "new ADoExpr parser_prod::ADoExpr::empty_init";
 val_t NEW_ADoExpr_parser___parser_prod___ADoExpr___empty_init(void);
 typedef val_t (*NEW_ADoExpr_parser___parser_prod___ADoExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_ADoExpr_parser___parser_prod___ADoExpr___init_adoexpr = "new ADoExpr parser_prod::ADoExpr::init_adoexpr";
 val_t NEW_ADoExpr_parser___parser_prod___ADoExpr___init_adoexpr(val_t p0, val_t p1, val_t p2);
 typedef val_t (*NEW_ADoExpr_parser___parser_prod___ADoExpr___init_adoexpr_t)(val_t p0, val_t p1, val_t p2);
-static const char * const LOCATE_NEW_ADoExpr_parser___parser_nodes___ANode___init = "new ADoExpr parser_nodes::ANode::init";
-val_t NEW_ADoExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ADoExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AIfExpr = "init var of AIfExpr";
+val_t NEW_ADoExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_ADoExpr_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AIfExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AIfExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AIfExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AIfExpr = "check new AIfExpr";
 void CHECKNEW_parser___parser_nodes___AIfExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AIfExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AIfExpr_parser___parser_prod___AIfExpr___empty_init = "new AIfExpr parser_prod::AIfExpr::empty_init";
 val_t NEW_AIfExpr_parser___parser_prod___AIfExpr___empty_init(void);
 typedef val_t (*NEW_AIfExpr_parser___parser_prod___AIfExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AIfExpr_parser___parser_prod___AIfExpr___init_aifexpr = "new AIfExpr parser_prod::AIfExpr::init_aifexpr";
 val_t NEW_AIfExpr_parser___parser_prod___AIfExpr___init_aifexpr(val_t p0, val_t p1, val_t p2, val_t p3);
 typedef val_t (*NEW_AIfExpr_parser___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___parser_nodes___ANode___init = "new AIfExpr parser_nodes::ANode::init";
-val_t NEW_AIfExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AIfExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AIfexprExpr = "init var of AIfexprExpr";
+val_t NEW_AIfExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AIfExpr_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AIfexprExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AIfexprExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AIfexprExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AIfexprExpr = "check new AIfexprExpr";
 void CHECKNEW_parser___parser_nodes___AIfexprExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AIfexprExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AIfexprExpr_parser___parser_prod___AIfexprExpr___empty_init = "new AIfexprExpr parser_prod::AIfexprExpr::empty_init";
 val_t NEW_AIfexprExpr_parser___parser_prod___AIfexprExpr___empty_init(void);
 typedef val_t (*NEW_AIfexprExpr_parser___parser_prod___AIfexprExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AIfexprExpr_parser___parser_prod___AIfexprExpr___init_aifexprexpr = "new AIfexprExpr parser_prod::AIfexprExpr::init_aifexprexpr";
 val_t NEW_AIfexprExpr_parser___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___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___parser_nodes___ANode___init = "new AIfexprExpr parser_nodes::ANode::init";
-val_t NEW_AIfexprExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AIfexprExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AWhileExpr = "init var of AWhileExpr";
+val_t NEW_AIfexprExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AIfexprExpr_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AWhileExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AWhileExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AWhileExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AWhileExpr = "check new AWhileExpr";
 void CHECKNEW_parser___parser_nodes___AWhileExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AWhileExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AWhileExpr_parser___parser_prod___AWhileExpr___empty_init = "new AWhileExpr parser_prod::AWhileExpr::empty_init";
 val_t NEW_AWhileExpr_parser___parser_prod___AWhileExpr___empty_init(void);
 typedef val_t (*NEW_AWhileExpr_parser___parser_prod___AWhileExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AWhileExpr_parser___parser_prod___AWhileExpr___init_awhileexpr = "new AWhileExpr parser_prod::AWhileExpr::init_awhileexpr";
 val_t NEW_AWhileExpr_parser___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___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___parser_nodes___ANode___init = "new AWhileExpr parser_nodes::ANode::init";
-val_t NEW_AWhileExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AWhileExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ALoopExpr = "init var of ALoopExpr";
+val_t NEW_AWhileExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AWhileExpr_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___ALoopExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ALoopExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___ALoopExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___ALoopExpr = "check new ALoopExpr";
 void CHECKNEW_parser___parser_nodes___ALoopExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___ALoopExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_ALoopExpr_parser___parser_prod___ALoopExpr___empty_init = "new ALoopExpr parser_prod::ALoopExpr::empty_init";
 val_t NEW_ALoopExpr_parser___parser_prod___ALoopExpr___empty_init(void);
 typedef val_t (*NEW_ALoopExpr_parser___parser_prod___ALoopExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_ALoopExpr_parser___parser_prod___ALoopExpr___init_aloopexpr = "new ALoopExpr parser_prod::ALoopExpr::init_aloopexpr";
 val_t NEW_ALoopExpr_parser___parser_prod___ALoopExpr___init_aloopexpr(val_t p0, val_t p1, val_t p2);
 typedef val_t (*NEW_ALoopExpr_parser___parser_prod___ALoopExpr___init_aloopexpr_t)(val_t p0, val_t p1, val_t p2);
-static const char * const LOCATE_NEW_ALoopExpr_parser___parser_nodes___ANode___init = "new ALoopExpr parser_nodes::ANode::init";
-val_t NEW_ALoopExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ALoopExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AForExpr = "init var of AForExpr";
+val_t NEW_ALoopExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_ALoopExpr_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AForExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AForExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AForExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AForExpr = "check new AForExpr";
 void CHECKNEW_parser___parser_nodes___AForExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AForExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AForExpr_parser___parser_prod___AForExpr___empty_init = "new AForExpr parser_prod::AForExpr::empty_init";
 val_t NEW_AForExpr_parser___parser_prod___AForExpr___empty_init(void);
 typedef val_t (*NEW_AForExpr_parser___parser_prod___AForExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AForExpr_parser___parser_prod___AForExpr___init_aforexpr = "new AForExpr parser_prod::AForExpr::init_aforexpr";
 val_t NEW_AForExpr_parser___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___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___parser_nodes___ANode___init = "new AForExpr parser_nodes::ANode::init";
-val_t NEW_AForExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AForExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AAssertExpr = "init var of AAssertExpr";
+val_t NEW_AForExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AForExpr_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AAssertExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AAssertExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AAssertExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AAssertExpr = "check new AAssertExpr";
 void CHECKNEW_parser___parser_nodes___AAssertExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AAssertExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AAssertExpr_parser___parser_prod___AAssertExpr___empty_init = "new AAssertExpr parser_prod::AAssertExpr::empty_init";
 val_t NEW_AAssertExpr_parser___parser_prod___AAssertExpr___empty_init(void);
 typedef val_t (*NEW_AAssertExpr_parser___parser_prod___AAssertExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AAssertExpr_parser___parser_prod___AAssertExpr___init_aassertexpr = "new AAssertExpr parser_prod::AAssertExpr::init_aassertexpr";
 val_t NEW_AAssertExpr_parser___parser_prod___AAssertExpr___init_aassertexpr(val_t p0, val_t p1, val_t p2, val_t p3);
 typedef val_t (*NEW_AAssertExpr_parser___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___parser_nodes___ANode___init = "new AAssertExpr parser_nodes::ANode::init";
-val_t NEW_AAssertExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AAssertExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AAssignFormExpr = "init var of AAssignFormExpr";
-void INIT_ATTRIBUTES__parser___parser_nodes___AAssignFormExpr(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AAssignFormExpr_t)(val_t p0);
-val_t NEW_parser___parser_nodes___AAssignFormExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AAssignFormExpr = "check new AAssignFormExpr";
-void CHECKNEW_parser___parser_nodes___AAssignFormExpr(val_t p0);
-typedef void (*CHECKNEW_parser___parser_nodes___AAssignFormExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AAssignFormExpr_parser___parser_nodes___ANode___init = "new AAssignFormExpr parser_nodes::ANode::init";
-val_t NEW_AAssignFormExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AAssignFormExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AReassignFormExpr = "init var of AReassignFormExpr";
-void INIT_ATTRIBUTES__parser___parser_nodes___AReassignFormExpr(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AReassignFormExpr_t)(val_t p0);
-val_t NEW_parser___parser_nodes___AReassignFormExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AReassignFormExpr = "check new AReassignFormExpr";
-void CHECKNEW_parser___parser_nodes___AReassignFormExpr(val_t p0);
-typedef void (*CHECKNEW_parser___parser_nodes___AReassignFormExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AReassignFormExpr_parser___parser_nodes___ANode___init = "new AReassignFormExpr parser_nodes::ANode::init";
-val_t NEW_AReassignFormExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AReassignFormExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AOnceExpr = "init var of AOnceExpr";
+val_t NEW_AAssertExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AAssertExpr_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AOnceExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AOnceExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AOnceExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AOnceExpr = "check new AOnceExpr";
 void CHECKNEW_parser___parser_nodes___AOnceExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AOnceExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AOnceExpr_parser___parser_prod___AOnceExpr___empty_init = "new AOnceExpr parser_prod::AOnceExpr::empty_init";
 val_t NEW_AOnceExpr_parser___parser_prod___AOnceExpr___empty_init(void);
 typedef val_t (*NEW_AOnceExpr_parser___parser_prod___AOnceExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AOnceExpr_parser___parser_prod___AOnceExpr___init_aonceexpr = "new AOnceExpr parser_prod::AOnceExpr::init_aonceexpr";
 val_t NEW_AOnceExpr_parser___parser_prod___AOnceExpr___init_aonceexpr(val_t p0, val_t p1);
 typedef val_t (*NEW_AOnceExpr_parser___parser_prod___AOnceExpr___init_aonceexpr_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_AOnceExpr_parser___parser_nodes___ANode___init = "new AOnceExpr parser_nodes::ANode::init";
-val_t NEW_AOnceExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AOnceExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ASendExpr = "init var of ASendExpr";
-void INIT_ATTRIBUTES__parser___parser_nodes___ASendExpr(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ASendExpr_t)(val_t p0);
-val_t NEW_parser___parser_nodes___ASendExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___ASendExpr = "check new ASendExpr";
-void CHECKNEW_parser___parser_nodes___ASendExpr(val_t p0);
-typedef void (*CHECKNEW_parser___parser_nodes___ASendExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_ASendExpr_parser___parser_prod___ASendExpr___empty_init = "new ASendExpr parser_prod::ASendExpr::empty_init";
-val_t NEW_ASendExpr_parser___parser_prod___ASendExpr___empty_init(void);
-typedef val_t (*NEW_ASendExpr_parser___parser_prod___ASendExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_ASendExpr_parser___parser_prod___ASendExpr___init_asendexpr = "new ASendExpr parser_prod::ASendExpr::init_asendexpr";
-val_t NEW_ASendExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0);
-typedef val_t (*NEW_ASendExpr_parser___parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
-static const char * const LOCATE_NEW_ASendExpr_parser___parser_nodes___ANode___init = "new ASendExpr parser_nodes::ANode::init";
-val_t NEW_ASendExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ASendExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ABinopExpr = "init var of ABinopExpr";
-void INIT_ATTRIBUTES__parser___parser_nodes___ABinopExpr(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ABinopExpr_t)(val_t p0);
-val_t NEW_parser___parser_nodes___ABinopExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___ABinopExpr = "check new ABinopExpr";
-void CHECKNEW_parser___parser_nodes___ABinopExpr(val_t p0);
-typedef void (*CHECKNEW_parser___parser_nodes___ABinopExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_ABinopExpr_parser___parser_prod___ASendExpr___empty_init = "new ABinopExpr parser_prod::ASendExpr::empty_init";
-val_t NEW_ABinopExpr_parser___parser_prod___ASendExpr___empty_init(void);
-typedef val_t (*NEW_ABinopExpr_parser___parser_prod___ASendExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_ABinopExpr_parser___parser_prod___ABinopExpr___empty_init = "new ABinopExpr parser_prod::ABinopExpr::empty_init";
-val_t NEW_ABinopExpr_parser___parser_prod___ABinopExpr___empty_init(void);
-typedef val_t (*NEW_ABinopExpr_parser___parser_prod___ABinopExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_ABinopExpr_parser___parser_prod___ABinopExpr___init_abinopexpr = "new ABinopExpr parser_prod::ABinopExpr::init_abinopexpr";
-val_t NEW_ABinopExpr_parser___parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1);
-typedef val_t (*NEW_ABinopExpr_parser___parser_prod___ABinopExpr___init_abinopexpr_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_ABinopExpr_parser___parser_nodes___ANode___init = "new ABinopExpr parser_nodes::ANode::init";
-val_t NEW_ABinopExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ABinopExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_NEW_ABinopExpr_parser___parser_prod___ASendExpr___init_asendexpr = "new ABinopExpr parser_prod::ASendExpr::init_asendexpr";
-val_t NEW_ABinopExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0);
-typedef val_t (*NEW_ABinopExpr_parser___parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ABoolExpr = "init var of ABoolExpr";
-void INIT_ATTRIBUTES__parser___parser_nodes___ABoolExpr(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ABoolExpr_t)(val_t p0);
-val_t NEW_parser___parser_nodes___ABoolExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___ABoolExpr = "check new ABoolExpr";
-void CHECKNEW_parser___parser_nodes___ABoolExpr(val_t p0);
-typedef void (*CHECKNEW_parser___parser_nodes___ABoolExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_ABoolExpr_parser___parser_nodes___ANode___init = "new ABoolExpr parser_nodes::ANode::init";
-val_t NEW_ABoolExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ABoolExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AOrExpr = "init var of AOrExpr";
+val_t NEW_AOnceExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AOnceExpr_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AOrExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AOrExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AOrExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AOrExpr = "check new AOrExpr";
 void CHECKNEW_parser___parser_nodes___AOrExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AOrExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AOrExpr_parser___parser_prod___AOrExpr___empty_init = "new AOrExpr parser_prod::AOrExpr::empty_init";
 val_t NEW_AOrExpr_parser___parser_prod___AOrExpr___empty_init(void);
 typedef val_t (*NEW_AOrExpr_parser___parser_prod___AOrExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AOrExpr_parser___parser_prod___AOrExpr___init_aorexpr = "new AOrExpr parser_prod::AOrExpr::init_aorexpr";
 val_t NEW_AOrExpr_parser___parser_prod___AOrExpr___init_aorexpr(val_t p0, val_t p1);
 typedef val_t (*NEW_AOrExpr_parser___parser_prod___AOrExpr___init_aorexpr_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_AOrExpr_parser___parser_nodes___ANode___init = "new AOrExpr parser_nodes::ANode::init";
-val_t NEW_AOrExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AOrExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AAndExpr = "init var of AAndExpr";
+val_t NEW_AOrExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AOrExpr_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AAndExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AAndExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AAndExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AAndExpr = "check new AAndExpr";
 void CHECKNEW_parser___parser_nodes___AAndExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AAndExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AAndExpr_parser___parser_prod___AAndExpr___empty_init = "new AAndExpr parser_prod::AAndExpr::empty_init";
 val_t NEW_AAndExpr_parser___parser_prod___AAndExpr___empty_init(void);
 typedef val_t (*NEW_AAndExpr_parser___parser_prod___AAndExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AAndExpr_parser___parser_prod___AAndExpr___init_aandexpr = "new AAndExpr parser_prod::AAndExpr::init_aandexpr";
 val_t NEW_AAndExpr_parser___parser_prod___AAndExpr___init_aandexpr(val_t p0, val_t p1);
 typedef val_t (*NEW_AAndExpr_parser___parser_prod___AAndExpr___init_aandexpr_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_AAndExpr_parser___parser_nodes___ANode___init = "new AAndExpr parser_nodes::ANode::init";
-val_t NEW_AAndExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AAndExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AOrElseExpr = "init var of AOrElseExpr";
+val_t NEW_AAndExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AAndExpr_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AOrElseExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AOrElseExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AOrElseExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AOrElseExpr = "check new AOrElseExpr";
 void CHECKNEW_parser___parser_nodes___AOrElseExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AOrElseExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AOrElseExpr_parser___parser_prod___AOrElseExpr___empty_init = "new AOrElseExpr parser_prod::AOrElseExpr::empty_init";
 val_t NEW_AOrElseExpr_parser___parser_prod___AOrElseExpr___empty_init(void);
 typedef val_t (*NEW_AOrElseExpr_parser___parser_prod___AOrElseExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AOrElseExpr_parser___parser_prod___AOrElseExpr___init_aorelseexpr = "new AOrElseExpr parser_prod::AOrElseExpr::init_aorelseexpr";
 val_t NEW_AOrElseExpr_parser___parser_prod___AOrElseExpr___init_aorelseexpr(val_t p0, val_t p1);
 typedef val_t (*NEW_AOrElseExpr_parser___parser_prod___AOrElseExpr___init_aorelseexpr_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_AOrElseExpr_parser___parser_nodes___ANode___init = "new AOrElseExpr parser_nodes::ANode::init";
-val_t NEW_AOrElseExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AOrElseExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ANotExpr = "init var of ANotExpr";
+val_t NEW_AOrElseExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AOrElseExpr_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___ANotExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ANotExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___ANotExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___ANotExpr = "check new ANotExpr";
 void CHECKNEW_parser___parser_nodes___ANotExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___ANotExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_ANotExpr_parser___parser_prod___ANotExpr___empty_init = "new ANotExpr parser_prod::ANotExpr::empty_init";
 val_t NEW_ANotExpr_parser___parser_prod___ANotExpr___empty_init(void);
 typedef val_t (*NEW_ANotExpr_parser___parser_prod___ANotExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_ANotExpr_parser___parser_prod___ANotExpr___init_anotexpr = "new ANotExpr parser_prod::ANotExpr::init_anotexpr";
 val_t NEW_ANotExpr_parser___parser_prod___ANotExpr___init_anotexpr(val_t p0, val_t p1);
 typedef val_t (*NEW_ANotExpr_parser___parser_prod___ANotExpr___init_anotexpr_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_ANotExpr_parser___parser_nodes___ANode___init = "new ANotExpr parser_nodes::ANode::init";
-val_t NEW_ANotExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ANotExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AEqExpr = "init var of AEqExpr";
+val_t NEW_ANotExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_ANotExpr_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AEqExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AEqExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AEqExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AEqExpr = "check new AEqExpr";
 void CHECKNEW_parser___parser_nodes___AEqExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AEqExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AEqExpr_parser___parser_prod___ABinopExpr___empty_init = "new AEqExpr parser_prod::ABinopExpr::empty_init";
 val_t NEW_AEqExpr_parser___parser_prod___ABinopExpr___empty_init(void);
 typedef val_t (*NEW_AEqExpr_parser___parser_prod___ABinopExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AEqExpr_parser___parser_prod___AEqExpr___empty_init = "new AEqExpr parser_prod::AEqExpr::empty_init";
 val_t NEW_AEqExpr_parser___parser_prod___AEqExpr___empty_init(void);
 typedef val_t (*NEW_AEqExpr_parser___parser_prod___AEqExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AEqExpr_parser___parser_prod___AEqExpr___init_aeqexpr = "new AEqExpr parser_prod::AEqExpr::init_aeqexpr";
 val_t NEW_AEqExpr_parser___parser_prod___AEqExpr___init_aeqexpr(val_t p0, val_t p1);
 typedef val_t (*NEW_AEqExpr_parser___parser_prod___AEqExpr___init_aeqexpr_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_AEqExpr_parser___parser_nodes___ANode___init = "new AEqExpr parser_nodes::ANode::init";
-val_t NEW_AEqExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AEqExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_NEW_AEqExpr_parser___parser_prod___ASendExpr___empty_init = "new AEqExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_AEqExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AEqExpr_parser___parser_nodes___ANode___init_t)(void);
 val_t NEW_AEqExpr_parser___parser_prod___ASendExpr___empty_init(void);
 typedef val_t (*NEW_AEqExpr_parser___parser_prod___ASendExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AEqExpr_parser___parser_prod___ABinopExpr___init_abinopexpr = "new AEqExpr parser_prod::ABinopExpr::init_abinopexpr";
 val_t NEW_AEqExpr_parser___parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1);
 typedef val_t (*NEW_AEqExpr_parser___parser_prod___ABinopExpr___init_abinopexpr_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_AEqExpr_parser___parser_prod___ASendExpr___init_asendexpr = "new AEqExpr parser_prod::ASendExpr::init_asendexpr";
 val_t NEW_AEqExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0);
 typedef val_t (*NEW_AEqExpr_parser___parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AEeExpr = "init var of AEeExpr";
 void INIT_ATTRIBUTES__parser___parser_nodes___AEeExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AEeExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AEeExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AEeExpr = "check new AEeExpr";
 void CHECKNEW_parser___parser_nodes___AEeExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AEeExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AEeExpr_parser___parser_prod___AEeExpr___empty_init = "new AEeExpr parser_prod::AEeExpr::empty_init";
 val_t NEW_AEeExpr_parser___parser_prod___AEeExpr___empty_init(void);
 typedef val_t (*NEW_AEeExpr_parser___parser_prod___AEeExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AEeExpr_parser___parser_prod___AEeExpr___init_aeeexpr = "new AEeExpr parser_prod::AEeExpr::init_aeeexpr";
 val_t NEW_AEeExpr_parser___parser_prod___AEeExpr___init_aeeexpr(val_t p0, val_t p1);
 typedef val_t (*NEW_AEeExpr_parser___parser_prod___AEeExpr___init_aeeexpr_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_AEeExpr_parser___parser_nodes___ANode___init = "new AEeExpr parser_nodes::ANode::init";
-val_t NEW_AEeExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AEeExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ANeExpr = "init var of ANeExpr";
+val_t NEW_AEeExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AEeExpr_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___ANeExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ANeExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___ANeExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___ANeExpr = "check new ANeExpr";
 void CHECKNEW_parser___parser_nodes___ANeExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___ANeExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_ANeExpr_parser___parser_prod___ABinopExpr___empty_init = "new ANeExpr parser_prod::ABinopExpr::empty_init";
 val_t NEW_ANeExpr_parser___parser_prod___ABinopExpr___empty_init(void);
 typedef val_t (*NEW_ANeExpr_parser___parser_prod___ABinopExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_ANeExpr_parser___parser_prod___ANeExpr___empty_init = "new ANeExpr parser_prod::ANeExpr::empty_init";
 val_t NEW_ANeExpr_parser___parser_prod___ANeExpr___empty_init(void);
 typedef val_t (*NEW_ANeExpr_parser___parser_prod___ANeExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_ANeExpr_parser___parser_prod___ANeExpr___init_aneexpr = "new ANeExpr parser_prod::ANeExpr::init_aneexpr";
 val_t NEW_ANeExpr_parser___parser_prod___ANeExpr___init_aneexpr(val_t p0, val_t p1);
 typedef val_t (*NEW_ANeExpr_parser___parser_prod___ANeExpr___init_aneexpr_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_ANeExpr_parser___parser_nodes___ANode___init = "new ANeExpr parser_nodes::ANode::init";
-val_t NEW_ANeExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ANeExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_NEW_ANeExpr_parser___parser_prod___ASendExpr___empty_init = "new ANeExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_ANeExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_ANeExpr_parser___parser_nodes___ANode___init_t)(void);
 val_t NEW_ANeExpr_parser___parser_prod___ASendExpr___empty_init(void);
 typedef val_t (*NEW_ANeExpr_parser___parser_prod___ASendExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_ANeExpr_parser___parser_prod___ABinopExpr___init_abinopexpr = "new ANeExpr parser_prod::ABinopExpr::init_abinopexpr";
 val_t NEW_ANeExpr_parser___parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1);
 typedef val_t (*NEW_ANeExpr_parser___parser_prod___ABinopExpr___init_abinopexpr_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_ANeExpr_parser___parser_prod___ASendExpr___init_asendexpr = "new ANeExpr parser_prod::ASendExpr::init_asendexpr";
 val_t NEW_ANeExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0);
 typedef val_t (*NEW_ANeExpr_parser___parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ALtExpr = "init var of ALtExpr";
 void INIT_ATTRIBUTES__parser___parser_nodes___ALtExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ALtExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___ALtExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___ALtExpr = "check new ALtExpr";
 void CHECKNEW_parser___parser_nodes___ALtExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___ALtExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_ALtExpr_parser___parser_prod___ABinopExpr___empty_init = "new ALtExpr parser_prod::ABinopExpr::empty_init";
 val_t NEW_ALtExpr_parser___parser_prod___ABinopExpr___empty_init(void);
 typedef val_t (*NEW_ALtExpr_parser___parser_prod___ABinopExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_ALtExpr_parser___parser_prod___ALtExpr___empty_init = "new ALtExpr parser_prod::ALtExpr::empty_init";
 val_t NEW_ALtExpr_parser___parser_prod___ALtExpr___empty_init(void);
 typedef val_t (*NEW_ALtExpr_parser___parser_prod___ALtExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_ALtExpr_parser___parser_prod___ALtExpr___init_altexpr = "new ALtExpr parser_prod::ALtExpr::init_altexpr";
 val_t NEW_ALtExpr_parser___parser_prod___ALtExpr___init_altexpr(val_t p0, val_t p1);
 typedef val_t (*NEW_ALtExpr_parser___parser_prod___ALtExpr___init_altexpr_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_ALtExpr_parser___parser_nodes___ANode___init = "new ALtExpr parser_nodes::ANode::init";
-val_t NEW_ALtExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ALtExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_NEW_ALtExpr_parser___parser_prod___ASendExpr___empty_init = "new ALtExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_ALtExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_ALtExpr_parser___parser_nodes___ANode___init_t)(void);
 val_t NEW_ALtExpr_parser___parser_prod___ASendExpr___empty_init(void);
 typedef val_t (*NEW_ALtExpr_parser___parser_prod___ASendExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_ALtExpr_parser___parser_prod___ABinopExpr___init_abinopexpr = "new ALtExpr parser_prod::ABinopExpr::init_abinopexpr";
 val_t NEW_ALtExpr_parser___parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1);
 typedef val_t (*NEW_ALtExpr_parser___parser_prod___ABinopExpr___init_abinopexpr_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_ALtExpr_parser___parser_prod___ASendExpr___init_asendexpr = "new ALtExpr parser_prod::ASendExpr::init_asendexpr";
 val_t NEW_ALtExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0);
 typedef val_t (*NEW_ALtExpr_parser___parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ALeExpr = "init var of ALeExpr";
 void INIT_ATTRIBUTES__parser___parser_nodes___ALeExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ALeExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___ALeExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___ALeExpr = "check new ALeExpr";
 void CHECKNEW_parser___parser_nodes___ALeExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___ALeExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_ALeExpr_parser___parser_prod___ABinopExpr___empty_init = "new ALeExpr parser_prod::ABinopExpr::empty_init";
 val_t NEW_ALeExpr_parser___parser_prod___ABinopExpr___empty_init(void);
 typedef val_t (*NEW_ALeExpr_parser___parser_prod___ABinopExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_ALeExpr_parser___parser_prod___ALeExpr___empty_init = "new ALeExpr parser_prod::ALeExpr::empty_init";
 val_t NEW_ALeExpr_parser___parser_prod___ALeExpr___empty_init(void);
 typedef val_t (*NEW_ALeExpr_parser___parser_prod___ALeExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_ALeExpr_parser___parser_prod___ALeExpr___init_aleexpr = "new ALeExpr parser_prod::ALeExpr::init_aleexpr";
 val_t NEW_ALeExpr_parser___parser_prod___ALeExpr___init_aleexpr(val_t p0, val_t p1);
 typedef val_t (*NEW_ALeExpr_parser___parser_prod___ALeExpr___init_aleexpr_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_ALeExpr_parser___parser_nodes___ANode___init = "new ALeExpr parser_nodes::ANode::init";
-val_t NEW_ALeExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ALeExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_NEW_ALeExpr_parser___parser_prod___ASendExpr___empty_init = "new ALeExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_ALeExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_ALeExpr_parser___parser_nodes___ANode___init_t)(void);
 val_t NEW_ALeExpr_parser___parser_prod___ASendExpr___empty_init(void);
 typedef val_t (*NEW_ALeExpr_parser___parser_prod___ASendExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_ALeExpr_parser___parser_prod___ABinopExpr___init_abinopexpr = "new ALeExpr parser_prod::ABinopExpr::init_abinopexpr";
 val_t NEW_ALeExpr_parser___parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1);
 typedef val_t (*NEW_ALeExpr_parser___parser_prod___ABinopExpr___init_abinopexpr_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_ALeExpr_parser___parser_prod___ASendExpr___init_asendexpr = "new ALeExpr parser_prod::ASendExpr::init_asendexpr";
 val_t NEW_ALeExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0);
 typedef val_t (*NEW_ALeExpr_parser___parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ALlExpr = "init var of ALlExpr";
 void INIT_ATTRIBUTES__parser___parser_nodes___ALlExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ALlExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___ALlExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___ALlExpr = "check new ALlExpr";
 void CHECKNEW_parser___parser_nodes___ALlExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___ALlExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_ALlExpr_parser___parser_prod___ABinopExpr___empty_init = "new ALlExpr parser_prod::ABinopExpr::empty_init";
 val_t NEW_ALlExpr_parser___parser_prod___ABinopExpr___empty_init(void);
 typedef val_t (*NEW_ALlExpr_parser___parser_prod___ABinopExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_ALlExpr_parser___parser_prod___ALlExpr___empty_init = "new ALlExpr parser_prod::ALlExpr::empty_init";
 val_t NEW_ALlExpr_parser___parser_prod___ALlExpr___empty_init(void);
 typedef val_t (*NEW_ALlExpr_parser___parser_prod___ALlExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_ALlExpr_parser___parser_prod___ALlExpr___init_allexpr = "new ALlExpr parser_prod::ALlExpr::init_allexpr";
 val_t NEW_ALlExpr_parser___parser_prod___ALlExpr___init_allexpr(val_t p0, val_t p1);
 typedef val_t (*NEW_ALlExpr_parser___parser_prod___ALlExpr___init_allexpr_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_ALlExpr_parser___parser_nodes___ANode___init = "new ALlExpr parser_nodes::ANode::init";
-val_t NEW_ALlExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ALlExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_NEW_ALlExpr_parser___parser_prod___ASendExpr___empty_init = "new ALlExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_ALlExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_ALlExpr_parser___parser_nodes___ANode___init_t)(void);
 val_t NEW_ALlExpr_parser___parser_prod___ASendExpr___empty_init(void);
 typedef val_t (*NEW_ALlExpr_parser___parser_prod___ASendExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_ALlExpr_parser___parser_prod___ABinopExpr___init_abinopexpr = "new ALlExpr parser_prod::ABinopExpr::init_abinopexpr";
 val_t NEW_ALlExpr_parser___parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1);
 typedef val_t (*NEW_ALlExpr_parser___parser_prod___ABinopExpr___init_abinopexpr_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_ALlExpr_parser___parser_prod___ASendExpr___init_asendexpr = "new ALlExpr parser_prod::ASendExpr::init_asendexpr";
 val_t NEW_ALlExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0);
 typedef val_t (*NEW_ALlExpr_parser___parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AGtExpr = "init var of AGtExpr";
 void INIT_ATTRIBUTES__parser___parser_nodes___AGtExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AGtExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AGtExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AGtExpr = "check new AGtExpr";
 void CHECKNEW_parser___parser_nodes___AGtExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AGtExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AGtExpr_parser___parser_prod___ABinopExpr___empty_init = "new AGtExpr parser_prod::ABinopExpr::empty_init";
 val_t NEW_AGtExpr_parser___parser_prod___ABinopExpr___empty_init(void);
 typedef val_t (*NEW_AGtExpr_parser___parser_prod___ABinopExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AGtExpr_parser___parser_prod___AGtExpr___empty_init = "new AGtExpr parser_prod::AGtExpr::empty_init";
 val_t NEW_AGtExpr_parser___parser_prod___AGtExpr___empty_init(void);
 typedef val_t (*NEW_AGtExpr_parser___parser_prod___AGtExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AGtExpr_parser___parser_prod___AGtExpr___init_agtexpr = "new AGtExpr parser_prod::AGtExpr::init_agtexpr";
 val_t NEW_AGtExpr_parser___parser_prod___AGtExpr___init_agtexpr(val_t p0, val_t p1);
 typedef val_t (*NEW_AGtExpr_parser___parser_prod___AGtExpr___init_agtexpr_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_AGtExpr_parser___parser_nodes___ANode___init = "new AGtExpr parser_nodes::ANode::init";
-val_t NEW_AGtExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AGtExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_NEW_AGtExpr_parser___parser_prod___ASendExpr___empty_init = "new AGtExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_AGtExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AGtExpr_parser___parser_nodes___ANode___init_t)(void);
 val_t NEW_AGtExpr_parser___parser_prod___ASendExpr___empty_init(void);
 typedef val_t (*NEW_AGtExpr_parser___parser_prod___ASendExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AGtExpr_parser___parser_prod___ABinopExpr___init_abinopexpr = "new AGtExpr parser_prod::ABinopExpr::init_abinopexpr";
 val_t NEW_AGtExpr_parser___parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1);
 typedef val_t (*NEW_AGtExpr_parser___parser_prod___ABinopExpr___init_abinopexpr_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_AGtExpr_parser___parser_prod___ASendExpr___init_asendexpr = "new AGtExpr parser_prod::ASendExpr::init_asendexpr";
 val_t NEW_AGtExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0);
 typedef val_t (*NEW_AGtExpr_parser___parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AGeExpr = "init var of AGeExpr";
 void INIT_ATTRIBUTES__parser___parser_nodes___AGeExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AGeExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AGeExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AGeExpr = "check new AGeExpr";
 void CHECKNEW_parser___parser_nodes___AGeExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AGeExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AGeExpr_parser___parser_prod___ABinopExpr___empty_init = "new AGeExpr parser_prod::ABinopExpr::empty_init";
 val_t NEW_AGeExpr_parser___parser_prod___ABinopExpr___empty_init(void);
 typedef val_t (*NEW_AGeExpr_parser___parser_prod___ABinopExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AGeExpr_parser___parser_prod___AGeExpr___empty_init = "new AGeExpr parser_prod::AGeExpr::empty_init";
 val_t NEW_AGeExpr_parser___parser_prod___AGeExpr___empty_init(void);
 typedef val_t (*NEW_AGeExpr_parser___parser_prod___AGeExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AGeExpr_parser___parser_prod___AGeExpr___init_ageexpr = "new AGeExpr parser_prod::AGeExpr::init_ageexpr";
 val_t NEW_AGeExpr_parser___parser_prod___AGeExpr___init_ageexpr(val_t p0, val_t p1);
 typedef val_t (*NEW_AGeExpr_parser___parser_prod___AGeExpr___init_ageexpr_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_AGeExpr_parser___parser_nodes___ANode___init = "new AGeExpr parser_nodes::ANode::init";
-val_t NEW_AGeExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AGeExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_NEW_AGeExpr_parser___parser_prod___ASendExpr___empty_init = "new AGeExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_AGeExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AGeExpr_parser___parser_nodes___ANode___init_t)(void);
 val_t NEW_AGeExpr_parser___parser_prod___ASendExpr___empty_init(void);
 typedef val_t (*NEW_AGeExpr_parser___parser_prod___ASendExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AGeExpr_parser___parser_prod___ABinopExpr___init_abinopexpr = "new AGeExpr parser_prod::ABinopExpr::init_abinopexpr";
 val_t NEW_AGeExpr_parser___parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1);
 typedef val_t (*NEW_AGeExpr_parser___parser_prod___ABinopExpr___init_abinopexpr_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_AGeExpr_parser___parser_prod___ASendExpr___init_asendexpr = "new AGeExpr parser_prod::ASendExpr::init_asendexpr";
 val_t NEW_AGeExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0);
 typedef val_t (*NEW_AGeExpr_parser___parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AGgExpr = "init var of AGgExpr";
 void INIT_ATTRIBUTES__parser___parser_nodes___AGgExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AGgExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AGgExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AGgExpr = "check new AGgExpr";
 void CHECKNEW_parser___parser_nodes___AGgExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AGgExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AGgExpr_parser___parser_prod___ABinopExpr___empty_init = "new AGgExpr parser_prod::ABinopExpr::empty_init";
 val_t NEW_AGgExpr_parser___parser_prod___ABinopExpr___empty_init(void);
 typedef val_t (*NEW_AGgExpr_parser___parser_prod___ABinopExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AGgExpr_parser___parser_prod___AGgExpr___empty_init = "new AGgExpr parser_prod::AGgExpr::empty_init";
 val_t NEW_AGgExpr_parser___parser_prod___AGgExpr___empty_init(void);
 typedef val_t (*NEW_AGgExpr_parser___parser_prod___AGgExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AGgExpr_parser___parser_prod___AGgExpr___init_aggexpr = "new AGgExpr parser_prod::AGgExpr::init_aggexpr";
 val_t NEW_AGgExpr_parser___parser_prod___AGgExpr___init_aggexpr(val_t p0, val_t p1);
 typedef val_t (*NEW_AGgExpr_parser___parser_prod___AGgExpr___init_aggexpr_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_AGgExpr_parser___parser_nodes___ANode___init = "new AGgExpr parser_nodes::ANode::init";
-val_t NEW_AGgExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AGgExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_NEW_AGgExpr_parser___parser_prod___ASendExpr___empty_init = "new AGgExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_AGgExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AGgExpr_parser___parser_nodes___ANode___init_t)(void);
 val_t NEW_AGgExpr_parser___parser_prod___ASendExpr___empty_init(void);
 typedef val_t (*NEW_AGgExpr_parser___parser_prod___ASendExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AGgExpr_parser___parser_prod___ABinopExpr___init_abinopexpr = "new AGgExpr parser_prod::ABinopExpr::init_abinopexpr";
 val_t NEW_AGgExpr_parser___parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1);
 typedef val_t (*NEW_AGgExpr_parser___parser_prod___ABinopExpr___init_abinopexpr_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_AGgExpr_parser___parser_prod___ASendExpr___init_asendexpr = "new AGgExpr parser_prod::ASendExpr::init_asendexpr";
 val_t NEW_AGgExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0);
 typedef val_t (*NEW_AGgExpr_parser___parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AIsaExpr = "init var of AIsaExpr";
 void INIT_ATTRIBUTES__parser___parser_nodes___AIsaExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AIsaExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AIsaExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AIsaExpr = "check new AIsaExpr";
 void CHECKNEW_parser___parser_nodes___AIsaExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AIsaExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AIsaExpr_parser___parser_prod___AIsaExpr___empty_init = "new AIsaExpr parser_prod::AIsaExpr::empty_init";
 val_t NEW_AIsaExpr_parser___parser_prod___AIsaExpr___empty_init(void);
 typedef val_t (*NEW_AIsaExpr_parser___parser_prod___AIsaExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AIsaExpr_parser___parser_prod___AIsaExpr___init_aisaexpr = "new AIsaExpr parser_prod::AIsaExpr::init_aisaexpr";
 val_t NEW_AIsaExpr_parser___parser_prod___AIsaExpr___init_aisaexpr(val_t p0, val_t p1);
 typedef val_t (*NEW_AIsaExpr_parser___parser_prod___AIsaExpr___init_aisaexpr_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_AIsaExpr_parser___parser_nodes___ANode___init = "new AIsaExpr parser_nodes::ANode::init";
-val_t NEW_AIsaExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AIsaExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___APlusExpr = "init var of APlusExpr";
+val_t NEW_AIsaExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AIsaExpr_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___APlusExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___APlusExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___APlusExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___APlusExpr = "check new APlusExpr";
 void CHECKNEW_parser___parser_nodes___APlusExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___APlusExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_APlusExpr_parser___parser_prod___ABinopExpr___empty_init = "new APlusExpr parser_prod::ABinopExpr::empty_init";
 val_t NEW_APlusExpr_parser___parser_prod___ABinopExpr___empty_init(void);
 typedef val_t (*NEW_APlusExpr_parser___parser_prod___ABinopExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_APlusExpr_parser___parser_prod___APlusExpr___empty_init = "new APlusExpr parser_prod::APlusExpr::empty_init";
 val_t NEW_APlusExpr_parser___parser_prod___APlusExpr___empty_init(void);
 typedef val_t (*NEW_APlusExpr_parser___parser_prod___APlusExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_APlusExpr_parser___parser_prod___APlusExpr___init_aplusexpr = "new APlusExpr parser_prod::APlusExpr::init_aplusexpr";
 val_t NEW_APlusExpr_parser___parser_prod___APlusExpr___init_aplusexpr(val_t p0, val_t p1);
 typedef val_t (*NEW_APlusExpr_parser___parser_prod___APlusExpr___init_aplusexpr_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_APlusExpr_parser___parser_nodes___ANode___init = "new APlusExpr parser_nodes::ANode::init";
-val_t NEW_APlusExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_APlusExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_NEW_APlusExpr_parser___parser_prod___ASendExpr___empty_init = "new APlusExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_APlusExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_APlusExpr_parser___parser_nodes___ANode___init_t)(void);
 val_t NEW_APlusExpr_parser___parser_prod___ASendExpr___empty_init(void);
 typedef val_t (*NEW_APlusExpr_parser___parser_prod___ASendExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_APlusExpr_parser___parser_prod___ABinopExpr___init_abinopexpr = "new APlusExpr parser_prod::ABinopExpr::init_abinopexpr";
 val_t NEW_APlusExpr_parser___parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1);
 typedef val_t (*NEW_APlusExpr_parser___parser_prod___ABinopExpr___init_abinopexpr_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_APlusExpr_parser___parser_prod___ASendExpr___init_asendexpr = "new APlusExpr parser_prod::ASendExpr::init_asendexpr";
 val_t NEW_APlusExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0);
 typedef val_t (*NEW_APlusExpr_parser___parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AMinusExpr = "init var of AMinusExpr";
 void INIT_ATTRIBUTES__parser___parser_nodes___AMinusExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AMinusExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AMinusExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AMinusExpr = "check new AMinusExpr";
 void CHECKNEW_parser___parser_nodes___AMinusExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AMinusExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AMinusExpr_parser___parser_prod___ABinopExpr___empty_init = "new AMinusExpr parser_prod::ABinopExpr::empty_init";
 val_t NEW_AMinusExpr_parser___parser_prod___ABinopExpr___empty_init(void);
 typedef val_t (*NEW_AMinusExpr_parser___parser_prod___ABinopExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AMinusExpr_parser___parser_prod___AMinusExpr___empty_init = "new AMinusExpr parser_prod::AMinusExpr::empty_init";
 val_t NEW_AMinusExpr_parser___parser_prod___AMinusExpr___empty_init(void);
 typedef val_t (*NEW_AMinusExpr_parser___parser_prod___AMinusExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AMinusExpr_parser___parser_prod___AMinusExpr___init_aminusexpr = "new AMinusExpr parser_prod::AMinusExpr::init_aminusexpr";
 val_t NEW_AMinusExpr_parser___parser_prod___AMinusExpr___init_aminusexpr(val_t p0, val_t p1);
 typedef val_t (*NEW_AMinusExpr_parser___parser_prod___AMinusExpr___init_aminusexpr_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_AMinusExpr_parser___parser_nodes___ANode___init = "new AMinusExpr parser_nodes::ANode::init";
-val_t NEW_AMinusExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AMinusExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_NEW_AMinusExpr_parser___parser_prod___ASendExpr___empty_init = "new AMinusExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_AMinusExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AMinusExpr_parser___parser_nodes___ANode___init_t)(void);
 val_t NEW_AMinusExpr_parser___parser_prod___ASendExpr___empty_init(void);
 typedef val_t (*NEW_AMinusExpr_parser___parser_prod___ASendExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AMinusExpr_parser___parser_prod___ABinopExpr___init_abinopexpr = "new AMinusExpr parser_prod::ABinopExpr::init_abinopexpr";
 val_t NEW_AMinusExpr_parser___parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1);
 typedef val_t (*NEW_AMinusExpr_parser___parser_prod___ABinopExpr___init_abinopexpr_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_AMinusExpr_parser___parser_prod___ASendExpr___init_asendexpr = "new AMinusExpr parser_prod::ASendExpr::init_asendexpr";
 val_t NEW_AMinusExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0);
 typedef val_t (*NEW_AMinusExpr_parser___parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AStarshipExpr = "init var of AStarshipExpr";
 void INIT_ATTRIBUTES__parser___parser_nodes___AStarshipExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AStarshipExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AStarshipExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AStarshipExpr = "check new AStarshipExpr";
 void CHECKNEW_parser___parser_nodes___AStarshipExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AStarshipExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AStarshipExpr_parser___parser_prod___ABinopExpr___empty_init = "new AStarshipExpr parser_prod::ABinopExpr::empty_init";
 val_t NEW_AStarshipExpr_parser___parser_prod___ABinopExpr___empty_init(void);
 typedef val_t (*NEW_AStarshipExpr_parser___parser_prod___ABinopExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AStarshipExpr_parser___parser_prod___AStarshipExpr___empty_init = "new AStarshipExpr parser_prod::AStarshipExpr::empty_init";
 val_t NEW_AStarshipExpr_parser___parser_prod___AStarshipExpr___empty_init(void);
 typedef val_t (*NEW_AStarshipExpr_parser___parser_prod___AStarshipExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AStarshipExpr_parser___parser_prod___AStarshipExpr___init_astarshipexpr = "new AStarshipExpr parser_prod::AStarshipExpr::init_astarshipexpr";
 val_t NEW_AStarshipExpr_parser___parser_prod___AStarshipExpr___init_astarshipexpr(val_t p0, val_t p1);
 typedef val_t (*NEW_AStarshipExpr_parser___parser_prod___AStarshipExpr___init_astarshipexpr_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_AStarshipExpr_parser___parser_nodes___ANode___init = "new AStarshipExpr parser_nodes::ANode::init";
-val_t NEW_AStarshipExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AStarshipExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_NEW_AStarshipExpr_parser___parser_prod___ASendExpr___empty_init = "new AStarshipExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_AStarshipExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AStarshipExpr_parser___parser_nodes___ANode___init_t)(void);
 val_t NEW_AStarshipExpr_parser___parser_prod___ASendExpr___empty_init(void);
 typedef val_t (*NEW_AStarshipExpr_parser___parser_prod___ASendExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AStarshipExpr_parser___parser_prod___ABinopExpr___init_abinopexpr = "new AStarshipExpr parser_prod::ABinopExpr::init_abinopexpr";
 val_t NEW_AStarshipExpr_parser___parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1);
 typedef val_t (*NEW_AStarshipExpr_parser___parser_prod___ABinopExpr___init_abinopexpr_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_AStarshipExpr_parser___parser_prod___ASendExpr___init_asendexpr = "new AStarshipExpr parser_prod::ASendExpr::init_asendexpr";
 val_t NEW_AStarshipExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0);
 typedef val_t (*NEW_AStarshipExpr_parser___parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AStarExpr = "init var of AStarExpr";
 void INIT_ATTRIBUTES__parser___parser_nodes___AStarExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AStarExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AStarExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AStarExpr = "check new AStarExpr";
 void CHECKNEW_parser___parser_nodes___AStarExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AStarExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AStarExpr_parser___parser_prod___ABinopExpr___empty_init = "new AStarExpr parser_prod::ABinopExpr::empty_init";
 val_t NEW_AStarExpr_parser___parser_prod___ABinopExpr___empty_init(void);
 typedef val_t (*NEW_AStarExpr_parser___parser_prod___ABinopExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AStarExpr_parser___parser_prod___AStarExpr___empty_init = "new AStarExpr parser_prod::AStarExpr::empty_init";
 val_t NEW_AStarExpr_parser___parser_prod___AStarExpr___empty_init(void);
 typedef val_t (*NEW_AStarExpr_parser___parser_prod___AStarExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AStarExpr_parser___parser_prod___AStarExpr___init_astarexpr = "new AStarExpr parser_prod::AStarExpr::init_astarexpr";
 val_t NEW_AStarExpr_parser___parser_prod___AStarExpr___init_astarexpr(val_t p0, val_t p1);
 typedef val_t (*NEW_AStarExpr_parser___parser_prod___AStarExpr___init_astarexpr_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_AStarExpr_parser___parser_nodes___ANode___init = "new AStarExpr parser_nodes::ANode::init";
-val_t NEW_AStarExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AStarExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_NEW_AStarExpr_parser___parser_prod___ASendExpr___empty_init = "new AStarExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_AStarExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AStarExpr_parser___parser_nodes___ANode___init_t)(void);
 val_t NEW_AStarExpr_parser___parser_prod___ASendExpr___empty_init(void);
 typedef val_t (*NEW_AStarExpr_parser___parser_prod___ASendExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AStarExpr_parser___parser_prod___ABinopExpr___init_abinopexpr = "new AStarExpr parser_prod::ABinopExpr::init_abinopexpr";
 val_t NEW_AStarExpr_parser___parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1);
 typedef val_t (*NEW_AStarExpr_parser___parser_prod___ABinopExpr___init_abinopexpr_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_AStarExpr_parser___parser_prod___ASendExpr___init_asendexpr = "new AStarExpr parser_prod::ASendExpr::init_asendexpr";
 val_t NEW_AStarExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0);
 typedef val_t (*NEW_AStarExpr_parser___parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ASlashExpr = "init var of ASlashExpr";
 void INIT_ATTRIBUTES__parser___parser_nodes___ASlashExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ASlashExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___ASlashExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___ASlashExpr = "check new ASlashExpr";
 void CHECKNEW_parser___parser_nodes___ASlashExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___ASlashExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_ASlashExpr_parser___parser_prod___ABinopExpr___empty_init = "new ASlashExpr parser_prod::ABinopExpr::empty_init";
 val_t NEW_ASlashExpr_parser___parser_prod___ABinopExpr___empty_init(void);
 typedef val_t (*NEW_ASlashExpr_parser___parser_prod___ABinopExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_ASlashExpr_parser___parser_prod___ASlashExpr___empty_init = "new ASlashExpr parser_prod::ASlashExpr::empty_init";
 val_t NEW_ASlashExpr_parser___parser_prod___ASlashExpr___empty_init(void);
 typedef val_t (*NEW_ASlashExpr_parser___parser_prod___ASlashExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_ASlashExpr_parser___parser_prod___ASlashExpr___init_aslashexpr = "new ASlashExpr parser_prod::ASlashExpr::init_aslashexpr";
 val_t NEW_ASlashExpr_parser___parser_prod___ASlashExpr___init_aslashexpr(val_t p0, val_t p1);
 typedef val_t (*NEW_ASlashExpr_parser___parser_prod___ASlashExpr___init_aslashexpr_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_ASlashExpr_parser___parser_nodes___ANode___init = "new ASlashExpr parser_nodes::ANode::init";
-val_t NEW_ASlashExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ASlashExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_NEW_ASlashExpr_parser___parser_prod___ASendExpr___empty_init = "new ASlashExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_ASlashExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_ASlashExpr_parser___parser_nodes___ANode___init_t)(void);
 val_t NEW_ASlashExpr_parser___parser_prod___ASendExpr___empty_init(void);
 typedef val_t (*NEW_ASlashExpr_parser___parser_prod___ASendExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_ASlashExpr_parser___parser_prod___ABinopExpr___init_abinopexpr = "new ASlashExpr parser_prod::ABinopExpr::init_abinopexpr";
 val_t NEW_ASlashExpr_parser___parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1);
 typedef val_t (*NEW_ASlashExpr_parser___parser_prod___ABinopExpr___init_abinopexpr_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_ASlashExpr_parser___parser_prod___ASendExpr___init_asendexpr = "new ASlashExpr parser_prod::ASendExpr::init_asendexpr";
 val_t NEW_ASlashExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0);
 typedef val_t (*NEW_ASlashExpr_parser___parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___APercentExpr = "init var of APercentExpr";
 void INIT_ATTRIBUTES__parser___parser_nodes___APercentExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___APercentExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___APercentExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___APercentExpr = "check new APercentExpr";
 void CHECKNEW_parser___parser_nodes___APercentExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___APercentExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_APercentExpr_parser___parser_prod___ABinopExpr___empty_init = "new APercentExpr parser_prod::ABinopExpr::empty_init";
 val_t NEW_APercentExpr_parser___parser_prod___ABinopExpr___empty_init(void);
 typedef val_t (*NEW_APercentExpr_parser___parser_prod___ABinopExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_APercentExpr_parser___parser_prod___APercentExpr___empty_init = "new APercentExpr parser_prod::APercentExpr::empty_init";
 val_t NEW_APercentExpr_parser___parser_prod___APercentExpr___empty_init(void);
 typedef val_t (*NEW_APercentExpr_parser___parser_prod___APercentExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_APercentExpr_parser___parser_prod___APercentExpr___init_apercentexpr = "new APercentExpr parser_prod::APercentExpr::init_apercentexpr";
 val_t NEW_APercentExpr_parser___parser_prod___APercentExpr___init_apercentexpr(val_t p0, val_t p1);
 typedef val_t (*NEW_APercentExpr_parser___parser_prod___APercentExpr___init_apercentexpr_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_APercentExpr_parser___parser_nodes___ANode___init = "new APercentExpr parser_nodes::ANode::init";
-val_t NEW_APercentExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_APercentExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_NEW_APercentExpr_parser___parser_prod___ASendExpr___empty_init = "new APercentExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_APercentExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_APercentExpr_parser___parser_nodes___ANode___init_t)(void);
 val_t NEW_APercentExpr_parser___parser_prod___ASendExpr___empty_init(void);
 typedef val_t (*NEW_APercentExpr_parser___parser_prod___ASendExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_APercentExpr_parser___parser_prod___ABinopExpr___init_abinopexpr = "new APercentExpr parser_prod::ABinopExpr::init_abinopexpr";
 val_t NEW_APercentExpr_parser___parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1);
 typedef val_t (*NEW_APercentExpr_parser___parser_prod___ABinopExpr___init_abinopexpr_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_APercentExpr_parser___parser_prod___ASendExpr___init_asendexpr = "new APercentExpr parser_prod::ASendExpr::init_asendexpr";
 val_t NEW_APercentExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0);
 typedef val_t (*NEW_APercentExpr_parser___parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AUminusExpr = "init var of AUminusExpr";
 void INIT_ATTRIBUTES__parser___parser_nodes___AUminusExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AUminusExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AUminusExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AUminusExpr = "check new AUminusExpr";
 void CHECKNEW_parser___parser_nodes___AUminusExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AUminusExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AUminusExpr_parser___parser_prod___ASendExpr___empty_init = "new AUminusExpr parser_prod::ASendExpr::empty_init";
 val_t NEW_AUminusExpr_parser___parser_prod___ASendExpr___empty_init(void);
 typedef val_t (*NEW_AUminusExpr_parser___parser_prod___ASendExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AUminusExpr_parser___parser_prod___AUminusExpr___empty_init = "new AUminusExpr parser_prod::AUminusExpr::empty_init";
 val_t NEW_AUminusExpr_parser___parser_prod___AUminusExpr___empty_init(void);
 typedef val_t (*NEW_AUminusExpr_parser___parser_prod___AUminusExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AUminusExpr_parser___parser_prod___AUminusExpr___init_auminusexpr = "new AUminusExpr parser_prod::AUminusExpr::init_auminusexpr";
 val_t NEW_AUminusExpr_parser___parser_prod___AUminusExpr___init_auminusexpr(val_t p0, val_t p1);
 typedef val_t (*NEW_AUminusExpr_parser___parser_prod___AUminusExpr___init_auminusexpr_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_AUminusExpr_parser___parser_nodes___ANode___init = "new AUminusExpr parser_nodes::ANode::init";
-val_t NEW_AUminusExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AUminusExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_NEW_AUminusExpr_parser___parser_prod___ASendExpr___init_asendexpr = "new AUminusExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_AUminusExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AUminusExpr_parser___parser_nodes___ANode___init_t)(void);
 val_t NEW_AUminusExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0);
 typedef val_t (*NEW_AUminusExpr_parser___parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ANewExpr = "init var of ANewExpr";
 void INIT_ATTRIBUTES__parser___parser_nodes___ANewExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ANewExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___ANewExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___ANewExpr = "check new ANewExpr";
 void CHECKNEW_parser___parser_nodes___ANewExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___ANewExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_ANewExpr_parser___parser_prod___ANewExpr___empty_init = "new ANewExpr parser_prod::ANewExpr::empty_init";
 val_t NEW_ANewExpr_parser___parser_prod___ANewExpr___empty_init(void);
 typedef val_t (*NEW_ANewExpr_parser___parser_prod___ANewExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_ANewExpr_parser___parser_prod___ANewExpr___init_anewexpr = "new ANewExpr parser_prod::ANewExpr::init_anewexpr";
 val_t NEW_ANewExpr_parser___parser_prod___ANewExpr___init_anewexpr(val_t p0, val_t p1, val_t p2, val_t p3);
 typedef val_t (*NEW_ANewExpr_parser___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___parser_nodes___ANode___init = "new ANewExpr parser_nodes::ANode::init";
-val_t NEW_ANewExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ANewExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AAttrFormExpr = "init var of AAttrFormExpr";
-void INIT_ATTRIBUTES__parser___parser_nodes___AAttrFormExpr(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AAttrFormExpr_t)(val_t p0);
-val_t NEW_parser___parser_nodes___AAttrFormExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AAttrFormExpr = "check new AAttrFormExpr";
-void CHECKNEW_parser___parser_nodes___AAttrFormExpr(val_t p0);
-typedef void (*CHECKNEW_parser___parser_nodes___AAttrFormExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AAttrFormExpr_parser___parser_nodes___ANode___init = "new AAttrFormExpr parser_nodes::ANode::init";
-val_t NEW_AAttrFormExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AAttrFormExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AAttrExpr = "init var of AAttrExpr";
+val_t NEW_ANewExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_ANewExpr_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AAttrExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AAttrExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AAttrExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AAttrExpr = "check new AAttrExpr";
 void CHECKNEW_parser___parser_nodes___AAttrExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AAttrExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AAttrExpr_parser___parser_prod___AAttrExpr___empty_init = "new AAttrExpr parser_prod::AAttrExpr::empty_init";
 val_t NEW_AAttrExpr_parser___parser_prod___AAttrExpr___empty_init(void);
 typedef val_t (*NEW_AAttrExpr_parser___parser_prod___AAttrExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AAttrExpr_parser___parser_prod___AAttrExpr___init_aattrexpr = "new AAttrExpr parser_prod::AAttrExpr::init_aattrexpr";
 val_t NEW_AAttrExpr_parser___parser_prod___AAttrExpr___init_aattrexpr(val_t p0, val_t p1);
 typedef val_t (*NEW_AAttrExpr_parser___parser_prod___AAttrExpr___init_aattrexpr_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_AAttrExpr_parser___parser_nodes___ANode___init = "new AAttrExpr parser_nodes::ANode::init";
-val_t NEW_AAttrExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AAttrExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AAttrAssignExpr = "init var of AAttrAssignExpr";
+val_t NEW_AAttrExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AAttrExpr_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AAttrAssignExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AAttrAssignExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AAttrAssignExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AAttrAssignExpr = "check new AAttrAssignExpr";
 void CHECKNEW_parser___parser_nodes___AAttrAssignExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AAttrAssignExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AAttrAssignExpr_parser___parser_prod___AAttrAssignExpr___empty_init = "new AAttrAssignExpr parser_prod::AAttrAssignExpr::empty_init";
 val_t NEW_AAttrAssignExpr_parser___parser_prod___AAttrAssignExpr___empty_init(void);
 typedef val_t (*NEW_AAttrAssignExpr_parser___parser_prod___AAttrAssignExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AAttrAssignExpr_parser___parser_prod___AAttrAssignExpr___init_aattrassignexpr = "new AAttrAssignExpr parser_prod::AAttrAssignExpr::init_aattrassignexpr";
 val_t NEW_AAttrAssignExpr_parser___parser_prod___AAttrAssignExpr___init_aattrassignexpr(val_t p0, val_t p1, val_t p2, val_t p3);
 typedef val_t (*NEW_AAttrAssignExpr_parser___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___parser_nodes___ANode___init = "new AAttrAssignExpr parser_nodes::ANode::init";
-val_t NEW_AAttrAssignExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AAttrAssignExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ACallFormExpr = "init var of ACallFormExpr";
-void INIT_ATTRIBUTES__parser___parser_nodes___ACallFormExpr(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ACallFormExpr_t)(val_t p0);
-val_t NEW_parser___parser_nodes___ACallFormExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___ACallFormExpr = "check new ACallFormExpr";
-void CHECKNEW_parser___parser_nodes___ACallFormExpr(val_t p0);
-typedef void (*CHECKNEW_parser___parser_nodes___ACallFormExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_ACallFormExpr_parser___parser_nodes___ANode___init = "new ACallFormExpr parser_nodes::ANode::init";
-val_t NEW_ACallFormExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ACallFormExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_NEW_ACallFormExpr_parser___parser_prod___ASendExpr___empty_init = "new ACallFormExpr parser_prod::ASendExpr::empty_init";
-val_t NEW_ACallFormExpr_parser___parser_prod___ASendExpr___empty_init(void);
-typedef val_t (*NEW_ACallFormExpr_parser___parser_prod___ASendExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_ACallFormExpr_parser___parser_prod___ASendExpr___init_asendexpr = "new ACallFormExpr parser_prod::ASendExpr::init_asendexpr";
-val_t NEW_ACallFormExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0);
-typedef val_t (*NEW_ACallFormExpr_parser___parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AAttrReassignExpr = "init var of AAttrReassignExpr";
+val_t NEW_AAttrAssignExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AAttrAssignExpr_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AAttrReassignExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AAttrReassignExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AAttrReassignExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AAttrReassignExpr = "check new AAttrReassignExpr";
 void CHECKNEW_parser___parser_nodes___AAttrReassignExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AAttrReassignExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AAttrReassignExpr_parser___parser_prod___AAttrReassignExpr___empty_init = "new AAttrReassignExpr parser_prod::AAttrReassignExpr::empty_init";
 val_t NEW_AAttrReassignExpr_parser___parser_prod___AAttrReassignExpr___empty_init(void);
 typedef val_t (*NEW_AAttrReassignExpr_parser___parser_prod___AAttrReassignExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AAttrReassignExpr_parser___parser_prod___AAttrReassignExpr___init_aattrreassignexpr = "new AAttrReassignExpr parser_prod::AAttrReassignExpr::init_aattrreassignexpr";
 val_t NEW_AAttrReassignExpr_parser___parser_prod___AAttrReassignExpr___init_aattrreassignexpr(val_t p0, val_t p1, val_t p2, val_t p3);
 typedef val_t (*NEW_AAttrReassignExpr_parser___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___parser_nodes___ANode___init = "new AAttrReassignExpr parser_nodes::ANode::init";
-val_t NEW_AAttrReassignExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AAttrReassignExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ACallExpr = "init var of ACallExpr";
+val_t NEW_AAttrReassignExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AAttrReassignExpr_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___ACallExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ACallExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___ACallExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___ACallExpr = "check new ACallExpr";
 void CHECKNEW_parser___parser_nodes___ACallExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___ACallExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_ACallExpr_parser___parser_prod___ASendExpr___empty_init = "new ACallExpr parser_prod::ASendExpr::empty_init";
 val_t NEW_ACallExpr_parser___parser_prod___ASendExpr___empty_init(void);
 typedef val_t (*NEW_ACallExpr_parser___parser_prod___ASendExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_ACallExpr_parser___parser_prod___ACallExpr___empty_init = "new ACallExpr parser_prod::ACallExpr::empty_init";
 val_t NEW_ACallExpr_parser___parser_prod___ACallExpr___empty_init(void);
 typedef val_t (*NEW_ACallExpr_parser___parser_prod___ACallExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_ACallExpr_parser___parser_prod___ACallExpr___init_acallexpr = "new ACallExpr parser_prod::ACallExpr::init_acallexpr";
 val_t NEW_ACallExpr_parser___parser_prod___ACallExpr___init_acallexpr(val_t p0, val_t p1, val_t p2, val_t p3);
 typedef val_t (*NEW_ACallExpr_parser___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___parser_nodes___ANode___init = "new ACallExpr parser_nodes::ANode::init";
-val_t NEW_ACallExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ACallExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_NEW_ACallExpr_parser___parser_prod___ASendExpr___init_asendexpr = "new ACallExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_ACallExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_ACallExpr_parser___parser_nodes___ANode___init_t)(void);
 val_t NEW_ACallExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0);
 typedef val_t (*NEW_ACallExpr_parser___parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ACallAssignExpr = "init var of ACallAssignExpr";
 void INIT_ATTRIBUTES__parser___parser_nodes___ACallAssignExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ACallAssignExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___ACallAssignExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___ACallAssignExpr = "check new ACallAssignExpr";
 void CHECKNEW_parser___parser_nodes___ACallAssignExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___ACallAssignExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_ACallAssignExpr_parser___parser_prod___ASendExpr___empty_init = "new ACallAssignExpr parser_prod::ASendExpr::empty_init";
 val_t NEW_ACallAssignExpr_parser___parser_prod___ASendExpr___empty_init(void);
 typedef val_t (*NEW_ACallAssignExpr_parser___parser_prod___ASendExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_ACallAssignExpr_parser___parser_prod___ACallAssignExpr___empty_init = "new ACallAssignExpr parser_prod::ACallAssignExpr::empty_init";
 val_t NEW_ACallAssignExpr_parser___parser_prod___ACallAssignExpr___empty_init(void);
 typedef val_t (*NEW_ACallAssignExpr_parser___parser_prod___ACallAssignExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_ACallAssignExpr_parser___parser_prod___ACallAssignExpr___init_acallassignexpr = "new ACallAssignExpr parser_prod::ACallAssignExpr::init_acallassignexpr";
 val_t NEW_ACallAssignExpr_parser___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___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___parser_nodes___ANode___init = "new ACallAssignExpr parser_nodes::ANode::init";
-val_t NEW_ACallAssignExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ACallAssignExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_NEW_ACallAssignExpr_parser___parser_prod___ASendExpr___init_asendexpr = "new ACallAssignExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_ACallAssignExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_ACallAssignExpr_parser___parser_nodes___ANode___init_t)(void);
 val_t NEW_ACallAssignExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0);
 typedef val_t (*NEW_ACallAssignExpr_parser___parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ACallReassignExpr = "init var of ACallReassignExpr";
 void INIT_ATTRIBUTES__parser___parser_nodes___ACallReassignExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ACallReassignExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___ACallReassignExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___ACallReassignExpr = "check new ACallReassignExpr";
 void CHECKNEW_parser___parser_nodes___ACallReassignExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___ACallReassignExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_ACallReassignExpr_parser___parser_prod___ASendExpr___empty_init = "new ACallReassignExpr parser_prod::ASendExpr::empty_init";
 val_t NEW_ACallReassignExpr_parser___parser_prod___ASendExpr___empty_init(void);
 typedef val_t (*NEW_ACallReassignExpr_parser___parser_prod___ASendExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_ACallReassignExpr_parser___parser_prod___ACallReassignExpr___empty_init = "new ACallReassignExpr parser_prod::ACallReassignExpr::empty_init";
 val_t NEW_ACallReassignExpr_parser___parser_prod___ACallReassignExpr___empty_init(void);
 typedef val_t (*NEW_ACallReassignExpr_parser___parser_prod___ACallReassignExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_ACallReassignExpr_parser___parser_prod___ACallReassignExpr___init_acallreassignexpr = "new ACallReassignExpr parser_prod::ACallReassignExpr::init_acallreassignexpr";
 val_t NEW_ACallReassignExpr_parser___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___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___parser_nodes___ANode___init = "new ACallReassignExpr parser_nodes::ANode::init";
-val_t NEW_ACallReassignExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ACallReassignExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_NEW_ACallReassignExpr_parser___parser_prod___ASendExpr___init_asendexpr = "new ACallReassignExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_ACallReassignExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_ACallReassignExpr_parser___parser_nodes___ANode___init_t)(void);
 val_t NEW_ACallReassignExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0);
 typedef val_t (*NEW_ACallReassignExpr_parser___parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ASuperExpr = "init var of ASuperExpr";
 void INIT_ATTRIBUTES__parser___parser_nodes___ASuperExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ASuperExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___ASuperExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___ASuperExpr = "check new ASuperExpr";
 void CHECKNEW_parser___parser_nodes___ASuperExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___ASuperExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_ASuperExpr_parser___parser_prod___ASuperExpr___empty_init = "new ASuperExpr parser_prod::ASuperExpr::empty_init";
 val_t NEW_ASuperExpr_parser___parser_prod___ASuperExpr___empty_init(void);
 typedef val_t (*NEW_ASuperExpr_parser___parser_prod___ASuperExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_ASuperExpr_parser___parser_prod___ASuperExpr___init_asuperexpr = "new ASuperExpr parser_prod::ASuperExpr::init_asuperexpr";
 val_t NEW_ASuperExpr_parser___parser_prod___ASuperExpr___init_asuperexpr(val_t p0, val_t p1, val_t p2);
 typedef val_t (*NEW_ASuperExpr_parser___parser_prod___ASuperExpr___init_asuperexpr_t)(val_t p0, val_t p1, val_t p2);
-static const char * const LOCATE_NEW_ASuperExpr_parser___parser_nodes___ANode___init = "new ASuperExpr parser_nodes::ANode::init";
-val_t NEW_ASuperExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ASuperExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AInitExpr = "init var of AInitExpr";
+val_t NEW_ASuperExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_ASuperExpr_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AInitExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AInitExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AInitExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AInitExpr = "check new AInitExpr";
 void CHECKNEW_parser___parser_nodes___AInitExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AInitExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AInitExpr_parser___parser_prod___ASendExpr___empty_init = "new AInitExpr parser_prod::ASendExpr::empty_init";
 val_t NEW_AInitExpr_parser___parser_prod___ASendExpr___empty_init(void);
 typedef val_t (*NEW_AInitExpr_parser___parser_prod___ASendExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AInitExpr_parser___parser_prod___AInitExpr___empty_init = "new AInitExpr parser_prod::AInitExpr::empty_init";
 val_t NEW_AInitExpr_parser___parser_prod___AInitExpr___empty_init(void);
 typedef val_t (*NEW_AInitExpr_parser___parser_prod___AInitExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AInitExpr_parser___parser_prod___AInitExpr___init_ainitexpr = "new AInitExpr parser_prod::AInitExpr::init_ainitexpr";
 val_t NEW_AInitExpr_parser___parser_prod___AInitExpr___init_ainitexpr(val_t p0, val_t p1, val_t p2);
 typedef val_t (*NEW_AInitExpr_parser___parser_prod___AInitExpr___init_ainitexpr_t)(val_t p0, val_t p1, val_t p2);
-static const char * const LOCATE_NEW_AInitExpr_parser___parser_nodes___ANode___init = "new AInitExpr parser_nodes::ANode::init";
-val_t NEW_AInitExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AInitExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_NEW_AInitExpr_parser___parser_prod___ASendExpr___init_asendexpr = "new AInitExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_AInitExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AInitExpr_parser___parser_nodes___ANode___init_t)(void);
 val_t NEW_AInitExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0);
 typedef val_t (*NEW_AInitExpr_parser___parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ABraFormExpr = "init var of ABraFormExpr";
-void INIT_ATTRIBUTES__parser___parser_nodes___ABraFormExpr(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ABraFormExpr_t)(val_t p0);
-val_t NEW_parser___parser_nodes___ABraFormExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___ABraFormExpr = "check new ABraFormExpr";
-void CHECKNEW_parser___parser_nodes___ABraFormExpr(val_t p0);
-typedef void (*CHECKNEW_parser___parser_nodes___ABraFormExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_ABraFormExpr_parser___parser_nodes___ANode___init = "new ABraFormExpr parser_nodes::ANode::init";
-val_t NEW_ABraFormExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ABraFormExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_NEW_ABraFormExpr_parser___parser_prod___ASendExpr___empty_init = "new ABraFormExpr parser_prod::ASendExpr::empty_init";
-val_t NEW_ABraFormExpr_parser___parser_prod___ASendExpr___empty_init(void);
-typedef val_t (*NEW_ABraFormExpr_parser___parser_prod___ASendExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_ABraFormExpr_parser___parser_prod___ASendExpr___init_asendexpr = "new ABraFormExpr parser_prod::ASendExpr::init_asendexpr";
-val_t NEW_ABraFormExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0);
-typedef val_t (*NEW_ABraFormExpr_parser___parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ABraExpr = "init var of ABraExpr";
 void INIT_ATTRIBUTES__parser___parser_nodes___ABraExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ABraExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___ABraExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___ABraExpr = "check new ABraExpr";
 void CHECKNEW_parser___parser_nodes___ABraExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___ABraExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_ABraExpr_parser___parser_prod___ASendExpr___empty_init = "new ABraExpr parser_prod::ASendExpr::empty_init";
 val_t NEW_ABraExpr_parser___parser_prod___ASendExpr___empty_init(void);
 typedef val_t (*NEW_ABraExpr_parser___parser_prod___ASendExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_ABraExpr_parser___parser_prod___ABraExpr___empty_init = "new ABraExpr parser_prod::ABraExpr::empty_init";
 val_t NEW_ABraExpr_parser___parser_prod___ABraExpr___empty_init(void);
 typedef val_t (*NEW_ABraExpr_parser___parser_prod___ABraExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_ABraExpr_parser___parser_prod___ABraExpr___init_abraexpr = "new ABraExpr parser_prod::ABraExpr::init_abraexpr";
 val_t NEW_ABraExpr_parser___parser_prod___ABraExpr___init_abraexpr(val_t p0, val_t p1, val_t p2);
 typedef val_t (*NEW_ABraExpr_parser___parser_prod___ABraExpr___init_abraexpr_t)(val_t p0, val_t p1, val_t p2);
-static const char * const LOCATE_NEW_ABraExpr_parser___parser_nodes___ANode___init = "new ABraExpr parser_nodes::ANode::init";
-val_t NEW_ABraExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ABraExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_NEW_ABraExpr_parser___parser_prod___ASendExpr___init_asendexpr = "new ABraExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_ABraExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_ABraExpr_parser___parser_nodes___ANode___init_t)(void);
 val_t NEW_ABraExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0);
 typedef val_t (*NEW_ABraExpr_parser___parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ABraAssignExpr = "init var of ABraAssignExpr";
 void INIT_ATTRIBUTES__parser___parser_nodes___ABraAssignExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ABraAssignExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___ABraAssignExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___ABraAssignExpr = "check new ABraAssignExpr";
 void CHECKNEW_parser___parser_nodes___ABraAssignExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___ABraAssignExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_ABraAssignExpr_parser___parser_prod___ASendExpr___empty_init = "new ABraAssignExpr parser_prod::ASendExpr::empty_init";
 val_t NEW_ABraAssignExpr_parser___parser_prod___ASendExpr___empty_init(void);
 typedef val_t (*NEW_ABraAssignExpr_parser___parser_prod___ASendExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_ABraAssignExpr_parser___parser_prod___ABraAssignExpr___empty_init = "new ABraAssignExpr parser_prod::ABraAssignExpr::empty_init";
 val_t NEW_ABraAssignExpr_parser___parser_prod___ABraAssignExpr___empty_init(void);
 typedef val_t (*NEW_ABraAssignExpr_parser___parser_prod___ABraAssignExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_ABraAssignExpr_parser___parser_prod___ABraAssignExpr___init_abraassignexpr = "new ABraAssignExpr parser_prod::ABraAssignExpr::init_abraassignexpr";
 val_t NEW_ABraAssignExpr_parser___parser_prod___ABraAssignExpr___init_abraassignexpr(val_t p0, val_t p1, val_t p2, val_t p3);
 typedef val_t (*NEW_ABraAssignExpr_parser___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___parser_nodes___ANode___init = "new ABraAssignExpr parser_nodes::ANode::init";
-val_t NEW_ABraAssignExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ABraAssignExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_NEW_ABraAssignExpr_parser___parser_prod___ASendExpr___init_asendexpr = "new ABraAssignExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_ABraAssignExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_ABraAssignExpr_parser___parser_nodes___ANode___init_t)(void);
 val_t NEW_ABraAssignExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0);
 typedef val_t (*NEW_ABraAssignExpr_parser___parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AVarFormExpr = "init var of AVarFormExpr";
-void INIT_ATTRIBUTES__parser___parser_nodes___AVarFormExpr(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AVarFormExpr_t)(val_t p0);
-val_t NEW_parser___parser_nodes___AVarFormExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AVarFormExpr = "check new AVarFormExpr";
-void CHECKNEW_parser___parser_nodes___AVarFormExpr(val_t p0);
-typedef void (*CHECKNEW_parser___parser_nodes___AVarFormExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AVarFormExpr_parser___parser_nodes___ANode___init = "new AVarFormExpr parser_nodes::ANode::init";
-val_t NEW_AVarFormExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AVarFormExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ABraReassignExpr = "init var of ABraReassignExpr";
 void INIT_ATTRIBUTES__parser___parser_nodes___ABraReassignExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ABraReassignExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___ABraReassignExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___ABraReassignExpr = "check new ABraReassignExpr";
 void CHECKNEW_parser___parser_nodes___ABraReassignExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___ABraReassignExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_ABraReassignExpr_parser___parser_prod___ASendExpr___empty_init = "new ABraReassignExpr parser_prod::ASendExpr::empty_init";
 val_t NEW_ABraReassignExpr_parser___parser_prod___ASendExpr___empty_init(void);
 typedef val_t (*NEW_ABraReassignExpr_parser___parser_prod___ASendExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_ABraReassignExpr_parser___parser_prod___ABraReassignExpr___empty_init = "new ABraReassignExpr parser_prod::ABraReassignExpr::empty_init";
 val_t NEW_ABraReassignExpr_parser___parser_prod___ABraReassignExpr___empty_init(void);
 typedef val_t (*NEW_ABraReassignExpr_parser___parser_prod___ABraReassignExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_ABraReassignExpr_parser___parser_prod___ABraReassignExpr___init_abrareassignexpr = "new ABraReassignExpr parser_prod::ABraReassignExpr::init_abrareassignexpr";
 val_t NEW_ABraReassignExpr_parser___parser_prod___ABraReassignExpr___init_abrareassignexpr(val_t p0, val_t p1, val_t p2, val_t p3);
 typedef val_t (*NEW_ABraReassignExpr_parser___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___parser_nodes___ANode___init = "new ABraReassignExpr parser_nodes::ANode::init";
-val_t NEW_ABraReassignExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ABraReassignExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_NEW_ABraReassignExpr_parser___parser_prod___ASendExpr___init_asendexpr = "new ABraReassignExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_ABraReassignExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_ABraReassignExpr_parser___parser_nodes___ANode___init_t)(void);
 val_t NEW_ABraReassignExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0);
 typedef val_t (*NEW_ABraReassignExpr_parser___parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AClosureCallExpr = "init var of AClosureCallExpr";
 void INIT_ATTRIBUTES__parser___parser_nodes___AClosureCallExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AClosureCallExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AClosureCallExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AClosureCallExpr = "check new AClosureCallExpr";
 void CHECKNEW_parser___parser_nodes___AClosureCallExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AClosureCallExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AClosureCallExpr_parser___parser_prod___AClosureCallExpr___init_aclosurecallexpr = "new AClosureCallExpr parser_prod::AClosureCallExpr::init_aclosurecallexpr";
 val_t NEW_AClosureCallExpr_parser___parser_prod___AClosureCallExpr___init_aclosurecallexpr(val_t p0, val_t p1, val_t p2);
 typedef val_t (*NEW_AClosureCallExpr_parser___parser_prod___AClosureCallExpr___init_aclosurecallexpr_t)(val_t p0, val_t p1, val_t p2);
-static const char * const LOCATE_NEW_AClosureCallExpr_parser___parser_prod___AClosureCallExpr___empty_init = "new AClosureCallExpr parser_prod::AClosureCallExpr::empty_init";
 val_t NEW_AClosureCallExpr_parser___parser_prod___AClosureCallExpr___empty_init(void);
 typedef val_t (*NEW_AClosureCallExpr_parser___parser_prod___AClosureCallExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AClosureCallExpr_parser___parser_nodes___ANode___init = "new AClosureCallExpr parser_nodes::ANode::init";
-val_t NEW_AClosureCallExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AClosureCallExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AVarExpr = "init var of AVarExpr";
+val_t NEW_AClosureCallExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AClosureCallExpr_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AVarExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AVarExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AVarExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AVarExpr = "check new AVarExpr";
 void CHECKNEW_parser___parser_nodes___AVarExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AVarExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AVarExpr_parser___parser_prod___AVarExpr___init_avarexpr = "new AVarExpr parser_prod::AVarExpr::init_avarexpr";
 val_t NEW_AVarExpr_parser___parser_prod___AVarExpr___init_avarexpr(val_t p0);
 typedef val_t (*NEW_AVarExpr_parser___parser_prod___AVarExpr___init_avarexpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AVarExpr_parser___parser_prod___AVarExpr___empty_init = "new AVarExpr parser_prod::AVarExpr::empty_init";
 val_t NEW_AVarExpr_parser___parser_prod___AVarExpr___empty_init(void);
 typedef val_t (*NEW_AVarExpr_parser___parser_prod___AVarExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AVarExpr_parser___parser_nodes___ANode___init = "new AVarExpr parser_nodes::ANode::init";
-val_t NEW_AVarExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AVarExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AVarAssignExpr = "init var of AVarAssignExpr";
+val_t NEW_AVarExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AVarExpr_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AVarAssignExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AVarAssignExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AVarAssignExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AVarAssignExpr = "check new AVarAssignExpr";
 void CHECKNEW_parser___parser_nodes___AVarAssignExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AVarAssignExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AVarAssignExpr_parser___parser_prod___AVarAssignExpr___init_avarassignexpr = "new AVarAssignExpr parser_prod::AVarAssignExpr::init_avarassignexpr";
 val_t NEW_AVarAssignExpr_parser___parser_prod___AVarAssignExpr___init_avarassignexpr(val_t p0, val_t p1, val_t p2);
 typedef val_t (*NEW_AVarAssignExpr_parser___parser_prod___AVarAssignExpr___init_avarassignexpr_t)(val_t p0, val_t p1, val_t p2);
-static const char * const LOCATE_NEW_AVarAssignExpr_parser___parser_prod___AVarAssignExpr___empty_init = "new AVarAssignExpr parser_prod::AVarAssignExpr::empty_init";
 val_t NEW_AVarAssignExpr_parser___parser_prod___AVarAssignExpr___empty_init(void);
 typedef val_t (*NEW_AVarAssignExpr_parser___parser_prod___AVarAssignExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AVarAssignExpr_parser___parser_nodes___ANode___init = "new AVarAssignExpr parser_nodes::ANode::init";
-val_t NEW_AVarAssignExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AVarAssignExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AVarReassignExpr = "init var of AVarReassignExpr";
+val_t NEW_AVarAssignExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AVarAssignExpr_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AVarReassignExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AVarReassignExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AVarReassignExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AVarReassignExpr = "check new AVarReassignExpr";
 void CHECKNEW_parser___parser_nodes___AVarReassignExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AVarReassignExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AVarReassignExpr_parser___parser_prod___AVarReassignExpr___init_avarreassignexpr = "new AVarReassignExpr parser_prod::AVarReassignExpr::init_avarreassignexpr";
 val_t NEW_AVarReassignExpr_parser___parser_prod___AVarReassignExpr___init_avarreassignexpr(val_t p0, val_t p1, val_t p2);
 typedef val_t (*NEW_AVarReassignExpr_parser___parser_prod___AVarReassignExpr___init_avarreassignexpr_t)(val_t p0, val_t p1, val_t p2);
-static const char * const LOCATE_NEW_AVarReassignExpr_parser___parser_prod___AVarReassignExpr___empty_init = "new AVarReassignExpr parser_prod::AVarReassignExpr::empty_init";
 val_t NEW_AVarReassignExpr_parser___parser_prod___AVarReassignExpr___empty_init(void);
 typedef val_t (*NEW_AVarReassignExpr_parser___parser_prod___AVarReassignExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AVarReassignExpr_parser___parser_nodes___ANode___init = "new AVarReassignExpr parser_nodes::ANode::init";
-val_t NEW_AVarReassignExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AVarReassignExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ARangeExpr = "init var of ARangeExpr";
-void INIT_ATTRIBUTES__parser___parser_nodes___ARangeExpr(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ARangeExpr_t)(val_t p0);
-val_t NEW_parser___parser_nodes___ARangeExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___ARangeExpr = "check new ARangeExpr";
-void CHECKNEW_parser___parser_nodes___ARangeExpr(val_t p0);
-typedef void (*CHECKNEW_parser___parser_nodes___ARangeExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_ARangeExpr_parser___parser_prod___ARangeExpr___empty_init = "new ARangeExpr parser_prod::ARangeExpr::empty_init";
-val_t NEW_ARangeExpr_parser___parser_prod___ARangeExpr___empty_init(void);
-typedef val_t (*NEW_ARangeExpr_parser___parser_prod___ARangeExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_ARangeExpr_parser___parser_prod___ARangeExpr___init_arangeexpr = "new ARangeExpr parser_prod::ARangeExpr::init_arangeexpr";
-val_t NEW_ARangeExpr_parser___parser_prod___ARangeExpr___init_arangeexpr(val_t p0, val_t p1);
-typedef val_t (*NEW_ARangeExpr_parser___parser_prod___ARangeExpr___init_arangeexpr_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_ARangeExpr_parser___parser_nodes___ANode___init = "new ARangeExpr parser_nodes::ANode::init";
-val_t NEW_ARangeExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ARangeExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ACrangeExpr = "init var of ACrangeExpr";
+val_t NEW_AVarReassignExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AVarReassignExpr_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___ACrangeExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ACrangeExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___ACrangeExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___ACrangeExpr = "check new ACrangeExpr";
 void CHECKNEW_parser___parser_nodes___ACrangeExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___ACrangeExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_ACrangeExpr_parser___parser_prod___ARangeExpr___empty_init = "new ACrangeExpr parser_prod::ARangeExpr::empty_init";
 val_t NEW_ACrangeExpr_parser___parser_prod___ARangeExpr___empty_init(void);
 typedef val_t (*NEW_ACrangeExpr_parser___parser_prod___ARangeExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_ACrangeExpr_parser___parser_prod___ACrangeExpr___empty_init = "new ACrangeExpr parser_prod::ACrangeExpr::empty_init";
 val_t NEW_ACrangeExpr_parser___parser_prod___ACrangeExpr___empty_init(void);
 typedef val_t (*NEW_ACrangeExpr_parser___parser_prod___ACrangeExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_ACrangeExpr_parser___parser_prod___ACrangeExpr___init_acrangeexpr = "new ACrangeExpr parser_prod::ACrangeExpr::init_acrangeexpr";
-val_t NEW_ACrangeExpr_parser___parser_prod___ACrangeExpr___init_acrangeexpr(val_t p0, val_t p1);
-typedef val_t (*NEW_ACrangeExpr_parser___parser_prod___ACrangeExpr___init_acrangeexpr_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_ACrangeExpr_parser___parser_nodes___ANode___init = "new ACrangeExpr parser_nodes::ANode::init";
-val_t NEW_ACrangeExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ACrangeExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_NEW_ACrangeExpr_parser___parser_prod___ARangeExpr___init_arangeexpr = "new ACrangeExpr parser_prod::ARangeExpr::init_arangeexpr";
-val_t NEW_ACrangeExpr_parser___parser_prod___ARangeExpr___init_arangeexpr(val_t p0, val_t p1);
-typedef val_t (*NEW_ACrangeExpr_parser___parser_prod___ARangeExpr___init_arangeexpr_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AOrangeExpr = "init var of AOrangeExpr";
+val_t NEW_ACrangeExpr_parser___parser_prod___ACrangeExpr___init_acrangeexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
+typedef val_t (*NEW_ACrangeExpr_parser___parser_prod___ACrangeExpr___init_acrangeexpr_t)(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
+val_t NEW_ACrangeExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_ACrangeExpr_parser___parser_nodes___ANode___init_t)(void);
+val_t NEW_ACrangeExpr_parser___parser_prod___ARangeExpr___init_arangeexpr(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_ACrangeExpr_parser___parser_prod___ARangeExpr___init_arangeexpr_t)(val_t p0, val_t p1, val_t p2);
 void INIT_ATTRIBUTES__parser___parser_nodes___AOrangeExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AOrangeExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AOrangeExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AOrangeExpr = "check new AOrangeExpr";
 void CHECKNEW_parser___parser_nodes___AOrangeExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AOrangeExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AOrangeExpr_parser___parser_prod___ARangeExpr___empty_init = "new AOrangeExpr parser_prod::ARangeExpr::empty_init";
 val_t NEW_AOrangeExpr_parser___parser_prod___ARangeExpr___empty_init(void);
 typedef val_t (*NEW_AOrangeExpr_parser___parser_prod___ARangeExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AOrangeExpr_parser___parser_prod___AOrangeExpr___empty_init = "new AOrangeExpr parser_prod::AOrangeExpr::empty_init";
 val_t NEW_AOrangeExpr_parser___parser_prod___AOrangeExpr___empty_init(void);
 typedef val_t (*NEW_AOrangeExpr_parser___parser_prod___AOrangeExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AOrangeExpr_parser___parser_prod___AOrangeExpr___init_aorangeexpr = "new AOrangeExpr parser_prod::AOrangeExpr::init_aorangeexpr";
-val_t NEW_AOrangeExpr_parser___parser_prod___AOrangeExpr___init_aorangeexpr(val_t p0, val_t p1);
-typedef val_t (*NEW_AOrangeExpr_parser___parser_prod___AOrangeExpr___init_aorangeexpr_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_AOrangeExpr_parser___parser_nodes___ANode___init = "new AOrangeExpr parser_nodes::ANode::init";
-val_t NEW_AOrangeExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AOrangeExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_NEW_AOrangeExpr_parser___parser_prod___ARangeExpr___init_arangeexpr = "new AOrangeExpr parser_prod::ARangeExpr::init_arangeexpr";
-val_t NEW_AOrangeExpr_parser___parser_prod___ARangeExpr___init_arangeexpr(val_t p0, val_t p1);
-typedef val_t (*NEW_AOrangeExpr_parser___parser_prod___ARangeExpr___init_arangeexpr_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AArrayExpr = "init var of AArrayExpr";
+val_t NEW_AOrangeExpr_parser___parser_prod___AOrangeExpr___init_aorangeexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
+typedef val_t (*NEW_AOrangeExpr_parser___parser_prod___AOrangeExpr___init_aorangeexpr_t)(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
+val_t NEW_AOrangeExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AOrangeExpr_parser___parser_nodes___ANode___init_t)(void);
+val_t NEW_AOrangeExpr_parser___parser_prod___ARangeExpr___init_arangeexpr(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_AOrangeExpr_parser___parser_prod___ARangeExpr___init_arangeexpr_t)(val_t p0, val_t p1, val_t p2);
 void INIT_ATTRIBUTES__parser___parser_nodes___AArrayExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AArrayExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AArrayExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AArrayExpr = "check new AArrayExpr";
 void CHECKNEW_parser___parser_nodes___AArrayExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AArrayExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AArrayExpr_parser___parser_prod___AArrayExpr___empty_init = "new AArrayExpr parser_prod::AArrayExpr::empty_init";
 val_t NEW_AArrayExpr_parser___parser_prod___AArrayExpr___empty_init(void);
 typedef val_t (*NEW_AArrayExpr_parser___parser_prod___AArrayExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AArrayExpr_parser___parser_prod___AArrayExpr___init_aarrayexpr = "new AArrayExpr parser_prod::AArrayExpr::init_aarrayexpr";
-val_t NEW_AArrayExpr_parser___parser_prod___AArrayExpr___init_aarrayexpr(val_t p0);
-typedef val_t (*NEW_AArrayExpr_parser___parser_prod___AArrayExpr___init_aarrayexpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AArrayExpr_parser___parser_nodes___ANode___init = "new AArrayExpr parser_nodes::ANode::init";
-val_t NEW_AArrayExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AArrayExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ASelfExpr = "init var of ASelfExpr";
+val_t NEW_AArrayExpr_parser___parser_prod___AArrayExpr___init_aarrayexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_AArrayExpr_parser___parser_prod___AArrayExpr___init_aarrayexpr_t)(val_t p0, val_t p1);
+val_t NEW_AArrayExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AArrayExpr_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___ASelfExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ASelfExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___ASelfExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___ASelfExpr = "check new ASelfExpr";
 void CHECKNEW_parser___parser_nodes___ASelfExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___ASelfExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_ASelfExpr_parser___parser_prod___ASelfExpr___empty_init = "new ASelfExpr parser_prod::ASelfExpr::empty_init";
 val_t NEW_ASelfExpr_parser___parser_prod___ASelfExpr___empty_init(void);
 typedef val_t (*NEW_ASelfExpr_parser___parser_prod___ASelfExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_ASelfExpr_parser___parser_prod___ASelfExpr___init_aselfexpr = "new ASelfExpr parser_prod::ASelfExpr::init_aselfexpr";
-val_t NEW_ASelfExpr_parser___parser_prod___ASelfExpr___init_aselfexpr(val_t p0);
-typedef val_t (*NEW_ASelfExpr_parser___parser_prod___ASelfExpr___init_aselfexpr_t)(val_t p0);
-static const char * const LOCATE_NEW_ASelfExpr_parser___parser_nodes___ANode___init = "new ASelfExpr parser_nodes::ANode::init";
-val_t NEW_ASelfExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ASelfExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AImplicitSelfExpr = "init var of AImplicitSelfExpr";
+val_t NEW_ASelfExpr_parser___parser_prod___ASelfExpr___init_aselfexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_ASelfExpr_parser___parser_prod___ASelfExpr___init_aselfexpr_t)(val_t p0, val_t p1);
+val_t NEW_ASelfExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_ASelfExpr_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AImplicitSelfExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AImplicitSelfExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AImplicitSelfExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AImplicitSelfExpr = "check new AImplicitSelfExpr";
 void CHECKNEW_parser___parser_nodes___AImplicitSelfExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AImplicitSelfExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AImplicitSelfExpr_parser___parser_prod___ASelfExpr___empty_init = "new AImplicitSelfExpr parser_prod::ASelfExpr::empty_init";
 val_t NEW_AImplicitSelfExpr_parser___parser_prod___ASelfExpr___empty_init(void);
 typedef val_t (*NEW_AImplicitSelfExpr_parser___parser_prod___ASelfExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___empty_init = "new AImplicitSelfExpr parser_prod::AImplicitSelfExpr::empty_init";
 val_t NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___empty_init(void);
 typedef val_t (*NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr = "new AImplicitSelfExpr parser_prod::AImplicitSelfExpr::init_aimplicitselfexpr";
 val_t NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(void);
 typedef val_t (*NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr_t)(void);
-static const char * const LOCATE_NEW_AImplicitSelfExpr_parser___parser_nodes___ANode___init = "new AImplicitSelfExpr parser_nodes::ANode::init";
-val_t NEW_AImplicitSelfExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AImplicitSelfExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_NEW_AImplicitSelfExpr_parser___parser_prod___ASelfExpr___init_aselfexpr = "new AImplicitSelfExpr parser_prod::ASelfExpr::init_aselfexpr";
-val_t NEW_AImplicitSelfExpr_parser___parser_prod___ASelfExpr___init_aselfexpr(val_t p0);
-typedef val_t (*NEW_AImplicitSelfExpr_parser___parser_prod___ASelfExpr___init_aselfexpr_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ATrueExpr = "init var of ATrueExpr";
+val_t NEW_AImplicitSelfExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AImplicitSelfExpr_parser___parser_nodes___ANode___init_t)(void);
+val_t NEW_AImplicitSelfExpr_parser___parser_prod___ASelfExpr___init_aselfexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_AImplicitSelfExpr_parser___parser_prod___ASelfExpr___init_aselfexpr_t)(val_t p0, val_t p1);
 void INIT_ATTRIBUTES__parser___parser_nodes___ATrueExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ATrueExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___ATrueExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___ATrueExpr = "check new ATrueExpr";
 void CHECKNEW_parser___parser_nodes___ATrueExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___ATrueExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_ATrueExpr_parser___parser_prod___ATrueExpr___empty_init = "new ATrueExpr parser_prod::ATrueExpr::empty_init";
 val_t NEW_ATrueExpr_parser___parser_prod___ATrueExpr___empty_init(void);
 typedef val_t (*NEW_ATrueExpr_parser___parser_prod___ATrueExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_ATrueExpr_parser___parser_prod___ATrueExpr___init_atrueexpr = "new ATrueExpr parser_prod::ATrueExpr::init_atrueexpr";
-val_t NEW_ATrueExpr_parser___parser_prod___ATrueExpr___init_atrueexpr(val_t p0);
-typedef val_t (*NEW_ATrueExpr_parser___parser_prod___ATrueExpr___init_atrueexpr_t)(val_t p0);
-static const char * const LOCATE_NEW_ATrueExpr_parser___parser_nodes___ANode___init = "new ATrueExpr parser_nodes::ANode::init";
-val_t NEW_ATrueExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ATrueExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AFalseExpr = "init var of AFalseExpr";
+val_t NEW_ATrueExpr_parser___parser_prod___ATrueExpr___init_atrueexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_ATrueExpr_parser___parser_prod___ATrueExpr___init_atrueexpr_t)(val_t p0, val_t p1);
+val_t NEW_ATrueExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_ATrueExpr_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AFalseExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AFalseExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AFalseExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AFalseExpr = "check new AFalseExpr";
 void CHECKNEW_parser___parser_nodes___AFalseExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AFalseExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AFalseExpr_parser___parser_prod___AFalseExpr___empty_init = "new AFalseExpr parser_prod::AFalseExpr::empty_init";
 val_t NEW_AFalseExpr_parser___parser_prod___AFalseExpr___empty_init(void);
 typedef val_t (*NEW_AFalseExpr_parser___parser_prod___AFalseExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AFalseExpr_parser___parser_prod___AFalseExpr___init_afalseexpr = "new AFalseExpr parser_prod::AFalseExpr::init_afalseexpr";
-val_t NEW_AFalseExpr_parser___parser_prod___AFalseExpr___init_afalseexpr(val_t p0);
-typedef val_t (*NEW_AFalseExpr_parser___parser_prod___AFalseExpr___init_afalseexpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AFalseExpr_parser___parser_nodes___ANode___init = "new AFalseExpr parser_nodes::ANode::init";
-val_t NEW_AFalseExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AFalseExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ANullExpr = "init var of ANullExpr";
+val_t NEW_AFalseExpr_parser___parser_prod___AFalseExpr___init_afalseexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_AFalseExpr_parser___parser_prod___AFalseExpr___init_afalseexpr_t)(val_t p0, val_t p1);
+val_t NEW_AFalseExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AFalseExpr_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___ANullExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ANullExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___ANullExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___ANullExpr = "check new ANullExpr";
 void CHECKNEW_parser___parser_nodes___ANullExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___ANullExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_ANullExpr_parser___parser_prod___ANullExpr___empty_init = "new ANullExpr parser_prod::ANullExpr::empty_init";
 val_t NEW_ANullExpr_parser___parser_prod___ANullExpr___empty_init(void);
 typedef val_t (*NEW_ANullExpr_parser___parser_prod___ANullExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_ANullExpr_parser___parser_prod___ANullExpr___init_anullexpr = "new ANullExpr parser_prod::ANullExpr::init_anullexpr";
-val_t NEW_ANullExpr_parser___parser_prod___ANullExpr___init_anullexpr(val_t p0);
-typedef val_t (*NEW_ANullExpr_parser___parser_prod___ANullExpr___init_anullexpr_t)(val_t p0);
-static const char * const LOCATE_NEW_ANullExpr_parser___parser_nodes___ANode___init = "new ANullExpr parser_nodes::ANode::init";
-val_t NEW_ANullExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ANullExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AIntExpr = "init var of AIntExpr";
+val_t NEW_ANullExpr_parser___parser_prod___ANullExpr___init_anullexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_ANullExpr_parser___parser_prod___ANullExpr___init_anullexpr_t)(val_t p0, val_t p1);
+val_t NEW_ANullExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_ANullExpr_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AIntExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AIntExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AIntExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AIntExpr = "check new AIntExpr";
 void CHECKNEW_parser___parser_nodes___AIntExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AIntExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AIntExpr_parser___parser_prod___AIntExpr___empty_init = "new AIntExpr parser_prod::AIntExpr::empty_init";
 val_t NEW_AIntExpr_parser___parser_prod___AIntExpr___empty_init(void);
 typedef val_t (*NEW_AIntExpr_parser___parser_prod___AIntExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AIntExpr_parser___parser_prod___AIntExpr___init_aintexpr = "new AIntExpr parser_prod::AIntExpr::init_aintexpr";
-val_t NEW_AIntExpr_parser___parser_prod___AIntExpr___init_aintexpr(val_t p0);
-typedef val_t (*NEW_AIntExpr_parser___parser_prod___AIntExpr___init_aintexpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AIntExpr_parser___parser_nodes___ANode___init = "new AIntExpr parser_nodes::ANode::init";
-val_t NEW_AIntExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AIntExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AFloatExpr = "init var of AFloatExpr";
+val_t NEW_AIntExpr_parser___parser_prod___AIntExpr___init_aintexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_AIntExpr_parser___parser_prod___AIntExpr___init_aintexpr_t)(val_t p0, val_t p1);
+val_t NEW_AIntExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AIntExpr_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AFloatExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AFloatExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AFloatExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AFloatExpr = "check new AFloatExpr";
 void CHECKNEW_parser___parser_nodes___AFloatExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AFloatExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AFloatExpr_parser___parser_prod___AFloatExpr___empty_init = "new AFloatExpr parser_prod::AFloatExpr::empty_init";
 val_t NEW_AFloatExpr_parser___parser_prod___AFloatExpr___empty_init(void);
 typedef val_t (*NEW_AFloatExpr_parser___parser_prod___AFloatExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AFloatExpr_parser___parser_prod___AFloatExpr___init_afloatexpr = "new AFloatExpr parser_prod::AFloatExpr::init_afloatexpr";
-val_t NEW_AFloatExpr_parser___parser_prod___AFloatExpr___init_afloatexpr(val_t p0);
-typedef val_t (*NEW_AFloatExpr_parser___parser_prod___AFloatExpr___init_afloatexpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AFloatExpr_parser___parser_nodes___ANode___init = "new AFloatExpr parser_nodes::ANode::init";
-val_t NEW_AFloatExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AFloatExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ACharExpr = "init var of ACharExpr";
+val_t NEW_AFloatExpr_parser___parser_prod___AFloatExpr___init_afloatexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_AFloatExpr_parser___parser_prod___AFloatExpr___init_afloatexpr_t)(val_t p0, val_t p1);
+val_t NEW_AFloatExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AFloatExpr_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___ACharExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ACharExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___ACharExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___ACharExpr = "check new ACharExpr";
 void CHECKNEW_parser___parser_nodes___ACharExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___ACharExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_ACharExpr_parser___parser_prod___ACharExpr___empty_init = "new ACharExpr parser_prod::ACharExpr::empty_init";
 val_t NEW_ACharExpr_parser___parser_prod___ACharExpr___empty_init(void);
 typedef val_t (*NEW_ACharExpr_parser___parser_prod___ACharExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_ACharExpr_parser___parser_prod___ACharExpr___init_acharexpr = "new ACharExpr parser_prod::ACharExpr::init_acharexpr";
-val_t NEW_ACharExpr_parser___parser_prod___ACharExpr___init_acharexpr(val_t p0);
-typedef val_t (*NEW_ACharExpr_parser___parser_prod___ACharExpr___init_acharexpr_t)(val_t p0);
-static const char * const LOCATE_NEW_ACharExpr_parser___parser_nodes___ANode___init = "new ACharExpr parser_nodes::ANode::init";
-val_t NEW_ACharExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ACharExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AStringFormExpr = "init var of AStringFormExpr";
-void INIT_ATTRIBUTES__parser___parser_nodes___AStringFormExpr(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AStringFormExpr_t)(val_t p0);
-val_t NEW_parser___parser_nodes___AStringFormExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AStringFormExpr = "check new AStringFormExpr";
-void CHECKNEW_parser___parser_nodes___AStringFormExpr(val_t p0);
-typedef void (*CHECKNEW_parser___parser_nodes___AStringFormExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AStringFormExpr_parser___parser_nodes___ANode___init = "new AStringFormExpr parser_nodes::ANode::init";
-val_t NEW_AStringFormExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AStringFormExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AStringExpr = "init var of AStringExpr";
+val_t NEW_ACharExpr_parser___parser_prod___ACharExpr___init_acharexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_ACharExpr_parser___parser_prod___ACharExpr___init_acharexpr_t)(val_t p0, val_t p1);
+val_t NEW_ACharExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_ACharExpr_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AStringExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AStringExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AStringExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AStringExpr = "check new AStringExpr";
 void CHECKNEW_parser___parser_nodes___AStringExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AStringExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AStringExpr_parser___parser_prod___AStringExpr___empty_init = "new AStringExpr parser_prod::AStringExpr::empty_init";
 val_t NEW_AStringExpr_parser___parser_prod___AStringExpr___empty_init(void);
 typedef val_t (*NEW_AStringExpr_parser___parser_prod___AStringExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AStringExpr_parser___parser_prod___AStringExpr___init_astringexpr = "new AStringExpr parser_prod::AStringExpr::init_astringexpr";
-val_t NEW_AStringExpr_parser___parser_prod___AStringExpr___init_astringexpr(val_t p0);
-typedef val_t (*NEW_AStringExpr_parser___parser_prod___AStringExpr___init_astringexpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AStringExpr_parser___parser_nodes___ANode___init = "new AStringExpr parser_nodes::ANode::init";
-val_t NEW_AStringExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AStringExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AStartStringExpr = "init var of AStartStringExpr";
+val_t NEW_AStringExpr_parser___parser_prod___AStringExpr___init_astringexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_AStringExpr_parser___parser_prod___AStringExpr___init_astringexpr_t)(val_t p0, val_t p1);
+val_t NEW_AStringExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AStringExpr_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AStartStringExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AStartStringExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AStartStringExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AStartStringExpr = "check new AStartStringExpr";
 void CHECKNEW_parser___parser_nodes___AStartStringExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AStartStringExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AStartStringExpr_parser___parser_prod___AStartStringExpr___empty_init = "new AStartStringExpr parser_prod::AStartStringExpr::empty_init";
 val_t NEW_AStartStringExpr_parser___parser_prod___AStartStringExpr___empty_init(void);
 typedef val_t (*NEW_AStartStringExpr_parser___parser_prod___AStartStringExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AStartStringExpr_parser___parser_prod___AStartStringExpr___init_astartstringexpr = "new AStartStringExpr parser_prod::AStartStringExpr::init_astartstringexpr";
 val_t NEW_AStartStringExpr_parser___parser_prod___AStartStringExpr___init_astartstringexpr(val_t p0);
 typedef val_t (*NEW_AStartStringExpr_parser___parser_prod___AStartStringExpr___init_astartstringexpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AStartStringExpr_parser___parser_nodes___ANode___init = "new AStartStringExpr parser_nodes::ANode::init";
-val_t NEW_AStartStringExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AStartStringExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AMidStringExpr = "init var of AMidStringExpr";
+val_t NEW_AStartStringExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AStartStringExpr_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AMidStringExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AMidStringExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AMidStringExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AMidStringExpr = "check new AMidStringExpr";
 void CHECKNEW_parser___parser_nodes___AMidStringExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AMidStringExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AMidStringExpr_parser___parser_prod___AMidStringExpr___empty_init = "new AMidStringExpr parser_prod::AMidStringExpr::empty_init";
 val_t NEW_AMidStringExpr_parser___parser_prod___AMidStringExpr___empty_init(void);
 typedef val_t (*NEW_AMidStringExpr_parser___parser_prod___AMidStringExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AMidStringExpr_parser___parser_prod___AMidStringExpr___init_amidstringexpr = "new AMidStringExpr parser_prod::AMidStringExpr::init_amidstringexpr";
 val_t NEW_AMidStringExpr_parser___parser_prod___AMidStringExpr___init_amidstringexpr(val_t p0);
 typedef val_t (*NEW_AMidStringExpr_parser___parser_prod___AMidStringExpr___init_amidstringexpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AMidStringExpr_parser___parser_nodes___ANode___init = "new AMidStringExpr parser_nodes::ANode::init";
-val_t NEW_AMidStringExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AMidStringExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AEndStringExpr = "init var of AEndStringExpr";
+val_t NEW_AMidStringExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AMidStringExpr_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AEndStringExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AEndStringExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AEndStringExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AEndStringExpr = "check new AEndStringExpr";
 void CHECKNEW_parser___parser_nodes___AEndStringExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AEndStringExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AEndStringExpr_parser___parser_prod___AEndStringExpr___empty_init = "new AEndStringExpr parser_prod::AEndStringExpr::empty_init";
 val_t NEW_AEndStringExpr_parser___parser_prod___AEndStringExpr___empty_init(void);
 typedef val_t (*NEW_AEndStringExpr_parser___parser_prod___AEndStringExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AEndStringExpr_parser___parser_prod___AEndStringExpr___init_aendstringexpr = "new AEndStringExpr parser_prod::AEndStringExpr::init_aendstringexpr";
 val_t NEW_AEndStringExpr_parser___parser_prod___AEndStringExpr___init_aendstringexpr(val_t p0);
 typedef val_t (*NEW_AEndStringExpr_parser___parser_prod___AEndStringExpr___init_aendstringexpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AEndStringExpr_parser___parser_nodes___ANode___init = "new AEndStringExpr parser_nodes::ANode::init";
-val_t NEW_AEndStringExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AEndStringExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ASuperstringExpr = "init var of ASuperstringExpr";
+val_t NEW_AEndStringExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AEndStringExpr_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___ASuperstringExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ASuperstringExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___ASuperstringExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___ASuperstringExpr = "check new ASuperstringExpr";
 void CHECKNEW_parser___parser_nodes___ASuperstringExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___ASuperstringExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_ASuperstringExpr_parser___parser_prod___ASuperstringExpr___empty_init = "new ASuperstringExpr parser_prod::ASuperstringExpr::empty_init";
 val_t NEW_ASuperstringExpr_parser___parser_prod___ASuperstringExpr___empty_init(void);
 typedef val_t (*NEW_ASuperstringExpr_parser___parser_prod___ASuperstringExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_ASuperstringExpr_parser___parser_prod___ASuperstringExpr___init_asuperstringexpr = "new ASuperstringExpr parser_prod::ASuperstringExpr::init_asuperstringexpr";
-val_t NEW_ASuperstringExpr_parser___parser_prod___ASuperstringExpr___init_asuperstringexpr(val_t p0);
-typedef val_t (*NEW_ASuperstringExpr_parser___parser_prod___ASuperstringExpr___init_asuperstringexpr_t)(val_t p0);
-static const char * const LOCATE_NEW_ASuperstringExpr_parser___parser_nodes___ANode___init = "new ASuperstringExpr parser_nodes::ANode::init";
-val_t NEW_ASuperstringExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ASuperstringExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AParExpr = "init var of AParExpr";
+val_t NEW_ASuperstringExpr_parser___parser_prod___ASuperstringExpr___init_asuperstringexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_ASuperstringExpr_parser___parser_prod___ASuperstringExpr___init_asuperstringexpr_t)(val_t p0, val_t p1);
+val_t NEW_ASuperstringExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_ASuperstringExpr_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AParExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AParExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AParExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AParExpr = "check new AParExpr";
 void CHECKNEW_parser___parser_nodes___AParExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AParExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AParExpr_parser___parser_prod___AParExpr___empty_init = "new AParExpr parser_prod::AParExpr::empty_init";
 val_t NEW_AParExpr_parser___parser_prod___AParExpr___empty_init(void);
 typedef val_t (*NEW_AParExpr_parser___parser_prod___AParExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AParExpr_parser___parser_prod___AParExpr___init_aparexpr = "new AParExpr parser_prod::AParExpr::init_aparexpr";
-val_t NEW_AParExpr_parser___parser_prod___AParExpr___init_aparexpr(val_t p0);
-typedef val_t (*NEW_AParExpr_parser___parser_prod___AParExpr___init_aparexpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AParExpr_parser___parser_nodes___ANode___init = "new AParExpr parser_nodes::ANode::init";
-val_t NEW_AParExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AParExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AProxyExpr = "init var of AProxyExpr";
-void INIT_ATTRIBUTES__parser___parser_nodes___AProxyExpr(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AProxyExpr_t)(val_t p0);
-val_t NEW_parser___parser_nodes___AProxyExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AProxyExpr = "check new AProxyExpr";
-void CHECKNEW_parser___parser_nodes___AProxyExpr(val_t p0);
-typedef void (*CHECKNEW_parser___parser_nodes___AProxyExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AProxyExpr_parser___parser_nodes___ANode___init = "new AProxyExpr parser_nodes::ANode::init";
-val_t NEW_AProxyExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AProxyExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AAsCastExpr = "init var of AAsCastExpr";
+val_t NEW_AParExpr_parser___parser_prod___AParExpr___init_aparexpr(val_t p0, val_t p1, val_t p2, val_t p3);
+typedef val_t (*NEW_AParExpr_parser___parser_prod___AParExpr___init_aparexpr_t)(val_t p0, val_t p1, val_t p2, val_t p3);
+val_t NEW_AParExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AParExpr_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AAsCastExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AAsCastExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AAsCastExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AAsCastExpr = "check new AAsCastExpr";
 void CHECKNEW_parser___parser_nodes___AAsCastExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AAsCastExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AAsCastExpr_parser___parser_prod___AAsCastExpr___empty_init = "new AAsCastExpr parser_prod::AAsCastExpr::empty_init";
 val_t NEW_AAsCastExpr_parser___parser_prod___AAsCastExpr___empty_init(void);
 typedef val_t (*NEW_AAsCastExpr_parser___parser_prod___AAsCastExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AAsCastExpr_parser___parser_prod___AAsCastExpr___init_aascastexpr = "new AAsCastExpr parser_prod::AAsCastExpr::init_aascastexpr";
-val_t NEW_AAsCastExpr_parser___parser_prod___AAsCastExpr___init_aascastexpr(val_t p0, val_t p1, val_t p2);
-typedef val_t (*NEW_AAsCastExpr_parser___parser_prod___AAsCastExpr___init_aascastexpr_t)(val_t p0, val_t p1, val_t p2);
-static const char * const LOCATE_NEW_AAsCastExpr_parser___parser_nodes___ANode___init = "new AAsCastExpr parser_nodes::ANode::init";
-val_t NEW_AAsCastExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AAsCastExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AAsNotnullExpr = "init var of AAsNotnullExpr";
+val_t NEW_AAsCastExpr_parser___parser_prod___AAsCastExpr___init_aascastexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
+typedef val_t (*NEW_AAsCastExpr_parser___parser_prod___AAsCastExpr___init_aascastexpr_t)(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
+val_t NEW_AAsCastExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AAsCastExpr_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AAsNotnullExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AAsNotnullExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AAsNotnullExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AAsNotnullExpr = "check new AAsNotnullExpr";
 void CHECKNEW_parser___parser_nodes___AAsNotnullExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AAsNotnullExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AAsNotnullExpr_parser___parser_prod___AAsNotnullExpr___empty_init = "new AAsNotnullExpr parser_prod::AAsNotnullExpr::empty_init";
 val_t NEW_AAsNotnullExpr_parser___parser_prod___AAsNotnullExpr___empty_init(void);
 typedef val_t (*NEW_AAsNotnullExpr_parser___parser_prod___AAsNotnullExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AAsNotnullExpr_parser___parser_prod___AAsNotnullExpr___init_aasnotnullexpr = "new AAsNotnullExpr parser_prod::AAsNotnullExpr::init_aasnotnullexpr";
-val_t NEW_AAsNotnullExpr_parser___parser_prod___AAsNotnullExpr___init_aasnotnullexpr(val_t p0, val_t p1, val_t p2, val_t p3);
-typedef val_t (*NEW_AAsNotnullExpr_parser___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___parser_nodes___ANode___init = "new AAsNotnullExpr parser_nodes::ANode::init";
-val_t NEW_AAsNotnullExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AAsNotnullExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AIssetAttrExpr = "init var of AIssetAttrExpr";
+val_t NEW_AAsNotnullExpr_parser___parser_prod___AAsNotnullExpr___init_aasnotnullexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5);
+typedef val_t (*NEW_AAsNotnullExpr_parser___parser_prod___AAsNotnullExpr___init_aasnotnullexpr_t)(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5);
+val_t NEW_AAsNotnullExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AAsNotnullExpr_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AIssetAttrExpr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AIssetAttrExpr_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AIssetAttrExpr(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AIssetAttrExpr = "check new AIssetAttrExpr";
 void CHECKNEW_parser___parser_nodes___AIssetAttrExpr(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AIssetAttrExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AIssetAttrExpr_parser___parser_prod___AIssetAttrExpr___empty_init = "new AIssetAttrExpr parser_prod::AIssetAttrExpr::empty_init";
 val_t NEW_AIssetAttrExpr_parser___parser_prod___AIssetAttrExpr___empty_init(void);
 typedef val_t (*NEW_AIssetAttrExpr_parser___parser_prod___AIssetAttrExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_AIssetAttrExpr_parser___parser_prod___AIssetAttrExpr___init_aissetattrexpr = "new AIssetAttrExpr parser_prod::AIssetAttrExpr::init_aissetattrexpr";
 val_t NEW_AIssetAttrExpr_parser___parser_prod___AIssetAttrExpr___init_aissetattrexpr(val_t p0, val_t p1, val_t p2);
 typedef val_t (*NEW_AIssetAttrExpr_parser___parser_prod___AIssetAttrExpr___init_aissetattrexpr_t)(val_t p0, val_t p1, val_t p2);
-static const char * const LOCATE_NEW_AIssetAttrExpr_parser___parser_nodes___ANode___init = "new AIssetAttrExpr parser_nodes::ANode::init";
-val_t NEW_AIssetAttrExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AIssetAttrExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AAssignOp = "init var of AAssignOp";
-void INIT_ATTRIBUTES__parser___parser_nodes___AAssignOp(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AAssignOp_t)(val_t p0);
-val_t NEW_parser___parser_nodes___AAssignOp(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AAssignOp = "check new AAssignOp";
-void CHECKNEW_parser___parser_nodes___AAssignOp(val_t p0);
-typedef void (*CHECKNEW_parser___parser_nodes___AAssignOp_t)(val_t p0);
-static const char * const LOCATE_NEW_AAssignOp_parser___parser_nodes___ANode___init = "new AAssignOp parser_nodes::ANode::init";
-val_t NEW_AAssignOp_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AAssignOp_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___APlusAssignOp = "init var of APlusAssignOp";
+val_t NEW_AIssetAttrExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AIssetAttrExpr_parser___parser_nodes___ANode___init_t)(void);
+void INIT_ATTRIBUTES__parser___parser_nodes___ADebugTypeExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ADebugTypeExpr_t)(val_t p0);
+val_t NEW_parser___parser_nodes___ADebugTypeExpr(void);
+void CHECKNEW_parser___parser_nodes___ADebugTypeExpr(val_t p0);
+typedef void (*CHECKNEW_parser___parser_nodes___ADebugTypeExpr_t)(val_t p0);
+val_t NEW_ADebugTypeExpr_parser___parser_prod___ADebugTypeExpr___empty_init(void);
+typedef val_t (*NEW_ADebugTypeExpr_parser___parser_prod___ADebugTypeExpr___empty_init_t)(void);
+val_t NEW_ADebugTypeExpr_parser___parser_prod___ADebugTypeExpr___init_adebugtypeexpr(val_t p0, val_t p1, val_t p2, val_t p3);
+typedef val_t (*NEW_ADebugTypeExpr_parser___parser_prod___ADebugTypeExpr___init_adebugtypeexpr_t)(val_t p0, val_t p1, val_t p2, val_t p3);
+val_t NEW_ADebugTypeExpr_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_ADebugTypeExpr_parser___parser_nodes___ANode___init_t)(void);
+void INIT_ATTRIBUTES__parser___parser_nodes___AListExprs(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AListExprs_t)(val_t p0);
+val_t NEW_parser___parser_nodes___AListExprs(void);
+void CHECKNEW_parser___parser_nodes___AListExprs(val_t p0);
+typedef void (*CHECKNEW_parser___parser_nodes___AListExprs_t)(val_t p0);
+val_t NEW_AListExprs_parser___parser_prod___AListExprs___empty_init(void);
+typedef val_t (*NEW_AListExprs_parser___parser_prod___AListExprs___empty_init_t)(void);
+val_t NEW_AListExprs_parser___parser_prod___AListExprs___init_alistexprs(val_t p0);
+typedef val_t (*NEW_AListExprs_parser___parser_prod___AListExprs___init_alistexprs_t)(val_t p0);
+val_t NEW_AListExprs_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AListExprs_parser___parser_nodes___ANode___init_t)(void);
+void INIT_ATTRIBUTES__parser___parser_nodes___AParExprs(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AParExprs_t)(val_t p0);
+val_t NEW_parser___parser_nodes___AParExprs(void);
+void CHECKNEW_parser___parser_nodes___AParExprs(val_t p0);
+typedef void (*CHECKNEW_parser___parser_nodes___AParExprs_t)(val_t p0);
+val_t NEW_AParExprs_parser___parser_prod___AParExprs___empty_init(void);
+typedef val_t (*NEW_AParExprs_parser___parser_prod___AParExprs___empty_init_t)(void);
+val_t NEW_AParExprs_parser___parser_prod___AParExprs___init_aparexprs(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_AParExprs_parser___parser_prod___AParExprs___init_aparexprs_t)(val_t p0, val_t p1, val_t p2);
+val_t NEW_AParExprs_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AParExprs_parser___parser_nodes___ANode___init_t)(void);
+void INIT_ATTRIBUTES__parser___parser_nodes___ABraExprs(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ABraExprs_t)(val_t p0);
+val_t NEW_parser___parser_nodes___ABraExprs(void);
+void CHECKNEW_parser___parser_nodes___ABraExprs(val_t p0);
+typedef void (*CHECKNEW_parser___parser_nodes___ABraExprs_t)(val_t p0);
+val_t NEW_ABraExprs_parser___parser_prod___ABraExprs___empty_init(void);
+typedef val_t (*NEW_ABraExprs_parser___parser_prod___ABraExprs___empty_init_t)(void);
+val_t NEW_ABraExprs_parser___parser_prod___ABraExprs___init_abraexprs(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_ABraExprs_parser___parser_prod___ABraExprs___init_abraexprs_t)(val_t p0, val_t p1, val_t p2);
+val_t NEW_ABraExprs_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_ABraExprs_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___APlusAssignOp(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___APlusAssignOp_t)(val_t p0);
 val_t NEW_parser___parser_nodes___APlusAssignOp(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___APlusAssignOp = "check new APlusAssignOp";
 void CHECKNEW_parser___parser_nodes___APlusAssignOp(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___APlusAssignOp_t)(val_t p0);
-static const char * const LOCATE_NEW_APlusAssignOp_parser___parser_prod___APlusAssignOp___empty_init = "new APlusAssignOp parser_prod::APlusAssignOp::empty_init";
 val_t NEW_APlusAssignOp_parser___parser_prod___APlusAssignOp___empty_init(void);
 typedef val_t (*NEW_APlusAssignOp_parser___parser_prod___APlusAssignOp___empty_init_t)(void);
-static const char * const LOCATE_NEW_APlusAssignOp_parser___parser_prod___APlusAssignOp___init_aplusassignop = "new APlusAssignOp parser_prod::APlusAssignOp::init_aplusassignop";
 val_t NEW_APlusAssignOp_parser___parser_prod___APlusAssignOp___init_aplusassignop(val_t p0);
 typedef val_t (*NEW_APlusAssignOp_parser___parser_prod___APlusAssignOp___init_aplusassignop_t)(val_t p0);
-static const char * const LOCATE_NEW_APlusAssignOp_parser___parser_nodes___ANode___init = "new APlusAssignOp parser_nodes::ANode::init";
-val_t NEW_APlusAssignOp_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_APlusAssignOp_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AMinusAssignOp = "init var of AMinusAssignOp";
+val_t NEW_APlusAssignOp_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_APlusAssignOp_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AMinusAssignOp(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AMinusAssignOp_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AMinusAssignOp(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AMinusAssignOp = "check new AMinusAssignOp";
 void CHECKNEW_parser___parser_nodes___AMinusAssignOp(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AMinusAssignOp_t)(val_t p0);
-static const char * const LOCATE_NEW_AMinusAssignOp_parser___parser_prod___AMinusAssignOp___empty_init = "new AMinusAssignOp parser_prod::AMinusAssignOp::empty_init";
 val_t NEW_AMinusAssignOp_parser___parser_prod___AMinusAssignOp___empty_init(void);
 typedef val_t (*NEW_AMinusAssignOp_parser___parser_prod___AMinusAssignOp___empty_init_t)(void);
-static const char * const LOCATE_NEW_AMinusAssignOp_parser___parser_prod___AMinusAssignOp___init_aminusassignop = "new AMinusAssignOp parser_prod::AMinusAssignOp::init_aminusassignop";
 val_t NEW_AMinusAssignOp_parser___parser_prod___AMinusAssignOp___init_aminusassignop(val_t p0);
 typedef val_t (*NEW_AMinusAssignOp_parser___parser_prod___AMinusAssignOp___init_aminusassignop_t)(val_t p0);
-static const char * const LOCATE_NEW_AMinusAssignOp_parser___parser_nodes___ANode___init = "new AMinusAssignOp parser_nodes::ANode::init";
-val_t NEW_AMinusAssignOp_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AMinusAssignOp_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AClosureDef = "init var of AClosureDef";
+val_t NEW_AMinusAssignOp_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AMinusAssignOp_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AClosureDef(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AClosureDef_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AClosureDef(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AClosureDef = "check new AClosureDef";
 void CHECKNEW_parser___parser_nodes___AClosureDef(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AClosureDef_t)(val_t p0);
-static const char * const LOCATE_NEW_AClosureDef_parser___parser_prod___AClosureDef___empty_init = "new AClosureDef parser_prod::AClosureDef::empty_init";
 val_t NEW_AClosureDef_parser___parser_prod___AClosureDef___empty_init(void);
 typedef val_t (*NEW_AClosureDef_parser___parser_prod___AClosureDef___empty_init_t)(void);
-static const char * const LOCATE_NEW_AClosureDef_parser___parser_prod___AClosureDef___init_aclosuredef = "new AClosureDef parser_prod::AClosureDef::init_aclosuredef";
 val_t NEW_AClosureDef_parser___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___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___parser_nodes___ANode___init = "new AClosureDef parser_nodes::ANode::init";
-val_t NEW_AClosureDef_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AClosureDef_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AClosureId = "init var of AClosureId";
-void INIT_ATTRIBUTES__parser___parser_nodes___AClosureId(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AClosureId_t)(val_t p0);
-val_t NEW_parser___parser_nodes___AClosureId(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AClosureId = "check new AClosureId";
-void CHECKNEW_parser___parser_nodes___AClosureId(val_t p0);
-typedef void (*CHECKNEW_parser___parser_nodes___AClosureId_t)(val_t p0);
-static const char * const LOCATE_NEW_AClosureId_parser___parser_nodes___ANode___init = "new AClosureId parser_nodes::ANode::init";
-val_t NEW_AClosureId_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AClosureId_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ASimpleClosureId = "init var of ASimpleClosureId";
+val_t NEW_AClosureDef_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AClosureDef_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___ASimpleClosureId(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ASimpleClosureId_t)(val_t p0);
 val_t NEW_parser___parser_nodes___ASimpleClosureId(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___ASimpleClosureId = "check new ASimpleClosureId";
 void CHECKNEW_parser___parser_nodes___ASimpleClosureId(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___ASimpleClosureId_t)(val_t p0);
-static const char * const LOCATE_NEW_ASimpleClosureId_parser___parser_prod___ASimpleClosureId___empty_init = "new ASimpleClosureId parser_prod::ASimpleClosureId::empty_init";
 val_t NEW_ASimpleClosureId_parser___parser_prod___ASimpleClosureId___empty_init(void);
 typedef val_t (*NEW_ASimpleClosureId_parser___parser_prod___ASimpleClosureId___empty_init_t)(void);
-static const char * const LOCATE_NEW_ASimpleClosureId_parser___parser_prod___ASimpleClosureId___init_asimpleclosureid = "new ASimpleClosureId parser_prod::ASimpleClosureId::init_asimpleclosureid";
 val_t NEW_ASimpleClosureId_parser___parser_prod___ASimpleClosureId___init_asimpleclosureid(val_t p0);
 typedef val_t (*NEW_ASimpleClosureId_parser___parser_prod___ASimpleClosureId___init_asimpleclosureid_t)(val_t p0);
-static const char * const LOCATE_NEW_ASimpleClosureId_parser___parser_nodes___ANode___init = "new ASimpleClosureId parser_nodes::ANode::init";
-val_t NEW_ASimpleClosureId_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ASimpleClosureId_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ABreakClosureId = "init var of ABreakClosureId";
+val_t NEW_ASimpleClosureId_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_ASimpleClosureId_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___ABreakClosureId(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ABreakClosureId_t)(val_t p0);
 val_t NEW_parser___parser_nodes___ABreakClosureId(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___ABreakClosureId = "check new ABreakClosureId";
 void CHECKNEW_parser___parser_nodes___ABreakClosureId(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___ABreakClosureId_t)(val_t p0);
-static const char * const LOCATE_NEW_ABreakClosureId_parser___parser_prod___ABreakClosureId___empty_init = "new ABreakClosureId parser_prod::ABreakClosureId::empty_init";
 val_t NEW_ABreakClosureId_parser___parser_prod___ABreakClosureId___empty_init(void);
 typedef val_t (*NEW_ABreakClosureId_parser___parser_prod___ABreakClosureId___empty_init_t)(void);
-static const char * const LOCATE_NEW_ABreakClosureId_parser___parser_prod___ABreakClosureId___init_abreakclosureid = "new ABreakClosureId parser_prod::ABreakClosureId::init_abreakclosureid";
 val_t NEW_ABreakClosureId_parser___parser_prod___ABreakClosureId___init_abreakclosureid(val_t p0);
 typedef val_t (*NEW_ABreakClosureId_parser___parser_prod___ABreakClosureId___init_abreakclosureid_t)(val_t p0);
-static const char * const LOCATE_NEW_ABreakClosureId_parser___parser_nodes___ANode___init = "new ABreakClosureId parser_nodes::ANode::init";
-val_t NEW_ABreakClosureId_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ABreakClosureId_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AModuleName = "init var of AModuleName";
+val_t NEW_ABreakClosureId_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_ABreakClosureId_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AModuleName(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AModuleName_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AModuleName(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AModuleName = "check new AModuleName";
 void CHECKNEW_parser___parser_nodes___AModuleName(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AModuleName_t)(val_t p0);
-static const char * const LOCATE_NEW_AModuleName_parser___parser_prod___AModuleName___empty_init = "new AModuleName parser_prod::AModuleName::empty_init";
 val_t NEW_AModuleName_parser___parser_prod___AModuleName___empty_init(void);
 typedef val_t (*NEW_AModuleName_parser___parser_prod___AModuleName___empty_init_t)(void);
-static const char * const LOCATE_NEW_AModuleName_parser___parser_prod___AModuleName___init_amodulename = "new AModuleName parser_prod::AModuleName::init_amodulename";
 val_t NEW_AModuleName_parser___parser_prod___AModuleName___init_amodulename(val_t p0, val_t p1, val_t p2);
 typedef val_t (*NEW_AModuleName_parser___parser_prod___AModuleName___init_amodulename_t)(val_t p0, val_t p1, val_t p2);
-static const char * const LOCATE_NEW_AModuleName_parser___parser_nodes___ANode___init = "new AModuleName parser_nodes::ANode::init";
-val_t NEW_AModuleName_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AModuleName_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AQualified = "init var of AQualified";
+val_t NEW_AModuleName_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AModuleName_parser___parser_nodes___ANode___init_t)(void);
+void INIT_ATTRIBUTES__parser___parser_nodes___AInLanguage(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AInLanguage_t)(val_t p0);
+val_t NEW_parser___parser_nodes___AInLanguage(void);
+void CHECKNEW_parser___parser_nodes___AInLanguage(val_t p0);
+typedef void (*CHECKNEW_parser___parser_nodes___AInLanguage_t)(val_t p0);
+val_t NEW_AInLanguage_parser___parser_prod___AInLanguage___empty_init(void);
+typedef val_t (*NEW_AInLanguage_parser___parser_prod___AInLanguage___empty_init_t)(void);
+val_t NEW_AInLanguage_parser___parser_prod___AInLanguage___init_ainlanguage(val_t p0, val_t p1);
+typedef val_t (*NEW_AInLanguage_parser___parser_prod___AInLanguage___init_ainlanguage_t)(val_t p0, val_t p1);
+val_t NEW_AInLanguage_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AInLanguage_parser___parser_nodes___ANode___init_t)(void);
+void INIT_ATTRIBUTES__parser___parser_nodes___AExternCodeBlock(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AExternCodeBlock_t)(val_t p0);
+val_t NEW_parser___parser_nodes___AExternCodeBlock(void);
+void CHECKNEW_parser___parser_nodes___AExternCodeBlock(val_t p0);
+typedef void (*CHECKNEW_parser___parser_nodes___AExternCodeBlock_t)(val_t p0);
+val_t NEW_AExternCodeBlock_parser___parser_prod___AExternCodeBlock___empty_init(void);
+typedef val_t (*NEW_AExternCodeBlock_parser___parser_prod___AExternCodeBlock___empty_init_t)(void);
+val_t NEW_AExternCodeBlock_parser___parser_prod___AExternCodeBlock___init_aexterncodeblock(val_t p0, val_t p1);
+typedef val_t (*NEW_AExternCodeBlock_parser___parser_prod___AExternCodeBlock___init_aexterncodeblock_t)(val_t p0, val_t p1);
+val_t NEW_AExternCodeBlock_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AExternCodeBlock_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___AQualified(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AQualified_t)(val_t p0);
 val_t NEW_parser___parser_nodes___AQualified(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___AQualified = "check new AQualified";
 void CHECKNEW_parser___parser_nodes___AQualified(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___AQualified_t)(val_t p0);
-static const char * const LOCATE_NEW_AQualified_parser___parser_prod___AQualified___empty_init = "new AQualified parser_prod::AQualified::empty_init";
 val_t NEW_AQualified_parser___parser_prod___AQualified___empty_init(void);
 typedef val_t (*NEW_AQualified_parser___parser_prod___AQualified___empty_init_t)(void);
-static const char * const LOCATE_NEW_AQualified_parser___parser_prod___AQualified___init_aqualified = "new AQualified parser_prod::AQualified::init_aqualified";
 val_t NEW_AQualified_parser___parser_prod___AQualified___init_aqualified(val_t p0, val_t p1);
 typedef val_t (*NEW_AQualified_parser___parser_prod___AQualified___init_aqualified_t)(val_t p0, val_t p1);
-static const char * const LOCATE_NEW_AQualified_parser___parser_nodes___ANode___init = "new AQualified parser_nodes::ANode::init";
-val_t NEW_AQualified_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AQualified_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ADoc = "init var of ADoc";
+val_t NEW_AQualified_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AQualified_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___ADoc(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ADoc_t)(val_t p0);
 val_t NEW_parser___parser_nodes___ADoc(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___ADoc = "check new ADoc";
 void CHECKNEW_parser___parser_nodes___ADoc(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___ADoc_t)(val_t p0);
-static const char * const LOCATE_NEW_ADoc_parser___parser_prod___ADoc___empty_init = "new ADoc parser_prod::ADoc::empty_init";
 val_t NEW_ADoc_parser___parser_prod___ADoc___empty_init(void);
 typedef val_t (*NEW_ADoc_parser___parser_prod___ADoc___empty_init_t)(void);
-static const char * const LOCATE_NEW_ADoc_parser___parser_prod___ADoc___init_adoc = "new ADoc parser_prod::ADoc::init_adoc";
 val_t NEW_ADoc_parser___parser_prod___ADoc___init_adoc(val_t p0);
 typedef val_t (*NEW_ADoc_parser___parser_prod___ADoc___init_adoc_t)(val_t p0);
-static const char * const LOCATE_NEW_ADoc_parser___parser_nodes___ANode___init = "new ADoc parser_nodes::ANode::init";
-val_t NEW_ADoc_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ADoc_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___Start = "init var of Start";
+val_t NEW_ADoc_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_ADoc_parser___parser_nodes___ANode___init_t)(void);
+void INIT_ATTRIBUTES__parser___parser_nodes___AAnnotations(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AAnnotations_t)(val_t p0);
+val_t NEW_parser___parser_nodes___AAnnotations(void);
+void CHECKNEW_parser___parser_nodes___AAnnotations(val_t p0);
+typedef void (*CHECKNEW_parser___parser_nodes___AAnnotations_t)(val_t p0);
+val_t NEW_AAnnotations_parser___parser_prod___AAnnotations___empty_init(void);
+typedef val_t (*NEW_AAnnotations_parser___parser_prod___AAnnotations___empty_init_t)(void);
+val_t NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(val_t p0, val_t p1, val_t p2, val_t p3);
+typedef val_t (*NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations_t)(val_t p0, val_t p1, val_t p2, val_t p3);
+val_t NEW_AAnnotations_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AAnnotations_parser___parser_nodes___ANode___init_t)(void);
+void INIT_ATTRIBUTES__parser___parser_nodes___AAnnotation(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AAnnotation_t)(val_t p0);
+val_t NEW_parser___parser_nodes___AAnnotation(void);
+void CHECKNEW_parser___parser_nodes___AAnnotation(val_t p0);
+typedef void (*CHECKNEW_parser___parser_nodes___AAnnotation_t)(val_t p0);
+val_t NEW_AAnnotation_parser___parser_prod___AAnnotation___empty_init(void);
+typedef val_t (*NEW_AAnnotation_parser___parser_prod___AAnnotation___empty_init_t)(void);
+val_t NEW_AAnnotation_parser___parser_prod___AAnnotation___init_aannotation(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
+typedef val_t (*NEW_AAnnotation_parser___parser_prod___AAnnotation___init_aannotation_t)(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
+val_t NEW_AAnnotation_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AAnnotation_parser___parser_nodes___ANode___init_t)(void);
+void INIT_ATTRIBUTES__parser___parser_nodes___ATypeAtArg(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___ATypeAtArg_t)(val_t p0);
+val_t NEW_parser___parser_nodes___ATypeAtArg(void);
+void CHECKNEW_parser___parser_nodes___ATypeAtArg(val_t p0);
+typedef void (*CHECKNEW_parser___parser_nodes___ATypeAtArg_t)(val_t p0);
+val_t NEW_ATypeAtArg_parser___parser_prod___ATypeAtArg___empty_init(void);
+typedef val_t (*NEW_ATypeAtArg_parser___parser_prod___ATypeAtArg___empty_init_t)(void);
+val_t NEW_ATypeAtArg_parser___parser_prod___ATypeAtArg___init_atypeatarg(val_t p0);
+typedef val_t (*NEW_ATypeAtArg_parser___parser_prod___ATypeAtArg___init_atypeatarg_t)(val_t p0);
+val_t NEW_ATypeAtArg_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_ATypeAtArg_parser___parser_nodes___ANode___init_t)(void);
+void INIT_ATTRIBUTES__parser___parser_nodes___AExprAtArg(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AExprAtArg_t)(val_t p0);
+val_t NEW_parser___parser_nodes___AExprAtArg(void);
+void CHECKNEW_parser___parser_nodes___AExprAtArg(val_t p0);
+typedef void (*CHECKNEW_parser___parser_nodes___AExprAtArg_t)(val_t p0);
+val_t NEW_AExprAtArg_parser___parser_prod___AExprAtArg___empty_init(void);
+typedef val_t (*NEW_AExprAtArg_parser___parser_prod___AExprAtArg___empty_init_t)(void);
+val_t NEW_AExprAtArg_parser___parser_prod___AExprAtArg___init_aexpratarg(val_t p0);
+typedef val_t (*NEW_AExprAtArg_parser___parser_prod___AExprAtArg___init_aexpratarg_t)(val_t p0);
+val_t NEW_AExprAtArg_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AExprAtArg_parser___parser_nodes___ANode___init_t)(void);
+void INIT_ATTRIBUTES__parser___parser_nodes___AAtAtArg(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AAtAtArg_t)(val_t p0);
+val_t NEW_parser___parser_nodes___AAtAtArg(void);
+void CHECKNEW_parser___parser_nodes___AAtAtArg(val_t p0);
+typedef void (*CHECKNEW_parser___parser_nodes___AAtAtArg_t)(val_t p0);
+val_t NEW_AAtAtArg_parser___parser_prod___AAtAtArg___empty_init(void);
+typedef val_t (*NEW_AAtAtArg_parser___parser_prod___AAtAtArg___empty_init_t)(void);
+val_t NEW_AAtAtArg_parser___parser_prod___AAtAtArg___init_aatatarg(val_t p0);
+typedef val_t (*NEW_AAtAtArg_parser___parser_prod___AAtAtArg___init_aatatarg_t)(val_t p0);
+val_t NEW_AAtAtArg_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AAtAtArg_parser___parser_nodes___ANode___init_t)(void);
+void INIT_ATTRIBUTES__parser___parser_nodes___AIdAtid(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AIdAtid_t)(val_t p0);
+val_t NEW_parser___parser_nodes___AIdAtid(void);
+void CHECKNEW_parser___parser_nodes___AIdAtid(val_t p0);
+typedef void (*CHECKNEW_parser___parser_nodes___AIdAtid_t)(val_t p0);
+val_t NEW_AIdAtid_parser___parser_prod___AIdAtid___empty_init(void);
+typedef val_t (*NEW_AIdAtid_parser___parser_prod___AIdAtid___empty_init_t)(void);
+val_t NEW_AIdAtid_parser___parser_prod___AIdAtid___init_aidatid(val_t p0);
+typedef val_t (*NEW_AIdAtid_parser___parser_prod___AIdAtid___init_aidatid_t)(val_t p0);
+val_t NEW_AIdAtid_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AIdAtid_parser___parser_nodes___ANode___init_t)(void);
+void INIT_ATTRIBUTES__parser___parser_nodes___AKwexternAtid(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AKwexternAtid_t)(val_t p0);
+val_t NEW_parser___parser_nodes___AKwexternAtid(void);
+void CHECKNEW_parser___parser_nodes___AKwexternAtid(val_t p0);
+typedef void (*CHECKNEW_parser___parser_nodes___AKwexternAtid_t)(val_t p0);
+val_t NEW_AKwexternAtid_parser___parser_prod___AKwexternAtid___empty_init(void);
+typedef val_t (*NEW_AKwexternAtid_parser___parser_prod___AKwexternAtid___empty_init_t)(void);
+val_t NEW_AKwexternAtid_parser___parser_prod___AKwexternAtid___init_akwexternatid(val_t p0);
+typedef val_t (*NEW_AKwexternAtid_parser___parser_prod___AKwexternAtid___init_akwexternatid_t)(val_t p0);
+val_t NEW_AKwexternAtid_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AKwexternAtid_parser___parser_nodes___ANode___init_t)(void);
+void INIT_ATTRIBUTES__parser___parser_nodes___AKwinternAtid(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AKwinternAtid_t)(val_t p0);
+val_t NEW_parser___parser_nodes___AKwinternAtid(void);
+void CHECKNEW_parser___parser_nodes___AKwinternAtid(val_t p0);
+typedef void (*CHECKNEW_parser___parser_nodes___AKwinternAtid_t)(val_t p0);
+val_t NEW_AKwinternAtid_parser___parser_prod___AKwinternAtid___empty_init(void);
+typedef val_t (*NEW_AKwinternAtid_parser___parser_prod___AKwinternAtid___empty_init_t)(void);
+val_t NEW_AKwinternAtid_parser___parser_prod___AKwinternAtid___init_akwinternatid(val_t p0);
+typedef val_t (*NEW_AKwinternAtid_parser___parser_prod___AKwinternAtid___init_akwinternatid_t)(val_t p0);
+val_t NEW_AKwinternAtid_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AKwinternAtid_parser___parser_nodes___ANode___init_t)(void);
+void INIT_ATTRIBUTES__parser___parser_nodes___AKwreadableAtid(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AKwreadableAtid_t)(val_t p0);
+val_t NEW_parser___parser_nodes___AKwreadableAtid(void);
+void CHECKNEW_parser___parser_nodes___AKwreadableAtid(val_t p0);
+typedef void (*CHECKNEW_parser___parser_nodes___AKwreadableAtid_t)(val_t p0);
+val_t NEW_AKwreadableAtid_parser___parser_prod___AKwreadableAtid___empty_init(void);
+typedef val_t (*NEW_AKwreadableAtid_parser___parser_prod___AKwreadableAtid___empty_init_t)(void);
+val_t NEW_AKwreadableAtid_parser___parser_prod___AKwreadableAtid___init_akwreadableatid(val_t p0);
+typedef val_t (*NEW_AKwreadableAtid_parser___parser_prod___AKwreadableAtid___init_akwreadableatid_t)(val_t p0);
+val_t NEW_AKwreadableAtid_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AKwreadableAtid_parser___parser_nodes___ANode___init_t)(void);
+void INIT_ATTRIBUTES__parser___parser_nodes___AKwwritableAtid(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AKwwritableAtid_t)(val_t p0);
+val_t NEW_parser___parser_nodes___AKwwritableAtid(void);
+void CHECKNEW_parser___parser_nodes___AKwwritableAtid(val_t p0);
+typedef void (*CHECKNEW_parser___parser_nodes___AKwwritableAtid_t)(val_t p0);
+val_t NEW_AKwwritableAtid_parser___parser_prod___AKwwritableAtid___empty_init(void);
+typedef val_t (*NEW_AKwwritableAtid_parser___parser_prod___AKwwritableAtid___empty_init_t)(void);
+val_t NEW_AKwwritableAtid_parser___parser_prod___AKwwritableAtid___init_akwwritableatid(val_t p0);
+typedef val_t (*NEW_AKwwritableAtid_parser___parser_prod___AKwwritableAtid___init_akwwritableatid_t)(val_t p0);
+val_t NEW_AKwwritableAtid_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AKwwritableAtid_parser___parser_nodes___ANode___init_t)(void);
+void INIT_ATTRIBUTES__parser___parser_nodes___AKwimportAtid(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___AKwimportAtid_t)(val_t p0);
+val_t NEW_parser___parser_nodes___AKwimportAtid(void);
+void CHECKNEW_parser___parser_nodes___AKwimportAtid(val_t p0);
+typedef void (*CHECKNEW_parser___parser_nodes___AKwimportAtid_t)(val_t p0);
+val_t NEW_AKwimportAtid_parser___parser_prod___AKwimportAtid___empty_init(void);
+typedef val_t (*NEW_AKwimportAtid_parser___parser_prod___AKwimportAtid___empty_init_t)(void);
+val_t NEW_AKwimportAtid_parser___parser_prod___AKwimportAtid___init_akwimportatid(val_t p0);
+typedef val_t (*NEW_AKwimportAtid_parser___parser_prod___AKwimportAtid___init_akwimportatid_t)(val_t p0);
+val_t NEW_AKwimportAtid_parser___parser_nodes___ANode___init(void);
+typedef val_t (*NEW_AKwimportAtid_parser___parser_nodes___ANode___init_t)(void);
 void INIT_ATTRIBUTES__parser___parser_nodes___Start(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___parser_nodes___Start_t)(val_t p0);
 val_t NEW_parser___parser_nodes___Start(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_nodes___Start = "check new Start";
 void CHECKNEW_parser___parser_nodes___Start(val_t p0);
 typedef void (*CHECKNEW_parser___parser_nodes___Start_t)(val_t p0);
-static const char * const LOCATE_NEW_Start_parser___parser_nodes___ANode___init = "new Start parser_nodes::ANode::init";
-val_t NEW_Start_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_Start_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_NEW_Start_parser___parser_prod___Start___init = "new Start parser_prod::Start::init";
-val_t NEW_Start_parser___parser_prod___Start___init(val_t p0, val_t p1);
-typedef val_t (*NEW_Start_parser___parser_prod___Start___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___lexer___Lexer = "init var of Lexer";
+val_t NEW_Start_parser___parser_nodes___Start___init(val_t p0, val_t p1);
+typedef val_t (*NEW_Start_parser___parser_nodes___Start___init_t)(val_t p0, val_t p1);
 void INIT_ATTRIBUTES__parser___lexer___Lexer(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___lexer___Lexer_t)(val_t p0);
 val_t NEW_parser___lexer___Lexer(void);
-static const char * const LOCATE_CHECKNEW_parser___lexer___Lexer = "check new Lexer";
 void CHECKNEW_parser___lexer___Lexer(val_t p0);
 typedef void (*CHECKNEW_parser___lexer___Lexer_t)(val_t p0);
-static const char * const LOCATE_NEW_Lexer_parser___lexer___Lexer___init = "new Lexer lexer::Lexer::init";
 val_t NEW_Lexer_parser___lexer___Lexer___init(val_t p0);
 typedef val_t (*NEW_Lexer_parser___lexer___Lexer___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___parser_prod___Visitor = "init var of Visitor";
-void INIT_ATTRIBUTES__parser___parser_prod___Visitor(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___parser_prod___Visitor_t)(val_t p0);
-val_t NEW_parser___parser_prod___Visitor(void);
-static const char * const LOCATE_CHECKNEW_parser___parser_prod___Visitor = "check new Visitor";
-void CHECKNEW_parser___parser_prod___Visitor(val_t p0);
-typedef void (*CHECKNEW_parser___parser_prod___Visitor_t)(val_t p0);
-static const char * const LOCATE_NEW_Visitor_parser___parser_prod___Visitor___init = "new Visitor parser_prod::Visitor::init";
-val_t NEW_Visitor_parser___parser_prod___Visitor___init(void);
-typedef val_t (*NEW_Visitor_parser___parser_prod___Visitor___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___State = "init var of State";
 void INIT_ATTRIBUTES__parser___State(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___State_t)(val_t p0);
 val_t NEW_parser___State(void);
-static const char * const LOCATE_CHECKNEW_parser___State = "check new State";
 void CHECKNEW_parser___State(val_t p0);
 typedef void (*CHECKNEW_parser___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___Parser = "init var of Parser";
 void INIT_ATTRIBUTES__parser___Parser(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___Parser_t)(val_t p0);
 val_t NEW_parser___Parser(void);
-static const char * const LOCATE_CHECKNEW_parser___Parser = "check new Parser";
 void CHECKNEW_parser___Parser(val_t p0);
 typedef void (*CHECKNEW_parser___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__parser___ComputeProdLocationVisitor = "init var of ComputeProdLocationVisitor";
 void INIT_ATTRIBUTES__parser___ComputeProdLocationVisitor(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ComputeProdLocationVisitor_t)(val_t p0);
 val_t NEW_parser___ComputeProdLocationVisitor(void);
-static const char * const LOCATE_CHECKNEW_parser___ComputeProdLocationVisitor = "check new ComputeProdLocationVisitor";
 void CHECKNEW_parser___ComputeProdLocationVisitor(val_t p0);
 typedef void (*CHECKNEW_parser___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__parser___ReduceAction0 = "init var of ReduceAction0";
 void INIT_ATTRIBUTES__parser___ReduceAction0(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction0_t)(val_t p0);
 val_t NEW_parser___ReduceAction0(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction0 = "check new ReduceAction0";
 void CHECKNEW_parser___ReduceAction0(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction0_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction0_parser___ReduceAction___init = "new ReduceAction0 parser::ReduceAction::init";
 val_t NEW_ReduceAction0_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction0_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1 = "init var of ReduceAction1";
 void INIT_ATTRIBUTES__parser___ReduceAction1(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction1_t)(val_t p0);
 val_t NEW_parser___ReduceAction1(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction1 = "check new ReduceAction1";
 void CHECKNEW_parser___ReduceAction1(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction1_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction1_parser___ReduceAction___init = "new ReduceAction1 parser::ReduceAction::init";
 val_t NEW_ReduceAction1_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction1_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction2 = "init var of ReduceAction2";
 void INIT_ATTRIBUTES__parser___ReduceAction2(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction2_t)(val_t p0);
 val_t NEW_parser___ReduceAction2(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction2 = "check new ReduceAction2";
 void CHECKNEW_parser___ReduceAction2(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction2_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction2_parser___ReduceAction___init = "new ReduceAction2 parser::ReduceAction::init";
 val_t NEW_ReduceAction2_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction2_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction3 = "init var of ReduceAction3";
 void INIT_ATTRIBUTES__parser___ReduceAction3(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction3_t)(val_t p0);
 val_t NEW_parser___ReduceAction3(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction3 = "check new ReduceAction3";
 void CHECKNEW_parser___ReduceAction3(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction3_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction3_parser___ReduceAction___init = "new ReduceAction3 parser::ReduceAction::init";
 val_t NEW_ReduceAction3_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction3_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction4 = "init var of ReduceAction4";
 void INIT_ATTRIBUTES__parser___ReduceAction4(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction4_t)(val_t p0);
 val_t NEW_parser___ReduceAction4(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction4 = "check new ReduceAction4";
 void CHECKNEW_parser___ReduceAction4(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction4_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction4_parser___ReduceAction___init = "new ReduceAction4 parser::ReduceAction::init";
 val_t NEW_ReduceAction4_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction4_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction5 = "init var of ReduceAction5";
 void INIT_ATTRIBUTES__parser___ReduceAction5(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction5_t)(val_t p0);
 val_t NEW_parser___ReduceAction5(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction5 = "check new ReduceAction5";
 void CHECKNEW_parser___ReduceAction5(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction5_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction5_parser___ReduceAction___init = "new ReduceAction5 parser::ReduceAction::init";
 val_t NEW_ReduceAction5_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction5_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction6 = "init var of ReduceAction6";
 void INIT_ATTRIBUTES__parser___ReduceAction6(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction6_t)(val_t p0);
 val_t NEW_parser___ReduceAction6(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction6 = "check new ReduceAction6";
 void CHECKNEW_parser___ReduceAction6(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction6_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction6_parser___ReduceAction___init = "new ReduceAction6 parser::ReduceAction::init";
 val_t NEW_ReduceAction6_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction6_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction7 = "init var of ReduceAction7";
 void INIT_ATTRIBUTES__parser___ReduceAction7(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction7_t)(val_t p0);
 val_t NEW_parser___ReduceAction7(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction7 = "check new ReduceAction7";
 void CHECKNEW_parser___ReduceAction7(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction7_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction7_parser___ReduceAction___init = "new ReduceAction7 parser::ReduceAction::init";
 val_t NEW_ReduceAction7_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction7_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction8 = "init var of ReduceAction8";
 void INIT_ATTRIBUTES__parser___ReduceAction8(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction8_t)(val_t p0);
 val_t NEW_parser___ReduceAction8(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction8 = "check new ReduceAction8";
 void CHECKNEW_parser___ReduceAction8(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction8_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction8_parser___ReduceAction___init = "new ReduceAction8 parser::ReduceAction::init";
 val_t NEW_ReduceAction8_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction8_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction9 = "init var of ReduceAction9";
 void INIT_ATTRIBUTES__parser___ReduceAction9(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction9_t)(val_t p0);
 val_t NEW_parser___ReduceAction9(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction9 = "check new ReduceAction9";
 void CHECKNEW_parser___ReduceAction9(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction9_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction9_parser___ReduceAction___init = "new ReduceAction9 parser::ReduceAction::init";
 val_t NEW_ReduceAction9_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction9_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction10 = "init var of ReduceAction10";
 void INIT_ATTRIBUTES__parser___ReduceAction10(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction10_t)(val_t p0);
 val_t NEW_parser___ReduceAction10(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction10 = "check new ReduceAction10";
 void CHECKNEW_parser___ReduceAction10(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction10_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction10_parser___ReduceAction___init = "new ReduceAction10 parser::ReduceAction::init";
 val_t NEW_ReduceAction10_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction10_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction11 = "init var of ReduceAction11";
 void INIT_ATTRIBUTES__parser___ReduceAction11(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction11_t)(val_t p0);
 val_t NEW_parser___ReduceAction11(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction11 = "check new ReduceAction11";
 void CHECKNEW_parser___ReduceAction11(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction11_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction11_parser___ReduceAction___init = "new ReduceAction11 parser::ReduceAction::init";
 val_t NEW_ReduceAction11_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction11_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction12 = "init var of ReduceAction12";
 void INIT_ATTRIBUTES__parser___ReduceAction12(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction12_t)(val_t p0);
 val_t NEW_parser___ReduceAction12(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction12 = "check new ReduceAction12";
 void CHECKNEW_parser___ReduceAction12(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction12_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction12_parser___ReduceAction___init = "new ReduceAction12 parser::ReduceAction::init";
 val_t NEW_ReduceAction12_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction12_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction13 = "init var of ReduceAction13";
 void INIT_ATTRIBUTES__parser___ReduceAction13(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction13_t)(val_t p0);
 val_t NEW_parser___ReduceAction13(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction13 = "check new ReduceAction13";
 void CHECKNEW_parser___ReduceAction13(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction13_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction13_parser___ReduceAction___init = "new ReduceAction13 parser::ReduceAction::init";
 val_t NEW_ReduceAction13_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction13_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction14 = "init var of ReduceAction14";
 void INIT_ATTRIBUTES__parser___ReduceAction14(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction14_t)(val_t p0);
 val_t NEW_parser___ReduceAction14(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction14 = "check new ReduceAction14";
 void CHECKNEW_parser___ReduceAction14(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction14_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction14_parser___ReduceAction___init = "new ReduceAction14 parser::ReduceAction::init";
 val_t NEW_ReduceAction14_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction14_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction15 = "init var of ReduceAction15";
 void INIT_ATTRIBUTES__parser___ReduceAction15(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction15_t)(val_t p0);
 val_t NEW_parser___ReduceAction15(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction15 = "check new ReduceAction15";
 void CHECKNEW_parser___ReduceAction15(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction15_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction15_parser___ReduceAction___init = "new ReduceAction15 parser::ReduceAction::init";
 val_t NEW_ReduceAction15_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction15_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction16 = "init var of ReduceAction16";
 void INIT_ATTRIBUTES__parser___ReduceAction16(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction16_t)(val_t p0);
 val_t NEW_parser___ReduceAction16(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction16 = "check new ReduceAction16";
 void CHECKNEW_parser___ReduceAction16(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction16_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction16_parser___ReduceAction___init = "new ReduceAction16 parser::ReduceAction::init";
 val_t NEW_ReduceAction16_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction16_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction17 = "init var of ReduceAction17";
 void INIT_ATTRIBUTES__parser___ReduceAction17(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction17_t)(val_t p0);
 val_t NEW_parser___ReduceAction17(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction17 = "check new ReduceAction17";
 void CHECKNEW_parser___ReduceAction17(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction17_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction17_parser___ReduceAction___init = "new ReduceAction17 parser::ReduceAction::init";
 val_t NEW_ReduceAction17_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction17_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction18 = "init var of ReduceAction18";
 void INIT_ATTRIBUTES__parser___ReduceAction18(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction18_t)(val_t p0);
 val_t NEW_parser___ReduceAction18(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction18 = "check new ReduceAction18";
 void CHECKNEW_parser___ReduceAction18(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction18_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction18_parser___ReduceAction___init = "new ReduceAction18 parser::ReduceAction::init";
 val_t NEW_ReduceAction18_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction18_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction19 = "init var of ReduceAction19";
 void INIT_ATTRIBUTES__parser___ReduceAction19(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction19_t)(val_t p0);
 val_t NEW_parser___ReduceAction19(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction19 = "check new ReduceAction19";
 void CHECKNEW_parser___ReduceAction19(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction19_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction19_parser___ReduceAction___init = "new ReduceAction19 parser::ReduceAction::init";
 val_t NEW_ReduceAction19_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction19_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction20 = "init var of ReduceAction20";
 void INIT_ATTRIBUTES__parser___ReduceAction20(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction20_t)(val_t p0);
 val_t NEW_parser___ReduceAction20(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction20 = "check new ReduceAction20";
 void CHECKNEW_parser___ReduceAction20(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction20_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction20_parser___ReduceAction___init = "new ReduceAction20 parser::ReduceAction::init";
 val_t NEW_ReduceAction20_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction20_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction21 = "init var of ReduceAction21";
 void INIT_ATTRIBUTES__parser___ReduceAction21(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction21_t)(val_t p0);
 val_t NEW_parser___ReduceAction21(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction21 = "check new ReduceAction21";
 void CHECKNEW_parser___ReduceAction21(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction21_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction21_parser___ReduceAction___init = "new ReduceAction21 parser::ReduceAction::init";
 val_t NEW_ReduceAction21_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction21_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction22 = "init var of ReduceAction22";
 void INIT_ATTRIBUTES__parser___ReduceAction22(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction22_t)(val_t p0);
 val_t NEW_parser___ReduceAction22(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction22 = "check new ReduceAction22";
 void CHECKNEW_parser___ReduceAction22(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction22_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction22_parser___ReduceAction___init = "new ReduceAction22 parser::ReduceAction::init";
 val_t NEW_ReduceAction22_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction22_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction23 = "init var of ReduceAction23";
 void INIT_ATTRIBUTES__parser___ReduceAction23(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction23_t)(val_t p0);
 val_t NEW_parser___ReduceAction23(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction23 = "check new ReduceAction23";
 void CHECKNEW_parser___ReduceAction23(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction23_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction23_parser___ReduceAction___init = "new ReduceAction23 parser::ReduceAction::init";
 val_t NEW_ReduceAction23_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction23_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction24 = "init var of ReduceAction24";
 void INIT_ATTRIBUTES__parser___ReduceAction24(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction24_t)(val_t p0);
 val_t NEW_parser___ReduceAction24(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction24 = "check new ReduceAction24";
 void CHECKNEW_parser___ReduceAction24(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction24_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction24_parser___ReduceAction___init = "new ReduceAction24 parser::ReduceAction::init";
 val_t NEW_ReduceAction24_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction24_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction25 = "init var of ReduceAction25";
 void INIT_ATTRIBUTES__parser___ReduceAction25(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction25_t)(val_t p0);
 val_t NEW_parser___ReduceAction25(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction25 = "check new ReduceAction25";
 void CHECKNEW_parser___ReduceAction25(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction25_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction25_parser___ReduceAction___init = "new ReduceAction25 parser::ReduceAction::init";
 val_t NEW_ReduceAction25_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction25_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction26 = "init var of ReduceAction26";
 void INIT_ATTRIBUTES__parser___ReduceAction26(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction26_t)(val_t p0);
 val_t NEW_parser___ReduceAction26(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction26 = "check new ReduceAction26";
 void CHECKNEW_parser___ReduceAction26(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction26_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction26_parser___ReduceAction___init = "new ReduceAction26 parser::ReduceAction::init";
 val_t NEW_ReduceAction26_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction26_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction27 = "init var of ReduceAction27";
 void INIT_ATTRIBUTES__parser___ReduceAction27(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction27_t)(val_t p0);
 val_t NEW_parser___ReduceAction27(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction27 = "check new ReduceAction27";
 void CHECKNEW_parser___ReduceAction27(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction27_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction27_parser___ReduceAction___init = "new ReduceAction27 parser::ReduceAction::init";
 val_t NEW_ReduceAction27_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction27_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction28 = "init var of ReduceAction28";
 void INIT_ATTRIBUTES__parser___ReduceAction28(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction28_t)(val_t p0);
 val_t NEW_parser___ReduceAction28(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction28 = "check new ReduceAction28";
 void CHECKNEW_parser___ReduceAction28(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction28_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction28_parser___ReduceAction___init = "new ReduceAction28 parser::ReduceAction::init";
 val_t NEW_ReduceAction28_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction28_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction29 = "init var of ReduceAction29";
 void INIT_ATTRIBUTES__parser___ReduceAction29(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction29_t)(val_t p0);
 val_t NEW_parser___ReduceAction29(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction29 = "check new ReduceAction29";
 void CHECKNEW_parser___ReduceAction29(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction29_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction29_parser___ReduceAction___init = "new ReduceAction29 parser::ReduceAction::init";
 val_t NEW_ReduceAction29_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction29_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction30 = "init var of ReduceAction30";
 void INIT_ATTRIBUTES__parser___ReduceAction30(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction30_t)(val_t p0);
 val_t NEW_parser___ReduceAction30(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction30 = "check new ReduceAction30";
 void CHECKNEW_parser___ReduceAction30(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction30_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction30_parser___ReduceAction___init = "new ReduceAction30 parser::ReduceAction::init";
 val_t NEW_ReduceAction30_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction30_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction31 = "init var of ReduceAction31";
 void INIT_ATTRIBUTES__parser___ReduceAction31(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction31_t)(val_t p0);
 val_t NEW_parser___ReduceAction31(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction31 = "check new ReduceAction31";
 void CHECKNEW_parser___ReduceAction31(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction31_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction31_parser___ReduceAction___init = "new ReduceAction31 parser::ReduceAction::init";
 val_t NEW_ReduceAction31_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction31_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction32 = "init var of ReduceAction32";
 void INIT_ATTRIBUTES__parser___ReduceAction32(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction32_t)(val_t p0);
 val_t NEW_parser___ReduceAction32(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction32 = "check new ReduceAction32";
 void CHECKNEW_parser___ReduceAction32(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction32_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction32_parser___ReduceAction___init = "new ReduceAction32 parser::ReduceAction::init";
 val_t NEW_ReduceAction32_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction32_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction33 = "init var of ReduceAction33";
 void INIT_ATTRIBUTES__parser___ReduceAction33(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction33_t)(val_t p0);
 val_t NEW_parser___ReduceAction33(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction33 = "check new ReduceAction33";
 void CHECKNEW_parser___ReduceAction33(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction33_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction33_parser___ReduceAction___init = "new ReduceAction33 parser::ReduceAction::init";
 val_t NEW_ReduceAction33_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction33_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction34 = "init var of ReduceAction34";
 void INIT_ATTRIBUTES__parser___ReduceAction34(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction34_t)(val_t p0);
 val_t NEW_parser___ReduceAction34(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction34 = "check new ReduceAction34";
 void CHECKNEW_parser___ReduceAction34(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction34_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction34_parser___ReduceAction___init = "new ReduceAction34 parser::ReduceAction::init";
 val_t NEW_ReduceAction34_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction34_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction35 = "init var of ReduceAction35";
 void INIT_ATTRIBUTES__parser___ReduceAction35(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction35_t)(val_t p0);
 val_t NEW_parser___ReduceAction35(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction35 = "check new ReduceAction35";
 void CHECKNEW_parser___ReduceAction35(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction35_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction35_parser___ReduceAction___init = "new ReduceAction35 parser::ReduceAction::init";
 val_t NEW_ReduceAction35_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction35_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction36 = "init var of ReduceAction36";
 void INIT_ATTRIBUTES__parser___ReduceAction36(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction36_t)(val_t p0);
 val_t NEW_parser___ReduceAction36(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction36 = "check new ReduceAction36";
 void CHECKNEW_parser___ReduceAction36(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction36_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction36_parser___ReduceAction___init = "new ReduceAction36 parser::ReduceAction::init";
 val_t NEW_ReduceAction36_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction36_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction37 = "init var of ReduceAction37";
 void INIT_ATTRIBUTES__parser___ReduceAction37(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction37_t)(val_t p0);
 val_t NEW_parser___ReduceAction37(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction37 = "check new ReduceAction37";
 void CHECKNEW_parser___ReduceAction37(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction37_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction37_parser___ReduceAction___init = "new ReduceAction37 parser::ReduceAction::init";
 val_t NEW_ReduceAction37_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction37_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction39 = "init var of ReduceAction39";
+void INIT_ATTRIBUTES__parser___ReduceAction38(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction38_t)(val_t p0);
+val_t NEW_parser___ReduceAction38(void);
+void CHECKNEW_parser___ReduceAction38(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction38_t)(val_t p0);
+val_t NEW_ReduceAction38_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction38_parser___ReduceAction___init_t)(val_t p0);
 void INIT_ATTRIBUTES__parser___ReduceAction39(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction39_t)(val_t p0);
 val_t NEW_parser___ReduceAction39(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction39 = "check new ReduceAction39";
 void CHECKNEW_parser___ReduceAction39(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction39_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction39_parser___ReduceAction___init = "new ReduceAction39 parser::ReduceAction::init";
 val_t NEW_ReduceAction39_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction39_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction40 = "init var of ReduceAction40";
 void INIT_ATTRIBUTES__parser___ReduceAction40(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction40_t)(val_t p0);
 val_t NEW_parser___ReduceAction40(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction40 = "check new ReduceAction40";
 void CHECKNEW_parser___ReduceAction40(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction40_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction40_parser___ReduceAction___init = "new ReduceAction40 parser::ReduceAction::init";
 val_t NEW_ReduceAction40_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction40_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction41 = "init var of ReduceAction41";
 void INIT_ATTRIBUTES__parser___ReduceAction41(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction41_t)(val_t p0);
 val_t NEW_parser___ReduceAction41(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction41 = "check new ReduceAction41";
 void CHECKNEW_parser___ReduceAction41(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction41_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction41_parser___ReduceAction___init = "new ReduceAction41 parser::ReduceAction::init";
 val_t NEW_ReduceAction41_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction41_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction42 = "init var of ReduceAction42";
 void INIT_ATTRIBUTES__parser___ReduceAction42(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction42_t)(val_t p0);
 val_t NEW_parser___ReduceAction42(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction42 = "check new ReduceAction42";
 void CHECKNEW_parser___ReduceAction42(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction42_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction42_parser___ReduceAction___init = "new ReduceAction42 parser::ReduceAction::init";
 val_t NEW_ReduceAction42_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction42_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction43 = "init var of ReduceAction43";
 void INIT_ATTRIBUTES__parser___ReduceAction43(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction43_t)(val_t p0);
 val_t NEW_parser___ReduceAction43(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction43 = "check new ReduceAction43";
 void CHECKNEW_parser___ReduceAction43(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction43_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction43_parser___ReduceAction___init = "new ReduceAction43 parser::ReduceAction::init";
 val_t NEW_ReduceAction43_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction43_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction44 = "init var of ReduceAction44";
 void INIT_ATTRIBUTES__parser___ReduceAction44(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction44_t)(val_t p0);
 val_t NEW_parser___ReduceAction44(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction44 = "check new ReduceAction44";
 void CHECKNEW_parser___ReduceAction44(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction44_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction44_parser___ReduceAction___init = "new ReduceAction44 parser::ReduceAction::init";
 val_t NEW_ReduceAction44_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction44_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction45 = "init var of ReduceAction45";
 void INIT_ATTRIBUTES__parser___ReduceAction45(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction45_t)(val_t p0);
 val_t NEW_parser___ReduceAction45(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction45 = "check new ReduceAction45";
 void CHECKNEW_parser___ReduceAction45(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction45_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction45_parser___ReduceAction___init = "new ReduceAction45 parser::ReduceAction::init";
 val_t NEW_ReduceAction45_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction45_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction46 = "init var of ReduceAction46";
 void INIT_ATTRIBUTES__parser___ReduceAction46(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction46_t)(val_t p0);
 val_t NEW_parser___ReduceAction46(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction46 = "check new ReduceAction46";
 void CHECKNEW_parser___ReduceAction46(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction46_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction46_parser___ReduceAction___init = "new ReduceAction46 parser::ReduceAction::init";
 val_t NEW_ReduceAction46_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction46_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction47 = "init var of ReduceAction47";
 void INIT_ATTRIBUTES__parser___ReduceAction47(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction47_t)(val_t p0);
 val_t NEW_parser___ReduceAction47(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction47 = "check new ReduceAction47";
 void CHECKNEW_parser___ReduceAction47(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction47_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction47_parser___ReduceAction___init = "new ReduceAction47 parser::ReduceAction::init";
 val_t NEW_ReduceAction47_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction47_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction48 = "init var of ReduceAction48";
 void INIT_ATTRIBUTES__parser___ReduceAction48(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction48_t)(val_t p0);
 val_t NEW_parser___ReduceAction48(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction48 = "check new ReduceAction48";
 void CHECKNEW_parser___ReduceAction48(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction48_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction48_parser___ReduceAction___init = "new ReduceAction48 parser::ReduceAction::init";
 val_t NEW_ReduceAction48_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction48_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction49 = "init var of ReduceAction49";
 void INIT_ATTRIBUTES__parser___ReduceAction49(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction49_t)(val_t p0);
 val_t NEW_parser___ReduceAction49(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction49 = "check new ReduceAction49";
 void CHECKNEW_parser___ReduceAction49(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction49_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction49_parser___ReduceAction___init = "new ReduceAction49 parser::ReduceAction::init";
 val_t NEW_ReduceAction49_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction49_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction50 = "init var of ReduceAction50";
 void INIT_ATTRIBUTES__parser___ReduceAction50(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction50_t)(val_t p0);
 val_t NEW_parser___ReduceAction50(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction50 = "check new ReduceAction50";
 void CHECKNEW_parser___ReduceAction50(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction50_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction50_parser___ReduceAction___init = "new ReduceAction50 parser::ReduceAction::init";
 val_t NEW_ReduceAction50_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction50_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction51 = "init var of ReduceAction51";
 void INIT_ATTRIBUTES__parser___ReduceAction51(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction51_t)(val_t p0);
 val_t NEW_parser___ReduceAction51(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction51 = "check new ReduceAction51";
 void CHECKNEW_parser___ReduceAction51(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction51_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction51_parser___ReduceAction___init = "new ReduceAction51 parser::ReduceAction::init";
 val_t NEW_ReduceAction51_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction51_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction52 = "init var of ReduceAction52";
 void INIT_ATTRIBUTES__parser___ReduceAction52(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction52_t)(val_t p0);
 val_t NEW_parser___ReduceAction52(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction52 = "check new ReduceAction52";
 void CHECKNEW_parser___ReduceAction52(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction52_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction52_parser___ReduceAction___init = "new ReduceAction52 parser::ReduceAction::init";
 val_t NEW_ReduceAction52_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction52_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction53 = "init var of ReduceAction53";
 void INIT_ATTRIBUTES__parser___ReduceAction53(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction53_t)(val_t p0);
 val_t NEW_parser___ReduceAction53(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction53 = "check new ReduceAction53";
 void CHECKNEW_parser___ReduceAction53(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction53_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction53_parser___ReduceAction___init = "new ReduceAction53 parser::ReduceAction::init";
 val_t NEW_ReduceAction53_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction53_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction54 = "init var of ReduceAction54";
 void INIT_ATTRIBUTES__parser___ReduceAction54(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction54_t)(val_t p0);
 val_t NEW_parser___ReduceAction54(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction54 = "check new ReduceAction54";
 void CHECKNEW_parser___ReduceAction54(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction54_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction54_parser___ReduceAction___init = "new ReduceAction54 parser::ReduceAction::init";
 val_t NEW_ReduceAction54_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction54_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction55 = "init var of ReduceAction55";
 void INIT_ATTRIBUTES__parser___ReduceAction55(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction55_t)(val_t p0);
 val_t NEW_parser___ReduceAction55(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction55 = "check new ReduceAction55";
 void CHECKNEW_parser___ReduceAction55(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction55_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction55_parser___ReduceAction___init = "new ReduceAction55 parser::ReduceAction::init";
 val_t NEW_ReduceAction55_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction55_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction56 = "init var of ReduceAction56";
 void INIT_ATTRIBUTES__parser___ReduceAction56(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction56_t)(val_t p0);
 val_t NEW_parser___ReduceAction56(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction56 = "check new ReduceAction56";
 void CHECKNEW_parser___ReduceAction56(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction56_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction56_parser___ReduceAction___init = "new ReduceAction56 parser::ReduceAction::init";
 val_t NEW_ReduceAction56_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction56_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction57 = "init var of ReduceAction57";
 void INIT_ATTRIBUTES__parser___ReduceAction57(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction57_t)(val_t p0);
 val_t NEW_parser___ReduceAction57(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction57 = "check new ReduceAction57";
 void CHECKNEW_parser___ReduceAction57(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction57_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction57_parser___ReduceAction___init = "new ReduceAction57 parser::ReduceAction::init";
 val_t NEW_ReduceAction57_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction57_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction58 = "init var of ReduceAction58";
 void INIT_ATTRIBUTES__parser___ReduceAction58(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction58_t)(val_t p0);
 val_t NEW_parser___ReduceAction58(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction58 = "check new ReduceAction58";
 void CHECKNEW_parser___ReduceAction58(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction58_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction58_parser___ReduceAction___init = "new ReduceAction58 parser::ReduceAction::init";
 val_t NEW_ReduceAction58_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction58_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction59 = "init var of ReduceAction59";
 void INIT_ATTRIBUTES__parser___ReduceAction59(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction59_t)(val_t p0);
 val_t NEW_parser___ReduceAction59(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction59 = "check new ReduceAction59";
 void CHECKNEW_parser___ReduceAction59(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction59_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction59_parser___ReduceAction___init = "new ReduceAction59 parser::ReduceAction::init";
 val_t NEW_ReduceAction59_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction59_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction60 = "init var of ReduceAction60";
 void INIT_ATTRIBUTES__parser___ReduceAction60(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction60_t)(val_t p0);
 val_t NEW_parser___ReduceAction60(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction60 = "check new ReduceAction60";
 void CHECKNEW_parser___ReduceAction60(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction60_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction60_parser___ReduceAction___init = "new ReduceAction60 parser::ReduceAction::init";
 val_t NEW_ReduceAction60_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction60_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction61 = "init var of ReduceAction61";
 void INIT_ATTRIBUTES__parser___ReduceAction61(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction61_t)(val_t p0);
 val_t NEW_parser___ReduceAction61(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction61 = "check new ReduceAction61";
 void CHECKNEW_parser___ReduceAction61(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction61_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction61_parser___ReduceAction___init = "new ReduceAction61 parser::ReduceAction::init";
 val_t NEW_ReduceAction61_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction61_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction62 = "init var of ReduceAction62";
 void INIT_ATTRIBUTES__parser___ReduceAction62(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction62_t)(val_t p0);
 val_t NEW_parser___ReduceAction62(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction62 = "check new ReduceAction62";
 void CHECKNEW_parser___ReduceAction62(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction62_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction62_parser___ReduceAction___init = "new ReduceAction62 parser::ReduceAction::init";
 val_t NEW_ReduceAction62_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction62_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction63 = "init var of ReduceAction63";
 void INIT_ATTRIBUTES__parser___ReduceAction63(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction63_t)(val_t p0);
 val_t NEW_parser___ReduceAction63(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction63 = "check new ReduceAction63";
 void CHECKNEW_parser___ReduceAction63(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction63_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction63_parser___ReduceAction___init = "new ReduceAction63 parser::ReduceAction::init";
 val_t NEW_ReduceAction63_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction63_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction64 = "init var of ReduceAction64";
 void INIT_ATTRIBUTES__parser___ReduceAction64(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction64_t)(val_t p0);
 val_t NEW_parser___ReduceAction64(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction64 = "check new ReduceAction64";
 void CHECKNEW_parser___ReduceAction64(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction64_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction64_parser___ReduceAction___init = "new ReduceAction64 parser::ReduceAction::init";
 val_t NEW_ReduceAction64_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction64_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction65 = "init var of ReduceAction65";
 void INIT_ATTRIBUTES__parser___ReduceAction65(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction65_t)(val_t p0);
 val_t NEW_parser___ReduceAction65(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction65 = "check new ReduceAction65";
 void CHECKNEW_parser___ReduceAction65(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction65_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction65_parser___ReduceAction___init = "new ReduceAction65 parser::ReduceAction::init";
 val_t NEW_ReduceAction65_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction65_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction66 = "init var of ReduceAction66";
 void INIT_ATTRIBUTES__parser___ReduceAction66(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction66_t)(val_t p0);
 val_t NEW_parser___ReduceAction66(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction66 = "check new ReduceAction66";
 void CHECKNEW_parser___ReduceAction66(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction66_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction66_parser___ReduceAction___init = "new ReduceAction66 parser::ReduceAction::init";
 val_t NEW_ReduceAction66_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction66_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction67 = "init var of ReduceAction67";
 void INIT_ATTRIBUTES__parser___ReduceAction67(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction67_t)(val_t p0);
 val_t NEW_parser___ReduceAction67(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction67 = "check new ReduceAction67";
 void CHECKNEW_parser___ReduceAction67(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction67_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction67_parser___ReduceAction___init = "new ReduceAction67 parser::ReduceAction::init";
 val_t NEW_ReduceAction67_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction67_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction68 = "init var of ReduceAction68";
 void INIT_ATTRIBUTES__parser___ReduceAction68(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction68_t)(val_t p0);
 val_t NEW_parser___ReduceAction68(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction68 = "check new ReduceAction68";
 void CHECKNEW_parser___ReduceAction68(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction68_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction68_parser___ReduceAction___init = "new ReduceAction68 parser::ReduceAction::init";
 val_t NEW_ReduceAction68_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction68_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction69 = "init var of ReduceAction69";
 void INIT_ATTRIBUTES__parser___ReduceAction69(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction69_t)(val_t p0);
 val_t NEW_parser___ReduceAction69(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction69 = "check new ReduceAction69";
 void CHECKNEW_parser___ReduceAction69(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction69_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction69_parser___ReduceAction___init = "new ReduceAction69 parser::ReduceAction::init";
 val_t NEW_ReduceAction69_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction69_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction70 = "init var of ReduceAction70";
 void INIT_ATTRIBUTES__parser___ReduceAction70(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction70_t)(val_t p0);
 val_t NEW_parser___ReduceAction70(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction70 = "check new ReduceAction70";
 void CHECKNEW_parser___ReduceAction70(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction70_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction70_parser___ReduceAction___init = "new ReduceAction70 parser::ReduceAction::init";
 val_t NEW_ReduceAction70_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction70_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction71 = "init var of ReduceAction71";
 void INIT_ATTRIBUTES__parser___ReduceAction71(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction71_t)(val_t p0);
 val_t NEW_parser___ReduceAction71(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction71 = "check new ReduceAction71";
 void CHECKNEW_parser___ReduceAction71(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction71_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction71_parser___ReduceAction___init = "new ReduceAction71 parser::ReduceAction::init";
 val_t NEW_ReduceAction71_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction71_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction72 = "init var of ReduceAction72";
-void INIT_ATTRIBUTES__parser___ReduceAction72(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___ReduceAction72_t)(val_t p0);
-val_t NEW_parser___ReduceAction72(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction72 = "check new ReduceAction72";
-void CHECKNEW_parser___ReduceAction72(val_t p0);
-typedef void (*CHECKNEW_parser___ReduceAction72_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction72_parser___ReduceAction___init = "new ReduceAction72 parser::ReduceAction::init";
-val_t NEW_ReduceAction72_parser___ReduceAction___init(val_t p0);
-typedef val_t (*NEW_ReduceAction72_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction73 = "init var of ReduceAction73";
 void INIT_ATTRIBUTES__parser___ReduceAction73(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction73_t)(val_t p0);
 val_t NEW_parser___ReduceAction73(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction73 = "check new ReduceAction73";
 void CHECKNEW_parser___ReduceAction73(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction73_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction73_parser___ReduceAction___init = "new ReduceAction73 parser::ReduceAction::init";
 val_t NEW_ReduceAction73_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction73_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction74 = "init var of ReduceAction74";
 void INIT_ATTRIBUTES__parser___ReduceAction74(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction74_t)(val_t p0);
 val_t NEW_parser___ReduceAction74(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction74 = "check new ReduceAction74";
 void CHECKNEW_parser___ReduceAction74(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction74_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction74_parser___ReduceAction___init = "new ReduceAction74 parser::ReduceAction::init";
 val_t NEW_ReduceAction74_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction74_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction75 = "init var of ReduceAction75";
 void INIT_ATTRIBUTES__parser___ReduceAction75(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction75_t)(val_t p0);
 val_t NEW_parser___ReduceAction75(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction75 = "check new ReduceAction75";
 void CHECKNEW_parser___ReduceAction75(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction75_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction75_parser___ReduceAction___init = "new ReduceAction75 parser::ReduceAction::init";
 val_t NEW_ReduceAction75_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction75_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction76 = "init var of ReduceAction76";
 void INIT_ATTRIBUTES__parser___ReduceAction76(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction76_t)(val_t p0);
 val_t NEW_parser___ReduceAction76(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction76 = "check new ReduceAction76";
 void CHECKNEW_parser___ReduceAction76(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction76_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction76_parser___ReduceAction___init = "new ReduceAction76 parser::ReduceAction::init";
 val_t NEW_ReduceAction76_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction76_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction77 = "init var of ReduceAction77";
 void INIT_ATTRIBUTES__parser___ReduceAction77(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction77_t)(val_t p0);
 val_t NEW_parser___ReduceAction77(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction77 = "check new ReduceAction77";
 void CHECKNEW_parser___ReduceAction77(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction77_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction77_parser___ReduceAction___init = "new ReduceAction77 parser::ReduceAction::init";
 val_t NEW_ReduceAction77_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction77_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction78 = "init var of ReduceAction78";
 void INIT_ATTRIBUTES__parser___ReduceAction78(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction78_t)(val_t p0);
 val_t NEW_parser___ReduceAction78(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction78 = "check new ReduceAction78";
 void CHECKNEW_parser___ReduceAction78(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction78_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction78_parser___ReduceAction___init = "new ReduceAction78 parser::ReduceAction::init";
 val_t NEW_ReduceAction78_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction78_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction79 = "init var of ReduceAction79";
 void INIT_ATTRIBUTES__parser___ReduceAction79(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction79_t)(val_t p0);
 val_t NEW_parser___ReduceAction79(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction79 = "check new ReduceAction79";
 void CHECKNEW_parser___ReduceAction79(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction79_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction79_parser___ReduceAction___init = "new ReduceAction79 parser::ReduceAction::init";
 val_t NEW_ReduceAction79_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction79_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction80 = "init var of ReduceAction80";
 void INIT_ATTRIBUTES__parser___ReduceAction80(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction80_t)(val_t p0);
 val_t NEW_parser___ReduceAction80(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction80 = "check new ReduceAction80";
 void CHECKNEW_parser___ReduceAction80(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction80_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction80_parser___ReduceAction___init = "new ReduceAction80 parser::ReduceAction::init";
 val_t NEW_ReduceAction80_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction80_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction81 = "init var of ReduceAction81";
 void INIT_ATTRIBUTES__parser___ReduceAction81(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction81_t)(val_t p0);
 val_t NEW_parser___ReduceAction81(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction81 = "check new ReduceAction81";
 void CHECKNEW_parser___ReduceAction81(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction81_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction81_parser___ReduceAction___init = "new ReduceAction81 parser::ReduceAction::init";
 val_t NEW_ReduceAction81_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction81_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction82 = "init var of ReduceAction82";
 void INIT_ATTRIBUTES__parser___ReduceAction82(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction82_t)(val_t p0);
 val_t NEW_parser___ReduceAction82(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction82 = "check new ReduceAction82";
 void CHECKNEW_parser___ReduceAction82(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction82_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction82_parser___ReduceAction___init = "new ReduceAction82 parser::ReduceAction::init";
 val_t NEW_ReduceAction82_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction82_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction83 = "init var of ReduceAction83";
 void INIT_ATTRIBUTES__parser___ReduceAction83(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction83_t)(val_t p0);
 val_t NEW_parser___ReduceAction83(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction83 = "check new ReduceAction83";
 void CHECKNEW_parser___ReduceAction83(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction83_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction83_parser___ReduceAction___init = "new ReduceAction83 parser::ReduceAction::init";
 val_t NEW_ReduceAction83_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction83_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction84 = "init var of ReduceAction84";
 void INIT_ATTRIBUTES__parser___ReduceAction84(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction84_t)(val_t p0);
 val_t NEW_parser___ReduceAction84(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction84 = "check new ReduceAction84";
 void CHECKNEW_parser___ReduceAction84(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction84_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction84_parser___ReduceAction___init = "new ReduceAction84 parser::ReduceAction::init";
 val_t NEW_ReduceAction84_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction84_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction85 = "init var of ReduceAction85";
 void INIT_ATTRIBUTES__parser___ReduceAction85(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction85_t)(val_t p0);
 val_t NEW_parser___ReduceAction85(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction85 = "check new ReduceAction85";
 void CHECKNEW_parser___ReduceAction85(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction85_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction85_parser___ReduceAction___init = "new ReduceAction85 parser::ReduceAction::init";
 val_t NEW_ReduceAction85_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction85_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction86 = "init var of ReduceAction86";
 void INIT_ATTRIBUTES__parser___ReduceAction86(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction86_t)(val_t p0);
 val_t NEW_parser___ReduceAction86(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction86 = "check new ReduceAction86";
 void CHECKNEW_parser___ReduceAction86(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction86_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction86_parser___ReduceAction___init = "new ReduceAction86 parser::ReduceAction::init";
 val_t NEW_ReduceAction86_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction86_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction87 = "init var of ReduceAction87";
 void INIT_ATTRIBUTES__parser___ReduceAction87(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction87_t)(val_t p0);
 val_t NEW_parser___ReduceAction87(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction87 = "check new ReduceAction87";
 void CHECKNEW_parser___ReduceAction87(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction87_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction87_parser___ReduceAction___init = "new ReduceAction87 parser::ReduceAction::init";
 val_t NEW_ReduceAction87_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction87_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction88 = "init var of ReduceAction88";
 void INIT_ATTRIBUTES__parser___ReduceAction88(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction88_t)(val_t p0);
 val_t NEW_parser___ReduceAction88(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction88 = "check new ReduceAction88";
 void CHECKNEW_parser___ReduceAction88(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction88_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction88_parser___ReduceAction___init = "new ReduceAction88 parser::ReduceAction::init";
 val_t NEW_ReduceAction88_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction88_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction89 = "init var of ReduceAction89";
 void INIT_ATTRIBUTES__parser___ReduceAction89(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction89_t)(val_t p0);
 val_t NEW_parser___ReduceAction89(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction89 = "check new ReduceAction89";
 void CHECKNEW_parser___ReduceAction89(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction89_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction89_parser___ReduceAction___init = "new ReduceAction89 parser::ReduceAction::init";
 val_t NEW_ReduceAction89_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction89_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction90 = "init var of ReduceAction90";
 void INIT_ATTRIBUTES__parser___ReduceAction90(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction90_t)(val_t p0);
 val_t NEW_parser___ReduceAction90(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction90 = "check new ReduceAction90";
 void CHECKNEW_parser___ReduceAction90(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction90_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction90_parser___ReduceAction___init = "new ReduceAction90 parser::ReduceAction::init";
 val_t NEW_ReduceAction90_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction90_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction91 = "init var of ReduceAction91";
 void INIT_ATTRIBUTES__parser___ReduceAction91(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction91_t)(val_t p0);
 val_t NEW_parser___ReduceAction91(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction91 = "check new ReduceAction91";
 void CHECKNEW_parser___ReduceAction91(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction91_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction91_parser___ReduceAction___init = "new ReduceAction91 parser::ReduceAction::init";
 val_t NEW_ReduceAction91_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction91_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction92 = "init var of ReduceAction92";
 void INIT_ATTRIBUTES__parser___ReduceAction92(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction92_t)(val_t p0);
 val_t NEW_parser___ReduceAction92(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction92 = "check new ReduceAction92";
 void CHECKNEW_parser___ReduceAction92(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction92_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction92_parser___ReduceAction___init = "new ReduceAction92 parser::ReduceAction::init";
 val_t NEW_ReduceAction92_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction92_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction93 = "init var of ReduceAction93";
 void INIT_ATTRIBUTES__parser___ReduceAction93(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction93_t)(val_t p0);
 val_t NEW_parser___ReduceAction93(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction93 = "check new ReduceAction93";
 void CHECKNEW_parser___ReduceAction93(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction93_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction93_parser___ReduceAction___init = "new ReduceAction93 parser::ReduceAction::init";
 val_t NEW_ReduceAction93_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction93_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction94 = "init var of ReduceAction94";
 void INIT_ATTRIBUTES__parser___ReduceAction94(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction94_t)(val_t p0);
 val_t NEW_parser___ReduceAction94(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction94 = "check new ReduceAction94";
 void CHECKNEW_parser___ReduceAction94(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction94_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction94_parser___ReduceAction___init = "new ReduceAction94 parser::ReduceAction::init";
 val_t NEW_ReduceAction94_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction94_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction95 = "init var of ReduceAction95";
 void INIT_ATTRIBUTES__parser___ReduceAction95(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction95_t)(val_t p0);
 val_t NEW_parser___ReduceAction95(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction95 = "check new ReduceAction95";
 void CHECKNEW_parser___ReduceAction95(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction95_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction95_parser___ReduceAction___init = "new ReduceAction95 parser::ReduceAction::init";
 val_t NEW_ReduceAction95_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction95_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction96 = "init var of ReduceAction96";
 void INIT_ATTRIBUTES__parser___ReduceAction96(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction96_t)(val_t p0);
 val_t NEW_parser___ReduceAction96(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction96 = "check new ReduceAction96";
 void CHECKNEW_parser___ReduceAction96(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction96_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction96_parser___ReduceAction___init = "new ReduceAction96 parser::ReduceAction::init";
 val_t NEW_ReduceAction96_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction96_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction97 = "init var of ReduceAction97";
 void INIT_ATTRIBUTES__parser___ReduceAction97(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction97_t)(val_t p0);
 val_t NEW_parser___ReduceAction97(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction97 = "check new ReduceAction97";
 void CHECKNEW_parser___ReduceAction97(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction97_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction97_parser___ReduceAction___init = "new ReduceAction97 parser::ReduceAction::init";
 val_t NEW_ReduceAction97_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction97_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction98 = "init var of ReduceAction98";
 void INIT_ATTRIBUTES__parser___ReduceAction98(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction98_t)(val_t p0);
 val_t NEW_parser___ReduceAction98(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction98 = "check new ReduceAction98";
 void CHECKNEW_parser___ReduceAction98(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction98_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction98_parser___ReduceAction___init = "new ReduceAction98 parser::ReduceAction::init";
 val_t NEW_ReduceAction98_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction98_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction99 = "init var of ReduceAction99";
 void INIT_ATTRIBUTES__parser___ReduceAction99(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction99_t)(val_t p0);
 val_t NEW_parser___ReduceAction99(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction99 = "check new ReduceAction99";
 void CHECKNEW_parser___ReduceAction99(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction99_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction99_parser___ReduceAction___init = "new ReduceAction99 parser::ReduceAction::init";
 val_t NEW_ReduceAction99_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction99_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction100 = "init var of ReduceAction100";
 void INIT_ATTRIBUTES__parser___ReduceAction100(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction100_t)(val_t p0);
 val_t NEW_parser___ReduceAction100(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction100 = "check new ReduceAction100";
 void CHECKNEW_parser___ReduceAction100(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction100_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction100_parser___ReduceAction___init = "new ReduceAction100 parser::ReduceAction::init";
 val_t NEW_ReduceAction100_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction100_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction101 = "init var of ReduceAction101";
 void INIT_ATTRIBUTES__parser___ReduceAction101(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction101_t)(val_t p0);
 val_t NEW_parser___ReduceAction101(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction101 = "check new ReduceAction101";
 void CHECKNEW_parser___ReduceAction101(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction101_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction101_parser___ReduceAction___init = "new ReduceAction101 parser::ReduceAction::init";
 val_t NEW_ReduceAction101_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction101_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction102 = "init var of ReduceAction102";
 void INIT_ATTRIBUTES__parser___ReduceAction102(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction102_t)(val_t p0);
 val_t NEW_parser___ReduceAction102(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction102 = "check new ReduceAction102";
 void CHECKNEW_parser___ReduceAction102(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction102_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction102_parser___ReduceAction___init = "new ReduceAction102 parser::ReduceAction::init";
 val_t NEW_ReduceAction102_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction102_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction103 = "init var of ReduceAction103";
 void INIT_ATTRIBUTES__parser___ReduceAction103(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction103_t)(val_t p0);
 val_t NEW_parser___ReduceAction103(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction103 = "check new ReduceAction103";
 void CHECKNEW_parser___ReduceAction103(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction103_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction103_parser___ReduceAction___init = "new ReduceAction103 parser::ReduceAction::init";
 val_t NEW_ReduceAction103_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction103_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction104 = "init var of ReduceAction104";
 void INIT_ATTRIBUTES__parser___ReduceAction104(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction104_t)(val_t p0);
 val_t NEW_parser___ReduceAction104(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction104 = "check new ReduceAction104";
 void CHECKNEW_parser___ReduceAction104(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction104_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction104_parser___ReduceAction___init = "new ReduceAction104 parser::ReduceAction::init";
 val_t NEW_ReduceAction104_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction104_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction105 = "init var of ReduceAction105";
 void INIT_ATTRIBUTES__parser___ReduceAction105(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction105_t)(val_t p0);
 val_t NEW_parser___ReduceAction105(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction105 = "check new ReduceAction105";
 void CHECKNEW_parser___ReduceAction105(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction105_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction105_parser___ReduceAction___init = "new ReduceAction105 parser::ReduceAction::init";
 val_t NEW_ReduceAction105_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction105_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction106 = "init var of ReduceAction106";
 void INIT_ATTRIBUTES__parser___ReduceAction106(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction106_t)(val_t p0);
 val_t NEW_parser___ReduceAction106(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction106 = "check new ReduceAction106";
 void CHECKNEW_parser___ReduceAction106(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction106_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction106_parser___ReduceAction___init = "new ReduceAction106 parser::ReduceAction::init";
 val_t NEW_ReduceAction106_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction106_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction107 = "init var of ReduceAction107";
 void INIT_ATTRIBUTES__parser___ReduceAction107(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction107_t)(val_t p0);
 val_t NEW_parser___ReduceAction107(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction107 = "check new ReduceAction107";
 void CHECKNEW_parser___ReduceAction107(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction107_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction107_parser___ReduceAction___init = "new ReduceAction107 parser::ReduceAction::init";
 val_t NEW_ReduceAction107_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction107_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction108 = "init var of ReduceAction108";
 void INIT_ATTRIBUTES__parser___ReduceAction108(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction108_t)(val_t p0);
 val_t NEW_parser___ReduceAction108(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction108 = "check new ReduceAction108";
 void CHECKNEW_parser___ReduceAction108(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction108_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction108_parser___ReduceAction___init = "new ReduceAction108 parser::ReduceAction::init";
 val_t NEW_ReduceAction108_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction108_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction109 = "init var of ReduceAction109";
 void INIT_ATTRIBUTES__parser___ReduceAction109(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction109_t)(val_t p0);
 val_t NEW_parser___ReduceAction109(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction109 = "check new ReduceAction109";
 void CHECKNEW_parser___ReduceAction109(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction109_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction109_parser___ReduceAction___init = "new ReduceAction109 parser::ReduceAction::init";
 val_t NEW_ReduceAction109_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction109_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction110 = "init var of ReduceAction110";
 void INIT_ATTRIBUTES__parser___ReduceAction110(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction110_t)(val_t p0);
 val_t NEW_parser___ReduceAction110(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction110 = "check new ReduceAction110";
 void CHECKNEW_parser___ReduceAction110(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction110_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction110_parser___ReduceAction___init = "new ReduceAction110 parser::ReduceAction::init";
 val_t NEW_ReduceAction110_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction110_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction111 = "init var of ReduceAction111";
 void INIT_ATTRIBUTES__parser___ReduceAction111(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction111_t)(val_t p0);
 val_t NEW_parser___ReduceAction111(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction111 = "check new ReduceAction111";
 void CHECKNEW_parser___ReduceAction111(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction111_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction111_parser___ReduceAction___init = "new ReduceAction111 parser::ReduceAction::init";
 val_t NEW_ReduceAction111_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction111_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction112 = "init var of ReduceAction112";
 void INIT_ATTRIBUTES__parser___ReduceAction112(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction112_t)(val_t p0);
 val_t NEW_parser___ReduceAction112(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction112 = "check new ReduceAction112";
 void CHECKNEW_parser___ReduceAction112(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction112_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction112_parser___ReduceAction___init = "new ReduceAction112 parser::ReduceAction::init";
 val_t NEW_ReduceAction112_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction112_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction113 = "init var of ReduceAction113";
 void INIT_ATTRIBUTES__parser___ReduceAction113(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction113_t)(val_t p0);
 val_t NEW_parser___ReduceAction113(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction113 = "check new ReduceAction113";
 void CHECKNEW_parser___ReduceAction113(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction113_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction113_parser___ReduceAction___init = "new ReduceAction113 parser::ReduceAction::init";
 val_t NEW_ReduceAction113_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction113_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction114 = "init var of ReduceAction114";
 void INIT_ATTRIBUTES__parser___ReduceAction114(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction114_t)(val_t p0);
 val_t NEW_parser___ReduceAction114(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction114 = "check new ReduceAction114";
 void CHECKNEW_parser___ReduceAction114(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction114_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction114_parser___ReduceAction___init = "new ReduceAction114 parser::ReduceAction::init";
 val_t NEW_ReduceAction114_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction114_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction115 = "init var of ReduceAction115";
 void INIT_ATTRIBUTES__parser___ReduceAction115(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction115_t)(val_t p0);
 val_t NEW_parser___ReduceAction115(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction115 = "check new ReduceAction115";
 void CHECKNEW_parser___ReduceAction115(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction115_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction115_parser___ReduceAction___init = "new ReduceAction115 parser::ReduceAction::init";
 val_t NEW_ReduceAction115_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction115_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction116 = "init var of ReduceAction116";
 void INIT_ATTRIBUTES__parser___ReduceAction116(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction116_t)(val_t p0);
 val_t NEW_parser___ReduceAction116(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction116 = "check new ReduceAction116";
 void CHECKNEW_parser___ReduceAction116(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction116_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction116_parser___ReduceAction___init = "new ReduceAction116 parser::ReduceAction::init";
 val_t NEW_ReduceAction116_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction116_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction117 = "init var of ReduceAction117";
 void INIT_ATTRIBUTES__parser___ReduceAction117(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction117_t)(val_t p0);
 val_t NEW_parser___ReduceAction117(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction117 = "check new ReduceAction117";
 void CHECKNEW_parser___ReduceAction117(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction117_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction117_parser___ReduceAction___init = "new ReduceAction117 parser::ReduceAction::init";
 val_t NEW_ReduceAction117_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction117_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction118 = "init var of ReduceAction118";
 void INIT_ATTRIBUTES__parser___ReduceAction118(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction118_t)(val_t p0);
 val_t NEW_parser___ReduceAction118(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction118 = "check new ReduceAction118";
 void CHECKNEW_parser___ReduceAction118(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction118_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction118_parser___ReduceAction___init = "new ReduceAction118 parser::ReduceAction::init";
 val_t NEW_ReduceAction118_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction118_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction119 = "init var of ReduceAction119";
 void INIT_ATTRIBUTES__parser___ReduceAction119(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction119_t)(val_t p0);
 val_t NEW_parser___ReduceAction119(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction119 = "check new ReduceAction119";
 void CHECKNEW_parser___ReduceAction119(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction119_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction119_parser___ReduceAction___init = "new ReduceAction119 parser::ReduceAction::init";
 val_t NEW_ReduceAction119_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction119_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction120 = "init var of ReduceAction120";
 void INIT_ATTRIBUTES__parser___ReduceAction120(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction120_t)(val_t p0);
 val_t NEW_parser___ReduceAction120(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction120 = "check new ReduceAction120";
 void CHECKNEW_parser___ReduceAction120(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction120_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction120_parser___ReduceAction___init = "new ReduceAction120 parser::ReduceAction::init";
 val_t NEW_ReduceAction120_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction120_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction121 = "init var of ReduceAction121";
 void INIT_ATTRIBUTES__parser___ReduceAction121(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction121_t)(val_t p0);
 val_t NEW_parser___ReduceAction121(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction121 = "check new ReduceAction121";
 void CHECKNEW_parser___ReduceAction121(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction121_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction121_parser___ReduceAction___init = "new ReduceAction121 parser::ReduceAction::init";
 val_t NEW_ReduceAction121_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction121_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction122 = "init var of ReduceAction122";
 void INIT_ATTRIBUTES__parser___ReduceAction122(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction122_t)(val_t p0);
 val_t NEW_parser___ReduceAction122(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction122 = "check new ReduceAction122";
 void CHECKNEW_parser___ReduceAction122(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction122_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction122_parser___ReduceAction___init = "new ReduceAction122 parser::ReduceAction::init";
 val_t NEW_ReduceAction122_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction122_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction123 = "init var of ReduceAction123";
 void INIT_ATTRIBUTES__parser___ReduceAction123(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction123_t)(val_t p0);
 val_t NEW_parser___ReduceAction123(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction123 = "check new ReduceAction123";
 void CHECKNEW_parser___ReduceAction123(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction123_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction123_parser___ReduceAction___init = "new ReduceAction123 parser::ReduceAction::init";
 val_t NEW_ReduceAction123_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction123_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction124 = "init var of ReduceAction124";
 void INIT_ATTRIBUTES__parser___ReduceAction124(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction124_t)(val_t p0);
 val_t NEW_parser___ReduceAction124(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction124 = "check new ReduceAction124";
 void CHECKNEW_parser___ReduceAction124(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction124_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction124_parser___ReduceAction___init = "new ReduceAction124 parser::ReduceAction::init";
 val_t NEW_ReduceAction124_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction124_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction125 = "init var of ReduceAction125";
 void INIT_ATTRIBUTES__parser___ReduceAction125(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction125_t)(val_t p0);
 val_t NEW_parser___ReduceAction125(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction125 = "check new ReduceAction125";
 void CHECKNEW_parser___ReduceAction125(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction125_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction125_parser___ReduceAction___init = "new ReduceAction125 parser::ReduceAction::init";
 val_t NEW_ReduceAction125_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction125_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction126 = "init var of ReduceAction126";
 void INIT_ATTRIBUTES__parser___ReduceAction126(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction126_t)(val_t p0);
 val_t NEW_parser___ReduceAction126(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction126 = "check new ReduceAction126";
 void CHECKNEW_parser___ReduceAction126(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction126_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction126_parser___ReduceAction___init = "new ReduceAction126 parser::ReduceAction::init";
 val_t NEW_ReduceAction126_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction126_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction127 = "init var of ReduceAction127";
 void INIT_ATTRIBUTES__parser___ReduceAction127(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction127_t)(val_t p0);
 val_t NEW_parser___ReduceAction127(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction127 = "check new ReduceAction127";
 void CHECKNEW_parser___ReduceAction127(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction127_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction127_parser___ReduceAction___init = "new ReduceAction127 parser::ReduceAction::init";
 val_t NEW_ReduceAction127_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction127_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction128 = "init var of ReduceAction128";
 void INIT_ATTRIBUTES__parser___ReduceAction128(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction128_t)(val_t p0);
 val_t NEW_parser___ReduceAction128(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction128 = "check new ReduceAction128";
 void CHECKNEW_parser___ReduceAction128(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction128_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction128_parser___ReduceAction___init = "new ReduceAction128 parser::ReduceAction::init";
 val_t NEW_ReduceAction128_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction128_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction129 = "init var of ReduceAction129";
 void INIT_ATTRIBUTES__parser___ReduceAction129(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction129_t)(val_t p0);
 val_t NEW_parser___ReduceAction129(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction129 = "check new ReduceAction129";
 void CHECKNEW_parser___ReduceAction129(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction129_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction129_parser___ReduceAction___init = "new ReduceAction129 parser::ReduceAction::init";
 val_t NEW_ReduceAction129_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction129_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction130 = "init var of ReduceAction130";
 void INIT_ATTRIBUTES__parser___ReduceAction130(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction130_t)(val_t p0);
 val_t NEW_parser___ReduceAction130(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction130 = "check new ReduceAction130";
 void CHECKNEW_parser___ReduceAction130(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction130_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction130_parser___ReduceAction___init = "new ReduceAction130 parser::ReduceAction::init";
 val_t NEW_ReduceAction130_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction130_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction131 = "init var of ReduceAction131";
 void INIT_ATTRIBUTES__parser___ReduceAction131(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction131_t)(val_t p0);
 val_t NEW_parser___ReduceAction131(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction131 = "check new ReduceAction131";
 void CHECKNEW_parser___ReduceAction131(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction131_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction131_parser___ReduceAction___init = "new ReduceAction131 parser::ReduceAction::init";
 val_t NEW_ReduceAction131_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction131_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction132 = "init var of ReduceAction132";
 void INIT_ATTRIBUTES__parser___ReduceAction132(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction132_t)(val_t p0);
 val_t NEW_parser___ReduceAction132(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction132 = "check new ReduceAction132";
 void CHECKNEW_parser___ReduceAction132(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction132_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction132_parser___ReduceAction___init = "new ReduceAction132 parser::ReduceAction::init";
 val_t NEW_ReduceAction132_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction132_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction133 = "init var of ReduceAction133";
 void INIT_ATTRIBUTES__parser___ReduceAction133(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction133_t)(val_t p0);
 val_t NEW_parser___ReduceAction133(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction133 = "check new ReduceAction133";
 void CHECKNEW_parser___ReduceAction133(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction133_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction133_parser___ReduceAction___init = "new ReduceAction133 parser::ReduceAction::init";
 val_t NEW_ReduceAction133_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction133_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction134 = "init var of ReduceAction134";
 void INIT_ATTRIBUTES__parser___ReduceAction134(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction134_t)(val_t p0);
 val_t NEW_parser___ReduceAction134(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction134 = "check new ReduceAction134";
 void CHECKNEW_parser___ReduceAction134(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction134_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction134_parser___ReduceAction___init = "new ReduceAction134 parser::ReduceAction::init";
 val_t NEW_ReduceAction134_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction134_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction135 = "init var of ReduceAction135";
 void INIT_ATTRIBUTES__parser___ReduceAction135(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction135_t)(val_t p0);
 val_t NEW_parser___ReduceAction135(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction135 = "check new ReduceAction135";
 void CHECKNEW_parser___ReduceAction135(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction135_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction135_parser___ReduceAction___init = "new ReduceAction135 parser::ReduceAction::init";
 val_t NEW_ReduceAction135_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction135_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction136 = "init var of ReduceAction136";
 void INIT_ATTRIBUTES__parser___ReduceAction136(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction136_t)(val_t p0);
 val_t NEW_parser___ReduceAction136(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction136 = "check new ReduceAction136";
 void CHECKNEW_parser___ReduceAction136(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction136_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction136_parser___ReduceAction___init = "new ReduceAction136 parser::ReduceAction::init";
 val_t NEW_ReduceAction136_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction136_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction137 = "init var of ReduceAction137";
 void INIT_ATTRIBUTES__parser___ReduceAction137(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction137_t)(val_t p0);
 val_t NEW_parser___ReduceAction137(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction137 = "check new ReduceAction137";
 void CHECKNEW_parser___ReduceAction137(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction137_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction137_parser___ReduceAction___init = "new ReduceAction137 parser::ReduceAction::init";
 val_t NEW_ReduceAction137_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction137_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction138 = "init var of ReduceAction138";
 void INIT_ATTRIBUTES__parser___ReduceAction138(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction138_t)(val_t p0);
 val_t NEW_parser___ReduceAction138(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction138 = "check new ReduceAction138";
 void CHECKNEW_parser___ReduceAction138(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction138_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction138_parser___ReduceAction___init = "new ReduceAction138 parser::ReduceAction::init";
 val_t NEW_ReduceAction138_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction138_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction139 = "init var of ReduceAction139";
 void INIT_ATTRIBUTES__parser___ReduceAction139(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction139_t)(val_t p0);
 val_t NEW_parser___ReduceAction139(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction139 = "check new ReduceAction139";
 void CHECKNEW_parser___ReduceAction139(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction139_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction139_parser___ReduceAction___init = "new ReduceAction139 parser::ReduceAction::init";
 val_t NEW_ReduceAction139_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction139_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction140 = "init var of ReduceAction140";
 void INIT_ATTRIBUTES__parser___ReduceAction140(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction140_t)(val_t p0);
 val_t NEW_parser___ReduceAction140(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction140 = "check new ReduceAction140";
 void CHECKNEW_parser___ReduceAction140(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction140_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction140_parser___ReduceAction___init = "new ReduceAction140 parser::ReduceAction::init";
 val_t NEW_ReduceAction140_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction140_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction141 = "init var of ReduceAction141";
 void INIT_ATTRIBUTES__parser___ReduceAction141(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction141_t)(val_t p0);
 val_t NEW_parser___ReduceAction141(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction141 = "check new ReduceAction141";
 void CHECKNEW_parser___ReduceAction141(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction141_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction141_parser___ReduceAction___init = "new ReduceAction141 parser::ReduceAction::init";
 val_t NEW_ReduceAction141_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction141_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction142 = "init var of ReduceAction142";
 void INIT_ATTRIBUTES__parser___ReduceAction142(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction142_t)(val_t p0);
 val_t NEW_parser___ReduceAction142(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction142 = "check new ReduceAction142";
 void CHECKNEW_parser___ReduceAction142(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction142_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction142_parser___ReduceAction___init = "new ReduceAction142 parser::ReduceAction::init";
 val_t NEW_ReduceAction142_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction142_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction143 = "init var of ReduceAction143";
 void INIT_ATTRIBUTES__parser___ReduceAction143(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction143_t)(val_t p0);
 val_t NEW_parser___ReduceAction143(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction143 = "check new ReduceAction143";
 void CHECKNEW_parser___ReduceAction143(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction143_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction143_parser___ReduceAction___init = "new ReduceAction143 parser::ReduceAction::init";
 val_t NEW_ReduceAction143_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction143_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction144 = "init var of ReduceAction144";
 void INIT_ATTRIBUTES__parser___ReduceAction144(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction144_t)(val_t p0);
 val_t NEW_parser___ReduceAction144(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction144 = "check new ReduceAction144";
 void CHECKNEW_parser___ReduceAction144(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction144_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction144_parser___ReduceAction___init = "new ReduceAction144 parser::ReduceAction::init";
 val_t NEW_ReduceAction144_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction144_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction145 = "init var of ReduceAction145";
 void INIT_ATTRIBUTES__parser___ReduceAction145(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction145_t)(val_t p0);
 val_t NEW_parser___ReduceAction145(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction145 = "check new ReduceAction145";
 void CHECKNEW_parser___ReduceAction145(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction145_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction145_parser___ReduceAction___init = "new ReduceAction145 parser::ReduceAction::init";
 val_t NEW_ReduceAction145_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction145_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction146 = "init var of ReduceAction146";
 void INIT_ATTRIBUTES__parser___ReduceAction146(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction146_t)(val_t p0);
 val_t NEW_parser___ReduceAction146(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction146 = "check new ReduceAction146";
 void CHECKNEW_parser___ReduceAction146(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction146_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction146_parser___ReduceAction___init = "new ReduceAction146 parser::ReduceAction::init";
 val_t NEW_ReduceAction146_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction146_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction147 = "init var of ReduceAction147";
 void INIT_ATTRIBUTES__parser___ReduceAction147(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction147_t)(val_t p0);
 val_t NEW_parser___ReduceAction147(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction147 = "check new ReduceAction147";
 void CHECKNEW_parser___ReduceAction147(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction147_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction147_parser___ReduceAction___init = "new ReduceAction147 parser::ReduceAction::init";
 val_t NEW_ReduceAction147_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction147_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction148 = "init var of ReduceAction148";
 void INIT_ATTRIBUTES__parser___ReduceAction148(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction148_t)(val_t p0);
 val_t NEW_parser___ReduceAction148(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction148 = "check new ReduceAction148";
 void CHECKNEW_parser___ReduceAction148(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction148_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction148_parser___ReduceAction___init = "new ReduceAction148 parser::ReduceAction::init";
 val_t NEW_ReduceAction148_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction148_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction149 = "init var of ReduceAction149";
 void INIT_ATTRIBUTES__parser___ReduceAction149(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction149_t)(val_t p0);
 val_t NEW_parser___ReduceAction149(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction149 = "check new ReduceAction149";
 void CHECKNEW_parser___ReduceAction149(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction149_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction149_parser___ReduceAction___init = "new ReduceAction149 parser::ReduceAction::init";
 val_t NEW_ReduceAction149_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction149_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction150 = "init var of ReduceAction150";
 void INIT_ATTRIBUTES__parser___ReduceAction150(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction150_t)(val_t p0);
 val_t NEW_parser___ReduceAction150(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction150 = "check new ReduceAction150";
 void CHECKNEW_parser___ReduceAction150(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction150_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction150_parser___ReduceAction___init = "new ReduceAction150 parser::ReduceAction::init";
 val_t NEW_ReduceAction150_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction150_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction151 = "init var of ReduceAction151";
 void INIT_ATTRIBUTES__parser___ReduceAction151(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction151_t)(val_t p0);
 val_t NEW_parser___ReduceAction151(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction151 = "check new ReduceAction151";
 void CHECKNEW_parser___ReduceAction151(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction151_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction151_parser___ReduceAction___init = "new ReduceAction151 parser::ReduceAction::init";
 val_t NEW_ReduceAction151_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction151_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction152 = "init var of ReduceAction152";
 void INIT_ATTRIBUTES__parser___ReduceAction152(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction152_t)(val_t p0);
 val_t NEW_parser___ReduceAction152(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction152 = "check new ReduceAction152";
 void CHECKNEW_parser___ReduceAction152(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction152_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction152_parser___ReduceAction___init = "new ReduceAction152 parser::ReduceAction::init";
 val_t NEW_ReduceAction152_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction152_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction153 = "init var of ReduceAction153";
 void INIT_ATTRIBUTES__parser___ReduceAction153(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction153_t)(val_t p0);
 val_t NEW_parser___ReduceAction153(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction153 = "check new ReduceAction153";
 void CHECKNEW_parser___ReduceAction153(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction153_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction153_parser___ReduceAction___init = "new ReduceAction153 parser::ReduceAction::init";
 val_t NEW_ReduceAction153_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction153_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction154 = "init var of ReduceAction154";
 void INIT_ATTRIBUTES__parser___ReduceAction154(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction154_t)(val_t p0);
 val_t NEW_parser___ReduceAction154(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction154 = "check new ReduceAction154";
 void CHECKNEW_parser___ReduceAction154(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction154_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction154_parser___ReduceAction___init = "new ReduceAction154 parser::ReduceAction::init";
 val_t NEW_ReduceAction154_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction154_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction155 = "init var of ReduceAction155";
 void INIT_ATTRIBUTES__parser___ReduceAction155(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction155_t)(val_t p0);
 val_t NEW_parser___ReduceAction155(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction155 = "check new ReduceAction155";
 void CHECKNEW_parser___ReduceAction155(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction155_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction155_parser___ReduceAction___init = "new ReduceAction155 parser::ReduceAction::init";
 val_t NEW_ReduceAction155_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction155_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction156 = "init var of ReduceAction156";
 void INIT_ATTRIBUTES__parser___ReduceAction156(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction156_t)(val_t p0);
 val_t NEW_parser___ReduceAction156(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction156 = "check new ReduceAction156";
 void CHECKNEW_parser___ReduceAction156(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction156_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction156_parser___ReduceAction___init = "new ReduceAction156 parser::ReduceAction::init";
 val_t NEW_ReduceAction156_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction156_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction157 = "init var of ReduceAction157";
 void INIT_ATTRIBUTES__parser___ReduceAction157(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction157_t)(val_t p0);
 val_t NEW_parser___ReduceAction157(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction157 = "check new ReduceAction157";
 void CHECKNEW_parser___ReduceAction157(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction157_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction157_parser___ReduceAction___init = "new ReduceAction157 parser::ReduceAction::init";
 val_t NEW_ReduceAction157_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction157_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction158 = "init var of ReduceAction158";
 void INIT_ATTRIBUTES__parser___ReduceAction158(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction158_t)(val_t p0);
 val_t NEW_parser___ReduceAction158(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction158 = "check new ReduceAction158";
 void CHECKNEW_parser___ReduceAction158(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction158_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction158_parser___ReduceAction___init = "new ReduceAction158 parser::ReduceAction::init";
 val_t NEW_ReduceAction158_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction158_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction159 = "init var of ReduceAction159";
 void INIT_ATTRIBUTES__parser___ReduceAction159(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction159_t)(val_t p0);
 val_t NEW_parser___ReduceAction159(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction159 = "check new ReduceAction159";
 void CHECKNEW_parser___ReduceAction159(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction159_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction159_parser___ReduceAction___init = "new ReduceAction159 parser::ReduceAction::init";
 val_t NEW_ReduceAction159_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction159_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction160 = "init var of ReduceAction160";
 void INIT_ATTRIBUTES__parser___ReduceAction160(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction160_t)(val_t p0);
 val_t NEW_parser___ReduceAction160(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction160 = "check new ReduceAction160";
 void CHECKNEW_parser___ReduceAction160(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction160_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction160_parser___ReduceAction___init = "new ReduceAction160 parser::ReduceAction::init";
 val_t NEW_ReduceAction160_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction160_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction161 = "init var of ReduceAction161";
 void INIT_ATTRIBUTES__parser___ReduceAction161(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction161_t)(val_t p0);
 val_t NEW_parser___ReduceAction161(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction161 = "check new ReduceAction161";
 void CHECKNEW_parser___ReduceAction161(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction161_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction161_parser___ReduceAction___init = "new ReduceAction161 parser::ReduceAction::init";
 val_t NEW_ReduceAction161_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction161_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction162 = "init var of ReduceAction162";
 void INIT_ATTRIBUTES__parser___ReduceAction162(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction162_t)(val_t p0);
 val_t NEW_parser___ReduceAction162(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction162 = "check new ReduceAction162";
 void CHECKNEW_parser___ReduceAction162(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction162_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction162_parser___ReduceAction___init = "new ReduceAction162 parser::ReduceAction::init";
 val_t NEW_ReduceAction162_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction162_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction163 = "init var of ReduceAction163";
 void INIT_ATTRIBUTES__parser___ReduceAction163(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction163_t)(val_t p0);
 val_t NEW_parser___ReduceAction163(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction163 = "check new ReduceAction163";
 void CHECKNEW_parser___ReduceAction163(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction163_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction163_parser___ReduceAction___init = "new ReduceAction163 parser::ReduceAction::init";
 val_t NEW_ReduceAction163_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction163_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction164 = "init var of ReduceAction164";
 void INIT_ATTRIBUTES__parser___ReduceAction164(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction164_t)(val_t p0);
 val_t NEW_parser___ReduceAction164(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction164 = "check new ReduceAction164";
 void CHECKNEW_parser___ReduceAction164(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction164_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction164_parser___ReduceAction___init = "new ReduceAction164 parser::ReduceAction::init";
 val_t NEW_ReduceAction164_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction164_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction165 = "init var of ReduceAction165";
 void INIT_ATTRIBUTES__parser___ReduceAction165(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction165_t)(val_t p0);
 val_t NEW_parser___ReduceAction165(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction165 = "check new ReduceAction165";
 void CHECKNEW_parser___ReduceAction165(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction165_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction165_parser___ReduceAction___init = "new ReduceAction165 parser::ReduceAction::init";
 val_t NEW_ReduceAction165_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction165_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction166 = "init var of ReduceAction166";
 void INIT_ATTRIBUTES__parser___ReduceAction166(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction166_t)(val_t p0);
 val_t NEW_parser___ReduceAction166(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction166 = "check new ReduceAction166";
 void CHECKNEW_parser___ReduceAction166(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction166_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction166_parser___ReduceAction___init = "new ReduceAction166 parser::ReduceAction::init";
 val_t NEW_ReduceAction166_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction166_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction167 = "init var of ReduceAction167";
 void INIT_ATTRIBUTES__parser___ReduceAction167(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction167_t)(val_t p0);
 val_t NEW_parser___ReduceAction167(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction167 = "check new ReduceAction167";
 void CHECKNEW_parser___ReduceAction167(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction167_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction167_parser___ReduceAction___init = "new ReduceAction167 parser::ReduceAction::init";
 val_t NEW_ReduceAction167_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction167_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction168 = "init var of ReduceAction168";
 void INIT_ATTRIBUTES__parser___ReduceAction168(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction168_t)(val_t p0);
 val_t NEW_parser___ReduceAction168(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction168 = "check new ReduceAction168";
 void CHECKNEW_parser___ReduceAction168(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction168_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction168_parser___ReduceAction___init = "new ReduceAction168 parser::ReduceAction::init";
 val_t NEW_ReduceAction168_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction168_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction169 = "init var of ReduceAction169";
 void INIT_ATTRIBUTES__parser___ReduceAction169(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction169_t)(val_t p0);
 val_t NEW_parser___ReduceAction169(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction169 = "check new ReduceAction169";
 void CHECKNEW_parser___ReduceAction169(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction169_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction169_parser___ReduceAction___init = "new ReduceAction169 parser::ReduceAction::init";
 val_t NEW_ReduceAction169_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction169_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction170 = "init var of ReduceAction170";
 void INIT_ATTRIBUTES__parser___ReduceAction170(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction170_t)(val_t p0);
 val_t NEW_parser___ReduceAction170(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction170 = "check new ReduceAction170";
 void CHECKNEW_parser___ReduceAction170(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction170_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction170_parser___ReduceAction___init = "new ReduceAction170 parser::ReduceAction::init";
 val_t NEW_ReduceAction170_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction170_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction171 = "init var of ReduceAction171";
 void INIT_ATTRIBUTES__parser___ReduceAction171(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction171_t)(val_t p0);
 val_t NEW_parser___ReduceAction171(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction171 = "check new ReduceAction171";
 void CHECKNEW_parser___ReduceAction171(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction171_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction171_parser___ReduceAction___init = "new ReduceAction171 parser::ReduceAction::init";
 val_t NEW_ReduceAction171_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction171_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction172 = "init var of ReduceAction172";
 void INIT_ATTRIBUTES__parser___ReduceAction172(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction172_t)(val_t p0);
 val_t NEW_parser___ReduceAction172(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction172 = "check new ReduceAction172";
 void CHECKNEW_parser___ReduceAction172(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction172_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction172_parser___ReduceAction___init = "new ReduceAction172 parser::ReduceAction::init";
 val_t NEW_ReduceAction172_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction172_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction173 = "init var of ReduceAction173";
 void INIT_ATTRIBUTES__parser___ReduceAction173(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction173_t)(val_t p0);
 val_t NEW_parser___ReduceAction173(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction173 = "check new ReduceAction173";
 void CHECKNEW_parser___ReduceAction173(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction173_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction173_parser___ReduceAction___init = "new ReduceAction173 parser::ReduceAction::init";
 val_t NEW_ReduceAction173_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction173_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction174 = "init var of ReduceAction174";
 void INIT_ATTRIBUTES__parser___ReduceAction174(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction174_t)(val_t p0);
 val_t NEW_parser___ReduceAction174(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction174 = "check new ReduceAction174";
 void CHECKNEW_parser___ReduceAction174(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction174_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction174_parser___ReduceAction___init = "new ReduceAction174 parser::ReduceAction::init";
 val_t NEW_ReduceAction174_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction174_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction175 = "init var of ReduceAction175";
 void INIT_ATTRIBUTES__parser___ReduceAction175(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction175_t)(val_t p0);
 val_t NEW_parser___ReduceAction175(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction175 = "check new ReduceAction175";
 void CHECKNEW_parser___ReduceAction175(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction175_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction175_parser___ReduceAction___init = "new ReduceAction175 parser::ReduceAction::init";
 val_t NEW_ReduceAction175_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction175_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction176 = "init var of ReduceAction176";
 void INIT_ATTRIBUTES__parser___ReduceAction176(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction176_t)(val_t p0);
 val_t NEW_parser___ReduceAction176(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction176 = "check new ReduceAction176";
 void CHECKNEW_parser___ReduceAction176(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction176_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction176_parser___ReduceAction___init = "new ReduceAction176 parser::ReduceAction::init";
 val_t NEW_ReduceAction176_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction176_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction177 = "init var of ReduceAction177";
 void INIT_ATTRIBUTES__parser___ReduceAction177(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction177_t)(val_t p0);
 val_t NEW_parser___ReduceAction177(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction177 = "check new ReduceAction177";
 void CHECKNEW_parser___ReduceAction177(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction177_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction177_parser___ReduceAction___init = "new ReduceAction177 parser::ReduceAction::init";
 val_t NEW_ReduceAction177_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction177_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction178 = "init var of ReduceAction178";
 void INIT_ATTRIBUTES__parser___ReduceAction178(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction178_t)(val_t p0);
 val_t NEW_parser___ReduceAction178(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction178 = "check new ReduceAction178";
 void CHECKNEW_parser___ReduceAction178(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction178_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction178_parser___ReduceAction___init = "new ReduceAction178 parser::ReduceAction::init";
 val_t NEW_ReduceAction178_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction178_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction179 = "init var of ReduceAction179";
 void INIT_ATTRIBUTES__parser___ReduceAction179(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction179_t)(val_t p0);
 val_t NEW_parser___ReduceAction179(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction179 = "check new ReduceAction179";
 void CHECKNEW_parser___ReduceAction179(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction179_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction179_parser___ReduceAction___init = "new ReduceAction179 parser::ReduceAction::init";
 val_t NEW_ReduceAction179_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction179_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction180 = "init var of ReduceAction180";
 void INIT_ATTRIBUTES__parser___ReduceAction180(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction180_t)(val_t p0);
 val_t NEW_parser___ReduceAction180(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction180 = "check new ReduceAction180";
 void CHECKNEW_parser___ReduceAction180(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction180_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction180_parser___ReduceAction___init = "new ReduceAction180 parser::ReduceAction::init";
 val_t NEW_ReduceAction180_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction180_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction181 = "init var of ReduceAction181";
 void INIT_ATTRIBUTES__parser___ReduceAction181(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction181_t)(val_t p0);
 val_t NEW_parser___ReduceAction181(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction181 = "check new ReduceAction181";
 void CHECKNEW_parser___ReduceAction181(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction181_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction181_parser___ReduceAction___init = "new ReduceAction181 parser::ReduceAction::init";
 val_t NEW_ReduceAction181_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction181_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction182 = "init var of ReduceAction182";
 void INIT_ATTRIBUTES__parser___ReduceAction182(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction182_t)(val_t p0);
 val_t NEW_parser___ReduceAction182(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction182 = "check new ReduceAction182";
 void CHECKNEW_parser___ReduceAction182(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction182_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction182_parser___ReduceAction___init = "new ReduceAction182 parser::ReduceAction::init";
 val_t NEW_ReduceAction182_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction182_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction183 = "init var of ReduceAction183";
 void INIT_ATTRIBUTES__parser___ReduceAction183(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction183_t)(val_t p0);
 val_t NEW_parser___ReduceAction183(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction183 = "check new ReduceAction183";
 void CHECKNEW_parser___ReduceAction183(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction183_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction183_parser___ReduceAction___init = "new ReduceAction183 parser::ReduceAction::init";
 val_t NEW_ReduceAction183_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction183_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction184 = "init var of ReduceAction184";
 void INIT_ATTRIBUTES__parser___ReduceAction184(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction184_t)(val_t p0);
 val_t NEW_parser___ReduceAction184(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction184 = "check new ReduceAction184";
 void CHECKNEW_parser___ReduceAction184(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction184_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction184_parser___ReduceAction___init = "new ReduceAction184 parser::ReduceAction::init";
 val_t NEW_ReduceAction184_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction184_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction185 = "init var of ReduceAction185";
 void INIT_ATTRIBUTES__parser___ReduceAction185(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction185_t)(val_t p0);
 val_t NEW_parser___ReduceAction185(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction185 = "check new ReduceAction185";
 void CHECKNEW_parser___ReduceAction185(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction185_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction185_parser___ReduceAction___init = "new ReduceAction185 parser::ReduceAction::init";
 val_t NEW_ReduceAction185_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction185_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction186 = "init var of ReduceAction186";
 void INIT_ATTRIBUTES__parser___ReduceAction186(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction186_t)(val_t p0);
 val_t NEW_parser___ReduceAction186(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction186 = "check new ReduceAction186";
 void CHECKNEW_parser___ReduceAction186(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction186_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction186_parser___ReduceAction___init = "new ReduceAction186 parser::ReduceAction::init";
 val_t NEW_ReduceAction186_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction186_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction187 = "init var of ReduceAction187";
 void INIT_ATTRIBUTES__parser___ReduceAction187(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction187_t)(val_t p0);
 val_t NEW_parser___ReduceAction187(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction187 = "check new ReduceAction187";
 void CHECKNEW_parser___ReduceAction187(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction187_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction187_parser___ReduceAction___init = "new ReduceAction187 parser::ReduceAction::init";
 val_t NEW_ReduceAction187_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction187_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction188 = "init var of ReduceAction188";
 void INIT_ATTRIBUTES__parser___ReduceAction188(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction188_t)(val_t p0);
 val_t NEW_parser___ReduceAction188(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction188 = "check new ReduceAction188";
 void CHECKNEW_parser___ReduceAction188(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction188_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction188_parser___ReduceAction___init = "new ReduceAction188 parser::ReduceAction::init";
 val_t NEW_ReduceAction188_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction188_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction189 = "init var of ReduceAction189";
 void INIT_ATTRIBUTES__parser___ReduceAction189(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction189_t)(val_t p0);
 val_t NEW_parser___ReduceAction189(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction189 = "check new ReduceAction189";
 void CHECKNEW_parser___ReduceAction189(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction189_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction189_parser___ReduceAction___init = "new ReduceAction189 parser::ReduceAction::init";
 val_t NEW_ReduceAction189_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction189_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction190 = "init var of ReduceAction190";
 void INIT_ATTRIBUTES__parser___ReduceAction190(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction190_t)(val_t p0);
 val_t NEW_parser___ReduceAction190(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction190 = "check new ReduceAction190";
 void CHECKNEW_parser___ReduceAction190(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction190_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction190_parser___ReduceAction___init = "new ReduceAction190 parser::ReduceAction::init";
 val_t NEW_ReduceAction190_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction190_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction191 = "init var of ReduceAction191";
 void INIT_ATTRIBUTES__parser___ReduceAction191(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction191_t)(val_t p0);
 val_t NEW_parser___ReduceAction191(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction191 = "check new ReduceAction191";
 void CHECKNEW_parser___ReduceAction191(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction191_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction191_parser___ReduceAction___init = "new ReduceAction191 parser::ReduceAction::init";
 val_t NEW_ReduceAction191_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction191_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction192 = "init var of ReduceAction192";
 void INIT_ATTRIBUTES__parser___ReduceAction192(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction192_t)(val_t p0);
 val_t NEW_parser___ReduceAction192(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction192 = "check new ReduceAction192";
 void CHECKNEW_parser___ReduceAction192(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction192_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction192_parser___ReduceAction___init = "new ReduceAction192 parser::ReduceAction::init";
 val_t NEW_ReduceAction192_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction192_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction193 = "init var of ReduceAction193";
 void INIT_ATTRIBUTES__parser___ReduceAction193(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction193_t)(val_t p0);
 val_t NEW_parser___ReduceAction193(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction193 = "check new ReduceAction193";
 void CHECKNEW_parser___ReduceAction193(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction193_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction193_parser___ReduceAction___init = "new ReduceAction193 parser::ReduceAction::init";
 val_t NEW_ReduceAction193_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction193_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction194 = "init var of ReduceAction194";
 void INIT_ATTRIBUTES__parser___ReduceAction194(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction194_t)(val_t p0);
 val_t NEW_parser___ReduceAction194(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction194 = "check new ReduceAction194";
 void CHECKNEW_parser___ReduceAction194(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction194_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction194_parser___ReduceAction___init = "new ReduceAction194 parser::ReduceAction::init";
 val_t NEW_ReduceAction194_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction194_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction195 = "init var of ReduceAction195";
 void INIT_ATTRIBUTES__parser___ReduceAction195(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction195_t)(val_t p0);
 val_t NEW_parser___ReduceAction195(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction195 = "check new ReduceAction195";
 void CHECKNEW_parser___ReduceAction195(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction195_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction195_parser___ReduceAction___init = "new ReduceAction195 parser::ReduceAction::init";
 val_t NEW_ReduceAction195_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction195_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction196 = "init var of ReduceAction196";
 void INIT_ATTRIBUTES__parser___ReduceAction196(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction196_t)(val_t p0);
 val_t NEW_parser___ReduceAction196(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction196 = "check new ReduceAction196";
 void CHECKNEW_parser___ReduceAction196(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction196_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction196_parser___ReduceAction___init = "new ReduceAction196 parser::ReduceAction::init";
 val_t NEW_ReduceAction196_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction196_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction197 = "init var of ReduceAction197";
 void INIT_ATTRIBUTES__parser___ReduceAction197(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction197_t)(val_t p0);
 val_t NEW_parser___ReduceAction197(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction197 = "check new ReduceAction197";
 void CHECKNEW_parser___ReduceAction197(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction197_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction197_parser___ReduceAction___init = "new ReduceAction197 parser::ReduceAction::init";
 val_t NEW_ReduceAction197_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction197_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction198 = "init var of ReduceAction198";
 void INIT_ATTRIBUTES__parser___ReduceAction198(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction198_t)(val_t p0);
 val_t NEW_parser___ReduceAction198(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction198 = "check new ReduceAction198";
 void CHECKNEW_parser___ReduceAction198(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction198_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction198_parser___ReduceAction___init = "new ReduceAction198 parser::ReduceAction::init";
 val_t NEW_ReduceAction198_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction198_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction199 = "init var of ReduceAction199";
 void INIT_ATTRIBUTES__parser___ReduceAction199(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction199_t)(val_t p0);
 val_t NEW_parser___ReduceAction199(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction199 = "check new ReduceAction199";
 void CHECKNEW_parser___ReduceAction199(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction199_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction199_parser___ReduceAction___init = "new ReduceAction199 parser::ReduceAction::init";
 val_t NEW_ReduceAction199_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction199_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction200 = "init var of ReduceAction200";
 void INIT_ATTRIBUTES__parser___ReduceAction200(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction200_t)(val_t p0);
 val_t NEW_parser___ReduceAction200(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction200 = "check new ReduceAction200";
 void CHECKNEW_parser___ReduceAction200(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction200_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction200_parser___ReduceAction___init = "new ReduceAction200 parser::ReduceAction::init";
 val_t NEW_ReduceAction200_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction200_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction201 = "init var of ReduceAction201";
 void INIT_ATTRIBUTES__parser___ReduceAction201(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction201_t)(val_t p0);
 val_t NEW_parser___ReduceAction201(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction201 = "check new ReduceAction201";
 void CHECKNEW_parser___ReduceAction201(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction201_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction201_parser___ReduceAction___init = "new ReduceAction201 parser::ReduceAction::init";
 val_t NEW_ReduceAction201_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction201_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction202 = "init var of ReduceAction202";
 void INIT_ATTRIBUTES__parser___ReduceAction202(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction202_t)(val_t p0);
 val_t NEW_parser___ReduceAction202(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction202 = "check new ReduceAction202";
 void CHECKNEW_parser___ReduceAction202(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction202_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction202_parser___ReduceAction___init = "new ReduceAction202 parser::ReduceAction::init";
 val_t NEW_ReduceAction202_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction202_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction203 = "init var of ReduceAction203";
 void INIT_ATTRIBUTES__parser___ReduceAction203(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction203_t)(val_t p0);
 val_t NEW_parser___ReduceAction203(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction203 = "check new ReduceAction203";
 void CHECKNEW_parser___ReduceAction203(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction203_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction203_parser___ReduceAction___init = "new ReduceAction203 parser::ReduceAction::init";
 val_t NEW_ReduceAction203_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction203_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction204 = "init var of ReduceAction204";
 void INIT_ATTRIBUTES__parser___ReduceAction204(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction204_t)(val_t p0);
 val_t NEW_parser___ReduceAction204(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction204 = "check new ReduceAction204";
 void CHECKNEW_parser___ReduceAction204(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction204_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction204_parser___ReduceAction___init = "new ReduceAction204 parser::ReduceAction::init";
 val_t NEW_ReduceAction204_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction204_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction205 = "init var of ReduceAction205";
 void INIT_ATTRIBUTES__parser___ReduceAction205(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction205_t)(val_t p0);
 val_t NEW_parser___ReduceAction205(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction205 = "check new ReduceAction205";
 void CHECKNEW_parser___ReduceAction205(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction205_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction205_parser___ReduceAction___init = "new ReduceAction205 parser::ReduceAction::init";
 val_t NEW_ReduceAction205_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction205_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction206 = "init var of ReduceAction206";
 void INIT_ATTRIBUTES__parser___ReduceAction206(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction206_t)(val_t p0);
 val_t NEW_parser___ReduceAction206(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction206 = "check new ReduceAction206";
 void CHECKNEW_parser___ReduceAction206(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction206_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction206_parser___ReduceAction___init = "new ReduceAction206 parser::ReduceAction::init";
 val_t NEW_ReduceAction206_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction206_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction207 = "init var of ReduceAction207";
 void INIT_ATTRIBUTES__parser___ReduceAction207(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction207_t)(val_t p0);
 val_t NEW_parser___ReduceAction207(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction207 = "check new ReduceAction207";
 void CHECKNEW_parser___ReduceAction207(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction207_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction207_parser___ReduceAction___init = "new ReduceAction207 parser::ReduceAction::init";
 val_t NEW_ReduceAction207_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction207_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction208 = "init var of ReduceAction208";
 void INIT_ATTRIBUTES__parser___ReduceAction208(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction208_t)(val_t p0);
 val_t NEW_parser___ReduceAction208(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction208 = "check new ReduceAction208";
 void CHECKNEW_parser___ReduceAction208(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction208_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction208_parser___ReduceAction___init = "new ReduceAction208 parser::ReduceAction::init";
 val_t NEW_ReduceAction208_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction208_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction209 = "init var of ReduceAction209";
 void INIT_ATTRIBUTES__parser___ReduceAction209(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction209_t)(val_t p0);
 val_t NEW_parser___ReduceAction209(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction209 = "check new ReduceAction209";
 void CHECKNEW_parser___ReduceAction209(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction209_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction209_parser___ReduceAction___init = "new ReduceAction209 parser::ReduceAction::init";
 val_t NEW_ReduceAction209_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction209_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction210 = "init var of ReduceAction210";
 void INIT_ATTRIBUTES__parser___ReduceAction210(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction210_t)(val_t p0);
 val_t NEW_parser___ReduceAction210(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction210 = "check new ReduceAction210";
 void CHECKNEW_parser___ReduceAction210(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction210_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction210_parser___ReduceAction___init = "new ReduceAction210 parser::ReduceAction::init";
 val_t NEW_ReduceAction210_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction210_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction211 = "init var of ReduceAction211";
 void INIT_ATTRIBUTES__parser___ReduceAction211(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction211_t)(val_t p0);
 val_t NEW_parser___ReduceAction211(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction211 = "check new ReduceAction211";
 void CHECKNEW_parser___ReduceAction211(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction211_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction211_parser___ReduceAction___init = "new ReduceAction211 parser::ReduceAction::init";
 val_t NEW_ReduceAction211_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction211_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction212 = "init var of ReduceAction212";
 void INIT_ATTRIBUTES__parser___ReduceAction212(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction212_t)(val_t p0);
 val_t NEW_parser___ReduceAction212(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction212 = "check new ReduceAction212";
 void CHECKNEW_parser___ReduceAction212(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction212_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction212_parser___ReduceAction___init = "new ReduceAction212 parser::ReduceAction::init";
 val_t NEW_ReduceAction212_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction212_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction213 = "init var of ReduceAction213";
 void INIT_ATTRIBUTES__parser___ReduceAction213(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction213_t)(val_t p0);
 val_t NEW_parser___ReduceAction213(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction213 = "check new ReduceAction213";
 void CHECKNEW_parser___ReduceAction213(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction213_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction213_parser___ReduceAction___init = "new ReduceAction213 parser::ReduceAction::init";
 val_t NEW_ReduceAction213_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction213_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction214 = "init var of ReduceAction214";
 void INIT_ATTRIBUTES__parser___ReduceAction214(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction214_t)(val_t p0);
 val_t NEW_parser___ReduceAction214(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction214 = "check new ReduceAction214";
 void CHECKNEW_parser___ReduceAction214(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction214_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction214_parser___ReduceAction___init = "new ReduceAction214 parser::ReduceAction::init";
 val_t NEW_ReduceAction214_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction214_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction215 = "init var of ReduceAction215";
 void INIT_ATTRIBUTES__parser___ReduceAction215(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction215_t)(val_t p0);
 val_t NEW_parser___ReduceAction215(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction215 = "check new ReduceAction215";
 void CHECKNEW_parser___ReduceAction215(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction215_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction215_parser___ReduceAction___init = "new ReduceAction215 parser::ReduceAction::init";
 val_t NEW_ReduceAction215_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction215_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction216 = "init var of ReduceAction216";
 void INIT_ATTRIBUTES__parser___ReduceAction216(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction216_t)(val_t p0);
 val_t NEW_parser___ReduceAction216(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction216 = "check new ReduceAction216";
 void CHECKNEW_parser___ReduceAction216(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction216_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction216_parser___ReduceAction___init = "new ReduceAction216 parser::ReduceAction::init";
 val_t NEW_ReduceAction216_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction216_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction217 = "init var of ReduceAction217";
 void INIT_ATTRIBUTES__parser___ReduceAction217(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction217_t)(val_t p0);
 val_t NEW_parser___ReduceAction217(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction217 = "check new ReduceAction217";
 void CHECKNEW_parser___ReduceAction217(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction217_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction217_parser___ReduceAction___init = "new ReduceAction217 parser::ReduceAction::init";
 val_t NEW_ReduceAction217_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction217_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction218 = "init var of ReduceAction218";
 void INIT_ATTRIBUTES__parser___ReduceAction218(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction218_t)(val_t p0);
 val_t NEW_parser___ReduceAction218(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction218 = "check new ReduceAction218";
 void CHECKNEW_parser___ReduceAction218(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction218_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction218_parser___ReduceAction___init = "new ReduceAction218 parser::ReduceAction::init";
 val_t NEW_ReduceAction218_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction218_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction220 = "init var of ReduceAction220";
+void INIT_ATTRIBUTES__parser___ReduceAction219(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction219_t)(val_t p0);
+val_t NEW_parser___ReduceAction219(void);
+void CHECKNEW_parser___ReduceAction219(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction219_t)(val_t p0);
+val_t NEW_ReduceAction219_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction219_parser___ReduceAction___init_t)(val_t p0);
 void INIT_ATTRIBUTES__parser___ReduceAction220(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction220_t)(val_t p0);
 val_t NEW_parser___ReduceAction220(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction220 = "check new ReduceAction220";
 void CHECKNEW_parser___ReduceAction220(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction220_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction220_parser___ReduceAction___init = "new ReduceAction220 parser::ReduceAction::init";
 val_t NEW_ReduceAction220_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction220_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction221 = "init var of ReduceAction221";
 void INIT_ATTRIBUTES__parser___ReduceAction221(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction221_t)(val_t p0);
 val_t NEW_parser___ReduceAction221(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction221 = "check new ReduceAction221";
 void CHECKNEW_parser___ReduceAction221(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction221_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction221_parser___ReduceAction___init = "new ReduceAction221 parser::ReduceAction::init";
 val_t NEW_ReduceAction221_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction221_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction222 = "init var of ReduceAction222";
 void INIT_ATTRIBUTES__parser___ReduceAction222(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction222_t)(val_t p0);
 val_t NEW_parser___ReduceAction222(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction222 = "check new ReduceAction222";
 void CHECKNEW_parser___ReduceAction222(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction222_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction222_parser___ReduceAction___init = "new ReduceAction222 parser::ReduceAction::init";
 val_t NEW_ReduceAction222_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction222_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction223 = "init var of ReduceAction223";
 void INIT_ATTRIBUTES__parser___ReduceAction223(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction223_t)(val_t p0);
 val_t NEW_parser___ReduceAction223(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction223 = "check new ReduceAction223";
 void CHECKNEW_parser___ReduceAction223(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction223_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction223_parser___ReduceAction___init = "new ReduceAction223 parser::ReduceAction::init";
 val_t NEW_ReduceAction223_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction223_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction224 = "init var of ReduceAction224";
 void INIT_ATTRIBUTES__parser___ReduceAction224(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction224_t)(val_t p0);
 val_t NEW_parser___ReduceAction224(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction224 = "check new ReduceAction224";
 void CHECKNEW_parser___ReduceAction224(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction224_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction224_parser___ReduceAction___init = "new ReduceAction224 parser::ReduceAction::init";
 val_t NEW_ReduceAction224_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction224_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction225 = "init var of ReduceAction225";
 void INIT_ATTRIBUTES__parser___ReduceAction225(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction225_t)(val_t p0);
 val_t NEW_parser___ReduceAction225(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction225 = "check new ReduceAction225";
 void CHECKNEW_parser___ReduceAction225(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction225_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction225_parser___ReduceAction___init = "new ReduceAction225 parser::ReduceAction::init";
 val_t NEW_ReduceAction225_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction225_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction226 = "init var of ReduceAction226";
 void INIT_ATTRIBUTES__parser___ReduceAction226(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction226_t)(val_t p0);
 val_t NEW_parser___ReduceAction226(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction226 = "check new ReduceAction226";
 void CHECKNEW_parser___ReduceAction226(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction226_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction226_parser___ReduceAction___init = "new ReduceAction226 parser::ReduceAction::init";
 val_t NEW_ReduceAction226_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction226_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction227 = "init var of ReduceAction227";
 void INIT_ATTRIBUTES__parser___ReduceAction227(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction227_t)(val_t p0);
 val_t NEW_parser___ReduceAction227(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction227 = "check new ReduceAction227";
 void CHECKNEW_parser___ReduceAction227(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction227_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction227_parser___ReduceAction___init = "new ReduceAction227 parser::ReduceAction::init";
 val_t NEW_ReduceAction227_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction227_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction228 = "init var of ReduceAction228";
 void INIT_ATTRIBUTES__parser___ReduceAction228(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction228_t)(val_t p0);
 val_t NEW_parser___ReduceAction228(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction228 = "check new ReduceAction228";
 void CHECKNEW_parser___ReduceAction228(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction228_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction228_parser___ReduceAction___init = "new ReduceAction228 parser::ReduceAction::init";
 val_t NEW_ReduceAction228_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction228_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction229 = "init var of ReduceAction229";
 void INIT_ATTRIBUTES__parser___ReduceAction229(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction229_t)(val_t p0);
 val_t NEW_parser___ReduceAction229(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction229 = "check new ReduceAction229";
 void CHECKNEW_parser___ReduceAction229(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction229_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction229_parser___ReduceAction___init = "new ReduceAction229 parser::ReduceAction::init";
 val_t NEW_ReduceAction229_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction229_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction230 = "init var of ReduceAction230";
 void INIT_ATTRIBUTES__parser___ReduceAction230(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction230_t)(val_t p0);
 val_t NEW_parser___ReduceAction230(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction230 = "check new ReduceAction230";
 void CHECKNEW_parser___ReduceAction230(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction230_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction230_parser___ReduceAction___init = "new ReduceAction230 parser::ReduceAction::init";
 val_t NEW_ReduceAction230_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction230_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction231 = "init var of ReduceAction231";
 void INIT_ATTRIBUTES__parser___ReduceAction231(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction231_t)(val_t p0);
 val_t NEW_parser___ReduceAction231(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction231 = "check new ReduceAction231";
 void CHECKNEW_parser___ReduceAction231(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction231_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction231_parser___ReduceAction___init = "new ReduceAction231 parser::ReduceAction::init";
 val_t NEW_ReduceAction231_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction231_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction232 = "init var of ReduceAction232";
 void INIT_ATTRIBUTES__parser___ReduceAction232(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction232_t)(val_t p0);
 val_t NEW_parser___ReduceAction232(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction232 = "check new ReduceAction232";
 void CHECKNEW_parser___ReduceAction232(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction232_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction232_parser___ReduceAction___init = "new ReduceAction232 parser::ReduceAction::init";
 val_t NEW_ReduceAction232_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction232_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction233 = "init var of ReduceAction233";
 void INIT_ATTRIBUTES__parser___ReduceAction233(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction233_t)(val_t p0);
 val_t NEW_parser___ReduceAction233(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction233 = "check new ReduceAction233";
 void CHECKNEW_parser___ReduceAction233(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction233_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction233_parser___ReduceAction___init = "new ReduceAction233 parser::ReduceAction::init";
 val_t NEW_ReduceAction233_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction233_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction235 = "init var of ReduceAction235";
+void INIT_ATTRIBUTES__parser___ReduceAction234(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction234_t)(val_t p0);
+val_t NEW_parser___ReduceAction234(void);
+void CHECKNEW_parser___ReduceAction234(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction234_t)(val_t p0);
+val_t NEW_ReduceAction234_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction234_parser___ReduceAction___init_t)(val_t p0);
 void INIT_ATTRIBUTES__parser___ReduceAction235(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction235_t)(val_t p0);
 val_t NEW_parser___ReduceAction235(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction235 = "check new ReduceAction235";
 void CHECKNEW_parser___ReduceAction235(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction235_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction235_parser___ReduceAction___init = "new ReduceAction235 parser::ReduceAction::init";
 val_t NEW_ReduceAction235_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction235_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction236 = "init var of ReduceAction236";
 void INIT_ATTRIBUTES__parser___ReduceAction236(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction236_t)(val_t p0);
 val_t NEW_parser___ReduceAction236(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction236 = "check new ReduceAction236";
 void CHECKNEW_parser___ReduceAction236(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction236_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction236_parser___ReduceAction___init = "new ReduceAction236 parser::ReduceAction::init";
 val_t NEW_ReduceAction236_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction236_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction237 = "init var of ReduceAction237";
 void INIT_ATTRIBUTES__parser___ReduceAction237(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction237_t)(val_t p0);
 val_t NEW_parser___ReduceAction237(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction237 = "check new ReduceAction237";
 void CHECKNEW_parser___ReduceAction237(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction237_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction237_parser___ReduceAction___init = "new ReduceAction237 parser::ReduceAction::init";
 val_t NEW_ReduceAction237_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction237_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction238 = "init var of ReduceAction238";
 void INIT_ATTRIBUTES__parser___ReduceAction238(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction238_t)(val_t p0);
 val_t NEW_parser___ReduceAction238(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction238 = "check new ReduceAction238";
 void CHECKNEW_parser___ReduceAction238(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction238_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction238_parser___ReduceAction___init = "new ReduceAction238 parser::ReduceAction::init";
 val_t NEW_ReduceAction238_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction238_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction239 = "init var of ReduceAction239";
 void INIT_ATTRIBUTES__parser___ReduceAction239(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction239_t)(val_t p0);
 val_t NEW_parser___ReduceAction239(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction239 = "check new ReduceAction239";
 void CHECKNEW_parser___ReduceAction239(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction239_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction239_parser___ReduceAction___init = "new ReduceAction239 parser::ReduceAction::init";
 val_t NEW_ReduceAction239_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction239_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction240 = "init var of ReduceAction240";
 void INIT_ATTRIBUTES__parser___ReduceAction240(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction240_t)(val_t p0);
 val_t NEW_parser___ReduceAction240(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction240 = "check new ReduceAction240";
 void CHECKNEW_parser___ReduceAction240(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction240_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction240_parser___ReduceAction___init = "new ReduceAction240 parser::ReduceAction::init";
 val_t NEW_ReduceAction240_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction240_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction241 = "init var of ReduceAction241";
 void INIT_ATTRIBUTES__parser___ReduceAction241(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction241_t)(val_t p0);
 val_t NEW_parser___ReduceAction241(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction241 = "check new ReduceAction241";
 void CHECKNEW_parser___ReduceAction241(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction241_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction241_parser___ReduceAction___init = "new ReduceAction241 parser::ReduceAction::init";
 val_t NEW_ReduceAction241_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction241_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction242 = "init var of ReduceAction242";
 void INIT_ATTRIBUTES__parser___ReduceAction242(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction242_t)(val_t p0);
 val_t NEW_parser___ReduceAction242(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction242 = "check new ReduceAction242";
 void CHECKNEW_parser___ReduceAction242(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction242_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction242_parser___ReduceAction___init = "new ReduceAction242 parser::ReduceAction::init";
 val_t NEW_ReduceAction242_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction242_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction243 = "init var of ReduceAction243";
 void INIT_ATTRIBUTES__parser___ReduceAction243(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction243_t)(val_t p0);
 val_t NEW_parser___ReduceAction243(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction243 = "check new ReduceAction243";
 void CHECKNEW_parser___ReduceAction243(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction243_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction243_parser___ReduceAction___init = "new ReduceAction243 parser::ReduceAction::init";
 val_t NEW_ReduceAction243_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction243_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction246 = "init var of ReduceAction246";
+void INIT_ATTRIBUTES__parser___ReduceAction244(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction244_t)(val_t p0);
+val_t NEW_parser___ReduceAction244(void);
+void CHECKNEW_parser___ReduceAction244(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction244_t)(val_t p0);
+val_t NEW_ReduceAction244_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction244_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction245(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction245_t)(val_t p0);
+val_t NEW_parser___ReduceAction245(void);
+void CHECKNEW_parser___ReduceAction245(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction245_t)(val_t p0);
+val_t NEW_ReduceAction245_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction245_parser___ReduceAction___init_t)(val_t p0);
 void INIT_ATTRIBUTES__parser___ReduceAction246(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction246_t)(val_t p0);
 val_t NEW_parser___ReduceAction246(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction246 = "check new ReduceAction246";
 void CHECKNEW_parser___ReduceAction246(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction246_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction246_parser___ReduceAction___init = "new ReduceAction246 parser::ReduceAction::init";
 val_t NEW_ReduceAction246_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction246_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction247 = "init var of ReduceAction247";
 void INIT_ATTRIBUTES__parser___ReduceAction247(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction247_t)(val_t p0);
 val_t NEW_parser___ReduceAction247(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction247 = "check new ReduceAction247";
 void CHECKNEW_parser___ReduceAction247(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction247_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction247_parser___ReduceAction___init = "new ReduceAction247 parser::ReduceAction::init";
 val_t NEW_ReduceAction247_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction247_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction248 = "init var of ReduceAction248";
 void INIT_ATTRIBUTES__parser___ReduceAction248(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction248_t)(val_t p0);
 val_t NEW_parser___ReduceAction248(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction248 = "check new ReduceAction248";
 void CHECKNEW_parser___ReduceAction248(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction248_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction248_parser___ReduceAction___init = "new ReduceAction248 parser::ReduceAction::init";
 val_t NEW_ReduceAction248_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction248_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction249 = "init var of ReduceAction249";
 void INIT_ATTRIBUTES__parser___ReduceAction249(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction249_t)(val_t p0);
 val_t NEW_parser___ReduceAction249(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction249 = "check new ReduceAction249";
 void CHECKNEW_parser___ReduceAction249(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction249_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction249_parser___ReduceAction___init = "new ReduceAction249 parser::ReduceAction::init";
 val_t NEW_ReduceAction249_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction249_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction250 = "init var of ReduceAction250";
 void INIT_ATTRIBUTES__parser___ReduceAction250(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction250_t)(val_t p0);
 val_t NEW_parser___ReduceAction250(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction250 = "check new ReduceAction250";
 void CHECKNEW_parser___ReduceAction250(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction250_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction250_parser___ReduceAction___init = "new ReduceAction250 parser::ReduceAction::init";
 val_t NEW_ReduceAction250_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction250_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction251 = "init var of ReduceAction251";
 void INIT_ATTRIBUTES__parser___ReduceAction251(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction251_t)(val_t p0);
 val_t NEW_parser___ReduceAction251(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction251 = "check new ReduceAction251";
 void CHECKNEW_parser___ReduceAction251(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction251_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction251_parser___ReduceAction___init = "new ReduceAction251 parser::ReduceAction::init";
 val_t NEW_ReduceAction251_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction251_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction252 = "init var of ReduceAction252";
 void INIT_ATTRIBUTES__parser___ReduceAction252(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction252_t)(val_t p0);
 val_t NEW_parser___ReduceAction252(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction252 = "check new ReduceAction252";
 void CHECKNEW_parser___ReduceAction252(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction252_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction252_parser___ReduceAction___init = "new ReduceAction252 parser::ReduceAction::init";
 val_t NEW_ReduceAction252_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction252_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction253 = "init var of ReduceAction253";
 void INIT_ATTRIBUTES__parser___ReduceAction253(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction253_t)(val_t p0);
 val_t NEW_parser___ReduceAction253(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction253 = "check new ReduceAction253";
 void CHECKNEW_parser___ReduceAction253(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction253_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction253_parser___ReduceAction___init = "new ReduceAction253 parser::ReduceAction::init";
 val_t NEW_ReduceAction253_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction253_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction254 = "init var of ReduceAction254";
 void INIT_ATTRIBUTES__parser___ReduceAction254(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction254_t)(val_t p0);
 val_t NEW_parser___ReduceAction254(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction254 = "check new ReduceAction254";
 void CHECKNEW_parser___ReduceAction254(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction254_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction254_parser___ReduceAction___init = "new ReduceAction254 parser::ReduceAction::init";
 val_t NEW_ReduceAction254_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction254_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction255 = "init var of ReduceAction255";
 void INIT_ATTRIBUTES__parser___ReduceAction255(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction255_t)(val_t p0);
 val_t NEW_parser___ReduceAction255(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction255 = "check new ReduceAction255";
 void CHECKNEW_parser___ReduceAction255(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction255_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction255_parser___ReduceAction___init = "new ReduceAction255 parser::ReduceAction::init";
 val_t NEW_ReduceAction255_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction255_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction256 = "init var of ReduceAction256";
 void INIT_ATTRIBUTES__parser___ReduceAction256(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction256_t)(val_t p0);
 val_t NEW_parser___ReduceAction256(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction256 = "check new ReduceAction256";
 void CHECKNEW_parser___ReduceAction256(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction256_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction256_parser___ReduceAction___init = "new ReduceAction256 parser::ReduceAction::init";
 val_t NEW_ReduceAction256_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction256_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction263 = "init var of ReduceAction263";
+void INIT_ATTRIBUTES__parser___ReduceAction257(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction257_t)(val_t p0);
+val_t NEW_parser___ReduceAction257(void);
+void CHECKNEW_parser___ReduceAction257(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction257_t)(val_t p0);
+val_t NEW_ReduceAction257_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction257_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction258(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction258_t)(val_t p0);
+val_t NEW_parser___ReduceAction258(void);
+void CHECKNEW_parser___ReduceAction258(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction258_t)(val_t p0);
+val_t NEW_ReduceAction258_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction258_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction259(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction259_t)(val_t p0);
+val_t NEW_parser___ReduceAction259(void);
+void CHECKNEW_parser___ReduceAction259(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction259_t)(val_t p0);
+val_t NEW_ReduceAction259_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction259_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction260(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction260_t)(val_t p0);
+val_t NEW_parser___ReduceAction260(void);
+void CHECKNEW_parser___ReduceAction260(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction260_t)(val_t p0);
+val_t NEW_ReduceAction260_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction260_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction261(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction261_t)(val_t p0);
+val_t NEW_parser___ReduceAction261(void);
+void CHECKNEW_parser___ReduceAction261(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction261_t)(val_t p0);
+val_t NEW_ReduceAction261_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction261_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction262(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction262_t)(val_t p0);
+val_t NEW_parser___ReduceAction262(void);
+void CHECKNEW_parser___ReduceAction262(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction262_t)(val_t p0);
+val_t NEW_ReduceAction262_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction262_parser___ReduceAction___init_t)(val_t p0);
 void INIT_ATTRIBUTES__parser___ReduceAction263(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction263_t)(val_t p0);
 val_t NEW_parser___ReduceAction263(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction263 = "check new ReduceAction263";
 void CHECKNEW_parser___ReduceAction263(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction263_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction263_parser___ReduceAction___init = "new ReduceAction263 parser::ReduceAction::init";
 val_t NEW_ReduceAction263_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction263_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction264 = "init var of ReduceAction264";
 void INIT_ATTRIBUTES__parser___ReduceAction264(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction264_t)(val_t p0);
 val_t NEW_parser___ReduceAction264(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction264 = "check new ReduceAction264";
 void CHECKNEW_parser___ReduceAction264(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction264_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction264_parser___ReduceAction___init = "new ReduceAction264 parser::ReduceAction::init";
 val_t NEW_ReduceAction264_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction264_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction265 = "init var of ReduceAction265";
 void INIT_ATTRIBUTES__parser___ReduceAction265(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction265_t)(val_t p0);
 val_t NEW_parser___ReduceAction265(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction265 = "check new ReduceAction265";
 void CHECKNEW_parser___ReduceAction265(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction265_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction265_parser___ReduceAction___init = "new ReduceAction265 parser::ReduceAction::init";
 val_t NEW_ReduceAction265_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction265_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction266 = "init var of ReduceAction266";
 void INIT_ATTRIBUTES__parser___ReduceAction266(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction266_t)(val_t p0);
 val_t NEW_parser___ReduceAction266(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction266 = "check new ReduceAction266";
 void CHECKNEW_parser___ReduceAction266(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction266_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction266_parser___ReduceAction___init = "new ReduceAction266 parser::ReduceAction::init";
 val_t NEW_ReduceAction266_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction266_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction267 = "init var of ReduceAction267";
 void INIT_ATTRIBUTES__parser___ReduceAction267(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction267_t)(val_t p0);
 val_t NEW_parser___ReduceAction267(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction267 = "check new ReduceAction267";
 void CHECKNEW_parser___ReduceAction267(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction267_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction267_parser___ReduceAction___init = "new ReduceAction267 parser::ReduceAction::init";
 val_t NEW_ReduceAction267_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction267_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction268 = "init var of ReduceAction268";
 void INIT_ATTRIBUTES__parser___ReduceAction268(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction268_t)(val_t p0);
 val_t NEW_parser___ReduceAction268(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction268 = "check new ReduceAction268";
 void CHECKNEW_parser___ReduceAction268(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction268_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction268_parser___ReduceAction___init = "new ReduceAction268 parser::ReduceAction::init";
 val_t NEW_ReduceAction268_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction268_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction269 = "init var of ReduceAction269";
 void INIT_ATTRIBUTES__parser___ReduceAction269(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction269_t)(val_t p0);
 val_t NEW_parser___ReduceAction269(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction269 = "check new ReduceAction269";
 void CHECKNEW_parser___ReduceAction269(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction269_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction269_parser___ReduceAction___init = "new ReduceAction269 parser::ReduceAction::init";
 val_t NEW_ReduceAction269_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction269_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction270 = "init var of ReduceAction270";
 void INIT_ATTRIBUTES__parser___ReduceAction270(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction270_t)(val_t p0);
 val_t NEW_parser___ReduceAction270(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction270 = "check new ReduceAction270";
 void CHECKNEW_parser___ReduceAction270(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction270_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction270_parser___ReduceAction___init = "new ReduceAction270 parser::ReduceAction::init";
 val_t NEW_ReduceAction270_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction270_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction271 = "init var of ReduceAction271";
 void INIT_ATTRIBUTES__parser___ReduceAction271(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction271_t)(val_t p0);
 val_t NEW_parser___ReduceAction271(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction271 = "check new ReduceAction271";
 void CHECKNEW_parser___ReduceAction271(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction271_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction271_parser___ReduceAction___init = "new ReduceAction271 parser::ReduceAction::init";
 val_t NEW_ReduceAction271_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction271_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction272 = "init var of ReduceAction272";
 void INIT_ATTRIBUTES__parser___ReduceAction272(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction272_t)(val_t p0);
 val_t NEW_parser___ReduceAction272(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction272 = "check new ReduceAction272";
 void CHECKNEW_parser___ReduceAction272(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction272_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction272_parser___ReduceAction___init = "new ReduceAction272 parser::ReduceAction::init";
 val_t NEW_ReduceAction272_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction272_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction273 = "init var of ReduceAction273";
 void INIT_ATTRIBUTES__parser___ReduceAction273(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction273_t)(val_t p0);
 val_t NEW_parser___ReduceAction273(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction273 = "check new ReduceAction273";
 void CHECKNEW_parser___ReduceAction273(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction273_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction273_parser___ReduceAction___init = "new ReduceAction273 parser::ReduceAction::init";
 val_t NEW_ReduceAction273_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction273_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction274 = "init var of ReduceAction274";
 void INIT_ATTRIBUTES__parser___ReduceAction274(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction274_t)(val_t p0);
 val_t NEW_parser___ReduceAction274(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction274 = "check new ReduceAction274";
 void CHECKNEW_parser___ReduceAction274(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction274_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction274_parser___ReduceAction___init = "new ReduceAction274 parser::ReduceAction::init";
 val_t NEW_ReduceAction274_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction274_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction275 = "init var of ReduceAction275";
 void INIT_ATTRIBUTES__parser___ReduceAction275(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction275_t)(val_t p0);
 val_t NEW_parser___ReduceAction275(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction275 = "check new ReduceAction275";
 void CHECKNEW_parser___ReduceAction275(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction275_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction275_parser___ReduceAction___init = "new ReduceAction275 parser::ReduceAction::init";
 val_t NEW_ReduceAction275_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction275_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction276 = "init var of ReduceAction276";
 void INIT_ATTRIBUTES__parser___ReduceAction276(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction276_t)(val_t p0);
 val_t NEW_parser___ReduceAction276(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction276 = "check new ReduceAction276";
 void CHECKNEW_parser___ReduceAction276(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction276_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction276_parser___ReduceAction___init = "new ReduceAction276 parser::ReduceAction::init";
 val_t NEW_ReduceAction276_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction276_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction277 = "init var of ReduceAction277";
 void INIT_ATTRIBUTES__parser___ReduceAction277(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction277_t)(val_t p0);
 val_t NEW_parser___ReduceAction277(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction277 = "check new ReduceAction277";
 void CHECKNEW_parser___ReduceAction277(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction277_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction277_parser___ReduceAction___init = "new ReduceAction277 parser::ReduceAction::init";
 val_t NEW_ReduceAction277_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction277_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction278 = "init var of ReduceAction278";
 void INIT_ATTRIBUTES__parser___ReduceAction278(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction278_t)(val_t p0);
 val_t NEW_parser___ReduceAction278(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction278 = "check new ReduceAction278";
 void CHECKNEW_parser___ReduceAction278(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction278_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction278_parser___ReduceAction___init = "new ReduceAction278 parser::ReduceAction::init";
 val_t NEW_ReduceAction278_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction278_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction279 = "init var of ReduceAction279";
 void INIT_ATTRIBUTES__parser___ReduceAction279(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction279_t)(val_t p0);
 val_t NEW_parser___ReduceAction279(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction279 = "check new ReduceAction279";
 void CHECKNEW_parser___ReduceAction279(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction279_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction279_parser___ReduceAction___init = "new ReduceAction279 parser::ReduceAction::init";
 val_t NEW_ReduceAction279_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction279_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction280 = "init var of ReduceAction280";
 void INIT_ATTRIBUTES__parser___ReduceAction280(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction280_t)(val_t p0);
 val_t NEW_parser___ReduceAction280(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction280 = "check new ReduceAction280";
 void CHECKNEW_parser___ReduceAction280(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction280_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction280_parser___ReduceAction___init = "new ReduceAction280 parser::ReduceAction::init";
 val_t NEW_ReduceAction280_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction280_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction281 = "init var of ReduceAction281";
 void INIT_ATTRIBUTES__parser___ReduceAction281(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction281_t)(val_t p0);
 val_t NEW_parser___ReduceAction281(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction281 = "check new ReduceAction281";
 void CHECKNEW_parser___ReduceAction281(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction281_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction281_parser___ReduceAction___init = "new ReduceAction281 parser::ReduceAction::init";
 val_t NEW_ReduceAction281_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction281_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction282 = "init var of ReduceAction282";
 void INIT_ATTRIBUTES__parser___ReduceAction282(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction282_t)(val_t p0);
 val_t NEW_parser___ReduceAction282(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction282 = "check new ReduceAction282";
 void CHECKNEW_parser___ReduceAction282(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction282_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction282_parser___ReduceAction___init = "new ReduceAction282 parser::ReduceAction::init";
 val_t NEW_ReduceAction282_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction282_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction283 = "init var of ReduceAction283";
 void INIT_ATTRIBUTES__parser___ReduceAction283(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction283_t)(val_t p0);
 val_t NEW_parser___ReduceAction283(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction283 = "check new ReduceAction283";
 void CHECKNEW_parser___ReduceAction283(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction283_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction283_parser___ReduceAction___init = "new ReduceAction283 parser::ReduceAction::init";
 val_t NEW_ReduceAction283_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction283_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction284 = "init var of ReduceAction284";
 void INIT_ATTRIBUTES__parser___ReduceAction284(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction284_t)(val_t p0);
 val_t NEW_parser___ReduceAction284(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction284 = "check new ReduceAction284";
 void CHECKNEW_parser___ReduceAction284(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction284_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction284_parser___ReduceAction___init = "new ReduceAction284 parser::ReduceAction::init";
 val_t NEW_ReduceAction284_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction284_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction285 = "init var of ReduceAction285";
 void INIT_ATTRIBUTES__parser___ReduceAction285(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction285_t)(val_t p0);
 val_t NEW_parser___ReduceAction285(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction285 = "check new ReduceAction285";
 void CHECKNEW_parser___ReduceAction285(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction285_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction285_parser___ReduceAction___init = "new ReduceAction285 parser::ReduceAction::init";
 val_t NEW_ReduceAction285_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction285_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction286 = "init var of ReduceAction286";
 void INIT_ATTRIBUTES__parser___ReduceAction286(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction286_t)(val_t p0);
 val_t NEW_parser___ReduceAction286(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction286 = "check new ReduceAction286";
 void CHECKNEW_parser___ReduceAction286(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction286_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction286_parser___ReduceAction___init = "new ReduceAction286 parser::ReduceAction::init";
 val_t NEW_ReduceAction286_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction286_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction287 = "init var of ReduceAction287";
 void INIT_ATTRIBUTES__parser___ReduceAction287(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction287_t)(val_t p0);
 val_t NEW_parser___ReduceAction287(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction287 = "check new ReduceAction287";
 void CHECKNEW_parser___ReduceAction287(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction287_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction287_parser___ReduceAction___init = "new ReduceAction287 parser::ReduceAction::init";
 val_t NEW_ReduceAction287_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction287_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction288 = "init var of ReduceAction288";
 void INIT_ATTRIBUTES__parser___ReduceAction288(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction288_t)(val_t p0);
 val_t NEW_parser___ReduceAction288(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction288 = "check new ReduceAction288";
 void CHECKNEW_parser___ReduceAction288(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction288_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction288_parser___ReduceAction___init = "new ReduceAction288 parser::ReduceAction::init";
 val_t NEW_ReduceAction288_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction288_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction289 = "init var of ReduceAction289";
 void INIT_ATTRIBUTES__parser___ReduceAction289(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction289_t)(val_t p0);
 val_t NEW_parser___ReduceAction289(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction289 = "check new ReduceAction289";
 void CHECKNEW_parser___ReduceAction289(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction289_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction289_parser___ReduceAction___init = "new ReduceAction289 parser::ReduceAction::init";
 val_t NEW_ReduceAction289_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction289_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction290 = "init var of ReduceAction290";
 void INIT_ATTRIBUTES__parser___ReduceAction290(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction290_t)(val_t p0);
 val_t NEW_parser___ReduceAction290(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction290 = "check new ReduceAction290";
 void CHECKNEW_parser___ReduceAction290(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction290_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction290_parser___ReduceAction___init = "new ReduceAction290 parser::ReduceAction::init";
 val_t NEW_ReduceAction290_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction290_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction291 = "init var of ReduceAction291";
 void INIT_ATTRIBUTES__parser___ReduceAction291(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction291_t)(val_t p0);
 val_t NEW_parser___ReduceAction291(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction291 = "check new ReduceAction291";
 void CHECKNEW_parser___ReduceAction291(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction291_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction291_parser___ReduceAction___init = "new ReduceAction291 parser::ReduceAction::init";
 val_t NEW_ReduceAction291_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction291_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction292 = "init var of ReduceAction292";
 void INIT_ATTRIBUTES__parser___ReduceAction292(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction292_t)(val_t p0);
 val_t NEW_parser___ReduceAction292(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction292 = "check new ReduceAction292";
 void CHECKNEW_parser___ReduceAction292(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction292_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction292_parser___ReduceAction___init = "new ReduceAction292 parser::ReduceAction::init";
 val_t NEW_ReduceAction292_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction292_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction293 = "init var of ReduceAction293";
 void INIT_ATTRIBUTES__parser___ReduceAction293(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction293_t)(val_t p0);
 val_t NEW_parser___ReduceAction293(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction293 = "check new ReduceAction293";
 void CHECKNEW_parser___ReduceAction293(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction293_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction293_parser___ReduceAction___init = "new ReduceAction293 parser::ReduceAction::init";
 val_t NEW_ReduceAction293_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction293_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction294 = "init var of ReduceAction294";
 void INIT_ATTRIBUTES__parser___ReduceAction294(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction294_t)(val_t p0);
 val_t NEW_parser___ReduceAction294(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction294 = "check new ReduceAction294";
 void CHECKNEW_parser___ReduceAction294(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction294_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction294_parser___ReduceAction___init = "new ReduceAction294 parser::ReduceAction::init";
 val_t NEW_ReduceAction294_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction294_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction295 = "init var of ReduceAction295";
 void INIT_ATTRIBUTES__parser___ReduceAction295(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction295_t)(val_t p0);
 val_t NEW_parser___ReduceAction295(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction295 = "check new ReduceAction295";
 void CHECKNEW_parser___ReduceAction295(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction295_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction295_parser___ReduceAction___init = "new ReduceAction295 parser::ReduceAction::init";
 val_t NEW_ReduceAction295_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction295_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction296 = "init var of ReduceAction296";
 void INIT_ATTRIBUTES__parser___ReduceAction296(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction296_t)(val_t p0);
 val_t NEW_parser___ReduceAction296(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction296 = "check new ReduceAction296";
 void CHECKNEW_parser___ReduceAction296(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction296_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction296_parser___ReduceAction___init = "new ReduceAction296 parser::ReduceAction::init";
 val_t NEW_ReduceAction296_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction296_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction297 = "init var of ReduceAction297";
 void INIT_ATTRIBUTES__parser___ReduceAction297(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction297_t)(val_t p0);
 val_t NEW_parser___ReduceAction297(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction297 = "check new ReduceAction297";
 void CHECKNEW_parser___ReduceAction297(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction297_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction297_parser___ReduceAction___init = "new ReduceAction297 parser::ReduceAction::init";
 val_t NEW_ReduceAction297_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction297_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction298 = "init var of ReduceAction298";
 void INIT_ATTRIBUTES__parser___ReduceAction298(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction298_t)(val_t p0);
 val_t NEW_parser___ReduceAction298(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction298 = "check new ReduceAction298";
 void CHECKNEW_parser___ReduceAction298(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction298_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction298_parser___ReduceAction___init = "new ReduceAction298 parser::ReduceAction::init";
 val_t NEW_ReduceAction298_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction298_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction299 = "init var of ReduceAction299";
 void INIT_ATTRIBUTES__parser___ReduceAction299(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction299_t)(val_t p0);
 val_t NEW_parser___ReduceAction299(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction299 = "check new ReduceAction299";
 void CHECKNEW_parser___ReduceAction299(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction299_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction299_parser___ReduceAction___init = "new ReduceAction299 parser::ReduceAction::init";
 val_t NEW_ReduceAction299_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction299_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction300 = "init var of ReduceAction300";
 void INIT_ATTRIBUTES__parser___ReduceAction300(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction300_t)(val_t p0);
 val_t NEW_parser___ReduceAction300(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction300 = "check new ReduceAction300";
 void CHECKNEW_parser___ReduceAction300(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction300_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction300_parser___ReduceAction___init = "new ReduceAction300 parser::ReduceAction::init";
 val_t NEW_ReduceAction300_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction300_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction301 = "init var of ReduceAction301";
 void INIT_ATTRIBUTES__parser___ReduceAction301(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction301_t)(val_t p0);
 val_t NEW_parser___ReduceAction301(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction301 = "check new ReduceAction301";
 void CHECKNEW_parser___ReduceAction301(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction301_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction301_parser___ReduceAction___init = "new ReduceAction301 parser::ReduceAction::init";
 val_t NEW_ReduceAction301_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction301_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction302 = "init var of ReduceAction302";
 void INIT_ATTRIBUTES__parser___ReduceAction302(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction302_t)(val_t p0);
 val_t NEW_parser___ReduceAction302(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction302 = "check new ReduceAction302";
 void CHECKNEW_parser___ReduceAction302(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction302_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction302_parser___ReduceAction___init = "new ReduceAction302 parser::ReduceAction::init";
 val_t NEW_ReduceAction302_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction302_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction303 = "init var of ReduceAction303";
 void INIT_ATTRIBUTES__parser___ReduceAction303(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction303_t)(val_t p0);
 val_t NEW_parser___ReduceAction303(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction303 = "check new ReduceAction303";
 void CHECKNEW_parser___ReduceAction303(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction303_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction303_parser___ReduceAction___init = "new ReduceAction303 parser::ReduceAction::init";
 val_t NEW_ReduceAction303_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction303_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction304 = "init var of ReduceAction304";
 void INIT_ATTRIBUTES__parser___ReduceAction304(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction304_t)(val_t p0);
 val_t NEW_parser___ReduceAction304(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction304 = "check new ReduceAction304";
 void CHECKNEW_parser___ReduceAction304(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction304_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction304_parser___ReduceAction___init = "new ReduceAction304 parser::ReduceAction::init";
 val_t NEW_ReduceAction304_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction304_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction305 = "init var of ReduceAction305";
 void INIT_ATTRIBUTES__parser___ReduceAction305(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction305_t)(val_t p0);
 val_t NEW_parser___ReduceAction305(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction305 = "check new ReduceAction305";
 void CHECKNEW_parser___ReduceAction305(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction305_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction305_parser___ReduceAction___init = "new ReduceAction305 parser::ReduceAction::init";
 val_t NEW_ReduceAction305_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction305_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction306 = "init var of ReduceAction306";
 void INIT_ATTRIBUTES__parser___ReduceAction306(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction306_t)(val_t p0);
 val_t NEW_parser___ReduceAction306(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction306 = "check new ReduceAction306";
 void CHECKNEW_parser___ReduceAction306(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction306_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction306_parser___ReduceAction___init = "new ReduceAction306 parser::ReduceAction::init";
 val_t NEW_ReduceAction306_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction306_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction307 = "init var of ReduceAction307";
 void INIT_ATTRIBUTES__parser___ReduceAction307(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction307_t)(val_t p0);
 val_t NEW_parser___ReduceAction307(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction307 = "check new ReduceAction307";
 void CHECKNEW_parser___ReduceAction307(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction307_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction307_parser___ReduceAction___init = "new ReduceAction307 parser::ReduceAction::init";
 val_t NEW_ReduceAction307_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction307_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction308 = "init var of ReduceAction308";
 void INIT_ATTRIBUTES__parser___ReduceAction308(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction308_t)(val_t p0);
 val_t NEW_parser___ReduceAction308(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction308 = "check new ReduceAction308";
 void CHECKNEW_parser___ReduceAction308(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction308_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction308_parser___ReduceAction___init = "new ReduceAction308 parser::ReduceAction::init";
 val_t NEW_ReduceAction308_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction308_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction309 = "init var of ReduceAction309";
 void INIT_ATTRIBUTES__parser___ReduceAction309(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction309_t)(val_t p0);
 val_t NEW_parser___ReduceAction309(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction309 = "check new ReduceAction309";
 void CHECKNEW_parser___ReduceAction309(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction309_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction309_parser___ReduceAction___init = "new ReduceAction309 parser::ReduceAction::init";
 val_t NEW_ReduceAction309_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction309_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction310 = "init var of ReduceAction310";
 void INIT_ATTRIBUTES__parser___ReduceAction310(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction310_t)(val_t p0);
 val_t NEW_parser___ReduceAction310(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction310 = "check new ReduceAction310";
 void CHECKNEW_parser___ReduceAction310(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction310_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction310_parser___ReduceAction___init = "new ReduceAction310 parser::ReduceAction::init";
 val_t NEW_ReduceAction310_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction310_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction311 = "init var of ReduceAction311";
 void INIT_ATTRIBUTES__parser___ReduceAction311(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction311_t)(val_t p0);
 val_t NEW_parser___ReduceAction311(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction311 = "check new ReduceAction311";
 void CHECKNEW_parser___ReduceAction311(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction311_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction311_parser___ReduceAction___init = "new ReduceAction311 parser::ReduceAction::init";
 val_t NEW_ReduceAction311_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction311_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction312 = "init var of ReduceAction312";
 void INIT_ATTRIBUTES__parser___ReduceAction312(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction312_t)(val_t p0);
 val_t NEW_parser___ReduceAction312(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction312 = "check new ReduceAction312";
 void CHECKNEW_parser___ReduceAction312(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction312_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction312_parser___ReduceAction___init = "new ReduceAction312 parser::ReduceAction::init";
 val_t NEW_ReduceAction312_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction312_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction313 = "init var of ReduceAction313";
 void INIT_ATTRIBUTES__parser___ReduceAction313(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction313_t)(val_t p0);
 val_t NEW_parser___ReduceAction313(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction313 = "check new ReduceAction313";
 void CHECKNEW_parser___ReduceAction313(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction313_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction313_parser___ReduceAction___init = "new ReduceAction313 parser::ReduceAction::init";
 val_t NEW_ReduceAction313_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction313_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction314 = "init var of ReduceAction314";
 void INIT_ATTRIBUTES__parser___ReduceAction314(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction314_t)(val_t p0);
 val_t NEW_parser___ReduceAction314(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction314 = "check new ReduceAction314";
 void CHECKNEW_parser___ReduceAction314(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction314_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction314_parser___ReduceAction___init = "new ReduceAction314 parser::ReduceAction::init";
 val_t NEW_ReduceAction314_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction314_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction317 = "init var of ReduceAction317";
+void INIT_ATTRIBUTES__parser___ReduceAction315(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction315_t)(val_t p0);
+val_t NEW_parser___ReduceAction315(void);
+void CHECKNEW_parser___ReduceAction315(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction315_t)(val_t p0);
+val_t NEW_ReduceAction315_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction315_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction316(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction316_t)(val_t p0);
+val_t NEW_parser___ReduceAction316(void);
+void CHECKNEW_parser___ReduceAction316(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction316_t)(val_t p0);
+val_t NEW_ReduceAction316_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction316_parser___ReduceAction___init_t)(val_t p0);
 void INIT_ATTRIBUTES__parser___ReduceAction317(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction317_t)(val_t p0);
 val_t NEW_parser___ReduceAction317(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction317 = "check new ReduceAction317";
 void CHECKNEW_parser___ReduceAction317(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction317_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction317_parser___ReduceAction___init = "new ReduceAction317 parser::ReduceAction::init";
 val_t NEW_ReduceAction317_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction317_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction318 = "init var of ReduceAction318";
 void INIT_ATTRIBUTES__parser___ReduceAction318(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction318_t)(val_t p0);
 val_t NEW_parser___ReduceAction318(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction318 = "check new ReduceAction318";
 void CHECKNEW_parser___ReduceAction318(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction318_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction318_parser___ReduceAction___init = "new ReduceAction318 parser::ReduceAction::init";
 val_t NEW_ReduceAction318_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction318_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction319 = "init var of ReduceAction319";
 void INIT_ATTRIBUTES__parser___ReduceAction319(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction319_t)(val_t p0);
 val_t NEW_parser___ReduceAction319(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction319 = "check new ReduceAction319";
 void CHECKNEW_parser___ReduceAction319(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction319_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction319_parser___ReduceAction___init = "new ReduceAction319 parser::ReduceAction::init";
 val_t NEW_ReduceAction319_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction319_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction320 = "init var of ReduceAction320";
 void INIT_ATTRIBUTES__parser___ReduceAction320(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction320_t)(val_t p0);
 val_t NEW_parser___ReduceAction320(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction320 = "check new ReduceAction320";
 void CHECKNEW_parser___ReduceAction320(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction320_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction320_parser___ReduceAction___init = "new ReduceAction320 parser::ReduceAction::init";
 val_t NEW_ReduceAction320_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction320_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction321 = "init var of ReduceAction321";
 void INIT_ATTRIBUTES__parser___ReduceAction321(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction321_t)(val_t p0);
 val_t NEW_parser___ReduceAction321(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction321 = "check new ReduceAction321";
 void CHECKNEW_parser___ReduceAction321(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction321_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction321_parser___ReduceAction___init = "new ReduceAction321 parser::ReduceAction::init";
 val_t NEW_ReduceAction321_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction321_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction322 = "init var of ReduceAction322";
 void INIT_ATTRIBUTES__parser___ReduceAction322(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction322_t)(val_t p0);
 val_t NEW_parser___ReduceAction322(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction322 = "check new ReduceAction322";
 void CHECKNEW_parser___ReduceAction322(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction322_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction322_parser___ReduceAction___init = "new ReduceAction322 parser::ReduceAction::init";
 val_t NEW_ReduceAction322_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction322_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction323 = "init var of ReduceAction323";
-void INIT_ATTRIBUTES__parser___ReduceAction323(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___ReduceAction323_t)(val_t p0);
-val_t NEW_parser___ReduceAction323(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction323 = "check new ReduceAction323";
-void CHECKNEW_parser___ReduceAction323(val_t p0);
-typedef void (*CHECKNEW_parser___ReduceAction323_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction323_parser___ReduceAction___init = "new ReduceAction323 parser::ReduceAction::init";
-val_t NEW_ReduceAction323_parser___ReduceAction___init(val_t p0);
-typedef val_t (*NEW_ReduceAction323_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction324 = "init var of ReduceAction324";
 void INIT_ATTRIBUTES__parser___ReduceAction324(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction324_t)(val_t p0);
 val_t NEW_parser___ReduceAction324(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction324 = "check new ReduceAction324";
 void CHECKNEW_parser___ReduceAction324(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction324_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction324_parser___ReduceAction___init = "new ReduceAction324 parser::ReduceAction::init";
 val_t NEW_ReduceAction324_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction324_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction325 = "init var of ReduceAction325";
 void INIT_ATTRIBUTES__parser___ReduceAction325(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction325_t)(val_t p0);
 val_t NEW_parser___ReduceAction325(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction325 = "check new ReduceAction325";
 void CHECKNEW_parser___ReduceAction325(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction325_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction325_parser___ReduceAction___init = "new ReduceAction325 parser::ReduceAction::init";
 val_t NEW_ReduceAction325_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction325_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction326 = "init var of ReduceAction326";
 void INIT_ATTRIBUTES__parser___ReduceAction326(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction326_t)(val_t p0);
 val_t NEW_parser___ReduceAction326(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction326 = "check new ReduceAction326";
 void CHECKNEW_parser___ReduceAction326(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction326_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction326_parser___ReduceAction___init = "new ReduceAction326 parser::ReduceAction::init";
 val_t NEW_ReduceAction326_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction326_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction327 = "init var of ReduceAction327";
 void INIT_ATTRIBUTES__parser___ReduceAction327(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction327_t)(val_t p0);
 val_t NEW_parser___ReduceAction327(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction327 = "check new ReduceAction327";
 void CHECKNEW_parser___ReduceAction327(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction327_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction327_parser___ReduceAction___init = "new ReduceAction327 parser::ReduceAction::init";
 val_t NEW_ReduceAction327_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction327_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction328 = "init var of ReduceAction328";
 void INIT_ATTRIBUTES__parser___ReduceAction328(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction328_t)(val_t p0);
 val_t NEW_parser___ReduceAction328(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction328 = "check new ReduceAction328";
 void CHECKNEW_parser___ReduceAction328(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction328_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction328_parser___ReduceAction___init = "new ReduceAction328 parser::ReduceAction::init";
 val_t NEW_ReduceAction328_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction328_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction329 = "init var of ReduceAction329";
 void INIT_ATTRIBUTES__parser___ReduceAction329(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction329_t)(val_t p0);
 val_t NEW_parser___ReduceAction329(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction329 = "check new ReduceAction329";
 void CHECKNEW_parser___ReduceAction329(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction329_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction329_parser___ReduceAction___init = "new ReduceAction329 parser::ReduceAction::init";
 val_t NEW_ReduceAction329_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction329_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction333 = "init var of ReduceAction333";
+void INIT_ATTRIBUTES__parser___ReduceAction330(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction330_t)(val_t p0);
+val_t NEW_parser___ReduceAction330(void);
+void CHECKNEW_parser___ReduceAction330(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction330_t)(val_t p0);
+val_t NEW_ReduceAction330_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction330_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction331(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction331_t)(val_t p0);
+val_t NEW_parser___ReduceAction331(void);
+void CHECKNEW_parser___ReduceAction331(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction331_t)(val_t p0);
+val_t NEW_ReduceAction331_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction331_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction332(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction332_t)(val_t p0);
+val_t NEW_parser___ReduceAction332(void);
+void CHECKNEW_parser___ReduceAction332(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction332_t)(val_t p0);
+val_t NEW_ReduceAction332_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction332_parser___ReduceAction___init_t)(val_t p0);
 void INIT_ATTRIBUTES__parser___ReduceAction333(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction333_t)(val_t p0);
 val_t NEW_parser___ReduceAction333(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction333 = "check new ReduceAction333";
 void CHECKNEW_parser___ReduceAction333(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction333_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction333_parser___ReduceAction___init = "new ReduceAction333 parser::ReduceAction::init";
 val_t NEW_ReduceAction333_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction333_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction335 = "init var of ReduceAction335";
+void INIT_ATTRIBUTES__parser___ReduceAction334(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction334_t)(val_t p0);
+val_t NEW_parser___ReduceAction334(void);
+void CHECKNEW_parser___ReduceAction334(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction334_t)(val_t p0);
+val_t NEW_ReduceAction334_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction334_parser___ReduceAction___init_t)(val_t p0);
 void INIT_ATTRIBUTES__parser___ReduceAction335(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction335_t)(val_t p0);
 val_t NEW_parser___ReduceAction335(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction335 = "check new ReduceAction335";
 void CHECKNEW_parser___ReduceAction335(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction335_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction335_parser___ReduceAction___init = "new ReduceAction335 parser::ReduceAction::init";
 val_t NEW_ReduceAction335_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction335_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction337 = "init var of ReduceAction337";
+void INIT_ATTRIBUTES__parser___ReduceAction336(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction336_t)(val_t p0);
+val_t NEW_parser___ReduceAction336(void);
+void CHECKNEW_parser___ReduceAction336(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction336_t)(val_t p0);
+val_t NEW_ReduceAction336_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction336_parser___ReduceAction___init_t)(val_t p0);
 void INIT_ATTRIBUTES__parser___ReduceAction337(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction337_t)(val_t p0);
 val_t NEW_parser___ReduceAction337(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction337 = "check new ReduceAction337";
 void CHECKNEW_parser___ReduceAction337(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction337_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction337_parser___ReduceAction___init = "new ReduceAction337 parser::ReduceAction::init";
 val_t NEW_ReduceAction337_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction337_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction338 = "init var of ReduceAction338";
 void INIT_ATTRIBUTES__parser___ReduceAction338(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction338_t)(val_t p0);
 val_t NEW_parser___ReduceAction338(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction338 = "check new ReduceAction338";
 void CHECKNEW_parser___ReduceAction338(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction338_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction338_parser___ReduceAction___init = "new ReduceAction338 parser::ReduceAction::init";
 val_t NEW_ReduceAction338_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction338_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction339 = "init var of ReduceAction339";
 void INIT_ATTRIBUTES__parser___ReduceAction339(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction339_t)(val_t p0);
 val_t NEW_parser___ReduceAction339(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction339 = "check new ReduceAction339";
 void CHECKNEW_parser___ReduceAction339(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction339_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction339_parser___ReduceAction___init = "new ReduceAction339 parser::ReduceAction::init";
 val_t NEW_ReduceAction339_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction339_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction341 = "init var of ReduceAction341";
+void INIT_ATTRIBUTES__parser___ReduceAction340(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction340_t)(val_t p0);
+val_t NEW_parser___ReduceAction340(void);
+void CHECKNEW_parser___ReduceAction340(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction340_t)(val_t p0);
+val_t NEW_ReduceAction340_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction340_parser___ReduceAction___init_t)(val_t p0);
 void INIT_ATTRIBUTES__parser___ReduceAction341(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction341_t)(val_t p0);
 val_t NEW_parser___ReduceAction341(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction341 = "check new ReduceAction341";
 void CHECKNEW_parser___ReduceAction341(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction341_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction341_parser___ReduceAction___init = "new ReduceAction341 parser::ReduceAction::init";
 val_t NEW_ReduceAction341_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction341_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction343 = "init var of ReduceAction343";
+void INIT_ATTRIBUTES__parser___ReduceAction342(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction342_t)(val_t p0);
+val_t NEW_parser___ReduceAction342(void);
+void CHECKNEW_parser___ReduceAction342(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction342_t)(val_t p0);
+val_t NEW_ReduceAction342_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction342_parser___ReduceAction___init_t)(val_t p0);
 void INIT_ATTRIBUTES__parser___ReduceAction343(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction343_t)(val_t p0);
 val_t NEW_parser___ReduceAction343(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction343 = "check new ReduceAction343";
 void CHECKNEW_parser___ReduceAction343(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction343_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction343_parser___ReduceAction___init = "new ReduceAction343 parser::ReduceAction::init";
 val_t NEW_ReduceAction343_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction343_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction344 = "init var of ReduceAction344";
 void INIT_ATTRIBUTES__parser___ReduceAction344(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction344_t)(val_t p0);
 val_t NEW_parser___ReduceAction344(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction344 = "check new ReduceAction344";
 void CHECKNEW_parser___ReduceAction344(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction344_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction344_parser___ReduceAction___init = "new ReduceAction344 parser::ReduceAction::init";
 val_t NEW_ReduceAction344_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction344_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction345 = "init var of ReduceAction345";
 void INIT_ATTRIBUTES__parser___ReduceAction345(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction345_t)(val_t p0);
 val_t NEW_parser___ReduceAction345(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction345 = "check new ReduceAction345";
 void CHECKNEW_parser___ReduceAction345(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction345_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction345_parser___ReduceAction___init = "new ReduceAction345 parser::ReduceAction::init";
 val_t NEW_ReduceAction345_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction345_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction346 = "init var of ReduceAction346";
 void INIT_ATTRIBUTES__parser___ReduceAction346(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction346_t)(val_t p0);
 val_t NEW_parser___ReduceAction346(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction346 = "check new ReduceAction346";
 void CHECKNEW_parser___ReduceAction346(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction346_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction346_parser___ReduceAction___init = "new ReduceAction346 parser::ReduceAction::init";
 val_t NEW_ReduceAction346_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction346_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction347 = "init var of ReduceAction347";
 void INIT_ATTRIBUTES__parser___ReduceAction347(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction347_t)(val_t p0);
 val_t NEW_parser___ReduceAction347(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction347 = "check new ReduceAction347";
 void CHECKNEW_parser___ReduceAction347(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction347_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction347_parser___ReduceAction___init = "new ReduceAction347 parser::ReduceAction::init";
 val_t NEW_ReduceAction347_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction347_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction348 = "init var of ReduceAction348";
 void INIT_ATTRIBUTES__parser___ReduceAction348(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction348_t)(val_t p0);
 val_t NEW_parser___ReduceAction348(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction348 = "check new ReduceAction348";
 void CHECKNEW_parser___ReduceAction348(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction348_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction348_parser___ReduceAction___init = "new ReduceAction348 parser::ReduceAction::init";
 val_t NEW_ReduceAction348_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction348_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction349 = "init var of ReduceAction349";
 void INIT_ATTRIBUTES__parser___ReduceAction349(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction349_t)(val_t p0);
 val_t NEW_parser___ReduceAction349(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction349 = "check new ReduceAction349";
 void CHECKNEW_parser___ReduceAction349(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction349_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction349_parser___ReduceAction___init = "new ReduceAction349 parser::ReduceAction::init";
 val_t NEW_ReduceAction349_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction349_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction350 = "init var of ReduceAction350";
 void INIT_ATTRIBUTES__parser___ReduceAction350(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction350_t)(val_t p0);
 val_t NEW_parser___ReduceAction350(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction350 = "check new ReduceAction350";
 void CHECKNEW_parser___ReduceAction350(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction350_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction350_parser___ReduceAction___init = "new ReduceAction350 parser::ReduceAction::init";
 val_t NEW_ReduceAction350_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction350_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction351 = "init var of ReduceAction351";
 void INIT_ATTRIBUTES__parser___ReduceAction351(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction351_t)(val_t p0);
 val_t NEW_parser___ReduceAction351(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction351 = "check new ReduceAction351";
 void CHECKNEW_parser___ReduceAction351(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction351_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction351_parser___ReduceAction___init = "new ReduceAction351 parser::ReduceAction::init";
 val_t NEW_ReduceAction351_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction351_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction352 = "init var of ReduceAction352";
 void INIT_ATTRIBUTES__parser___ReduceAction352(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction352_t)(val_t p0);
 val_t NEW_parser___ReduceAction352(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction352 = "check new ReduceAction352";
 void CHECKNEW_parser___ReduceAction352(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction352_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction352_parser___ReduceAction___init = "new ReduceAction352 parser::ReduceAction::init";
 val_t NEW_ReduceAction352_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction352_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction353 = "init var of ReduceAction353";
 void INIT_ATTRIBUTES__parser___ReduceAction353(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction353_t)(val_t p0);
 val_t NEW_parser___ReduceAction353(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction353 = "check new ReduceAction353";
 void CHECKNEW_parser___ReduceAction353(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction353_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction353_parser___ReduceAction___init = "new ReduceAction353 parser::ReduceAction::init";
 val_t NEW_ReduceAction353_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction353_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction355 = "init var of ReduceAction355";
+void INIT_ATTRIBUTES__parser___ReduceAction354(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction354_t)(val_t p0);
+val_t NEW_parser___ReduceAction354(void);
+void CHECKNEW_parser___ReduceAction354(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction354_t)(val_t p0);
+val_t NEW_ReduceAction354_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction354_parser___ReduceAction___init_t)(val_t p0);
 void INIT_ATTRIBUTES__parser___ReduceAction355(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction355_t)(val_t p0);
 val_t NEW_parser___ReduceAction355(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction355 = "check new ReduceAction355";
 void CHECKNEW_parser___ReduceAction355(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction355_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction355_parser___ReduceAction___init = "new ReduceAction355 parser::ReduceAction::init";
 val_t NEW_ReduceAction355_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction355_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction356 = "init var of ReduceAction356";
 void INIT_ATTRIBUTES__parser___ReduceAction356(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction356_t)(val_t p0);
 val_t NEW_parser___ReduceAction356(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction356 = "check new ReduceAction356";
 void CHECKNEW_parser___ReduceAction356(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction356_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction356_parser___ReduceAction___init = "new ReduceAction356 parser::ReduceAction::init";
 val_t NEW_ReduceAction356_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction356_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction358 = "init var of ReduceAction358";
+void INIT_ATTRIBUTES__parser___ReduceAction357(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction357_t)(val_t p0);
+val_t NEW_parser___ReduceAction357(void);
+void CHECKNEW_parser___ReduceAction357(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction357_t)(val_t p0);
+val_t NEW_ReduceAction357_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction357_parser___ReduceAction___init_t)(val_t p0);
 void INIT_ATTRIBUTES__parser___ReduceAction358(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction358_t)(val_t p0);
 val_t NEW_parser___ReduceAction358(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction358 = "check new ReduceAction358";
 void CHECKNEW_parser___ReduceAction358(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction358_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction358_parser___ReduceAction___init = "new ReduceAction358 parser::ReduceAction::init";
 val_t NEW_ReduceAction358_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction358_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction359 = "init var of ReduceAction359";
 void INIT_ATTRIBUTES__parser___ReduceAction359(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction359_t)(val_t p0);
 val_t NEW_parser___ReduceAction359(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction359 = "check new ReduceAction359";
 void CHECKNEW_parser___ReduceAction359(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction359_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction359_parser___ReduceAction___init = "new ReduceAction359 parser::ReduceAction::init";
 val_t NEW_ReduceAction359_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction359_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction360 = "init var of ReduceAction360";
 void INIT_ATTRIBUTES__parser___ReduceAction360(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction360_t)(val_t p0);
 val_t NEW_parser___ReduceAction360(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction360 = "check new ReduceAction360";
 void CHECKNEW_parser___ReduceAction360(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction360_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction360_parser___ReduceAction___init = "new ReduceAction360 parser::ReduceAction::init";
 val_t NEW_ReduceAction360_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction360_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction362 = "init var of ReduceAction362";
+void INIT_ATTRIBUTES__parser___ReduceAction361(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction361_t)(val_t p0);
+val_t NEW_parser___ReduceAction361(void);
+void CHECKNEW_parser___ReduceAction361(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction361_t)(val_t p0);
+val_t NEW_ReduceAction361_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction361_parser___ReduceAction___init_t)(val_t p0);
 void INIT_ATTRIBUTES__parser___ReduceAction362(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction362_t)(val_t p0);
 val_t NEW_parser___ReduceAction362(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction362 = "check new ReduceAction362";
 void CHECKNEW_parser___ReduceAction362(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction362_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction362_parser___ReduceAction___init = "new ReduceAction362 parser::ReduceAction::init";
 val_t NEW_ReduceAction362_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction362_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction363 = "init var of ReduceAction363";
 void INIT_ATTRIBUTES__parser___ReduceAction363(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction363_t)(val_t p0);
 val_t NEW_parser___ReduceAction363(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction363 = "check new ReduceAction363";
 void CHECKNEW_parser___ReduceAction363(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction363_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction363_parser___ReduceAction___init = "new ReduceAction363 parser::ReduceAction::init";
 val_t NEW_ReduceAction363_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction363_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction365 = "init var of ReduceAction365";
+void INIT_ATTRIBUTES__parser___ReduceAction364(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction364_t)(val_t p0);
+val_t NEW_parser___ReduceAction364(void);
+void CHECKNEW_parser___ReduceAction364(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction364_t)(val_t p0);
+val_t NEW_ReduceAction364_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction364_parser___ReduceAction___init_t)(val_t p0);
 void INIT_ATTRIBUTES__parser___ReduceAction365(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction365_t)(val_t p0);
 val_t NEW_parser___ReduceAction365(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction365 = "check new ReduceAction365";
 void CHECKNEW_parser___ReduceAction365(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction365_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction365_parser___ReduceAction___init = "new ReduceAction365 parser::ReduceAction::init";
 val_t NEW_ReduceAction365_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction365_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction366 = "init var of ReduceAction366";
 void INIT_ATTRIBUTES__parser___ReduceAction366(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction366_t)(val_t p0);
 val_t NEW_parser___ReduceAction366(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction366 = "check new ReduceAction366";
 void CHECKNEW_parser___ReduceAction366(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction366_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction366_parser___ReduceAction___init = "new ReduceAction366 parser::ReduceAction::init";
 val_t NEW_ReduceAction366_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction366_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction367 = "init var of ReduceAction367";
 void INIT_ATTRIBUTES__parser___ReduceAction367(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction367_t)(val_t p0);
 val_t NEW_parser___ReduceAction367(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction367 = "check new ReduceAction367";
 void CHECKNEW_parser___ReduceAction367(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction367_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction367_parser___ReduceAction___init = "new ReduceAction367 parser::ReduceAction::init";
 val_t NEW_ReduceAction367_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction367_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction368 = "init var of ReduceAction368";
 void INIT_ATTRIBUTES__parser___ReduceAction368(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction368_t)(val_t p0);
 val_t NEW_parser___ReduceAction368(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction368 = "check new ReduceAction368";
 void CHECKNEW_parser___ReduceAction368(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction368_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction368_parser___ReduceAction___init = "new ReduceAction368 parser::ReduceAction::init";
 val_t NEW_ReduceAction368_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction368_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction369 = "init var of ReduceAction369";
 void INIT_ATTRIBUTES__parser___ReduceAction369(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction369_t)(val_t p0);
 val_t NEW_parser___ReduceAction369(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction369 = "check new ReduceAction369";
 void CHECKNEW_parser___ReduceAction369(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction369_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction369_parser___ReduceAction___init = "new ReduceAction369 parser::ReduceAction::init";
 val_t NEW_ReduceAction369_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction369_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction376 = "init var of ReduceAction376";
+void INIT_ATTRIBUTES__parser___ReduceAction370(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction370_t)(val_t p0);
+val_t NEW_parser___ReduceAction370(void);
+void CHECKNEW_parser___ReduceAction370(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction370_t)(val_t p0);
+val_t NEW_ReduceAction370_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction370_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction371(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction371_t)(val_t p0);
+val_t NEW_parser___ReduceAction371(void);
+void CHECKNEW_parser___ReduceAction371(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction371_t)(val_t p0);
+val_t NEW_ReduceAction371_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction371_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction372(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction372_t)(val_t p0);
+val_t NEW_parser___ReduceAction372(void);
+void CHECKNEW_parser___ReduceAction372(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction372_t)(val_t p0);
+val_t NEW_ReduceAction372_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction372_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction373(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction373_t)(val_t p0);
+val_t NEW_parser___ReduceAction373(void);
+void CHECKNEW_parser___ReduceAction373(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction373_t)(val_t p0);
+val_t NEW_ReduceAction373_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction373_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction374(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction374_t)(val_t p0);
+val_t NEW_parser___ReduceAction374(void);
+void CHECKNEW_parser___ReduceAction374(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction374_t)(val_t p0);
+val_t NEW_ReduceAction374_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction374_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction375(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction375_t)(val_t p0);
+val_t NEW_parser___ReduceAction375(void);
+void CHECKNEW_parser___ReduceAction375(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction375_t)(val_t p0);
+val_t NEW_ReduceAction375_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction375_parser___ReduceAction___init_t)(val_t p0);
 void INIT_ATTRIBUTES__parser___ReduceAction376(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction376_t)(val_t p0);
 val_t NEW_parser___ReduceAction376(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction376 = "check new ReduceAction376";
 void CHECKNEW_parser___ReduceAction376(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction376_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction376_parser___ReduceAction___init = "new ReduceAction376 parser::ReduceAction::init";
 val_t NEW_ReduceAction376_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction376_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction377 = "init var of ReduceAction377";
 void INIT_ATTRIBUTES__parser___ReduceAction377(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction377_t)(val_t p0);
 val_t NEW_parser___ReduceAction377(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction377 = "check new ReduceAction377";
 void CHECKNEW_parser___ReduceAction377(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction377_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction377_parser___ReduceAction___init = "new ReduceAction377 parser::ReduceAction::init";
 val_t NEW_ReduceAction377_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction377_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction378 = "init var of ReduceAction378";
 void INIT_ATTRIBUTES__parser___ReduceAction378(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction378_t)(val_t p0);
 val_t NEW_parser___ReduceAction378(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction378 = "check new ReduceAction378";
 void CHECKNEW_parser___ReduceAction378(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction378_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction378_parser___ReduceAction___init = "new ReduceAction378 parser::ReduceAction::init";
 val_t NEW_ReduceAction378_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction378_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction379 = "init var of ReduceAction379";
 void INIT_ATTRIBUTES__parser___ReduceAction379(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction379_t)(val_t p0);
 val_t NEW_parser___ReduceAction379(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction379 = "check new ReduceAction379";
 void CHECKNEW_parser___ReduceAction379(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction379_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction379_parser___ReduceAction___init = "new ReduceAction379 parser::ReduceAction::init";
 val_t NEW_ReduceAction379_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction379_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction380 = "init var of ReduceAction380";
 void INIT_ATTRIBUTES__parser___ReduceAction380(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction380_t)(val_t p0);
 val_t NEW_parser___ReduceAction380(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction380 = "check new ReduceAction380";
 void CHECKNEW_parser___ReduceAction380(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction380_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction380_parser___ReduceAction___init = "new ReduceAction380 parser::ReduceAction::init";
 val_t NEW_ReduceAction380_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction380_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction381 = "init var of ReduceAction381";
 void INIT_ATTRIBUTES__parser___ReduceAction381(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction381_t)(val_t p0);
 val_t NEW_parser___ReduceAction381(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction381 = "check new ReduceAction381";
 void CHECKNEW_parser___ReduceAction381(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction381_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction381_parser___ReduceAction___init = "new ReduceAction381 parser::ReduceAction::init";
 val_t NEW_ReduceAction381_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction381_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction382 = "init var of ReduceAction382";
 void INIT_ATTRIBUTES__parser___ReduceAction382(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction382_t)(val_t p0);
 val_t NEW_parser___ReduceAction382(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction382 = "check new ReduceAction382";
 void CHECKNEW_parser___ReduceAction382(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction382_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction382_parser___ReduceAction___init = "new ReduceAction382 parser::ReduceAction::init";
 val_t NEW_ReduceAction382_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction382_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction383 = "init var of ReduceAction383";
 void INIT_ATTRIBUTES__parser___ReduceAction383(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction383_t)(val_t p0);
 val_t NEW_parser___ReduceAction383(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction383 = "check new ReduceAction383";
 void CHECKNEW_parser___ReduceAction383(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction383_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction383_parser___ReduceAction___init = "new ReduceAction383 parser::ReduceAction::init";
 val_t NEW_ReduceAction383_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction383_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction384 = "init var of ReduceAction384";
 void INIT_ATTRIBUTES__parser___ReduceAction384(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction384_t)(val_t p0);
 val_t NEW_parser___ReduceAction384(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction384 = "check new ReduceAction384";
 void CHECKNEW_parser___ReduceAction384(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction384_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction384_parser___ReduceAction___init = "new ReduceAction384 parser::ReduceAction::init";
 val_t NEW_ReduceAction384_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction384_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction385 = "init var of ReduceAction385";
 void INIT_ATTRIBUTES__parser___ReduceAction385(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction385_t)(val_t p0);
 val_t NEW_parser___ReduceAction385(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction385 = "check new ReduceAction385";
 void CHECKNEW_parser___ReduceAction385(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction385_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction385_parser___ReduceAction___init = "new ReduceAction385 parser::ReduceAction::init";
 val_t NEW_ReduceAction385_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction385_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction386 = "init var of ReduceAction386";
 void INIT_ATTRIBUTES__parser___ReduceAction386(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction386_t)(val_t p0);
 val_t NEW_parser___ReduceAction386(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction386 = "check new ReduceAction386";
 void CHECKNEW_parser___ReduceAction386(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction386_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction386_parser___ReduceAction___init = "new ReduceAction386 parser::ReduceAction::init";
 val_t NEW_ReduceAction386_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction386_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction387 = "init var of ReduceAction387";
 void INIT_ATTRIBUTES__parser___ReduceAction387(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction387_t)(val_t p0);
 val_t NEW_parser___ReduceAction387(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction387 = "check new ReduceAction387";
 void CHECKNEW_parser___ReduceAction387(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction387_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction387_parser___ReduceAction___init = "new ReduceAction387 parser::ReduceAction::init";
 val_t NEW_ReduceAction387_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction387_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction388 = "init var of ReduceAction388";
 void INIT_ATTRIBUTES__parser___ReduceAction388(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction388_t)(val_t p0);
 val_t NEW_parser___ReduceAction388(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction388 = "check new ReduceAction388";
 void CHECKNEW_parser___ReduceAction388(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction388_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction388_parser___ReduceAction___init = "new ReduceAction388 parser::ReduceAction::init";
 val_t NEW_ReduceAction388_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction388_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction391 = "init var of ReduceAction391";
+void INIT_ATTRIBUTES__parser___ReduceAction389(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction389_t)(val_t p0);
+val_t NEW_parser___ReduceAction389(void);
+void CHECKNEW_parser___ReduceAction389(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction389_t)(val_t p0);
+val_t NEW_ReduceAction389_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction389_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction390(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction390_t)(val_t p0);
+val_t NEW_parser___ReduceAction390(void);
+void CHECKNEW_parser___ReduceAction390(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction390_t)(val_t p0);
+val_t NEW_ReduceAction390_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction390_parser___ReduceAction___init_t)(val_t p0);
 void INIT_ATTRIBUTES__parser___ReduceAction391(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction391_t)(val_t p0);
 val_t NEW_parser___ReduceAction391(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction391 = "check new ReduceAction391";
 void CHECKNEW_parser___ReduceAction391(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction391_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction391_parser___ReduceAction___init = "new ReduceAction391 parser::ReduceAction::init";
 val_t NEW_ReduceAction391_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction391_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction392 = "init var of ReduceAction392";
-void INIT_ATTRIBUTES__parser___ReduceAction392(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___ReduceAction392_t)(val_t p0);
-val_t NEW_parser___ReduceAction392(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction392 = "check new ReduceAction392";
-void CHECKNEW_parser___ReduceAction392(val_t p0);
-typedef void (*CHECKNEW_parser___ReduceAction392_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction392_parser___ReduceAction___init = "new ReduceAction392 parser::ReduceAction::init";
-val_t NEW_ReduceAction392_parser___ReduceAction___init(val_t p0);
-typedef val_t (*NEW_ReduceAction392_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction393 = "init var of ReduceAction393";
 void INIT_ATTRIBUTES__parser___ReduceAction393(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction393_t)(val_t p0);
 val_t NEW_parser___ReduceAction393(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction393 = "check new ReduceAction393";
 void CHECKNEW_parser___ReduceAction393(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction393_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction393_parser___ReduceAction___init = "new ReduceAction393 parser::ReduceAction::init";
 val_t NEW_ReduceAction393_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction393_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction394 = "init var of ReduceAction394";
 void INIT_ATTRIBUTES__parser___ReduceAction394(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction394_t)(val_t p0);
 val_t NEW_parser___ReduceAction394(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction394 = "check new ReduceAction394";
 void CHECKNEW_parser___ReduceAction394(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction394_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction394_parser___ReduceAction___init = "new ReduceAction394 parser::ReduceAction::init";
 val_t NEW_ReduceAction394_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction394_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction395 = "init var of ReduceAction395";
 void INIT_ATTRIBUTES__parser___ReduceAction395(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction395_t)(val_t p0);
 val_t NEW_parser___ReduceAction395(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction395 = "check new ReduceAction395";
 void CHECKNEW_parser___ReduceAction395(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction395_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction395_parser___ReduceAction___init = "new ReduceAction395 parser::ReduceAction::init";
 val_t NEW_ReduceAction395_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction395_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction396 = "init var of ReduceAction396";
 void INIT_ATTRIBUTES__parser___ReduceAction396(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction396_t)(val_t p0);
 val_t NEW_parser___ReduceAction396(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction396 = "check new ReduceAction396";
 void CHECKNEW_parser___ReduceAction396(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction396_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction396_parser___ReduceAction___init = "new ReduceAction396 parser::ReduceAction::init";
 val_t NEW_ReduceAction396_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction396_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction398 = "init var of ReduceAction398";
+void INIT_ATTRIBUTES__parser___ReduceAction397(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction397_t)(val_t p0);
+val_t NEW_parser___ReduceAction397(void);
+void CHECKNEW_parser___ReduceAction397(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction397_t)(val_t p0);
+val_t NEW_ReduceAction397_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction397_parser___ReduceAction___init_t)(val_t p0);
 void INIT_ATTRIBUTES__parser___ReduceAction398(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction398_t)(val_t p0);
 val_t NEW_parser___ReduceAction398(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction398 = "check new ReduceAction398";
 void CHECKNEW_parser___ReduceAction398(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction398_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction398_parser___ReduceAction___init = "new ReduceAction398 parser::ReduceAction::init";
 val_t NEW_ReduceAction398_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction398_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction399 = "init var of ReduceAction399";
 void INIT_ATTRIBUTES__parser___ReduceAction399(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction399_t)(val_t p0);
 val_t NEW_parser___ReduceAction399(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction399 = "check new ReduceAction399";
 void CHECKNEW_parser___ReduceAction399(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction399_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction399_parser___ReduceAction___init = "new ReduceAction399 parser::ReduceAction::init";
 val_t NEW_ReduceAction399_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction399_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction400 = "init var of ReduceAction400";
 void INIT_ATTRIBUTES__parser___ReduceAction400(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction400_t)(val_t p0);
 val_t NEW_parser___ReduceAction400(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction400 = "check new ReduceAction400";
 void CHECKNEW_parser___ReduceAction400(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction400_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction400_parser___ReduceAction___init = "new ReduceAction400 parser::ReduceAction::init";
 val_t NEW_ReduceAction400_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction400_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction401 = "init var of ReduceAction401";
 void INIT_ATTRIBUTES__parser___ReduceAction401(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction401_t)(val_t p0);
 val_t NEW_parser___ReduceAction401(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction401 = "check new ReduceAction401";
 void CHECKNEW_parser___ReduceAction401(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction401_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction401_parser___ReduceAction___init = "new ReduceAction401 parser::ReduceAction::init";
 val_t NEW_ReduceAction401_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction401_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction403 = "init var of ReduceAction403";
+void INIT_ATTRIBUTES__parser___ReduceAction402(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction402_t)(val_t p0);
+val_t NEW_parser___ReduceAction402(void);
+void CHECKNEW_parser___ReduceAction402(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction402_t)(val_t p0);
+val_t NEW_ReduceAction402_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction402_parser___ReduceAction___init_t)(val_t p0);
 void INIT_ATTRIBUTES__parser___ReduceAction403(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction403_t)(val_t p0);
 val_t NEW_parser___ReduceAction403(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction403 = "check new ReduceAction403";
 void CHECKNEW_parser___ReduceAction403(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction403_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction403_parser___ReduceAction___init = "new ReduceAction403 parser::ReduceAction::init";
 val_t NEW_ReduceAction403_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction403_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction406 = "init var of ReduceAction406";
+void INIT_ATTRIBUTES__parser___ReduceAction404(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction404_t)(val_t p0);
+val_t NEW_parser___ReduceAction404(void);
+void CHECKNEW_parser___ReduceAction404(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction404_t)(val_t p0);
+val_t NEW_ReduceAction404_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction404_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction405(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction405_t)(val_t p0);
+val_t NEW_parser___ReduceAction405(void);
+void CHECKNEW_parser___ReduceAction405(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction405_t)(val_t p0);
+val_t NEW_ReduceAction405_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction405_parser___ReduceAction___init_t)(val_t p0);
 void INIT_ATTRIBUTES__parser___ReduceAction406(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction406_t)(val_t p0);
 val_t NEW_parser___ReduceAction406(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction406 = "check new ReduceAction406";
 void CHECKNEW_parser___ReduceAction406(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction406_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction406_parser___ReduceAction___init = "new ReduceAction406 parser::ReduceAction::init";
 val_t NEW_ReduceAction406_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction406_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction411 = "init var of ReduceAction411";
+void INIT_ATTRIBUTES__parser___ReduceAction407(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction407_t)(val_t p0);
+val_t NEW_parser___ReduceAction407(void);
+void CHECKNEW_parser___ReduceAction407(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction407_t)(val_t p0);
+val_t NEW_ReduceAction407_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction407_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction408(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction408_t)(val_t p0);
+val_t NEW_parser___ReduceAction408(void);
+void CHECKNEW_parser___ReduceAction408(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction408_t)(val_t p0);
+val_t NEW_ReduceAction408_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction408_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction409(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction409_t)(val_t p0);
+val_t NEW_parser___ReduceAction409(void);
+void CHECKNEW_parser___ReduceAction409(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction409_t)(val_t p0);
+val_t NEW_ReduceAction409_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction409_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction410(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction410_t)(val_t p0);
+val_t NEW_parser___ReduceAction410(void);
+void CHECKNEW_parser___ReduceAction410(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction410_t)(val_t p0);
+val_t NEW_ReduceAction410_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction410_parser___ReduceAction___init_t)(val_t p0);
 void INIT_ATTRIBUTES__parser___ReduceAction411(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction411_t)(val_t p0);
 val_t NEW_parser___ReduceAction411(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction411 = "check new ReduceAction411";
 void CHECKNEW_parser___ReduceAction411(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction411_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction411_parser___ReduceAction___init = "new ReduceAction411 parser::ReduceAction::init";
 val_t NEW_ReduceAction411_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction411_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction412 = "init var of ReduceAction412";
 void INIT_ATTRIBUTES__parser___ReduceAction412(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction412_t)(val_t p0);
 val_t NEW_parser___ReduceAction412(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction412 = "check new ReduceAction412";
 void CHECKNEW_parser___ReduceAction412(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction412_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction412_parser___ReduceAction___init = "new ReduceAction412 parser::ReduceAction::init";
 val_t NEW_ReduceAction412_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction412_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction413 = "init var of ReduceAction413";
 void INIT_ATTRIBUTES__parser___ReduceAction413(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction413_t)(val_t p0);
 val_t NEW_parser___ReduceAction413(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction413 = "check new ReduceAction413";
 void CHECKNEW_parser___ReduceAction413(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction413_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction413_parser___ReduceAction___init = "new ReduceAction413 parser::ReduceAction::init";
 val_t NEW_ReduceAction413_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction413_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction414 = "init var of ReduceAction414";
 void INIT_ATTRIBUTES__parser___ReduceAction414(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction414_t)(val_t p0);
 val_t NEW_parser___ReduceAction414(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction414 = "check new ReduceAction414";
 void CHECKNEW_parser___ReduceAction414(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction414_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction414_parser___ReduceAction___init = "new ReduceAction414 parser::ReduceAction::init";
 val_t NEW_ReduceAction414_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction414_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction415 = "init var of ReduceAction415";
-void INIT_ATTRIBUTES__parser___ReduceAction415(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___ReduceAction415_t)(val_t p0);
-val_t NEW_parser___ReduceAction415(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction415 = "check new ReduceAction415";
-void CHECKNEW_parser___ReduceAction415(val_t p0);
-typedef void (*CHECKNEW_parser___ReduceAction415_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction415_parser___ReduceAction___init = "new ReduceAction415 parser::ReduceAction::init";
-val_t NEW_ReduceAction415_parser___ReduceAction___init(val_t p0);
-typedef val_t (*NEW_ReduceAction415_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction416 = "init var of ReduceAction416";
 void INIT_ATTRIBUTES__parser___ReduceAction416(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction416_t)(val_t p0);
 val_t NEW_parser___ReduceAction416(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction416 = "check new ReduceAction416";
 void CHECKNEW_parser___ReduceAction416(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction416_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction416_parser___ReduceAction___init = "new ReduceAction416 parser::ReduceAction::init";
 val_t NEW_ReduceAction416_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction416_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction417 = "init var of ReduceAction417";
 void INIT_ATTRIBUTES__parser___ReduceAction417(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction417_t)(val_t p0);
 val_t NEW_parser___ReduceAction417(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction417 = "check new ReduceAction417";
 void CHECKNEW_parser___ReduceAction417(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction417_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction417_parser___ReduceAction___init = "new ReduceAction417 parser::ReduceAction::init";
 val_t NEW_ReduceAction417_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction417_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction418 = "init var of ReduceAction418";
 void INIT_ATTRIBUTES__parser___ReduceAction418(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction418_t)(val_t p0);
 val_t NEW_parser___ReduceAction418(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction418 = "check new ReduceAction418";
 void CHECKNEW_parser___ReduceAction418(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction418_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction418_parser___ReduceAction___init = "new ReduceAction418 parser::ReduceAction::init";
 val_t NEW_ReduceAction418_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction418_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction419 = "init var of ReduceAction419";
 void INIT_ATTRIBUTES__parser___ReduceAction419(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction419_t)(val_t p0);
 val_t NEW_parser___ReduceAction419(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction419 = "check new ReduceAction419";
 void CHECKNEW_parser___ReduceAction419(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction419_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction419_parser___ReduceAction___init = "new ReduceAction419 parser::ReduceAction::init";
 val_t NEW_ReduceAction419_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction419_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction420 = "init var of ReduceAction420";
 void INIT_ATTRIBUTES__parser___ReduceAction420(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction420_t)(val_t p0);
 val_t NEW_parser___ReduceAction420(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction420 = "check new ReduceAction420";
 void CHECKNEW_parser___ReduceAction420(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction420_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction420_parser___ReduceAction___init = "new ReduceAction420 parser::ReduceAction::init";
 val_t NEW_ReduceAction420_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction420_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction421 = "init var of ReduceAction421";
 void INIT_ATTRIBUTES__parser___ReduceAction421(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction421_t)(val_t p0);
 val_t NEW_parser___ReduceAction421(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction421 = "check new ReduceAction421";
 void CHECKNEW_parser___ReduceAction421(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction421_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction421_parser___ReduceAction___init = "new ReduceAction421 parser::ReduceAction::init";
 val_t NEW_ReduceAction421_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction421_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction422 = "init var of ReduceAction422";
 void INIT_ATTRIBUTES__parser___ReduceAction422(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction422_t)(val_t p0);
 val_t NEW_parser___ReduceAction422(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction422 = "check new ReduceAction422";
 void CHECKNEW_parser___ReduceAction422(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction422_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction422_parser___ReduceAction___init = "new ReduceAction422 parser::ReduceAction::init";
 val_t NEW_ReduceAction422_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction422_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction423 = "init var of ReduceAction423";
 void INIT_ATTRIBUTES__parser___ReduceAction423(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction423_t)(val_t p0);
 val_t NEW_parser___ReduceAction423(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction423 = "check new ReduceAction423";
 void CHECKNEW_parser___ReduceAction423(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction423_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction423_parser___ReduceAction___init = "new ReduceAction423 parser::ReduceAction::init";
 val_t NEW_ReduceAction423_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction423_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction425 = "init var of ReduceAction425";
+void INIT_ATTRIBUTES__parser___ReduceAction424(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction424_t)(val_t p0);
+val_t NEW_parser___ReduceAction424(void);
+void CHECKNEW_parser___ReduceAction424(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction424_t)(val_t p0);
+val_t NEW_ReduceAction424_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction424_parser___ReduceAction___init_t)(val_t p0);
 void INIT_ATTRIBUTES__parser___ReduceAction425(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction425_t)(val_t p0);
 val_t NEW_parser___ReduceAction425(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction425 = "check new ReduceAction425";
 void CHECKNEW_parser___ReduceAction425(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction425_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction425_parser___ReduceAction___init = "new ReduceAction425 parser::ReduceAction::init";
 val_t NEW_ReduceAction425_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction425_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction426 = "init var of ReduceAction426";
-void INIT_ATTRIBUTES__parser___ReduceAction426(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___ReduceAction426_t)(val_t p0);
-val_t NEW_parser___ReduceAction426(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction426 = "check new ReduceAction426";
-void CHECKNEW_parser___ReduceAction426(val_t p0);
-typedef void (*CHECKNEW_parser___ReduceAction426_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction426_parser___ReduceAction___init = "new ReduceAction426 parser::ReduceAction::init";
-val_t NEW_ReduceAction426_parser___ReduceAction___init(val_t p0);
-typedef val_t (*NEW_ReduceAction426_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction428 = "init var of ReduceAction428";
-void INIT_ATTRIBUTES__parser___ReduceAction428(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___ReduceAction428_t)(val_t p0);
-val_t NEW_parser___ReduceAction428(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction428 = "check new ReduceAction428";
-void CHECKNEW_parser___ReduceAction428(val_t p0);
-typedef void (*CHECKNEW_parser___ReduceAction428_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction428_parser___ReduceAction___init = "new ReduceAction428 parser::ReduceAction::init";
-val_t NEW_ReduceAction428_parser___ReduceAction___init(val_t p0);
-typedef val_t (*NEW_ReduceAction428_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction429 = "init var of ReduceAction429";
 void INIT_ATTRIBUTES__parser___ReduceAction429(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction429_t)(val_t p0);
 val_t NEW_parser___ReduceAction429(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction429 = "check new ReduceAction429";
 void CHECKNEW_parser___ReduceAction429(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction429_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction429_parser___ReduceAction___init = "new ReduceAction429 parser::ReduceAction::init";
 val_t NEW_ReduceAction429_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction429_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction430 = "init var of ReduceAction430";
 void INIT_ATTRIBUTES__parser___ReduceAction430(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction430_t)(val_t p0);
 val_t NEW_parser___ReduceAction430(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction430 = "check new ReduceAction430";
 void CHECKNEW_parser___ReduceAction430(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction430_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction430_parser___ReduceAction___init = "new ReduceAction430 parser::ReduceAction::init";
 val_t NEW_ReduceAction430_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction430_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction431 = "init var of ReduceAction431";
 void INIT_ATTRIBUTES__parser___ReduceAction431(val_t p0);
 typedef void (*INIT_ATTRIBUTES__parser___ReduceAction431_t)(val_t p0);
 val_t NEW_parser___ReduceAction431(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction431 = "check new ReduceAction431";
 void CHECKNEW_parser___ReduceAction431(val_t p0);
 typedef void (*CHECKNEW_parser___ReduceAction431_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction431_parser___ReduceAction___init = "new ReduceAction431 parser::ReduceAction::init";
 val_t NEW_ReduceAction431_parser___ReduceAction___init(val_t p0);
 typedef val_t (*NEW_ReduceAction431_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction688 = "init var of ReduceAction688";
-void INIT_ATTRIBUTES__parser___ReduceAction688(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___ReduceAction688_t)(val_t p0);
-val_t NEW_parser___ReduceAction688(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction688 = "check new ReduceAction688";
-void CHECKNEW_parser___ReduceAction688(val_t p0);
-typedef void (*CHECKNEW_parser___ReduceAction688_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction688_parser___ReduceAction___init = "new ReduceAction688 parser::ReduceAction::init";
-val_t NEW_ReduceAction688_parser___ReduceAction___init(val_t p0);
-typedef val_t (*NEW_ReduceAction688_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction689 = "init var of ReduceAction689";
-void INIT_ATTRIBUTES__parser___ReduceAction689(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___ReduceAction689_t)(val_t p0);
-val_t NEW_parser___ReduceAction689(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction689 = "check new ReduceAction689";
-void CHECKNEW_parser___ReduceAction689(val_t p0);
-typedef void (*CHECKNEW_parser___ReduceAction689_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction689_parser___ReduceAction___init = "new ReduceAction689 parser::ReduceAction::init";
-val_t NEW_ReduceAction689_parser___ReduceAction___init(val_t p0);
-typedef val_t (*NEW_ReduceAction689_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction690 = "init var of ReduceAction690";
-void INIT_ATTRIBUTES__parser___ReduceAction690(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___ReduceAction690_t)(val_t p0);
-val_t NEW_parser___ReduceAction690(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction690 = "check new ReduceAction690";
-void CHECKNEW_parser___ReduceAction690(val_t p0);
-typedef void (*CHECKNEW_parser___ReduceAction690_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction690_parser___ReduceAction___init = "new ReduceAction690 parser::ReduceAction::init";
-val_t NEW_ReduceAction690_parser___ReduceAction___init(val_t p0);
-typedef val_t (*NEW_ReduceAction690_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction693 = "init var of ReduceAction693";
-void INIT_ATTRIBUTES__parser___ReduceAction693(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___ReduceAction693_t)(val_t p0);
-val_t NEW_parser___ReduceAction693(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction693 = "check new ReduceAction693";
-void CHECKNEW_parser___ReduceAction693(val_t p0);
-typedef void (*CHECKNEW_parser___ReduceAction693_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction693_parser___ReduceAction___init = "new ReduceAction693 parser::ReduceAction::init";
-val_t NEW_ReduceAction693_parser___ReduceAction___init(val_t p0);
-typedef val_t (*NEW_ReduceAction693_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction706 = "init var of ReduceAction706";
-void INIT_ATTRIBUTES__parser___ReduceAction706(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___ReduceAction706_t)(val_t p0);
-val_t NEW_parser___ReduceAction706(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction706 = "check new ReduceAction706";
-void CHECKNEW_parser___ReduceAction706(val_t p0);
-typedef void (*CHECKNEW_parser___ReduceAction706_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction706_parser___ReduceAction___init = "new ReduceAction706 parser::ReduceAction::init";
-val_t NEW_ReduceAction706_parser___ReduceAction___init(val_t p0);
-typedef val_t (*NEW_ReduceAction706_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction707 = "init var of ReduceAction707";
-void INIT_ATTRIBUTES__parser___ReduceAction707(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___ReduceAction707_t)(val_t p0);
-val_t NEW_parser___ReduceAction707(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction707 = "check new ReduceAction707";
-void CHECKNEW_parser___ReduceAction707(val_t p0);
-typedef void (*CHECKNEW_parser___ReduceAction707_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction707_parser___ReduceAction___init = "new ReduceAction707 parser::ReduceAction::init";
-val_t NEW_ReduceAction707_parser___ReduceAction___init(val_t p0);
-typedef val_t (*NEW_ReduceAction707_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction714 = "init var of ReduceAction714";
-void INIT_ATTRIBUTES__parser___ReduceAction714(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___ReduceAction714_t)(val_t p0);
-val_t NEW_parser___ReduceAction714(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction714 = "check new ReduceAction714";
-void CHECKNEW_parser___ReduceAction714(val_t p0);
-typedef void (*CHECKNEW_parser___ReduceAction714_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction714_parser___ReduceAction___init = "new ReduceAction714 parser::ReduceAction::init";
-val_t NEW_ReduceAction714_parser___ReduceAction___init(val_t p0);
-typedef val_t (*NEW_ReduceAction714_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction715 = "init var of ReduceAction715";
-void INIT_ATTRIBUTES__parser___ReduceAction715(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___ReduceAction715_t)(val_t p0);
-val_t NEW_parser___ReduceAction715(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction715 = "check new ReduceAction715";
-void CHECKNEW_parser___ReduceAction715(val_t p0);
-typedef void (*CHECKNEW_parser___ReduceAction715_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction715_parser___ReduceAction___init = "new ReduceAction715 parser::ReduceAction::init";
-val_t NEW_ReduceAction715_parser___ReduceAction___init(val_t p0);
-typedef val_t (*NEW_ReduceAction715_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction716 = "init var of ReduceAction716";
-void INIT_ATTRIBUTES__parser___ReduceAction716(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___ReduceAction716_t)(val_t p0);
-val_t NEW_parser___ReduceAction716(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction716 = "check new ReduceAction716";
-void CHECKNEW_parser___ReduceAction716(val_t p0);
-typedef void (*CHECKNEW_parser___ReduceAction716_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction716_parser___ReduceAction___init = "new ReduceAction716 parser::ReduceAction::init";
-val_t NEW_ReduceAction716_parser___ReduceAction___init(val_t p0);
-typedef val_t (*NEW_ReduceAction716_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction717 = "init var of ReduceAction717";
-void INIT_ATTRIBUTES__parser___ReduceAction717(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___ReduceAction717_t)(val_t p0);
-val_t NEW_parser___ReduceAction717(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction717 = "check new ReduceAction717";
-void CHECKNEW_parser___ReduceAction717(val_t p0);
-typedef void (*CHECKNEW_parser___ReduceAction717_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction717_parser___ReduceAction___init = "new ReduceAction717 parser::ReduceAction::init";
-val_t NEW_ReduceAction717_parser___ReduceAction___init(val_t p0);
-typedef val_t (*NEW_ReduceAction717_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction718 = "init var of ReduceAction718";
-void INIT_ATTRIBUTES__parser___ReduceAction718(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___ReduceAction718_t)(val_t p0);
-val_t NEW_parser___ReduceAction718(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction718 = "check new ReduceAction718";
-void CHECKNEW_parser___ReduceAction718(val_t p0);
-typedef void (*CHECKNEW_parser___ReduceAction718_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction718_parser___ReduceAction___init = "new ReduceAction718 parser::ReduceAction::init";
-val_t NEW_ReduceAction718_parser___ReduceAction___init(val_t p0);
-typedef val_t (*NEW_ReduceAction718_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction719 = "init var of ReduceAction719";
-void INIT_ATTRIBUTES__parser___ReduceAction719(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___ReduceAction719_t)(val_t p0);
-val_t NEW_parser___ReduceAction719(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction719 = "check new ReduceAction719";
-void CHECKNEW_parser___ReduceAction719(val_t p0);
-typedef void (*CHECKNEW_parser___ReduceAction719_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction719_parser___ReduceAction___init = "new ReduceAction719 parser::ReduceAction::init";
-val_t NEW_ReduceAction719_parser___ReduceAction___init(val_t p0);
-typedef val_t (*NEW_ReduceAction719_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction720 = "init var of ReduceAction720";
-void INIT_ATTRIBUTES__parser___ReduceAction720(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___ReduceAction720_t)(val_t p0);
-val_t NEW_parser___ReduceAction720(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction720 = "check new ReduceAction720";
-void CHECKNEW_parser___ReduceAction720(val_t p0);
-typedef void (*CHECKNEW_parser___ReduceAction720_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction720_parser___ReduceAction___init = "new ReduceAction720 parser::ReduceAction::init";
-val_t NEW_ReduceAction720_parser___ReduceAction___init(val_t p0);
-typedef val_t (*NEW_ReduceAction720_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction721 = "init var of ReduceAction721";
-void INIT_ATTRIBUTES__parser___ReduceAction721(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___ReduceAction721_t)(val_t p0);
-val_t NEW_parser___ReduceAction721(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction721 = "check new ReduceAction721";
-void CHECKNEW_parser___ReduceAction721(val_t p0);
-typedef void (*CHECKNEW_parser___ReduceAction721_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction721_parser___ReduceAction___init = "new ReduceAction721 parser::ReduceAction::init";
-val_t NEW_ReduceAction721_parser___ReduceAction___init(val_t p0);
-typedef val_t (*NEW_ReduceAction721_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction724 = "init var of ReduceAction724";
-void INIT_ATTRIBUTES__parser___ReduceAction724(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___ReduceAction724_t)(val_t p0);
-val_t NEW_parser___ReduceAction724(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction724 = "check new ReduceAction724";
-void CHECKNEW_parser___ReduceAction724(val_t p0);
-typedef void (*CHECKNEW_parser___ReduceAction724_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction724_parser___ReduceAction___init = "new ReduceAction724 parser::ReduceAction::init";
-val_t NEW_ReduceAction724_parser___ReduceAction___init(val_t p0);
-typedef val_t (*NEW_ReduceAction724_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction725 = "init var of ReduceAction725";
-void INIT_ATTRIBUTES__parser___ReduceAction725(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___ReduceAction725_t)(val_t p0);
-val_t NEW_parser___ReduceAction725(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction725 = "check new ReduceAction725";
-void CHECKNEW_parser___ReduceAction725(val_t p0);
-typedef void (*CHECKNEW_parser___ReduceAction725_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction725_parser___ReduceAction___init = "new ReduceAction725 parser::ReduceAction::init";
-val_t NEW_ReduceAction725_parser___ReduceAction___init(val_t p0);
-typedef val_t (*NEW_ReduceAction725_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction726 = "init var of ReduceAction726";
-void INIT_ATTRIBUTES__parser___ReduceAction726(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___ReduceAction726_t)(val_t p0);
-val_t NEW_parser___ReduceAction726(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction726 = "check new ReduceAction726";
-void CHECKNEW_parser___ReduceAction726(val_t p0);
-typedef void (*CHECKNEW_parser___ReduceAction726_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction726_parser___ReduceAction___init = "new ReduceAction726 parser::ReduceAction::init";
-val_t NEW_ReduceAction726_parser___ReduceAction___init(val_t p0);
-typedef val_t (*NEW_ReduceAction726_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction727 = "init var of ReduceAction727";
-void INIT_ATTRIBUTES__parser___ReduceAction727(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___ReduceAction727_t)(val_t p0);
-val_t NEW_parser___ReduceAction727(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction727 = "check new ReduceAction727";
-void CHECKNEW_parser___ReduceAction727(val_t p0);
-typedef void (*CHECKNEW_parser___ReduceAction727_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction727_parser___ReduceAction___init = "new ReduceAction727 parser::ReduceAction::init";
-val_t NEW_ReduceAction727_parser___ReduceAction___init(val_t p0);
-typedef val_t (*NEW_ReduceAction727_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction728 = "init var of ReduceAction728";
-void INIT_ATTRIBUTES__parser___ReduceAction728(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___ReduceAction728_t)(val_t p0);
-val_t NEW_parser___ReduceAction728(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction728 = "check new ReduceAction728";
-void CHECKNEW_parser___ReduceAction728(val_t p0);
-typedef void (*CHECKNEW_parser___ReduceAction728_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction728_parser___ReduceAction___init = "new ReduceAction728 parser::ReduceAction::init";
-val_t NEW_ReduceAction728_parser___ReduceAction___init(val_t p0);
-typedef val_t (*NEW_ReduceAction728_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction729 = "init var of ReduceAction729";
-void INIT_ATTRIBUTES__parser___ReduceAction729(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___ReduceAction729_t)(val_t p0);
-val_t NEW_parser___ReduceAction729(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction729 = "check new ReduceAction729";
-void CHECKNEW_parser___ReduceAction729(val_t p0);
-typedef void (*CHECKNEW_parser___ReduceAction729_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction729_parser___ReduceAction___init = "new ReduceAction729 parser::ReduceAction::init";
-val_t NEW_ReduceAction729_parser___ReduceAction___init(val_t p0);
-typedef val_t (*NEW_ReduceAction729_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction730 = "init var of ReduceAction730";
-void INIT_ATTRIBUTES__parser___ReduceAction730(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___ReduceAction730_t)(val_t p0);
-val_t NEW_parser___ReduceAction730(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction730 = "check new ReduceAction730";
-void CHECKNEW_parser___ReduceAction730(val_t p0);
-typedef void (*CHECKNEW_parser___ReduceAction730_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction730_parser___ReduceAction___init = "new ReduceAction730 parser::ReduceAction::init";
-val_t NEW_ReduceAction730_parser___ReduceAction___init(val_t p0);
-typedef val_t (*NEW_ReduceAction730_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction731 = "init var of ReduceAction731";
-void INIT_ATTRIBUTES__parser___ReduceAction731(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___ReduceAction731_t)(val_t p0);
-val_t NEW_parser___ReduceAction731(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction731 = "check new ReduceAction731";
-void CHECKNEW_parser___ReduceAction731(val_t p0);
-typedef void (*CHECKNEW_parser___ReduceAction731_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction731_parser___ReduceAction___init = "new ReduceAction731 parser::ReduceAction::init";
-val_t NEW_ReduceAction731_parser___ReduceAction___init(val_t p0);
-typedef val_t (*NEW_ReduceAction731_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction733 = "init var of ReduceAction733";
-void INIT_ATTRIBUTES__parser___ReduceAction733(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___ReduceAction733_t)(val_t p0);
-val_t NEW_parser___ReduceAction733(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction733 = "check new ReduceAction733";
-void CHECKNEW_parser___ReduceAction733(val_t p0);
-typedef void (*CHECKNEW_parser___ReduceAction733_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction733_parser___ReduceAction___init = "new ReduceAction733 parser::ReduceAction::init";
-val_t NEW_ReduceAction733_parser___ReduceAction___init(val_t p0);
-typedef val_t (*NEW_ReduceAction733_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction735 = "init var of ReduceAction735";
-void INIT_ATTRIBUTES__parser___ReduceAction735(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___ReduceAction735_t)(val_t p0);
-val_t NEW_parser___ReduceAction735(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction735 = "check new ReduceAction735";
-void CHECKNEW_parser___ReduceAction735(val_t p0);
-typedef void (*CHECKNEW_parser___ReduceAction735_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction735_parser___ReduceAction___init = "new ReduceAction735 parser::ReduceAction::init";
-val_t NEW_ReduceAction735_parser___ReduceAction___init(val_t p0);
-typedef val_t (*NEW_ReduceAction735_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction736 = "init var of ReduceAction736";
-void INIT_ATTRIBUTES__parser___ReduceAction736(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___ReduceAction736_t)(val_t p0);
-val_t NEW_parser___ReduceAction736(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction736 = "check new ReduceAction736";
-void CHECKNEW_parser___ReduceAction736(val_t p0);
-typedef void (*CHECKNEW_parser___ReduceAction736_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction736_parser___ReduceAction___init = "new ReduceAction736 parser::ReduceAction::init";
-val_t NEW_ReduceAction736_parser___ReduceAction___init(val_t p0);
-typedef val_t (*NEW_ReduceAction736_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction737 = "init var of ReduceAction737";
-void INIT_ATTRIBUTES__parser___ReduceAction737(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___ReduceAction737_t)(val_t p0);
-val_t NEW_parser___ReduceAction737(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction737 = "check new ReduceAction737";
-void CHECKNEW_parser___ReduceAction737(val_t p0);
-typedef void (*CHECKNEW_parser___ReduceAction737_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction737_parser___ReduceAction___init = "new ReduceAction737 parser::ReduceAction::init";
-val_t NEW_ReduceAction737_parser___ReduceAction___init(val_t p0);
-typedef val_t (*NEW_ReduceAction737_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction741 = "init var of ReduceAction741";
-void INIT_ATTRIBUTES__parser___ReduceAction741(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___ReduceAction741_t)(val_t p0);
-val_t NEW_parser___ReduceAction741(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction741 = "check new ReduceAction741";
-void CHECKNEW_parser___ReduceAction741(val_t p0);
-typedef void (*CHECKNEW_parser___ReduceAction741_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction741_parser___ReduceAction___init = "new ReduceAction741 parser::ReduceAction::init";
-val_t NEW_ReduceAction741_parser___ReduceAction___init(val_t p0);
-typedef val_t (*NEW_ReduceAction741_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction742 = "init var of ReduceAction742";
-void INIT_ATTRIBUTES__parser___ReduceAction742(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___ReduceAction742_t)(val_t p0);
-val_t NEW_parser___ReduceAction742(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction742 = "check new ReduceAction742";
-void CHECKNEW_parser___ReduceAction742(val_t p0);
-typedef void (*CHECKNEW_parser___ReduceAction742_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction742_parser___ReduceAction___init = "new ReduceAction742 parser::ReduceAction::init";
-val_t NEW_ReduceAction742_parser___ReduceAction___init(val_t p0);
-typedef val_t (*NEW_ReduceAction742_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction743 = "init var of ReduceAction743";
-void INIT_ATTRIBUTES__parser___ReduceAction743(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___ReduceAction743_t)(val_t p0);
-val_t NEW_parser___ReduceAction743(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction743 = "check new ReduceAction743";
-void CHECKNEW_parser___ReduceAction743(val_t p0);
-typedef void (*CHECKNEW_parser___ReduceAction743_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction743_parser___ReduceAction___init = "new ReduceAction743 parser::ReduceAction::init";
-val_t NEW_ReduceAction743_parser___ReduceAction___init(val_t p0);
-typedef val_t (*NEW_ReduceAction743_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction744 = "init var of ReduceAction744";
-void INIT_ATTRIBUTES__parser___ReduceAction744(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___ReduceAction744_t)(val_t p0);
-val_t NEW_parser___ReduceAction744(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction744 = "check new ReduceAction744";
-void CHECKNEW_parser___ReduceAction744(val_t p0);
-typedef void (*CHECKNEW_parser___ReduceAction744_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction744_parser___ReduceAction___init = "new ReduceAction744 parser::ReduceAction::init";
-val_t NEW_ReduceAction744_parser___ReduceAction___init(val_t p0);
-typedef val_t (*NEW_ReduceAction744_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__parser___ReduceAction745 = "init var of ReduceAction745";
-void INIT_ATTRIBUTES__parser___ReduceAction745(val_t p0);
-typedef void (*INIT_ATTRIBUTES__parser___ReduceAction745_t)(val_t p0);
-val_t NEW_parser___ReduceAction745(void);
-static const char * const LOCATE_CHECKNEW_parser___ReduceAction745 = "check new ReduceAction745";
-void CHECKNEW_parser___ReduceAction745(val_t p0);
-typedef void (*CHECKNEW_parser___ReduceAction745_t)(val_t p0);
-static const char * const LOCATE_NEW_ReduceAction745_parser___ReduceAction___init = "new ReduceAction745 parser::ReduceAction::init";
-val_t NEW_ReduceAction745_parser___ReduceAction___init(val_t p0);
-typedef val_t (*NEW_ReduceAction745_parser___ReduceAction___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__metamodel___partial_order___PartialOrder = "init var of PartialOrder";
-void INIT_ATTRIBUTES__metamodel___partial_order___PartialOrder(val_t p0);
-typedef void (*INIT_ATTRIBUTES__metamodel___partial_order___PartialOrder_t)(val_t p0);
-val_t NEW_metamodel___partial_order___PartialOrder(void);
-static const char * const LOCATE_CHECKNEW_metamodel___partial_order___PartialOrder = "check new PartialOrder";
-void CHECKNEW_metamodel___partial_order___PartialOrder(val_t p0);
-typedef void (*CHECKNEW_metamodel___partial_order___PartialOrder_t)(val_t p0);
-static const char * const LOCATE_NEW_PartialOrder_metamodel___partial_order___PartialOrder___init = "new PartialOrder partial_order::PartialOrder::init";
-val_t NEW_PartialOrder_metamodel___partial_order___PartialOrder___init(void);
-typedef val_t (*NEW_PartialOrder_metamodel___partial_order___PartialOrder___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__metamodel___partial_order___PartialOrderElement = "init var of PartialOrderElement";
-void INIT_ATTRIBUTES__metamodel___partial_order___PartialOrderElement(val_t p0);
-typedef void (*INIT_ATTRIBUTES__metamodel___partial_order___PartialOrderElement_t)(val_t p0);
-val_t NEW_metamodel___partial_order___PartialOrderElement(void);
-static const char * const LOCATE_CHECKNEW_metamodel___partial_order___PartialOrderElement = "check new PartialOrderElement";
-void CHECKNEW_metamodel___partial_order___PartialOrderElement(val_t p0);
-typedef void (*CHECKNEW_metamodel___partial_order___PartialOrderElement_t)(val_t p0);
-static const char * const LOCATE_NEW_PartialOrderElement_metamodel___partial_order___PartialOrderElement___init = "new PartialOrderElement partial_order::PartialOrderElement::init";
-val_t NEW_PartialOrderElement_metamodel___partial_order___PartialOrderElement___init(val_t p0, val_t p1, val_t p2);
-typedef val_t (*NEW_PartialOrderElement_metamodel___partial_order___PartialOrderElement___init_t)(val_t p0, val_t p1, val_t p2);
-static const char * const LOCATE_INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMContext = "init var of MMContext";
-void INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMContext(val_t p0);
-typedef void (*INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMContext_t)(val_t p0);
-val_t NEW_metamodel___abstractmetamodel___MMContext(void);
-static const char * const LOCATE_CHECKNEW_metamodel___abstractmetamodel___MMContext = "check new MMContext";
-void CHECKNEW_metamodel___abstractmetamodel___MMContext(val_t p0);
-typedef void (*CHECKNEW_metamodel___abstractmetamodel___MMContext_t)(val_t p0);
-static const char * const LOCATE_NEW_MMContext_metamodel___abstractmetamodel___MMContext___init = "new MMContext abstractmetamodel::MMContext::init";
-val_t NEW_MMContext_metamodel___abstractmetamodel___MMContext___init(void);
-typedef val_t (*NEW_MMContext_metamodel___abstractmetamodel___MMContext___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMDirectory = "init var of MMDirectory";
-void INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMDirectory(val_t p0);
-typedef void (*INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMDirectory_t)(val_t p0);
-val_t NEW_metamodel___abstractmetamodel___MMDirectory(void);
-static const char * const LOCATE_CHECKNEW_metamodel___abstractmetamodel___MMDirectory = "check new MMDirectory";
-void CHECKNEW_metamodel___abstractmetamodel___MMDirectory(val_t p0);
-typedef void (*CHECKNEW_metamodel___abstractmetamodel___MMDirectory_t)(val_t p0);
-static const char * const LOCATE_NEW_MMDirectory_metamodel___abstractmetamodel___MMDirectory___init = "new MMDirectory abstractmetamodel::MMDirectory::init";
-val_t NEW_MMDirectory_metamodel___abstractmetamodel___MMDirectory___init(val_t p0, val_t p1, val_t p2);
-typedef val_t (*NEW_MMDirectory_metamodel___abstractmetamodel___MMDirectory___init_t)(val_t p0, val_t p1, val_t p2);
-static const char * const LOCATE_INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMModule = "init var of MMModule";
-void INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMModule(val_t p0);
-typedef void (*INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMModule_t)(val_t p0);
-val_t NEW_metamodel___abstractmetamodel___MMModule(void);
-static const char * const LOCATE_CHECKNEW_metamodel___abstractmetamodel___MMModule = "check new MMModule";
-void CHECKNEW_metamodel___abstractmetamodel___MMModule(val_t p0);
-typedef void (*CHECKNEW_metamodel___abstractmetamodel___MMModule_t)(val_t p0);
-static const char * const LOCATE_NEW_MMModule_metamodel___abstractmetamodel___MMModule___init = "new MMModule abstractmetamodel::MMModule::init";
-val_t NEW_MMModule_metamodel___abstractmetamodel___MMModule___init(val_t p0, val_t p1, val_t p2, val_t p3);
-typedef val_t (*NEW_MMModule_metamodel___abstractmetamodel___MMModule___init_t)(val_t p0, val_t p1, val_t p2, val_t p3);
-static const char * const LOCATE_INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMGlobalClass = "init var of MMGlobalClass";
-void INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMGlobalClass(val_t p0);
-typedef void (*INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMGlobalClass_t)(val_t p0);
-val_t NEW_metamodel___abstractmetamodel___MMGlobalClass(void);
-static const char * const LOCATE_CHECKNEW_metamodel___abstractmetamodel___MMGlobalClass = "check new MMGlobalClass";
-void CHECKNEW_metamodel___abstractmetamodel___MMGlobalClass(val_t p0);
-typedef void (*CHECKNEW_metamodel___abstractmetamodel___MMGlobalClass_t)(val_t p0);
-static const char * const LOCATE_NEW_MMGlobalClass_metamodel___abstractmetamodel___MMGlobalClass___init = "new MMGlobalClass abstractmetamodel::MMGlobalClass::init";
-val_t NEW_MMGlobalClass_metamodel___abstractmetamodel___MMGlobalClass___init(val_t p0);
-typedef val_t (*NEW_MMGlobalClass_metamodel___abstractmetamodel___MMGlobalClass___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMLocalClass = "init var of MMLocalClass";
-void INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMLocalClass(val_t p0);
-typedef void (*INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMLocalClass_t)(val_t p0);
-val_t NEW_metamodel___abstractmetamodel___MMLocalClass(void);
-static const char * const LOCATE_CHECKNEW_metamodel___abstractmetamodel___MMLocalClass = "check new MMLocalClass";
-void CHECKNEW_metamodel___abstractmetamodel___MMLocalClass(val_t p0);
-typedef void (*CHECKNEW_metamodel___abstractmetamodel___MMLocalClass_t)(val_t p0);
-static const char * const LOCATE_NEW_MMLocalClass_metamodel___abstractmetamodel___MMLocalClass___init = "new MMLocalClass abstractmetamodel::MMLocalClass::init";
-val_t NEW_MMLocalClass_metamodel___abstractmetamodel___MMLocalClass___init(val_t p0, val_t p1, val_t p2);
-typedef val_t (*NEW_MMLocalClass_metamodel___abstractmetamodel___MMLocalClass___init_t)(val_t p0, val_t p1, val_t p2);
-static const char * const LOCATE_INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMGlobalProperty = "init var of MMGlobalProperty";
-void INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMGlobalProperty(val_t p0);
-typedef void (*INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMGlobalProperty_t)(val_t p0);
-val_t NEW_metamodel___abstractmetamodel___MMGlobalProperty(void);
-static const char * const LOCATE_CHECKNEW_metamodel___abstractmetamodel___MMGlobalProperty = "check new MMGlobalProperty";
-void CHECKNEW_metamodel___abstractmetamodel___MMGlobalProperty(val_t p0);
-typedef void (*CHECKNEW_metamodel___abstractmetamodel___MMGlobalProperty_t)(val_t p0);
-static const char * const LOCATE_NEW_MMGlobalProperty_metamodel___abstractmetamodel___MMGlobalProperty___init = "new MMGlobalProperty abstractmetamodel::MMGlobalProperty::init";
-val_t NEW_MMGlobalProperty_metamodel___abstractmetamodel___MMGlobalProperty___init(val_t p0);
-typedef val_t (*NEW_MMGlobalProperty_metamodel___abstractmetamodel___MMGlobalProperty___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMLocalProperty = "init var of MMLocalProperty";
-void INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMLocalProperty(val_t p0);
-typedef void (*INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMLocalProperty_t)(val_t p0);
-val_t NEW_metamodel___abstractmetamodel___MMLocalProperty(void);
-static const char * const LOCATE_CHECKNEW_metamodel___abstractmetamodel___MMLocalProperty = "check new MMLocalProperty";
-void CHECKNEW_metamodel___abstractmetamodel___MMLocalProperty(val_t p0);
-typedef void (*CHECKNEW_metamodel___abstractmetamodel___MMLocalProperty_t)(val_t p0);
-static const char * const LOCATE_NEW_MMLocalProperty_metamodel___abstractmetamodel___MMLocalProperty___init = "new MMLocalProperty abstractmetamodel::MMLocalProperty::init";
-val_t NEW_MMLocalProperty_metamodel___abstractmetamodel___MMLocalProperty___init(val_t p0, val_t p1);
-typedef val_t (*NEW_MMLocalProperty_metamodel___abstractmetamodel___MMLocalProperty___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMAttribute = "init var of MMAttribute";
-void INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMAttribute(val_t p0);
-typedef void (*INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMAttribute_t)(val_t p0);
-val_t NEW_metamodel___abstractmetamodel___MMAttribute(void);
-static const char * const LOCATE_CHECKNEW_metamodel___abstractmetamodel___MMAttribute = "check new MMAttribute";
-void CHECKNEW_metamodel___abstractmetamodel___MMAttribute(val_t p0);
-typedef void (*CHECKNEW_metamodel___abstractmetamodel___MMAttribute_t)(val_t p0);
-static const char * const LOCATE_NEW_MMAttribute_metamodel___abstractmetamodel___MMLocalProperty___init = "new MMAttribute abstractmetamodel::MMLocalProperty::init";
-val_t NEW_MMAttribute_metamodel___abstractmetamodel___MMLocalProperty___init(val_t p0, val_t p1);
-typedef val_t (*NEW_MMAttribute_metamodel___abstractmetamodel___MMLocalProperty___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMExplicitImport = "init var of MMExplicitImport";
-void INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMExplicitImport(val_t p0);
-typedef void (*INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMExplicitImport_t)(val_t p0);
-val_t NEW_metamodel___abstractmetamodel___MMExplicitImport(void);
-static const char * const LOCATE_CHECKNEW_metamodel___abstractmetamodel___MMExplicitImport = "check new MMExplicitImport";
-void CHECKNEW_metamodel___abstractmetamodel___MMExplicitImport(val_t p0);
-typedef void (*CHECKNEW_metamodel___abstractmetamodel___MMExplicitImport_t)(val_t p0);
-static const char * const LOCATE_NEW_MMExplicitImport_metamodel___abstractmetamodel___MMExplicitImport___init = "new MMExplicitImport static_type::MMExplicitImport::(abstractmetamodel::MMExplicitImport::init)";
-val_t NEW_MMExplicitImport_metamodel___abstractmetamodel___MMExplicitImport___init(val_t p0, val_t p1);
-typedef val_t (*NEW_MMExplicitImport_metamodel___abstractmetamodel___MMExplicitImport___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMMethod = "init var of MMMethod";
-void INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMMethod(val_t p0);
-typedef void (*INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMMethod_t)(val_t p0);
-val_t NEW_metamodel___abstractmetamodel___MMMethod(void);
-static const char * const LOCATE_CHECKNEW_metamodel___abstractmetamodel___MMMethod = "check new MMMethod";
-void CHECKNEW_metamodel___abstractmetamodel___MMMethod(val_t p0);
-typedef void (*CHECKNEW_metamodel___abstractmetamodel___MMMethod_t)(val_t p0);
-static const char * const LOCATE_NEW_MMMethod_metamodel___abstractmetamodel___MMLocalProperty___init = "new MMMethod abstractmetamodel::MMLocalProperty::init";
-val_t NEW_MMMethod_metamodel___abstractmetamodel___MMLocalProperty___init(val_t p0, val_t p1);
-typedef val_t (*NEW_MMMethod_metamodel___abstractmetamodel___MMLocalProperty___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMConcreteClass = "init var of MMConcreteClass";
-void INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMConcreteClass(val_t p0);
-typedef void (*INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMConcreteClass_t)(val_t p0);
-val_t NEW_metamodel___abstractmetamodel___MMConcreteClass(void);
-static const char * const LOCATE_CHECKNEW_metamodel___abstractmetamodel___MMConcreteClass = "check new MMConcreteClass";
-void CHECKNEW_metamodel___abstractmetamodel___MMConcreteClass(val_t p0);
-typedef void (*CHECKNEW_metamodel___abstractmetamodel___MMConcreteClass_t)(val_t p0);
-static const char * const LOCATE_NEW_MMConcreteClass_metamodel___abstractmetamodel___MMLocalClass___init = "new MMConcreteClass abstractmetamodel::MMLocalClass::init";
-val_t NEW_MMConcreteClass_metamodel___abstractmetamodel___MMLocalClass___init(val_t p0, val_t p1, val_t p2);
-typedef val_t (*NEW_MMConcreteClass_metamodel___abstractmetamodel___MMLocalClass___init_t)(val_t p0, val_t p1, val_t p2);
-static const char * const LOCATE_INIT_ATTRIBUTES__metamodel___static_type___MMParam = "init var of MMParam";
-void INIT_ATTRIBUTES__metamodel___static_type___MMParam(val_t p0);
-typedef void (*INIT_ATTRIBUTES__metamodel___static_type___MMParam_t)(val_t p0);
-val_t NEW_metamodel___static_type___MMParam(void);
-static const char * const LOCATE_CHECKNEW_metamodel___static_type___MMParam = "check new MMParam";
-void CHECKNEW_metamodel___static_type___MMParam(val_t p0);
-typedef void (*CHECKNEW_metamodel___static_type___MMParam_t)(val_t p0);
-static const char * const LOCATE_NEW_MMParam_metamodel___static_type___MMParam___init = "new MMParam static_type::MMParam::init";
-val_t NEW_MMParam_metamodel___static_type___MMParam___init(val_t p0, val_t p1);
-typedef val_t (*NEW_MMParam_metamodel___static_type___MMParam___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__metamodel___static_type___MMSignature = "init var of MMSignature";
-void INIT_ATTRIBUTES__metamodel___static_type___MMSignature(val_t p0);
-typedef void (*INIT_ATTRIBUTES__metamodel___static_type___MMSignature_t)(val_t p0);
-val_t NEW_metamodel___static_type___MMSignature(void);
-static const char * const LOCATE_CHECKNEW_metamodel___static_type___MMSignature = "check new MMSignature";
-void CHECKNEW_metamodel___static_type___MMSignature(val_t p0);
-typedef void (*CHECKNEW_metamodel___static_type___MMSignature_t)(val_t p0);
-static const char * const LOCATE_NEW_MMSignature_metamodel___static_type___MMSignature___init = "new MMSignature vararg::MMSignature::(static_type::MMSignature::init)";
-val_t NEW_MMSignature_metamodel___static_type___MMSignature___init(val_t p0, val_t p1, val_t p2);
-typedef val_t (*NEW_MMSignature_metamodel___static_type___MMSignature___init_t)(val_t p0, val_t p1, val_t p2);
-static const char * const LOCATE_INIT_ATTRIBUTES__metamodel___static_type___MMClosure = "init var of MMClosure";
-void INIT_ATTRIBUTES__metamodel___static_type___MMClosure(val_t p0);
-typedef void (*INIT_ATTRIBUTES__metamodel___static_type___MMClosure_t)(val_t p0);
-val_t NEW_metamodel___static_type___MMClosure(void);
-static const char * const LOCATE_CHECKNEW_metamodel___static_type___MMClosure = "check new MMClosure";
-void CHECKNEW_metamodel___static_type___MMClosure(val_t p0);
-typedef void (*CHECKNEW_metamodel___static_type___MMClosure_t)(val_t p0);
-static const char * const LOCATE_NEW_MMClosure_metamodel___static_type___MMClosure___init = "new MMClosure static_type::MMClosure::init";
-val_t NEW_MMClosure_metamodel___static_type___MMClosure___init(val_t p0, val_t p1, val_t p2, val_t p3);
-typedef val_t (*NEW_MMClosure_metamodel___static_type___MMClosure___init_t)(val_t p0, val_t p1, val_t p2, val_t p3);
-static const char * const LOCATE_INIT_ATTRIBUTES__metamodel___static_type___MMNullableType = "init var of MMNullableType";
-void INIT_ATTRIBUTES__metamodel___static_type___MMNullableType(val_t p0);
-typedef void (*INIT_ATTRIBUTES__metamodel___static_type___MMNullableType_t)(val_t p0);
-val_t NEW_metamodel___static_type___MMNullableType(void);
-static const char * const LOCATE_CHECKNEW_metamodel___static_type___MMNullableType = "check new MMNullableType";
-void CHECKNEW_metamodel___static_type___MMNullableType(val_t p0);
-typedef void (*CHECKNEW_metamodel___static_type___MMNullableType_t)(val_t p0);
-static const char * const LOCATE_NEW_MMNullableType_metamodel___static_type___MMNullableType___init = "new MMNullableType static_type::MMNullableType::init";
-val_t NEW_MMNullableType_metamodel___static_type___MMNullableType___init(val_t p0);
-typedef val_t (*NEW_MMNullableType_metamodel___static_type___MMNullableType___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__metamodel___static_type___MMTypeClass = "init var of MMTypeClass";
-void INIT_ATTRIBUTES__metamodel___static_type___MMTypeClass(val_t p0);
-typedef void (*INIT_ATTRIBUTES__metamodel___static_type___MMTypeClass_t)(val_t p0);
-val_t NEW_metamodel___static_type___MMTypeClass(void);
-static const char * const LOCATE_CHECKNEW_metamodel___static_type___MMTypeClass = "check new MMTypeClass";
-void CHECKNEW_metamodel___static_type___MMTypeClass(val_t p0);
-typedef void (*CHECKNEW_metamodel___static_type___MMTypeClass_t)(val_t p0);
-static const char * const LOCATE_NEW_MMTypeClass_metamodel___static_type___MMTypeClass___init = "new MMTypeClass static_type::MMTypeClass::init";
-val_t NEW_MMTypeClass_metamodel___static_type___MMTypeClass___init(val_t p0);
-typedef val_t (*NEW_MMTypeClass_metamodel___static_type___MMTypeClass___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__metamodel___static_type___MMTypeSimpleClass = "init var of MMTypeSimpleClass";
-void INIT_ATTRIBUTES__metamodel___static_type___MMTypeSimpleClass(val_t p0);
-typedef void (*INIT_ATTRIBUTES__metamodel___static_type___MMTypeSimpleClass_t)(val_t p0);
-val_t NEW_metamodel___static_type___MMTypeSimpleClass(void);
-static const char * const LOCATE_CHECKNEW_metamodel___static_type___MMTypeSimpleClass = "check new MMTypeSimpleClass";
-void CHECKNEW_metamodel___static_type___MMTypeSimpleClass(val_t p0);
-typedef void (*CHECKNEW_metamodel___static_type___MMTypeSimpleClass_t)(val_t p0);
-static const char * const LOCATE_NEW_MMTypeSimpleClass_metamodel___static_type___MMTypeSimpleClass___init = "new MMTypeSimpleClass static_type::MMTypeSimpleClass::init";
-val_t NEW_MMTypeSimpleClass_metamodel___static_type___MMTypeSimpleClass___init(val_t p0);
-typedef val_t (*NEW_MMTypeSimpleClass_metamodel___static_type___MMTypeSimpleClass___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__metamodel___static_type___MMTypeNone = "init var of MMTypeNone";
-void INIT_ATTRIBUTES__metamodel___static_type___MMTypeNone(val_t p0);
-typedef void (*INIT_ATTRIBUTES__metamodel___static_type___MMTypeNone_t)(val_t p0);
-val_t NEW_metamodel___static_type___MMTypeNone(void);
-static const char * const LOCATE_CHECKNEW_metamodel___static_type___MMTypeNone = "check new MMTypeNone";
-void CHECKNEW_metamodel___static_type___MMTypeNone(val_t p0);
-typedef void (*CHECKNEW_metamodel___static_type___MMTypeNone_t)(val_t p0);
-static const char * const LOCATE_NEW_MMTypeNone_metamodel___static_type___MMTypeNone___init = "new MMTypeNone static_type::MMTypeNone::init";
-val_t NEW_MMTypeNone_metamodel___static_type___MMTypeNone___init(val_t p0);
-typedef val_t (*NEW_MMTypeNone_metamodel___static_type___MMTypeNone___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__metamodel___static_type___MMImportedCast = "init var of MMImportedCast";
-void INIT_ATTRIBUTES__metamodel___static_type___MMImportedCast(val_t p0);
-typedef void (*INIT_ATTRIBUTES__metamodel___static_type___MMImportedCast_t)(val_t p0);
-val_t NEW_metamodel___static_type___MMImportedCast(void);
-static const char * const LOCATE_CHECKNEW_metamodel___static_type___MMImportedCast = "check new MMImportedCast";
-void CHECKNEW_metamodel___static_type___MMImportedCast(val_t p0);
-typedef void (*CHECKNEW_metamodel___static_type___MMImportedCast_t)(val_t p0);
-static const char * const LOCATE_NEW_MMImportedCast_metamodel___static_type___MMImportedCast___init = "new MMImportedCast static_type::MMImportedCast::init";
-val_t NEW_MMImportedCast_metamodel___static_type___MMImportedCast___init(val_t p0, val_t p1);
-typedef val_t (*NEW_MMImportedCast_metamodel___static_type___MMImportedCast___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__metamodel___inheritance___MMImplicitLocalClass = "init var of MMImplicitLocalClass";
-void INIT_ATTRIBUTES__metamodel___inheritance___MMImplicitLocalClass(val_t p0);
-typedef void (*INIT_ATTRIBUTES__metamodel___inheritance___MMImplicitLocalClass_t)(val_t p0);
-val_t NEW_metamodel___inheritance___MMImplicitLocalClass(void);
-static const char * const LOCATE_CHECKNEW_metamodel___inheritance___MMImplicitLocalClass = "check new MMImplicitLocalClass";
-void CHECKNEW_metamodel___inheritance___MMImplicitLocalClass(val_t p0);
-typedef void (*CHECKNEW_metamodel___inheritance___MMImplicitLocalClass_t)(val_t p0);
-static const char * const LOCATE_NEW_MMImplicitLocalClass_metamodel___inheritance___MMImplicitLocalClass___init = "new MMImplicitLocalClass inheritance::MMImplicitLocalClass::init";
-val_t NEW_MMImplicitLocalClass_metamodel___inheritance___MMImplicitLocalClass___init(val_t p0, val_t p1);
-typedef val_t (*NEW_MMImplicitLocalClass_metamodel___inheritance___MMImplicitLocalClass___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__metamodel___inheritance___MMRefineAncestor = "init var of MMRefineAncestor";
-void INIT_ATTRIBUTES__metamodel___inheritance___MMRefineAncestor(val_t p0);
-typedef void (*INIT_ATTRIBUTES__metamodel___inheritance___MMRefineAncestor_t)(val_t p0);
-val_t NEW_metamodel___inheritance___MMRefineAncestor(void);
-static const char * const LOCATE_CHECKNEW_metamodel___inheritance___MMRefineAncestor = "check new MMRefineAncestor";
-void CHECKNEW_metamodel___inheritance___MMRefineAncestor(val_t p0);
-typedef void (*CHECKNEW_metamodel___inheritance___MMRefineAncestor_t)(val_t p0);
-static const char * const LOCATE_NEW_MMRefineAncestor_metamodel___inheritance___MMRefineAncestor___init = "new MMRefineAncestor inheritance::MMRefineAncestor::init";
-val_t NEW_MMRefineAncestor_metamodel___inheritance___MMRefineAncestor___init(val_t p0, val_t p1);
-typedef val_t (*NEW_MMRefineAncestor_metamodel___inheritance___MMRefineAncestor___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__metamodel___inheritance___MMSpecAncestor = "init var of MMSpecAncestor";
-void INIT_ATTRIBUTES__metamodel___inheritance___MMSpecAncestor(val_t p0);
-typedef void (*INIT_ATTRIBUTES__metamodel___inheritance___MMSpecAncestor_t)(val_t p0);
-val_t NEW_metamodel___inheritance___MMSpecAncestor(void);
-static const char * const LOCATE_CHECKNEW_metamodel___inheritance___MMSpecAncestor = "check new MMSpecAncestor";
-void CHECKNEW_metamodel___inheritance___MMSpecAncestor(val_t p0);
-typedef void (*CHECKNEW_metamodel___inheritance___MMSpecAncestor_t)(val_t p0);
-static const char * const LOCATE_NEW_MMSpecAncestor_metamodel___inheritance___MMSpecAncestor___init = "new MMSpecAncestor inheritance::MMSpecAncestor::init";
-val_t NEW_MMSpecAncestor_metamodel___inheritance___MMSpecAncestor___init(val_t p0, val_t p1);
-typedef val_t (*NEW_MMSpecAncestor_metamodel___inheritance___MMSpecAncestor___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__metamodel___inheritance___MMDefaultAncestor = "init var of MMDefaultAncestor";
-void INIT_ATTRIBUTES__metamodel___inheritance___MMDefaultAncestor(val_t p0);
-typedef void (*INIT_ATTRIBUTES__metamodel___inheritance___MMDefaultAncestor_t)(val_t p0);
-val_t NEW_metamodel___inheritance___MMDefaultAncestor(void);
-static const char * const LOCATE_CHECKNEW_metamodel___inheritance___MMDefaultAncestor = "check new MMDefaultAncestor";
-void CHECKNEW_metamodel___inheritance___MMDefaultAncestor(val_t p0);
-typedef void (*CHECKNEW_metamodel___inheritance___MMDefaultAncestor_t)(val_t p0);
-static const char * const LOCATE_NEW_MMDefaultAncestor_metamodel___inheritance___MMDefaultAncestor___init = "new MMDefaultAncestor inheritance::MMDefaultAncestor::init";
-val_t NEW_MMDefaultAncestor_metamodel___inheritance___MMDefaultAncestor___init(val_t p0, val_t p1);
-typedef val_t (*NEW_MMDefaultAncestor_metamodel___inheritance___MMDefaultAncestor___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__metamodel___type_formal___MMTypeFormal = "init var of MMTypeFormal";
-void INIT_ATTRIBUTES__metamodel___type_formal___MMTypeFormal(val_t p0);
-typedef void (*INIT_ATTRIBUTES__metamodel___type_formal___MMTypeFormal_t)(val_t p0);
-val_t NEW_metamodel___type_formal___MMTypeFormal(void);
-static const char * const LOCATE_CHECKNEW_metamodel___type_formal___MMTypeFormal = "check new MMTypeFormal";
-void CHECKNEW_metamodel___type_formal___MMTypeFormal(val_t p0);
-typedef void (*CHECKNEW_metamodel___type_formal___MMTypeFormal_t)(val_t p0);
-static const char * const LOCATE_NEW_MMTypeFormal_metamodel___type_formal___MMTypeFormal___init = "new MMTypeFormal type_formal::MMTypeFormal::init";
-val_t NEW_MMTypeFormal_metamodel___type_formal___MMTypeFormal___init(val_t p0, val_t p1);
-typedef val_t (*NEW_MMTypeFormal_metamodel___type_formal___MMTypeFormal___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__metamodel___genericity___MMTypeGeneric = "init var of MMTypeGeneric";
-void INIT_ATTRIBUTES__metamodel___genericity___MMTypeGeneric(val_t p0);
-typedef void (*INIT_ATTRIBUTES__metamodel___genericity___MMTypeGeneric_t)(val_t p0);
-val_t NEW_metamodel___genericity___MMTypeGeneric(void);
-static const char * const LOCATE_CHECKNEW_metamodel___genericity___MMTypeGeneric = "check new MMTypeGeneric";
-void CHECKNEW_metamodel___genericity___MMTypeGeneric(val_t p0);
-typedef void (*CHECKNEW_metamodel___genericity___MMTypeGeneric_t)(val_t p0);
-static const char * const LOCATE_NEW_MMTypeGeneric_metamodel___genericity___MMTypeGeneric___init = "new MMTypeGeneric genericity::MMTypeGeneric::init";
-val_t NEW_MMTypeGeneric_metamodel___genericity___MMTypeGeneric___init(val_t p0, val_t p1);
-typedef val_t (*NEW_MMTypeGeneric_metamodel___genericity___MMTypeGeneric___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__metamodel___genericity___MMTypeFormalParameter = "init var of MMTypeFormalParameter";
-void INIT_ATTRIBUTES__metamodel___genericity___MMTypeFormalParameter(val_t p0);
-typedef void (*INIT_ATTRIBUTES__metamodel___genericity___MMTypeFormalParameter_t)(val_t p0);
-val_t NEW_metamodel___genericity___MMTypeFormalParameter(void);
-static const char * const LOCATE_CHECKNEW_metamodel___genericity___MMTypeFormalParameter = "check new MMTypeFormalParameter";
-void CHECKNEW_metamodel___genericity___MMTypeFormalParameter(val_t p0);
-typedef void (*CHECKNEW_metamodel___genericity___MMTypeFormalParameter_t)(val_t p0);
-static const char * const LOCATE_NEW_MMTypeFormalParameter_metamodel___genericity___MMTypeFormalParameter___with_bound = "new MMTypeFormalParameter genericity::MMTypeFormalParameter::with_bound";
-val_t NEW_MMTypeFormalParameter_metamodel___genericity___MMTypeFormalParameter___with_bound(val_t p0, val_t p1, val_t p2, val_t p3);
-typedef val_t (*NEW_MMTypeFormalParameter_metamodel___genericity___MMTypeFormalParameter___with_bound_t)(val_t p0, val_t p1, val_t p2, val_t p3);
-static const char * const LOCATE_NEW_MMTypeFormalParameter_metamodel___genericity___MMTypeFormalParameter___init = "new MMTypeFormalParameter genericity::MMTypeFormalParameter::init";
-val_t NEW_MMTypeFormalParameter_metamodel___genericity___MMTypeFormalParameter___init(val_t p0, val_t p1, val_t p2);
-typedef val_t (*NEW_MMTypeFormalParameter_metamodel___genericity___MMTypeFormalParameter___init_t)(val_t p0, val_t p1, val_t p2);
-static const char * const LOCATE_INIT_ATTRIBUTES__metamodel___virtualtype___MMTypeProperty = "init var of MMTypeProperty";
-void INIT_ATTRIBUTES__metamodel___virtualtype___MMTypeProperty(val_t p0);
-typedef void (*INIT_ATTRIBUTES__metamodel___virtualtype___MMTypeProperty_t)(val_t p0);
-val_t NEW_metamodel___virtualtype___MMTypeProperty(void);
-static const char * const LOCATE_CHECKNEW_metamodel___virtualtype___MMTypeProperty = "check new MMTypeProperty";
-void CHECKNEW_metamodel___virtualtype___MMTypeProperty(val_t p0);
-typedef void (*CHECKNEW_metamodel___virtualtype___MMTypeProperty_t)(val_t p0);
-static const char * const LOCATE_NEW_MMTypeProperty_metamodel___abstractmetamodel___MMLocalProperty___init = "new MMTypeProperty abstractmetamodel::MMLocalProperty::init";
-val_t NEW_MMTypeProperty_metamodel___abstractmetamodel___MMLocalProperty___init(val_t p0, val_t p1);
-typedef val_t (*NEW_MMTypeProperty_metamodel___abstractmetamodel___MMLocalProperty___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__metamodel___virtualtype___MMVirtualType = "init var of MMVirtualType";
-void INIT_ATTRIBUTES__metamodel___virtualtype___MMVirtualType(val_t p0);
-typedef void (*INIT_ATTRIBUTES__metamodel___virtualtype___MMVirtualType_t)(val_t p0);
-val_t NEW_metamodel___virtualtype___MMVirtualType(void);
-static const char * const LOCATE_CHECKNEW_metamodel___virtualtype___MMVirtualType = "check new MMVirtualType";
-void CHECKNEW_metamodel___virtualtype___MMVirtualType(val_t p0);
-typedef void (*CHECKNEW_metamodel___virtualtype___MMVirtualType_t)(val_t p0);
-static const char * const LOCATE_NEW_MMVirtualType_metamodel___virtualtype___MMVirtualType___init = "new MMVirtualType virtualtype::MMVirtualType::init";
-val_t NEW_MMVirtualType_metamodel___virtualtype___MMVirtualType___init(val_t p0, val_t p1);
-typedef val_t (*NEW_MMVirtualType_metamodel___virtualtype___MMVirtualType___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__opts___Option = "init var of Option";
-void INIT_ATTRIBUTES__opts___Option(val_t p0);
-typedef void (*INIT_ATTRIBUTES__opts___Option_t)(val_t p0);
-val_t NEW_opts___Option(void);
-static const char * const LOCATE_CHECKNEW_opts___Option = "check new Option";
-void CHECKNEW_opts___Option(val_t p0);
-typedef void (*CHECKNEW_opts___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__opts___OptionText = "init var of OptionText";
+void INIT_ATTRIBUTES__parser___ReduceAction432(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction432_t)(val_t p0);
+val_t NEW_parser___ReduceAction432(void);
+void CHECKNEW_parser___ReduceAction432(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction432_t)(val_t p0);
+val_t NEW_ReduceAction432_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction432_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction433(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction433_t)(val_t p0);
+val_t NEW_parser___ReduceAction433(void);
+void CHECKNEW_parser___ReduceAction433(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction433_t)(val_t p0);
+val_t NEW_ReduceAction433_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction433_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction434(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction434_t)(val_t p0);
+val_t NEW_parser___ReduceAction434(void);
+void CHECKNEW_parser___ReduceAction434(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction434_t)(val_t p0);
+val_t NEW_ReduceAction434_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction434_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction435(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction435_t)(val_t p0);
+val_t NEW_parser___ReduceAction435(void);
+void CHECKNEW_parser___ReduceAction435(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction435_t)(val_t p0);
+val_t NEW_ReduceAction435_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction435_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction436(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction436_t)(val_t p0);
+val_t NEW_parser___ReduceAction436(void);
+void CHECKNEW_parser___ReduceAction436(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction436_t)(val_t p0);
+val_t NEW_ReduceAction436_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction436_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction437(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction437_t)(val_t p0);
+val_t NEW_parser___ReduceAction437(void);
+void CHECKNEW_parser___ReduceAction437(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction437_t)(val_t p0);
+val_t NEW_ReduceAction437_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction437_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction438(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction438_t)(val_t p0);
+val_t NEW_parser___ReduceAction438(void);
+void CHECKNEW_parser___ReduceAction438(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction438_t)(val_t p0);
+val_t NEW_ReduceAction438_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction438_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction439(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction439_t)(val_t p0);
+val_t NEW_parser___ReduceAction439(void);
+void CHECKNEW_parser___ReduceAction439(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction439_t)(val_t p0);
+val_t NEW_ReduceAction439_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction439_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction446(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction446_t)(val_t p0);
+val_t NEW_parser___ReduceAction446(void);
+void CHECKNEW_parser___ReduceAction446(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction446_t)(val_t p0);
+val_t NEW_ReduceAction446_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction446_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction447(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction447_t)(val_t p0);
+val_t NEW_parser___ReduceAction447(void);
+void CHECKNEW_parser___ReduceAction447(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction447_t)(val_t p0);
+val_t NEW_ReduceAction447_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction447_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction448(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction448_t)(val_t p0);
+val_t NEW_parser___ReduceAction448(void);
+void CHECKNEW_parser___ReduceAction448(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction448_t)(val_t p0);
+val_t NEW_ReduceAction448_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction448_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction449(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction449_t)(val_t p0);
+val_t NEW_parser___ReduceAction449(void);
+void CHECKNEW_parser___ReduceAction449(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction449_t)(val_t p0);
+val_t NEW_ReduceAction449_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction449_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction450(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction450_t)(val_t p0);
+val_t NEW_parser___ReduceAction450(void);
+void CHECKNEW_parser___ReduceAction450(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction450_t)(val_t p0);
+val_t NEW_ReduceAction450_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction450_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction451(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction451_t)(val_t p0);
+val_t NEW_parser___ReduceAction451(void);
+void CHECKNEW_parser___ReduceAction451(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction451_t)(val_t p0);
+val_t NEW_ReduceAction451_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction451_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction452(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction452_t)(val_t p0);
+val_t NEW_parser___ReduceAction452(void);
+void CHECKNEW_parser___ReduceAction452(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction452_t)(val_t p0);
+val_t NEW_ReduceAction452_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction452_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction453(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction453_t)(val_t p0);
+val_t NEW_parser___ReduceAction453(void);
+void CHECKNEW_parser___ReduceAction453(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction453_t)(val_t p0);
+val_t NEW_ReduceAction453_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction453_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction454(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction454_t)(val_t p0);
+val_t NEW_parser___ReduceAction454(void);
+void CHECKNEW_parser___ReduceAction454(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction454_t)(val_t p0);
+val_t NEW_ReduceAction454_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction454_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction455(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction455_t)(val_t p0);
+val_t NEW_parser___ReduceAction455(void);
+void CHECKNEW_parser___ReduceAction455(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction455_t)(val_t p0);
+val_t NEW_ReduceAction455_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction455_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction456(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction456_t)(val_t p0);
+val_t NEW_parser___ReduceAction456(void);
+void CHECKNEW_parser___ReduceAction456(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction456_t)(val_t p0);
+val_t NEW_ReduceAction456_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction456_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction457(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction457_t)(val_t p0);
+val_t NEW_parser___ReduceAction457(void);
+void CHECKNEW_parser___ReduceAction457(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction457_t)(val_t p0);
+val_t NEW_ReduceAction457_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction457_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction458(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction458_t)(val_t p0);
+val_t NEW_parser___ReduceAction458(void);
+void CHECKNEW_parser___ReduceAction458(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction458_t)(val_t p0);
+val_t NEW_ReduceAction458_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction458_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction459(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction459_t)(val_t p0);
+val_t NEW_parser___ReduceAction459(void);
+void CHECKNEW_parser___ReduceAction459(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction459_t)(val_t p0);
+val_t NEW_ReduceAction459_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction459_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction460(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction460_t)(val_t p0);
+val_t NEW_parser___ReduceAction460(void);
+void CHECKNEW_parser___ReduceAction460(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction460_t)(val_t p0);
+val_t NEW_ReduceAction460_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction460_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction461(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction461_t)(val_t p0);
+val_t NEW_parser___ReduceAction461(void);
+void CHECKNEW_parser___ReduceAction461(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction461_t)(val_t p0);
+val_t NEW_ReduceAction461_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction461_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction462(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction462_t)(val_t p0);
+val_t NEW_parser___ReduceAction462(void);
+void CHECKNEW_parser___ReduceAction462(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction462_t)(val_t p0);
+val_t NEW_ReduceAction462_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction462_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction463(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction463_t)(val_t p0);
+val_t NEW_parser___ReduceAction463(void);
+void CHECKNEW_parser___ReduceAction463(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction463_t)(val_t p0);
+val_t NEW_ReduceAction463_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction463_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction464(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction464_t)(val_t p0);
+val_t NEW_parser___ReduceAction464(void);
+void CHECKNEW_parser___ReduceAction464(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction464_t)(val_t p0);
+val_t NEW_ReduceAction464_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction464_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction465(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction465_t)(val_t p0);
+val_t NEW_parser___ReduceAction465(void);
+void CHECKNEW_parser___ReduceAction465(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction465_t)(val_t p0);
+val_t NEW_ReduceAction465_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction465_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction466(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction466_t)(val_t p0);
+val_t NEW_parser___ReduceAction466(void);
+void CHECKNEW_parser___ReduceAction466(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction466_t)(val_t p0);
+val_t NEW_ReduceAction466_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction466_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction467(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction467_t)(val_t p0);
+val_t NEW_parser___ReduceAction467(void);
+void CHECKNEW_parser___ReduceAction467(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction467_t)(val_t p0);
+val_t NEW_ReduceAction467_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction467_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction468(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction468_t)(val_t p0);
+val_t NEW_parser___ReduceAction468(void);
+void CHECKNEW_parser___ReduceAction468(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction468_t)(val_t p0);
+val_t NEW_ReduceAction468_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction468_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction469(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction469_t)(val_t p0);
+val_t NEW_parser___ReduceAction469(void);
+void CHECKNEW_parser___ReduceAction469(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction469_t)(val_t p0);
+val_t NEW_ReduceAction469_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction469_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction470(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction470_t)(val_t p0);
+val_t NEW_parser___ReduceAction470(void);
+void CHECKNEW_parser___ReduceAction470(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction470_t)(val_t p0);
+val_t NEW_ReduceAction470_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction470_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction471(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction471_t)(val_t p0);
+val_t NEW_parser___ReduceAction471(void);
+void CHECKNEW_parser___ReduceAction471(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction471_t)(val_t p0);
+val_t NEW_ReduceAction471_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction471_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction472(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction472_t)(val_t p0);
+val_t NEW_parser___ReduceAction472(void);
+void CHECKNEW_parser___ReduceAction472(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction472_t)(val_t p0);
+val_t NEW_ReduceAction472_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction472_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction473(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction473_t)(val_t p0);
+val_t NEW_parser___ReduceAction473(void);
+void CHECKNEW_parser___ReduceAction473(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction473_t)(val_t p0);
+val_t NEW_ReduceAction473_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction473_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction474(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction474_t)(val_t p0);
+val_t NEW_parser___ReduceAction474(void);
+void CHECKNEW_parser___ReduceAction474(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction474_t)(val_t p0);
+val_t NEW_ReduceAction474_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction474_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction475(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction475_t)(val_t p0);
+val_t NEW_parser___ReduceAction475(void);
+void CHECKNEW_parser___ReduceAction475(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction475_t)(val_t p0);
+val_t NEW_ReduceAction475_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction475_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction476(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction476_t)(val_t p0);
+val_t NEW_parser___ReduceAction476(void);
+void CHECKNEW_parser___ReduceAction476(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction476_t)(val_t p0);
+val_t NEW_ReduceAction476_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction476_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction477(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction477_t)(val_t p0);
+val_t NEW_parser___ReduceAction477(void);
+void CHECKNEW_parser___ReduceAction477(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction477_t)(val_t p0);
+val_t NEW_ReduceAction477_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction477_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction478(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction478_t)(val_t p0);
+val_t NEW_parser___ReduceAction478(void);
+void CHECKNEW_parser___ReduceAction478(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction478_t)(val_t p0);
+val_t NEW_ReduceAction478_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction478_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction479(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction479_t)(val_t p0);
+val_t NEW_parser___ReduceAction479(void);
+void CHECKNEW_parser___ReduceAction479(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction479_t)(val_t p0);
+val_t NEW_ReduceAction479_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction479_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction480(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction480_t)(val_t p0);
+val_t NEW_parser___ReduceAction480(void);
+void CHECKNEW_parser___ReduceAction480(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction480_t)(val_t p0);
+val_t NEW_ReduceAction480_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction480_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction481(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction481_t)(val_t p0);
+val_t NEW_parser___ReduceAction481(void);
+void CHECKNEW_parser___ReduceAction481(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction481_t)(val_t p0);
+val_t NEW_ReduceAction481_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction481_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction482(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction482_t)(val_t p0);
+val_t NEW_parser___ReduceAction482(void);
+void CHECKNEW_parser___ReduceAction482(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction482_t)(val_t p0);
+val_t NEW_ReduceAction482_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction482_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction483(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction483_t)(val_t p0);
+val_t NEW_parser___ReduceAction483(void);
+void CHECKNEW_parser___ReduceAction483(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction483_t)(val_t p0);
+val_t NEW_ReduceAction483_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction483_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction484(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction484_t)(val_t p0);
+val_t NEW_parser___ReduceAction484(void);
+void CHECKNEW_parser___ReduceAction484(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction484_t)(val_t p0);
+val_t NEW_ReduceAction484_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction484_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction485(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction485_t)(val_t p0);
+val_t NEW_parser___ReduceAction485(void);
+void CHECKNEW_parser___ReduceAction485(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction485_t)(val_t p0);
+val_t NEW_ReduceAction485_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction485_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction486(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction486_t)(val_t p0);
+val_t NEW_parser___ReduceAction486(void);
+void CHECKNEW_parser___ReduceAction486(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction486_t)(val_t p0);
+val_t NEW_ReduceAction486_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction486_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction487(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction487_t)(val_t p0);
+val_t NEW_parser___ReduceAction487(void);
+void CHECKNEW_parser___ReduceAction487(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction487_t)(val_t p0);
+val_t NEW_ReduceAction487_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction487_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction488(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction488_t)(val_t p0);
+val_t NEW_parser___ReduceAction488(void);
+void CHECKNEW_parser___ReduceAction488(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction488_t)(val_t p0);
+val_t NEW_ReduceAction488_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction488_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction489(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction489_t)(val_t p0);
+val_t NEW_parser___ReduceAction489(void);
+void CHECKNEW_parser___ReduceAction489(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction489_t)(val_t p0);
+val_t NEW_ReduceAction489_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction489_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction490(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction490_t)(val_t p0);
+val_t NEW_parser___ReduceAction490(void);
+void CHECKNEW_parser___ReduceAction490(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction490_t)(val_t p0);
+val_t NEW_ReduceAction490_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction490_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction491(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction491_t)(val_t p0);
+val_t NEW_parser___ReduceAction491(void);
+void CHECKNEW_parser___ReduceAction491(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction491_t)(val_t p0);
+val_t NEW_ReduceAction491_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction491_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction492(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction492_t)(val_t p0);
+val_t NEW_parser___ReduceAction492(void);
+void CHECKNEW_parser___ReduceAction492(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction492_t)(val_t p0);
+val_t NEW_ReduceAction492_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction492_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction493(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction493_t)(val_t p0);
+val_t NEW_parser___ReduceAction493(void);
+void CHECKNEW_parser___ReduceAction493(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction493_t)(val_t p0);
+val_t NEW_ReduceAction493_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction493_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction494(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction494_t)(val_t p0);
+val_t NEW_parser___ReduceAction494(void);
+void CHECKNEW_parser___ReduceAction494(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction494_t)(val_t p0);
+val_t NEW_ReduceAction494_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction494_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction495(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction495_t)(val_t p0);
+val_t NEW_parser___ReduceAction495(void);
+void CHECKNEW_parser___ReduceAction495(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction495_t)(val_t p0);
+val_t NEW_ReduceAction495_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction495_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction496(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction496_t)(val_t p0);
+val_t NEW_parser___ReduceAction496(void);
+void CHECKNEW_parser___ReduceAction496(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction496_t)(val_t p0);
+val_t NEW_ReduceAction496_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction496_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction497(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction497_t)(val_t p0);
+val_t NEW_parser___ReduceAction497(void);
+void CHECKNEW_parser___ReduceAction497(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction497_t)(val_t p0);
+val_t NEW_ReduceAction497_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction497_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction498(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction498_t)(val_t p0);
+val_t NEW_parser___ReduceAction498(void);
+void CHECKNEW_parser___ReduceAction498(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction498_t)(val_t p0);
+val_t NEW_ReduceAction498_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction498_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction499(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction499_t)(val_t p0);
+val_t NEW_parser___ReduceAction499(void);
+void CHECKNEW_parser___ReduceAction499(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction499_t)(val_t p0);
+val_t NEW_ReduceAction499_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction499_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction500(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction500_t)(val_t p0);
+val_t NEW_parser___ReduceAction500(void);
+void CHECKNEW_parser___ReduceAction500(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction500_t)(val_t p0);
+val_t NEW_ReduceAction500_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction500_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction501(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction501_t)(val_t p0);
+val_t NEW_parser___ReduceAction501(void);
+void CHECKNEW_parser___ReduceAction501(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction501_t)(val_t p0);
+val_t NEW_ReduceAction501_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction501_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction502(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction502_t)(val_t p0);
+val_t NEW_parser___ReduceAction502(void);
+void CHECKNEW_parser___ReduceAction502(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction502_t)(val_t p0);
+val_t NEW_ReduceAction502_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction502_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction505(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction505_t)(val_t p0);
+val_t NEW_parser___ReduceAction505(void);
+void CHECKNEW_parser___ReduceAction505(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction505_t)(val_t p0);
+val_t NEW_ReduceAction505_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction505_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction506(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction506_t)(val_t p0);
+val_t NEW_parser___ReduceAction506(void);
+void CHECKNEW_parser___ReduceAction506(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction506_t)(val_t p0);
+val_t NEW_ReduceAction506_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction506_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction507(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction507_t)(val_t p0);
+val_t NEW_parser___ReduceAction507(void);
+void CHECKNEW_parser___ReduceAction507(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction507_t)(val_t p0);
+val_t NEW_ReduceAction507_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction507_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction508(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction508_t)(val_t p0);
+val_t NEW_parser___ReduceAction508(void);
+void CHECKNEW_parser___ReduceAction508(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction508_t)(val_t p0);
+val_t NEW_ReduceAction508_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction508_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction509(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction509_t)(val_t p0);
+val_t NEW_parser___ReduceAction509(void);
+void CHECKNEW_parser___ReduceAction509(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction509_t)(val_t p0);
+val_t NEW_ReduceAction509_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction509_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction510(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction510_t)(val_t p0);
+val_t NEW_parser___ReduceAction510(void);
+void CHECKNEW_parser___ReduceAction510(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction510_t)(val_t p0);
+val_t NEW_ReduceAction510_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction510_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction511(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction511_t)(val_t p0);
+val_t NEW_parser___ReduceAction511(void);
+void CHECKNEW_parser___ReduceAction511(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction511_t)(val_t p0);
+val_t NEW_ReduceAction511_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction511_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction512(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction512_t)(val_t p0);
+val_t NEW_parser___ReduceAction512(void);
+void CHECKNEW_parser___ReduceAction512(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction512_t)(val_t p0);
+val_t NEW_ReduceAction512_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction512_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction513(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction513_t)(val_t p0);
+val_t NEW_parser___ReduceAction513(void);
+void CHECKNEW_parser___ReduceAction513(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction513_t)(val_t p0);
+val_t NEW_ReduceAction513_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction513_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction514(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction514_t)(val_t p0);
+val_t NEW_parser___ReduceAction514(void);
+void CHECKNEW_parser___ReduceAction514(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction514_t)(val_t p0);
+val_t NEW_ReduceAction514_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction514_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction515(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction515_t)(val_t p0);
+val_t NEW_parser___ReduceAction515(void);
+void CHECKNEW_parser___ReduceAction515(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction515_t)(val_t p0);
+val_t NEW_ReduceAction515_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction515_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction516(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction516_t)(val_t p0);
+val_t NEW_parser___ReduceAction516(void);
+void CHECKNEW_parser___ReduceAction516(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction516_t)(val_t p0);
+val_t NEW_ReduceAction516_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction516_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction517(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction517_t)(val_t p0);
+val_t NEW_parser___ReduceAction517(void);
+void CHECKNEW_parser___ReduceAction517(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction517_t)(val_t p0);
+val_t NEW_ReduceAction517_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction517_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction521(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction521_t)(val_t p0);
+val_t NEW_parser___ReduceAction521(void);
+void CHECKNEW_parser___ReduceAction521(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction521_t)(val_t p0);
+val_t NEW_ReduceAction521_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction521_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction523(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction523_t)(val_t p0);
+val_t NEW_parser___ReduceAction523(void);
+void CHECKNEW_parser___ReduceAction523(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction523_t)(val_t p0);
+val_t NEW_ReduceAction523_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction523_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction525(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction525_t)(val_t p0);
+val_t NEW_parser___ReduceAction525(void);
+void CHECKNEW_parser___ReduceAction525(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction525_t)(val_t p0);
+val_t NEW_ReduceAction525_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction525_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction526(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction526_t)(val_t p0);
+val_t NEW_parser___ReduceAction526(void);
+void CHECKNEW_parser___ReduceAction526(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction526_t)(val_t p0);
+val_t NEW_ReduceAction526_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction526_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction527(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction527_t)(val_t p0);
+val_t NEW_parser___ReduceAction527(void);
+void CHECKNEW_parser___ReduceAction527(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction527_t)(val_t p0);
+val_t NEW_ReduceAction527_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction527_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction529(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction529_t)(val_t p0);
+val_t NEW_parser___ReduceAction529(void);
+void CHECKNEW_parser___ReduceAction529(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction529_t)(val_t p0);
+val_t NEW_ReduceAction529_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction529_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction531(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction531_t)(val_t p0);
+val_t NEW_parser___ReduceAction531(void);
+void CHECKNEW_parser___ReduceAction531(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction531_t)(val_t p0);
+val_t NEW_ReduceAction531_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction531_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction532(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction532_t)(val_t p0);
+val_t NEW_parser___ReduceAction532(void);
+void CHECKNEW_parser___ReduceAction532(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction532_t)(val_t p0);
+val_t NEW_ReduceAction532_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction532_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction533(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction533_t)(val_t p0);
+val_t NEW_parser___ReduceAction533(void);
+void CHECKNEW_parser___ReduceAction533(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction533_t)(val_t p0);
+val_t NEW_ReduceAction533_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction533_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction534(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction534_t)(val_t p0);
+val_t NEW_parser___ReduceAction534(void);
+void CHECKNEW_parser___ReduceAction534(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction534_t)(val_t p0);
+val_t NEW_ReduceAction534_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction534_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction535(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction535_t)(val_t p0);
+val_t NEW_parser___ReduceAction535(void);
+void CHECKNEW_parser___ReduceAction535(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction535_t)(val_t p0);
+val_t NEW_ReduceAction535_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction535_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction536(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction536_t)(val_t p0);
+val_t NEW_parser___ReduceAction536(void);
+void CHECKNEW_parser___ReduceAction536(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction536_t)(val_t p0);
+val_t NEW_ReduceAction536_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction536_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction537(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction537_t)(val_t p0);
+val_t NEW_parser___ReduceAction537(void);
+void CHECKNEW_parser___ReduceAction537(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction537_t)(val_t p0);
+val_t NEW_ReduceAction537_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction537_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction538(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction538_t)(val_t p0);
+val_t NEW_parser___ReduceAction538(void);
+void CHECKNEW_parser___ReduceAction538(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction538_t)(val_t p0);
+val_t NEW_ReduceAction538_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction538_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction539(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction539_t)(val_t p0);
+val_t NEW_parser___ReduceAction539(void);
+void CHECKNEW_parser___ReduceAction539(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction539_t)(val_t p0);
+val_t NEW_ReduceAction539_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction539_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction540(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction540_t)(val_t p0);
+val_t NEW_parser___ReduceAction540(void);
+void CHECKNEW_parser___ReduceAction540(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction540_t)(val_t p0);
+val_t NEW_ReduceAction540_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction540_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction541(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction541_t)(val_t p0);
+val_t NEW_parser___ReduceAction541(void);
+void CHECKNEW_parser___ReduceAction541(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction541_t)(val_t p0);
+val_t NEW_ReduceAction541_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction541_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction543(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction543_t)(val_t p0);
+val_t NEW_parser___ReduceAction543(void);
+void CHECKNEW_parser___ReduceAction543(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction543_t)(val_t p0);
+val_t NEW_ReduceAction543_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction543_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction544(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction544_t)(val_t p0);
+val_t NEW_parser___ReduceAction544(void);
+void CHECKNEW_parser___ReduceAction544(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction544_t)(val_t p0);
+val_t NEW_ReduceAction544_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction544_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction546(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction546_t)(val_t p0);
+val_t NEW_parser___ReduceAction546(void);
+void CHECKNEW_parser___ReduceAction546(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction546_t)(val_t p0);
+val_t NEW_ReduceAction546_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction546_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction547(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction547_t)(val_t p0);
+val_t NEW_parser___ReduceAction547(void);
+void CHECKNEW_parser___ReduceAction547(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction547_t)(val_t p0);
+val_t NEW_ReduceAction547_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction547_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction548(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction548_t)(val_t p0);
+val_t NEW_parser___ReduceAction548(void);
+void CHECKNEW_parser___ReduceAction548(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction548_t)(val_t p0);
+val_t NEW_ReduceAction548_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction548_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction550(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction550_t)(val_t p0);
+val_t NEW_parser___ReduceAction550(void);
+void CHECKNEW_parser___ReduceAction550(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction550_t)(val_t p0);
+val_t NEW_ReduceAction550_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction550_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction551(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction551_t)(val_t p0);
+val_t NEW_parser___ReduceAction551(void);
+void CHECKNEW_parser___ReduceAction551(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction551_t)(val_t p0);
+val_t NEW_ReduceAction551_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction551_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction553(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction553_t)(val_t p0);
+val_t NEW_parser___ReduceAction553(void);
+void CHECKNEW_parser___ReduceAction553(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction553_t)(val_t p0);
+val_t NEW_ReduceAction553_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction553_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction554(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction554_t)(val_t p0);
+val_t NEW_parser___ReduceAction554(void);
+void CHECKNEW_parser___ReduceAction554(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction554_t)(val_t p0);
+val_t NEW_ReduceAction554_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction554_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction555(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction555_t)(val_t p0);
+val_t NEW_parser___ReduceAction555(void);
+void CHECKNEW_parser___ReduceAction555(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction555_t)(val_t p0);
+val_t NEW_ReduceAction555_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction555_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction556(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction556_t)(val_t p0);
+val_t NEW_parser___ReduceAction556(void);
+void CHECKNEW_parser___ReduceAction556(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction556_t)(val_t p0);
+val_t NEW_ReduceAction556_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction556_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction557(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction557_t)(val_t p0);
+val_t NEW_parser___ReduceAction557(void);
+void CHECKNEW_parser___ReduceAction557(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction557_t)(val_t p0);
+val_t NEW_ReduceAction557_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction557_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction564(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction564_t)(val_t p0);
+val_t NEW_parser___ReduceAction564(void);
+void CHECKNEW_parser___ReduceAction564(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction564_t)(val_t p0);
+val_t NEW_ReduceAction564_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction564_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction565(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction565_t)(val_t p0);
+val_t NEW_parser___ReduceAction565(void);
+void CHECKNEW_parser___ReduceAction565(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction565_t)(val_t p0);
+val_t NEW_ReduceAction565_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction565_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction566(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction566_t)(val_t p0);
+val_t NEW_parser___ReduceAction566(void);
+void CHECKNEW_parser___ReduceAction566(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction566_t)(val_t p0);
+val_t NEW_ReduceAction566_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction566_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction567(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction567_t)(val_t p0);
+val_t NEW_parser___ReduceAction567(void);
+void CHECKNEW_parser___ReduceAction567(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction567_t)(val_t p0);
+val_t NEW_ReduceAction567_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction567_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction568(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction568_t)(val_t p0);
+val_t NEW_parser___ReduceAction568(void);
+void CHECKNEW_parser___ReduceAction568(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction568_t)(val_t p0);
+val_t NEW_ReduceAction568_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction568_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction569(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction569_t)(val_t p0);
+val_t NEW_parser___ReduceAction569(void);
+void CHECKNEW_parser___ReduceAction569(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction569_t)(val_t p0);
+val_t NEW_ReduceAction569_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction569_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction570(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction570_t)(val_t p0);
+val_t NEW_parser___ReduceAction570(void);
+void CHECKNEW_parser___ReduceAction570(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction570_t)(val_t p0);
+val_t NEW_ReduceAction570_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction570_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction571(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction571_t)(val_t p0);
+val_t NEW_parser___ReduceAction571(void);
+void CHECKNEW_parser___ReduceAction571(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction571_t)(val_t p0);
+val_t NEW_ReduceAction571_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction571_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction572(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction572_t)(val_t p0);
+val_t NEW_parser___ReduceAction572(void);
+void CHECKNEW_parser___ReduceAction572(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction572_t)(val_t p0);
+val_t NEW_ReduceAction572_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction572_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction573(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction573_t)(val_t p0);
+val_t NEW_parser___ReduceAction573(void);
+void CHECKNEW_parser___ReduceAction573(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction573_t)(val_t p0);
+val_t NEW_ReduceAction573_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction573_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction574(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction574_t)(val_t p0);
+val_t NEW_parser___ReduceAction574(void);
+void CHECKNEW_parser___ReduceAction574(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction574_t)(val_t p0);
+val_t NEW_ReduceAction574_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction574_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction575(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction575_t)(val_t p0);
+val_t NEW_parser___ReduceAction575(void);
+void CHECKNEW_parser___ReduceAction575(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction575_t)(val_t p0);
+val_t NEW_ReduceAction575_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction575_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction576(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction576_t)(val_t p0);
+val_t NEW_parser___ReduceAction576(void);
+void CHECKNEW_parser___ReduceAction576(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction576_t)(val_t p0);
+val_t NEW_ReduceAction576_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction576_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction577(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction577_t)(val_t p0);
+val_t NEW_parser___ReduceAction577(void);
+void CHECKNEW_parser___ReduceAction577(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction577_t)(val_t p0);
+val_t NEW_ReduceAction577_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction577_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction578(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction578_t)(val_t p0);
+val_t NEW_parser___ReduceAction578(void);
+void CHECKNEW_parser___ReduceAction578(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction578_t)(val_t p0);
+val_t NEW_ReduceAction578_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction578_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction579(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction579_t)(val_t p0);
+val_t NEW_parser___ReduceAction579(void);
+void CHECKNEW_parser___ReduceAction579(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction579_t)(val_t p0);
+val_t NEW_ReduceAction579_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction579_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction580(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction580_t)(val_t p0);
+val_t NEW_parser___ReduceAction580(void);
+void CHECKNEW_parser___ReduceAction580(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction580_t)(val_t p0);
+val_t NEW_ReduceAction580_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction580_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction581(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction581_t)(val_t p0);
+val_t NEW_parser___ReduceAction581(void);
+void CHECKNEW_parser___ReduceAction581(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction581_t)(val_t p0);
+val_t NEW_ReduceAction581_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction581_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction582(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction582_t)(val_t p0);
+val_t NEW_parser___ReduceAction582(void);
+void CHECKNEW_parser___ReduceAction582(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction582_t)(val_t p0);
+val_t NEW_ReduceAction582_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction582_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction583(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction583_t)(val_t p0);
+val_t NEW_parser___ReduceAction583(void);
+void CHECKNEW_parser___ReduceAction583(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction583_t)(val_t p0);
+val_t NEW_ReduceAction583_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction583_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction584(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction584_t)(val_t p0);
+val_t NEW_parser___ReduceAction584(void);
+void CHECKNEW_parser___ReduceAction584(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction584_t)(val_t p0);
+val_t NEW_ReduceAction584_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction584_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction585(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction585_t)(val_t p0);
+val_t NEW_parser___ReduceAction585(void);
+void CHECKNEW_parser___ReduceAction585(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction585_t)(val_t p0);
+val_t NEW_ReduceAction585_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction585_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction586(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction586_t)(val_t p0);
+val_t NEW_parser___ReduceAction586(void);
+void CHECKNEW_parser___ReduceAction586(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction586_t)(val_t p0);
+val_t NEW_ReduceAction586_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction586_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction587(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction587_t)(val_t p0);
+val_t NEW_parser___ReduceAction587(void);
+void CHECKNEW_parser___ReduceAction587(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction587_t)(val_t p0);
+val_t NEW_ReduceAction587_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction587_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction589(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction589_t)(val_t p0);
+val_t NEW_parser___ReduceAction589(void);
+void CHECKNEW_parser___ReduceAction589(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction589_t)(val_t p0);
+val_t NEW_ReduceAction589_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction589_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction590(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction590_t)(val_t p0);
+val_t NEW_parser___ReduceAction590(void);
+void CHECKNEW_parser___ReduceAction590(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction590_t)(val_t p0);
+val_t NEW_ReduceAction590_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction590_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction591(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction591_t)(val_t p0);
+val_t NEW_parser___ReduceAction591(void);
+void CHECKNEW_parser___ReduceAction591(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction591_t)(val_t p0);
+val_t NEW_ReduceAction591_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction591_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction592(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction592_t)(val_t p0);
+val_t NEW_parser___ReduceAction592(void);
+void CHECKNEW_parser___ReduceAction592(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction592_t)(val_t p0);
+val_t NEW_ReduceAction592_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction592_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction593(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction593_t)(val_t p0);
+val_t NEW_parser___ReduceAction593(void);
+void CHECKNEW_parser___ReduceAction593(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction593_t)(val_t p0);
+val_t NEW_ReduceAction593_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction593_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction594(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction594_t)(val_t p0);
+val_t NEW_parser___ReduceAction594(void);
+void CHECKNEW_parser___ReduceAction594(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction594_t)(val_t p0);
+val_t NEW_ReduceAction594_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction594_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction595(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction595_t)(val_t p0);
+val_t NEW_parser___ReduceAction595(void);
+void CHECKNEW_parser___ReduceAction595(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction595_t)(val_t p0);
+val_t NEW_ReduceAction595_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction595_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction596(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction596_t)(val_t p0);
+val_t NEW_parser___ReduceAction596(void);
+void CHECKNEW_parser___ReduceAction596(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction596_t)(val_t p0);
+val_t NEW_ReduceAction596_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction596_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction597(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction597_t)(val_t p0);
+val_t NEW_parser___ReduceAction597(void);
+void CHECKNEW_parser___ReduceAction597(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction597_t)(val_t p0);
+val_t NEW_ReduceAction597_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction597_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction598(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction598_t)(val_t p0);
+val_t NEW_parser___ReduceAction598(void);
+void CHECKNEW_parser___ReduceAction598(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction598_t)(val_t p0);
+val_t NEW_ReduceAction598_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction598_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction600(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction600_t)(val_t p0);
+val_t NEW_parser___ReduceAction600(void);
+void CHECKNEW_parser___ReduceAction600(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction600_t)(val_t p0);
+val_t NEW_ReduceAction600_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction600_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction601(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction601_t)(val_t p0);
+val_t NEW_parser___ReduceAction601(void);
+void CHECKNEW_parser___ReduceAction601(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction601_t)(val_t p0);
+val_t NEW_ReduceAction601_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction601_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction602(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction602_t)(val_t p0);
+val_t NEW_parser___ReduceAction602(void);
+void CHECKNEW_parser___ReduceAction602(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction602_t)(val_t p0);
+val_t NEW_ReduceAction602_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction602_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction603(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction603_t)(val_t p0);
+val_t NEW_parser___ReduceAction603(void);
+void CHECKNEW_parser___ReduceAction603(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction603_t)(val_t p0);
+val_t NEW_ReduceAction603_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction603_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction604(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction604_t)(val_t p0);
+val_t NEW_parser___ReduceAction604(void);
+void CHECKNEW_parser___ReduceAction604(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction604_t)(val_t p0);
+val_t NEW_ReduceAction604_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction604_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction605(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction605_t)(val_t p0);
+val_t NEW_parser___ReduceAction605(void);
+void CHECKNEW_parser___ReduceAction605(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction605_t)(val_t p0);
+val_t NEW_ReduceAction605_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction605_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction606(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction606_t)(val_t p0);
+val_t NEW_parser___ReduceAction606(void);
+void CHECKNEW_parser___ReduceAction606(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction606_t)(val_t p0);
+val_t NEW_ReduceAction606_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction606_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction607(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction607_t)(val_t p0);
+val_t NEW_parser___ReduceAction607(void);
+void CHECKNEW_parser___ReduceAction607(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction607_t)(val_t p0);
+val_t NEW_ReduceAction607_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction607_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction608(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction608_t)(val_t p0);
+val_t NEW_parser___ReduceAction608(void);
+void CHECKNEW_parser___ReduceAction608(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction608_t)(val_t p0);
+val_t NEW_ReduceAction608_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction608_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction609(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction609_t)(val_t p0);
+val_t NEW_parser___ReduceAction609(void);
+void CHECKNEW_parser___ReduceAction609(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction609_t)(val_t p0);
+val_t NEW_ReduceAction609_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction609_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction610(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction610_t)(val_t p0);
+val_t NEW_parser___ReduceAction610(void);
+void CHECKNEW_parser___ReduceAction610(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction610_t)(val_t p0);
+val_t NEW_ReduceAction610_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction610_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction612(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction612_t)(val_t p0);
+val_t NEW_parser___ReduceAction612(void);
+void CHECKNEW_parser___ReduceAction612(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction612_t)(val_t p0);
+val_t NEW_ReduceAction612_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction612_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction613(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction613_t)(val_t p0);
+val_t NEW_parser___ReduceAction613(void);
+void CHECKNEW_parser___ReduceAction613(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction613_t)(val_t p0);
+val_t NEW_ReduceAction613_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction613_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction614(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction614_t)(val_t p0);
+val_t NEW_parser___ReduceAction614(void);
+void CHECKNEW_parser___ReduceAction614(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction614_t)(val_t p0);
+val_t NEW_ReduceAction614_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction614_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction615(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction615_t)(val_t p0);
+val_t NEW_parser___ReduceAction615(void);
+void CHECKNEW_parser___ReduceAction615(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction615_t)(val_t p0);
+val_t NEW_ReduceAction615_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction615_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction616(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction616_t)(val_t p0);
+val_t NEW_parser___ReduceAction616(void);
+void CHECKNEW_parser___ReduceAction616(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction616_t)(val_t p0);
+val_t NEW_ReduceAction616_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction616_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction617(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction617_t)(val_t p0);
+val_t NEW_parser___ReduceAction617(void);
+void CHECKNEW_parser___ReduceAction617(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction617_t)(val_t p0);
+val_t NEW_ReduceAction617_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction617_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction618(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction618_t)(val_t p0);
+val_t NEW_parser___ReduceAction618(void);
+void CHECKNEW_parser___ReduceAction618(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction618_t)(val_t p0);
+val_t NEW_ReduceAction618_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction618_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction619(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction619_t)(val_t p0);
+val_t NEW_parser___ReduceAction619(void);
+void CHECKNEW_parser___ReduceAction619(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction619_t)(val_t p0);
+val_t NEW_ReduceAction619_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction619_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction620(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction620_t)(val_t p0);
+val_t NEW_parser___ReduceAction620(void);
+void CHECKNEW_parser___ReduceAction620(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction620_t)(val_t p0);
+val_t NEW_ReduceAction620_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction620_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction621(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction621_t)(val_t p0);
+val_t NEW_parser___ReduceAction621(void);
+void CHECKNEW_parser___ReduceAction621(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction621_t)(val_t p0);
+val_t NEW_ReduceAction621_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction621_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction622(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction622_t)(val_t p0);
+val_t NEW_parser___ReduceAction622(void);
+void CHECKNEW_parser___ReduceAction622(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction622_t)(val_t p0);
+val_t NEW_ReduceAction622_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction622_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction624(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction624_t)(val_t p0);
+val_t NEW_parser___ReduceAction624(void);
+void CHECKNEW_parser___ReduceAction624(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction624_t)(val_t p0);
+val_t NEW_ReduceAction624_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction624_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction625(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction625_t)(val_t p0);
+val_t NEW_parser___ReduceAction625(void);
+void CHECKNEW_parser___ReduceAction625(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction625_t)(val_t p0);
+val_t NEW_ReduceAction625_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction625_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction626(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction626_t)(val_t p0);
+val_t NEW_parser___ReduceAction626(void);
+void CHECKNEW_parser___ReduceAction626(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction626_t)(val_t p0);
+val_t NEW_ReduceAction626_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction626_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction627(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction627_t)(val_t p0);
+val_t NEW_parser___ReduceAction627(void);
+void CHECKNEW_parser___ReduceAction627(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction627_t)(val_t p0);
+val_t NEW_ReduceAction627_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction627_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction628(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction628_t)(val_t p0);
+val_t NEW_parser___ReduceAction628(void);
+void CHECKNEW_parser___ReduceAction628(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction628_t)(val_t p0);
+val_t NEW_ReduceAction628_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction628_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction629(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction629_t)(val_t p0);
+val_t NEW_parser___ReduceAction629(void);
+void CHECKNEW_parser___ReduceAction629(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction629_t)(val_t p0);
+val_t NEW_ReduceAction629_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction629_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction630(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction630_t)(val_t p0);
+val_t NEW_parser___ReduceAction630(void);
+void CHECKNEW_parser___ReduceAction630(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction630_t)(val_t p0);
+val_t NEW_ReduceAction630_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction630_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction631(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction631_t)(val_t p0);
+val_t NEW_parser___ReduceAction631(void);
+void CHECKNEW_parser___ReduceAction631(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction631_t)(val_t p0);
+val_t NEW_ReduceAction631_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction631_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction633(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction633_t)(val_t p0);
+val_t NEW_parser___ReduceAction633(void);
+void CHECKNEW_parser___ReduceAction633(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction633_t)(val_t p0);
+val_t NEW_ReduceAction633_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction633_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction636(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction636_t)(val_t p0);
+val_t NEW_parser___ReduceAction636(void);
+void CHECKNEW_parser___ReduceAction636(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction636_t)(val_t p0);
+val_t NEW_ReduceAction636_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction636_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction637(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction637_t)(val_t p0);
+val_t NEW_parser___ReduceAction637(void);
+void CHECKNEW_parser___ReduceAction637(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction637_t)(val_t p0);
+val_t NEW_ReduceAction637_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction637_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction638(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction638_t)(val_t p0);
+val_t NEW_parser___ReduceAction638(void);
+void CHECKNEW_parser___ReduceAction638(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction638_t)(val_t p0);
+val_t NEW_ReduceAction638_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction638_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction639(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction639_t)(val_t p0);
+val_t NEW_parser___ReduceAction639(void);
+void CHECKNEW_parser___ReduceAction639(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction639_t)(val_t p0);
+val_t NEW_ReduceAction639_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction639_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction640(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction640_t)(val_t p0);
+val_t NEW_parser___ReduceAction640(void);
+void CHECKNEW_parser___ReduceAction640(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction640_t)(val_t p0);
+val_t NEW_ReduceAction640_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction640_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction641(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction641_t)(val_t p0);
+val_t NEW_parser___ReduceAction641(void);
+void CHECKNEW_parser___ReduceAction641(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction641_t)(val_t p0);
+val_t NEW_ReduceAction641_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction641_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction642(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction642_t)(val_t p0);
+val_t NEW_parser___ReduceAction642(void);
+void CHECKNEW_parser___ReduceAction642(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction642_t)(val_t p0);
+val_t NEW_ReduceAction642_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction642_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction643(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction643_t)(val_t p0);
+val_t NEW_parser___ReduceAction643(void);
+void CHECKNEW_parser___ReduceAction643(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction643_t)(val_t p0);
+val_t NEW_ReduceAction643_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction643_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction644(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction644_t)(val_t p0);
+val_t NEW_parser___ReduceAction644(void);
+void CHECKNEW_parser___ReduceAction644(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction644_t)(val_t p0);
+val_t NEW_ReduceAction644_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction644_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction645(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction645_t)(val_t p0);
+val_t NEW_parser___ReduceAction645(void);
+void CHECKNEW_parser___ReduceAction645(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction645_t)(val_t p0);
+val_t NEW_ReduceAction645_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction645_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction646(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction646_t)(val_t p0);
+val_t NEW_parser___ReduceAction646(void);
+void CHECKNEW_parser___ReduceAction646(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction646_t)(val_t p0);
+val_t NEW_ReduceAction646_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction646_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction647(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction647_t)(val_t p0);
+val_t NEW_parser___ReduceAction647(void);
+void CHECKNEW_parser___ReduceAction647(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction647_t)(val_t p0);
+val_t NEW_ReduceAction647_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction647_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction648(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction648_t)(val_t p0);
+val_t NEW_parser___ReduceAction648(void);
+void CHECKNEW_parser___ReduceAction648(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction648_t)(val_t p0);
+val_t NEW_ReduceAction648_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction648_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction649(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction649_t)(val_t p0);
+val_t NEW_parser___ReduceAction649(void);
+void CHECKNEW_parser___ReduceAction649(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction649_t)(val_t p0);
+val_t NEW_ReduceAction649_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction649_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction650(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction650_t)(val_t p0);
+val_t NEW_parser___ReduceAction650(void);
+void CHECKNEW_parser___ReduceAction650(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction650_t)(val_t p0);
+val_t NEW_ReduceAction650_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction650_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction651(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction651_t)(val_t p0);
+val_t NEW_parser___ReduceAction651(void);
+void CHECKNEW_parser___ReduceAction651(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction651_t)(val_t p0);
+val_t NEW_ReduceAction651_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction651_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction653(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction653_t)(val_t p0);
+val_t NEW_parser___ReduceAction653(void);
+void CHECKNEW_parser___ReduceAction653(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction653_t)(val_t p0);
+val_t NEW_ReduceAction653_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction653_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction654(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction654_t)(val_t p0);
+val_t NEW_parser___ReduceAction654(void);
+void CHECKNEW_parser___ReduceAction654(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction654_t)(val_t p0);
+val_t NEW_ReduceAction654_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction654_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction656(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction656_t)(val_t p0);
+val_t NEW_parser___ReduceAction656(void);
+void CHECKNEW_parser___ReduceAction656(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction656_t)(val_t p0);
+val_t NEW_ReduceAction656_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction656_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction657(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction657_t)(val_t p0);
+val_t NEW_parser___ReduceAction657(void);
+void CHECKNEW_parser___ReduceAction657(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction657_t)(val_t p0);
+val_t NEW_ReduceAction657_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction657_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction658(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction658_t)(val_t p0);
+val_t NEW_parser___ReduceAction658(void);
+void CHECKNEW_parser___ReduceAction658(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction658_t)(val_t p0);
+val_t NEW_ReduceAction658_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction658_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction659(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction659_t)(val_t p0);
+val_t NEW_parser___ReduceAction659(void);
+void CHECKNEW_parser___ReduceAction659(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction659_t)(val_t p0);
+val_t NEW_ReduceAction659_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction659_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction931(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction931_t)(val_t p0);
+val_t NEW_parser___ReduceAction931(void);
+void CHECKNEW_parser___ReduceAction931(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction931_t)(val_t p0);
+val_t NEW_ReduceAction931_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction931_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction932(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction932_t)(val_t p0);
+val_t NEW_parser___ReduceAction932(void);
+void CHECKNEW_parser___ReduceAction932(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction932_t)(val_t p0);
+val_t NEW_ReduceAction932_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction932_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction933(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction933_t)(val_t p0);
+val_t NEW_parser___ReduceAction933(void);
+void CHECKNEW_parser___ReduceAction933(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction933_t)(val_t p0);
+val_t NEW_ReduceAction933_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction933_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction936(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction936_t)(val_t p0);
+val_t NEW_parser___ReduceAction936(void);
+void CHECKNEW_parser___ReduceAction936(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction936_t)(val_t p0);
+val_t NEW_ReduceAction936_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction936_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction957(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction957_t)(val_t p0);
+val_t NEW_parser___ReduceAction957(void);
+void CHECKNEW_parser___ReduceAction957(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction957_t)(val_t p0);
+val_t NEW_ReduceAction957_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction957_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction958(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction958_t)(val_t p0);
+val_t NEW_parser___ReduceAction958(void);
+void CHECKNEW_parser___ReduceAction958(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction958_t)(val_t p0);
+val_t NEW_ReduceAction958_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction958_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction1250(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction1250_t)(val_t p0);
+val_t NEW_parser___ReduceAction1250(void);
+void CHECKNEW_parser___ReduceAction1250(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction1250_t)(val_t p0);
+val_t NEW_ReduceAction1250_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction1250_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction1251(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction1251_t)(val_t p0);
+val_t NEW_parser___ReduceAction1251(void);
+void CHECKNEW_parser___ReduceAction1251(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction1251_t)(val_t p0);
+val_t NEW_ReduceAction1251_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction1251_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction1252(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction1252_t)(val_t p0);
+val_t NEW_parser___ReduceAction1252(void);
+void CHECKNEW_parser___ReduceAction1252(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction1252_t)(val_t p0);
+val_t NEW_ReduceAction1252_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction1252_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction1253(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction1253_t)(val_t p0);
+val_t NEW_parser___ReduceAction1253(void);
+void CHECKNEW_parser___ReduceAction1253(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction1253_t)(val_t p0);
+val_t NEW_ReduceAction1253_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction1253_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction1254(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction1254_t)(val_t p0);
+val_t NEW_parser___ReduceAction1254(void);
+void CHECKNEW_parser___ReduceAction1254(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction1254_t)(val_t p0);
+val_t NEW_ReduceAction1254_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction1254_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction1255(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction1255_t)(val_t p0);
+val_t NEW_parser___ReduceAction1255(void);
+void CHECKNEW_parser___ReduceAction1255(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction1255_t)(val_t p0);
+val_t NEW_ReduceAction1255_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction1255_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction1256(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction1256_t)(val_t p0);
+val_t NEW_parser___ReduceAction1256(void);
+void CHECKNEW_parser___ReduceAction1256(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction1256_t)(val_t p0);
+val_t NEW_ReduceAction1256_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction1256_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction1257(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction1257_t)(val_t p0);
+val_t NEW_parser___ReduceAction1257(void);
+void CHECKNEW_parser___ReduceAction1257(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction1257_t)(val_t p0);
+val_t NEW_ReduceAction1257_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction1257_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction1258(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction1258_t)(val_t p0);
+val_t NEW_parser___ReduceAction1258(void);
+void CHECKNEW_parser___ReduceAction1258(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction1258_t)(val_t p0);
+val_t NEW_ReduceAction1258_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction1258_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction1259(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction1259_t)(val_t p0);
+val_t NEW_parser___ReduceAction1259(void);
+void CHECKNEW_parser___ReduceAction1259(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction1259_t)(val_t p0);
+val_t NEW_ReduceAction1259_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction1259_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction1262(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction1262_t)(val_t p0);
+val_t NEW_parser___ReduceAction1262(void);
+void CHECKNEW_parser___ReduceAction1262(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction1262_t)(val_t p0);
+val_t NEW_ReduceAction1262_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction1262_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction1263(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction1263_t)(val_t p0);
+val_t NEW_parser___ReduceAction1263(void);
+void CHECKNEW_parser___ReduceAction1263(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction1263_t)(val_t p0);
+val_t NEW_ReduceAction1263_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction1263_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction1264(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction1264_t)(val_t p0);
+val_t NEW_parser___ReduceAction1264(void);
+void CHECKNEW_parser___ReduceAction1264(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction1264_t)(val_t p0);
+val_t NEW_ReduceAction1264_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction1264_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction1265(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction1265_t)(val_t p0);
+val_t NEW_parser___ReduceAction1265(void);
+void CHECKNEW_parser___ReduceAction1265(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction1265_t)(val_t p0);
+val_t NEW_ReduceAction1265_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction1265_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction1266(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction1266_t)(val_t p0);
+val_t NEW_parser___ReduceAction1266(void);
+void CHECKNEW_parser___ReduceAction1266(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction1266_t)(val_t p0);
+val_t NEW_ReduceAction1266_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction1266_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction1267(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction1267_t)(val_t p0);
+val_t NEW_parser___ReduceAction1267(void);
+void CHECKNEW_parser___ReduceAction1267(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction1267_t)(val_t p0);
+val_t NEW_ReduceAction1267_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction1267_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction1268(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction1268_t)(val_t p0);
+val_t NEW_parser___ReduceAction1268(void);
+void CHECKNEW_parser___ReduceAction1268(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction1268_t)(val_t p0);
+val_t NEW_ReduceAction1268_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction1268_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction1269(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction1269_t)(val_t p0);
+val_t NEW_parser___ReduceAction1269(void);
+void CHECKNEW_parser___ReduceAction1269(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction1269_t)(val_t p0);
+val_t NEW_ReduceAction1269_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction1269_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction1271(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction1271_t)(val_t p0);
+val_t NEW_parser___ReduceAction1271(void);
+void CHECKNEW_parser___ReduceAction1271(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction1271_t)(val_t p0);
+val_t NEW_ReduceAction1271_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction1271_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction1272(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction1272_t)(val_t p0);
+val_t NEW_parser___ReduceAction1272(void);
+void CHECKNEW_parser___ReduceAction1272(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction1272_t)(val_t p0);
+val_t NEW_ReduceAction1272_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction1272_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction1273(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction1273_t)(val_t p0);
+val_t NEW_parser___ReduceAction1273(void);
+void CHECKNEW_parser___ReduceAction1273(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction1273_t)(val_t p0);
+val_t NEW_ReduceAction1273_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction1273_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction1275(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction1275_t)(val_t p0);
+val_t NEW_parser___ReduceAction1275(void);
+void CHECKNEW_parser___ReduceAction1275(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction1275_t)(val_t p0);
+val_t NEW_ReduceAction1275_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction1275_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction1277(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction1277_t)(val_t p0);
+val_t NEW_parser___ReduceAction1277(void);
+void CHECKNEW_parser___ReduceAction1277(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction1277_t)(val_t p0);
+val_t NEW_ReduceAction1277_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction1277_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction1281(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction1281_t)(val_t p0);
+val_t NEW_parser___ReduceAction1281(void);
+void CHECKNEW_parser___ReduceAction1281(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction1281_t)(val_t p0);
+val_t NEW_ReduceAction1281_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction1281_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction1285(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction1285_t)(val_t p0);
+val_t NEW_parser___ReduceAction1285(void);
+void CHECKNEW_parser___ReduceAction1285(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction1285_t)(val_t p0);
+val_t NEW_ReduceAction1285_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction1285_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction1286(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction1286_t)(val_t p0);
+val_t NEW_parser___ReduceAction1286(void);
+void CHECKNEW_parser___ReduceAction1286(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction1286_t)(val_t p0);
+val_t NEW_ReduceAction1286_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction1286_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction1287(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction1287_t)(val_t p0);
+val_t NEW_parser___ReduceAction1287(void);
+void CHECKNEW_parser___ReduceAction1287(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction1287_t)(val_t p0);
+val_t NEW_ReduceAction1287_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction1287_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction1288(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction1288_t)(val_t p0);
+val_t NEW_parser___ReduceAction1288(void);
+void CHECKNEW_parser___ReduceAction1288(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction1288_t)(val_t p0);
+val_t NEW_ReduceAction1288_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction1288_parser___ReduceAction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__parser___ReduceAction1289(val_t p0);
+typedef void (*INIT_ATTRIBUTES__parser___ReduceAction1289_t)(val_t p0);
+val_t NEW_parser___ReduceAction1289(void);
+void CHECKNEW_parser___ReduceAction1289(val_t p0);
+typedef void (*CHECKNEW_parser___ReduceAction1289_t)(val_t p0);
+val_t NEW_ReduceAction1289_parser___ReduceAction___init(val_t p0);
+typedef val_t (*NEW_ReduceAction1289_parser___ReduceAction___init_t)(val_t p0);
 void INIT_ATTRIBUTES__opts___OptionText(val_t p0);
 typedef void (*INIT_ATTRIBUTES__opts___OptionText_t)(val_t p0);
 val_t NEW_opts___OptionText(void);
-static const char * const LOCATE_CHECKNEW_opts___OptionText = "check new OptionText";
 void CHECKNEW_opts___OptionText(val_t p0);
 typedef void (*CHECKNEW_opts___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__opts___OptionBool = "init var of OptionBool";
 void INIT_ATTRIBUTES__opts___OptionBool(val_t p0);
 typedef void (*INIT_ATTRIBUTES__opts___OptionBool_t)(val_t p0);
 val_t NEW_opts___OptionBool(void);
-static const char * const LOCATE_CHECKNEW_opts___OptionBool = "check new OptionBool";
 void CHECKNEW_opts___OptionBool(val_t p0);
 typedef void (*CHECKNEW_opts___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__opts___OptionCount = "init var of OptionCount";
 void INIT_ATTRIBUTES__opts___OptionCount(val_t p0);
 typedef void (*INIT_ATTRIBUTES__opts___OptionCount_t)(val_t p0);
 val_t NEW_opts___OptionCount(void);
-static const char * const LOCATE_CHECKNEW_opts___OptionCount = "check new OptionCount";
 void CHECKNEW_opts___OptionCount(val_t p0);
 typedef void (*CHECKNEW_opts___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__opts___OptionParameter = "init var of OptionParameter";
-void INIT_ATTRIBUTES__opts___OptionParameter(val_t p0);
-typedef void (*INIT_ATTRIBUTES__opts___OptionParameter_t)(val_t p0);
-val_t NEW_opts___OptionParameter(void);
-static const char * const LOCATE_CHECKNEW_opts___OptionParameter = "check new OptionParameter";
-void CHECKNEW_opts___OptionParameter(val_t p0);
-typedef void (*CHECKNEW_opts___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__opts___OptionString = "init var of OptionString";
 void INIT_ATTRIBUTES__opts___OptionString(val_t p0);
 typedef void (*INIT_ATTRIBUTES__opts___OptionString_t)(val_t p0);
 val_t NEW_opts___OptionString(void);
-static const char * const LOCATE_CHECKNEW_opts___OptionString = "check new OptionString";
 void CHECKNEW_opts___OptionString(val_t p0);
 typedef void (*CHECKNEW_opts___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__opts___OptionEnum = "init var of OptionEnum";
 void INIT_ATTRIBUTES__opts___OptionEnum(val_t p0);
 typedef void (*INIT_ATTRIBUTES__opts___OptionEnum_t)(val_t p0);
 val_t NEW_opts___OptionEnum(void);
-static const char * const LOCATE_CHECKNEW_opts___OptionEnum = "check new OptionEnum";
 void CHECKNEW_opts___OptionEnum(val_t p0);
 typedef void (*CHECKNEW_opts___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__opts___OptionInt = "init var of OptionInt";
 void INIT_ATTRIBUTES__opts___OptionInt(val_t p0);
 typedef void (*INIT_ATTRIBUTES__opts___OptionInt_t)(val_t p0);
 val_t NEW_opts___OptionInt(void);
-static const char * const LOCATE_CHECKNEW_opts___OptionInt = "check new OptionInt";
 void CHECKNEW_opts___OptionInt(val_t p0);
 typedef void (*CHECKNEW_opts___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__opts___OptionArray = "init var of OptionArray";
 void INIT_ATTRIBUTES__opts___OptionArray(val_t p0);
 typedef void (*INIT_ATTRIBUTES__opts___OptionArray_t)(val_t p0);
 val_t NEW_opts___OptionArray(void);
-static const char * const LOCATE_CHECKNEW_opts___OptionArray = "check new OptionArray";
 void CHECKNEW_opts___OptionArray(val_t p0);
 typedef void (*CHECKNEW_opts___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__opts___OptionContext = "init var of OptionContext";
 void INIT_ATTRIBUTES__opts___OptionContext(val_t p0);
 typedef void (*INIT_ATTRIBUTES__opts___OptionContext_t)(val_t p0);
 val_t NEW_opts___OptionContext(void);
-static const char * const LOCATE_CHECKNEW_opts___OptionContext = "check new OptionContext";
 void CHECKNEW_opts___OptionContext(val_t p0);
 typedef void (*CHECKNEW_opts___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__mmloader___Message = "init var of Message";
-void INIT_ATTRIBUTES__mmloader___Message(val_t p0);
-typedef void (*INIT_ATTRIBUTES__mmloader___Message_t)(val_t p0);
-val_t NEW_mmloader___Message(void);
-static const char * const LOCATE_CHECKNEW_mmloader___Message = "check new Message";
-void CHECKNEW_mmloader___Message(val_t p0);
-typedef void (*CHECKNEW_mmloader___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__mmloader___ToolContext = "init var of ToolContext";
-void INIT_ATTRIBUTES__mmloader___ToolContext(val_t p0);
-typedef void (*INIT_ATTRIBUTES__mmloader___ToolContext_t)(val_t p0);
-val_t NEW_mmloader___ToolContext(void);
-static const char * const LOCATE_CHECKNEW_mmloader___ToolContext = "check new ToolContext";
-void CHECKNEW_mmloader___ToolContext(val_t p0);
-typedef void (*CHECKNEW_mmloader___ToolContext_t)(val_t p0);
-static const char * const LOCATE_NEW_ToolContext_mmloader___ToolContext___init = "new ToolContext separate_options::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__mmloader___ModuleLoader = "init var of ModuleLoader";
-void INIT_ATTRIBUTES__mmloader___ModuleLoader(val_t p0);
-typedef void (*INIT_ATTRIBUTES__mmloader___ModuleLoader_t)(val_t p0);
-val_t NEW_mmloader___ModuleLoader(void);
-static const char * const LOCATE_CHECKNEW_mmloader___ModuleLoader = "check new ModuleLoader";
-void CHECKNEW_mmloader___ModuleLoader(val_t p0);
-typedef void (*CHECKNEW_mmloader___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__syntax___syntax_base___MMSrcModule = "init var of MMSrcModule";
+void INIT_ATTRIBUTES__toolcontext___Message(val_t p0);
+typedef void (*INIT_ATTRIBUTES__toolcontext___Message_t)(val_t p0);
+val_t NEW_toolcontext___Message(void);
+void CHECKNEW_toolcontext___Message(val_t p0);
+typedef void (*CHECKNEW_toolcontext___Message_t)(val_t p0);
+val_t NEW_Message_toolcontext___Message___init(val_t p0, val_t p1);
+typedef val_t (*NEW_Message_toolcontext___Message___init_t)(val_t p0, val_t p1);
 void INIT_ATTRIBUTES__syntax___syntax_base___MMSrcModule(val_t p0);
 typedef void (*INIT_ATTRIBUTES__syntax___syntax_base___MMSrcModule_t)(val_t p0);
 val_t NEW_syntax___syntax_base___MMSrcModule(void);
-static const char * const LOCATE_CHECKNEW_syntax___syntax_base___MMSrcModule = "check new MMSrcModule";
 void CHECKNEW_syntax___syntax_base___MMSrcModule(val_t p0);
 typedef void (*CHECKNEW_syntax___syntax_base___MMSrcModule_t)(val_t p0);
-static const char * const LOCATE_NEW_MMSrcModule_syntax___syntax_base___MMSrcModule___init = "new MMSrcModule syntax_base::MMSrcModule::init";
 val_t NEW_MMSrcModule_syntax___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___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__syntax___syntax_base___MMSrcLocalClass = "init var of MMSrcLocalClass";
 void INIT_ATTRIBUTES__syntax___syntax_base___MMSrcLocalClass(val_t p0);
 typedef void (*INIT_ATTRIBUTES__syntax___syntax_base___MMSrcLocalClass_t)(val_t p0);
 val_t NEW_syntax___syntax_base___MMSrcLocalClass(void);
-static const char * const LOCATE_CHECKNEW_syntax___syntax_base___MMSrcLocalClass = "check new MMSrcLocalClass";
 void CHECKNEW_syntax___syntax_base___MMSrcLocalClass(val_t p0);
 typedef void (*CHECKNEW_syntax___syntax_base___MMSrcLocalClass_t)(val_t p0);
-static const char * const LOCATE_NEW_MMSrcLocalClass_syntax___syntax_base___MMSrcLocalClass___init = "new MMSrcLocalClass syntax_base::MMSrcLocalClass::init";
 val_t NEW_MMSrcLocalClass_syntax___syntax_base___MMSrcLocalClass___init(val_t p0, val_t p1, val_t p2, val_t p3);
 typedef val_t (*NEW_MMSrcLocalClass_syntax___syntax_base___MMSrcLocalClass___init_t)(val_t p0, val_t p1, val_t p2, val_t p3);
-static const char * const LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___MMSrcAttribute = "init var of MMSrcAttribute";
 void INIT_ATTRIBUTES__syntax___syntax_base___MMSrcAttribute(val_t p0);
 typedef void (*INIT_ATTRIBUTES__syntax___syntax_base___MMSrcAttribute_t)(val_t p0);
 val_t NEW_syntax___syntax_base___MMSrcAttribute(void);
-static const char * const LOCATE_CHECKNEW_syntax___syntax_base___MMSrcAttribute = "check new MMSrcAttribute";
 void CHECKNEW_syntax___syntax_base___MMSrcAttribute(val_t p0);
 typedef void (*CHECKNEW_syntax___syntax_base___MMSrcAttribute_t)(val_t p0);
-static const char * const LOCATE_NEW_MMSrcAttribute_syntax___syntax_base___MMSrcAttribute___init = "new MMSrcAttribute syntax_base::MMSrcAttribute::init";
 val_t NEW_MMSrcAttribute_syntax___syntax_base___MMSrcAttribute___init(val_t p0, val_t p1, val_t p2);
 typedef val_t (*NEW_MMSrcAttribute_syntax___syntax_base___MMSrcAttribute___init_t)(val_t p0, val_t p1, val_t p2);
-static const char * const LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___MMSrcMethod = "init var of MMSrcMethod";
-void INIT_ATTRIBUTES__syntax___syntax_base___MMSrcMethod(val_t p0);
-typedef void (*INIT_ATTRIBUTES__syntax___syntax_base___MMSrcMethod_t)(val_t p0);
-val_t NEW_syntax___syntax_base___MMSrcMethod(void);
-static const char * const LOCATE_CHECKNEW_syntax___syntax_base___MMSrcMethod = "check new MMSrcMethod";
-void CHECKNEW_syntax___syntax_base___MMSrcMethod(val_t p0);
-typedef void (*CHECKNEW_syntax___syntax_base___MMSrcMethod_t)(val_t p0);
-static const char * const LOCATE_NEW_MMSrcMethod_metamodel___abstractmetamodel___MMLocalProperty___init = "new MMSrcMethod abstractmetamodel::MMLocalProperty::init";
-val_t NEW_MMSrcMethod_metamodel___abstractmetamodel___MMLocalProperty___init(val_t p0, val_t p1);
-typedef val_t (*NEW_MMSrcMethod_metamodel___abstractmetamodel___MMLocalProperty___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___MMAttrImplementationMethod = "init var of MMAttrImplementationMethod";
-void INIT_ATTRIBUTES__syntax___syntax_base___MMAttrImplementationMethod(val_t p0);
-typedef void (*INIT_ATTRIBUTES__syntax___syntax_base___MMAttrImplementationMethod_t)(val_t p0);
-val_t NEW_syntax___syntax_base___MMAttrImplementationMethod(void);
-static const char * const LOCATE_CHECKNEW_syntax___syntax_base___MMAttrImplementationMethod = "check new MMAttrImplementationMethod";
-void CHECKNEW_syntax___syntax_base___MMAttrImplementationMethod(val_t p0);
-typedef void (*CHECKNEW_syntax___syntax_base___MMAttrImplementationMethod_t)(val_t p0);
-static const char * const LOCATE_NEW_MMAttrImplementationMethod_syntax___syntax_base___MMAttrImplementationMethod___init = "new MMAttrImplementationMethod syntax_base::MMAttrImplementationMethod::init";
-val_t NEW_MMAttrImplementationMethod_syntax___syntax_base___MMAttrImplementationMethod___init(val_t p0, val_t p1, val_t p2);
-typedef val_t (*NEW_MMAttrImplementationMethod_syntax___syntax_base___MMAttrImplementationMethod___init_t)(val_t p0, val_t p1, val_t p2);
-static const char * const LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___MMReadImplementationMethod = "init var of MMReadImplementationMethod";
 void INIT_ATTRIBUTES__syntax___syntax_base___MMReadImplementationMethod(val_t p0);
 typedef void (*INIT_ATTRIBUTES__syntax___syntax_base___MMReadImplementationMethod_t)(val_t p0);
 val_t NEW_syntax___syntax_base___MMReadImplementationMethod(void);
-static const char * const LOCATE_CHECKNEW_syntax___syntax_base___MMReadImplementationMethod = "check new MMReadImplementationMethod";
 void CHECKNEW_syntax___syntax_base___MMReadImplementationMethod(val_t p0);
 typedef void (*CHECKNEW_syntax___syntax_base___MMReadImplementationMethod_t)(val_t p0);
-static const char * const LOCATE_NEW_MMReadImplementationMethod_syntax___syntax_base___MMReadImplementationMethod___init = "new MMReadImplementationMethod syntax_base::MMReadImplementationMethod::init";
 val_t NEW_MMReadImplementationMethod_syntax___syntax_base___MMReadImplementationMethod___init(val_t p0, val_t p1, val_t p2);
 typedef val_t (*NEW_MMReadImplementationMethod_syntax___syntax_base___MMReadImplementationMethod___init_t)(val_t p0, val_t p1, val_t p2);
-static const char * const LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___MMWriteImplementationMethod = "init var of MMWriteImplementationMethod";
 void INIT_ATTRIBUTES__syntax___syntax_base___MMWriteImplementationMethod(val_t p0);
 typedef void (*INIT_ATTRIBUTES__syntax___syntax_base___MMWriteImplementationMethod_t)(val_t p0);
 val_t NEW_syntax___syntax_base___MMWriteImplementationMethod(void);
-static const char * const LOCATE_CHECKNEW_syntax___syntax_base___MMWriteImplementationMethod = "check new MMWriteImplementationMethod";
 void CHECKNEW_syntax___syntax_base___MMWriteImplementationMethod(val_t p0);
 typedef void (*CHECKNEW_syntax___syntax_base___MMWriteImplementationMethod_t)(val_t p0);
-static const char * const LOCATE_NEW_MMWriteImplementationMethod_syntax___syntax_base___MMWriteImplementationMethod___init = "new MMWriteImplementationMethod syntax_base::MMWriteImplementationMethod::init";
 val_t NEW_MMWriteImplementationMethod_syntax___syntax_base___MMWriteImplementationMethod___init(val_t p0, val_t p1, val_t p2);
 typedef val_t (*NEW_MMWriteImplementationMethod_syntax___syntax_base___MMWriteImplementationMethod___init_t)(val_t p0, val_t p1, val_t p2);
-static const char * const LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___MMMethSrcMethod = "init var of MMMethSrcMethod";
 void INIT_ATTRIBUTES__syntax___syntax_base___MMMethSrcMethod(val_t p0);
 typedef void (*INIT_ATTRIBUTES__syntax___syntax_base___MMMethSrcMethod_t)(val_t p0);
 val_t NEW_syntax___syntax_base___MMMethSrcMethod(void);
-static const char * const LOCATE_CHECKNEW_syntax___syntax_base___MMMethSrcMethod = "check new MMMethSrcMethod";
 void CHECKNEW_syntax___syntax_base___MMMethSrcMethod(val_t p0);
 typedef void (*CHECKNEW_syntax___syntax_base___MMMethSrcMethod_t)(val_t p0);
-static const char * const LOCATE_NEW_MMMethSrcMethod_syntax___syntax_base___MMMethSrcMethod___init = "new MMMethSrcMethod syntax_base::MMMethSrcMethod::init";
 val_t NEW_MMMethSrcMethod_syntax___syntax_base___MMMethSrcMethod___init(val_t p0, val_t p1, val_t p2);
 typedef val_t (*NEW_MMMethSrcMethod_syntax___syntax_base___MMMethSrcMethod___init_t)(val_t p0, val_t p1, val_t p2);
-static const char * const LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___MMSrcTypeProperty = "init var of MMSrcTypeProperty";
 void INIT_ATTRIBUTES__syntax___syntax_base___MMSrcTypeProperty(val_t p0);
 typedef void (*INIT_ATTRIBUTES__syntax___syntax_base___MMSrcTypeProperty_t)(val_t p0);
 val_t NEW_syntax___syntax_base___MMSrcTypeProperty(void);
-static const char * const LOCATE_CHECKNEW_syntax___syntax_base___MMSrcTypeProperty = "check new MMSrcTypeProperty";
 void CHECKNEW_syntax___syntax_base___MMSrcTypeProperty(val_t p0);
 typedef void (*CHECKNEW_syntax___syntax_base___MMSrcTypeProperty_t)(val_t p0);
-static const char * const LOCATE_NEW_MMSrcTypeProperty_syntax___syntax_base___MMSrcTypeProperty___init = "new MMSrcTypeProperty syntax_base::MMSrcTypeProperty::init";
 val_t NEW_MMSrcTypeProperty_syntax___syntax_base___MMSrcTypeProperty___init(val_t p0, val_t p1, val_t p2);
 typedef val_t (*NEW_MMSrcTypeProperty_syntax___syntax_base___MMSrcTypeProperty___init_t)(val_t p0, val_t p1, val_t p2);
-static const char * const LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___MMImplicitInit = "init var of MMImplicitInit";
 void INIT_ATTRIBUTES__syntax___syntax_base___MMImplicitInit(val_t p0);
 typedef void (*INIT_ATTRIBUTES__syntax___syntax_base___MMImplicitInit_t)(val_t p0);
 val_t NEW_syntax___syntax_base___MMImplicitInit(void);
-static const char * const LOCATE_CHECKNEW_syntax___syntax_base___MMImplicitInit = "check new MMImplicitInit";
 void CHECKNEW_syntax___syntax_base___MMImplicitInit(val_t p0);
 typedef void (*CHECKNEW_syntax___syntax_base___MMImplicitInit_t)(val_t p0);
-static const char * const LOCATE_NEW_MMImplicitInit_syntax___syntax_base___MMImplicitInit___init = "new MMImplicitInit syntax_base::MMImplicitInit::init";
 val_t NEW_MMImplicitInit_syntax___syntax_base___MMImplicitInit___init(val_t p0, val_t p1, val_t p2);
 typedef val_t (*NEW_MMImplicitInit_syntax___syntax_base___MMImplicitInit___init_t)(val_t p0, val_t p1, val_t p2);
-static const char * const LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___VarVariable = "init var of VarVariable";
 void INIT_ATTRIBUTES__syntax___syntax_base___VarVariable(val_t p0);
 typedef void (*INIT_ATTRIBUTES__syntax___syntax_base___VarVariable_t)(val_t p0);
 val_t NEW_syntax___syntax_base___VarVariable(void);
-static const char * const LOCATE_CHECKNEW_syntax___syntax_base___VarVariable = "check new VarVariable";
 void CHECKNEW_syntax___syntax_base___VarVariable(val_t p0);
 typedef void (*CHECKNEW_syntax___syntax_base___VarVariable_t)(val_t p0);
-static const char * const LOCATE_NEW_VarVariable_syntax___syntax_base___VarVariable___init = "new VarVariable syntax_base::VarVariable::init";
 val_t NEW_VarVariable_syntax___syntax_base___VarVariable___init(val_t p0, val_t p1);
 typedef val_t (*NEW_VarVariable_syntax___syntax_base___VarVariable___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___ParamVariable = "init var of ParamVariable";
 void INIT_ATTRIBUTES__syntax___syntax_base___ParamVariable(val_t p0);
 typedef void (*INIT_ATTRIBUTES__syntax___syntax_base___ParamVariable_t)(val_t p0);
 val_t NEW_syntax___syntax_base___ParamVariable(void);
-static const char * const LOCATE_CHECKNEW_syntax___syntax_base___ParamVariable = "check new ParamVariable";
 void CHECKNEW_syntax___syntax_base___ParamVariable(val_t p0);
 typedef void (*CHECKNEW_syntax___syntax_base___ParamVariable_t)(val_t p0);
-static const char * const LOCATE_NEW_ParamVariable_syntax___syntax_base___ParamVariable___init = "new ParamVariable syntax_base::ParamVariable::init";
 val_t NEW_ParamVariable_syntax___syntax_base___ParamVariable___init(val_t p0, val_t p1);
 typedef val_t (*NEW_ParamVariable_syntax___syntax_base___ParamVariable___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___AutoVariable = "init var of AutoVariable";
 void INIT_ATTRIBUTES__syntax___syntax_base___AutoVariable(val_t p0);
 typedef void (*INIT_ATTRIBUTES__syntax___syntax_base___AutoVariable_t)(val_t p0);
 val_t NEW_syntax___syntax_base___AutoVariable(void);
-static const char * const LOCATE_CHECKNEW_syntax___syntax_base___AutoVariable = "check new AutoVariable";
 void CHECKNEW_syntax___syntax_base___AutoVariable(val_t p0);
 typedef void (*CHECKNEW_syntax___syntax_base___AutoVariable_t)(val_t p0);
-static const char * const LOCATE_NEW_AutoVariable_syntax___syntax_base___AutoVariable___init = "new AutoVariable syntax_base::AutoVariable::init";
 val_t NEW_AutoVariable_syntax___syntax_base___AutoVariable___init(val_t p0, val_t p1);
 typedef val_t (*NEW_AutoVariable_syntax___syntax_base___AutoVariable___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___ClosureVariable = "init var of ClosureVariable";
 void INIT_ATTRIBUTES__syntax___syntax_base___ClosureVariable(val_t p0);
 typedef void (*INIT_ATTRIBUTES__syntax___syntax_base___ClosureVariable_t)(val_t p0);
 val_t NEW_syntax___syntax_base___ClosureVariable(void);
-static const char * const LOCATE_CHECKNEW_syntax___syntax_base___ClosureVariable = "check new ClosureVariable";
 void CHECKNEW_syntax___syntax_base___ClosureVariable(val_t p0);
 typedef void (*CHECKNEW_syntax___syntax_base___ClosureVariable_t)(val_t p0);
-static const char * const LOCATE_NEW_ClosureVariable_syntax___syntax_base___ClosureVariable___init = "new ClosureVariable syntax_base::ClosureVariable::init";
 val_t NEW_ClosureVariable_syntax___syntax_base___ClosureVariable___init(val_t p0, val_t p1, val_t p2);
 typedef val_t (*NEW_ClosureVariable_syntax___syntax_base___ClosureVariable___init_t)(val_t p0, val_t p1, val_t p2);
-static const char * const LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___AbsSyntaxVisitor = "init var of AbsSyntaxVisitor";
-void INIT_ATTRIBUTES__syntax___syntax_base___AbsSyntaxVisitor(val_t p0);
-typedef void (*INIT_ATTRIBUTES__syntax___syntax_base___AbsSyntaxVisitor_t)(val_t p0);
-val_t NEW_syntax___syntax_base___AbsSyntaxVisitor(void);
-static const char * const LOCATE_CHECKNEW_syntax___syntax_base___AbsSyntaxVisitor = "check new AbsSyntaxVisitor";
-void CHECKNEW_syntax___syntax_base___AbsSyntaxVisitor(val_t p0);
-typedef void (*CHECKNEW_syntax___syntax_base___AbsSyntaxVisitor_t)(val_t p0);
-static const char * const LOCATE_NEW_AbsSyntaxVisitor_syntax___syntax_base___AbsSyntaxVisitor___init = "new AbsSyntaxVisitor syntax_base::AbsSyntaxVisitor::init";
-val_t NEW_AbsSyntaxVisitor_syntax___syntax_base___AbsSyntaxVisitor___init(val_t p0, val_t p1);
-typedef val_t (*NEW_AbsSyntaxVisitor_syntax___syntax_base___AbsSyntaxVisitor___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___AAbsAbsSendExpr = "init var of AAbsAbsSendExpr";
-void INIT_ATTRIBUTES__syntax___syntax_base___AAbsAbsSendExpr(val_t p0);
-typedef void (*INIT_ATTRIBUTES__syntax___syntax_base___AAbsAbsSendExpr_t)(val_t p0);
-val_t NEW_syntax___syntax_base___AAbsAbsSendExpr(void);
-static const char * const LOCATE_CHECKNEW_syntax___syntax_base___AAbsAbsSendExpr = "check new AAbsAbsSendExpr";
-void CHECKNEW_syntax___syntax_base___AAbsAbsSendExpr(val_t p0);
-typedef void (*CHECKNEW_syntax___syntax_base___AAbsAbsSendExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AAbsAbsSendExpr_parser___parser_nodes___ANode___init = "new AAbsAbsSendExpr parser_nodes::ANode::init";
-val_t NEW_AAbsAbsSendExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AAbsAbsSendExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___AAbsSendExpr = "init var of AAbsSendExpr";
-void INIT_ATTRIBUTES__syntax___syntax_base___AAbsSendExpr(val_t p0);
-typedef void (*INIT_ATTRIBUTES__syntax___syntax_base___AAbsSendExpr_t)(val_t p0);
-val_t NEW_syntax___syntax_base___AAbsSendExpr(void);
-static const char * const LOCATE_CHECKNEW_syntax___syntax_base___AAbsSendExpr = "check new AAbsSendExpr";
-void CHECKNEW_syntax___syntax_base___AAbsSendExpr(val_t p0);
-typedef void (*CHECKNEW_syntax___syntax_base___AAbsSendExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AAbsSendExpr_parser___parser_nodes___ANode___init = "new AAbsSendExpr parser_nodes::ANode::init";
-val_t NEW_AAbsSendExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AAbsSendExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___ASuperInitCall = "init var of ASuperInitCall";
-void INIT_ATTRIBUTES__syntax___syntax_base___ASuperInitCall(val_t p0);
-typedef void (*INIT_ATTRIBUTES__syntax___syntax_base___ASuperInitCall_t)(val_t p0);
-val_t NEW_syntax___syntax_base___ASuperInitCall(void);
-static const char * const LOCATE_CHECKNEW_syntax___syntax_base___ASuperInitCall = "check new ASuperInitCall";
-void CHECKNEW_syntax___syntax_base___ASuperInitCall(val_t p0);
-typedef void (*CHECKNEW_syntax___syntax_base___ASuperInitCall_t)(val_t p0);
-static const char * const LOCATE_NEW_ASuperInitCall_parser___parser_nodes___ANode___init = "new ASuperInitCall parser_nodes::ANode::init";
-val_t NEW_ASuperInitCall_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ASuperInitCall_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___ASendReassignExpr = "init var of ASendReassignExpr";
-void INIT_ATTRIBUTES__syntax___syntax_base___ASendReassignExpr(val_t p0);
-typedef void (*INIT_ATTRIBUTES__syntax___syntax_base___ASendReassignExpr_t)(val_t p0);
-val_t NEW_syntax___syntax_base___ASendReassignExpr(void);
-static const char * const LOCATE_CHECKNEW_syntax___syntax_base___ASendReassignExpr = "check new ASendReassignExpr";
-void CHECKNEW_syntax___syntax_base___ASendReassignExpr(val_t p0);
-typedef void (*CHECKNEW_syntax___syntax_base___ASendReassignExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_ASendReassignExpr_parser___parser_prod___ASendExpr___empty_init = "new ASendReassignExpr parser_prod::ASendExpr::empty_init";
-val_t NEW_ASendReassignExpr_parser___parser_prod___ASendExpr___empty_init(void);
-typedef val_t (*NEW_ASendReassignExpr_parser___parser_prod___ASendExpr___empty_init_t)(void);
-static const char * const LOCATE_NEW_ASendReassignExpr_parser___parser_prod___ASendExpr___init_asendexpr = "new ASendReassignExpr parser_prod::ASendExpr::init_asendexpr";
-val_t NEW_ASendReassignExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0);
-typedef val_t (*NEW_ASendReassignExpr_parser___parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
-static const char * const LOCATE_NEW_ASendReassignExpr_parser___parser_nodes___ANode___init = "new ASendReassignExpr parser_nodes::ANode::init";
-val_t NEW_ASendReassignExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ASendReassignExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__primitive_info___PrimitiveInfo = "init var of PrimitiveInfo";
-void INIT_ATTRIBUTES__primitive_info___PrimitiveInfo(val_t p0);
-typedef void (*INIT_ATTRIBUTES__primitive_info___PrimitiveInfo_t)(val_t p0);
-val_t NEW_primitive_info___PrimitiveInfo(void);
-static const char * const LOCATE_CHECKNEW_primitive_info___PrimitiveInfo = "check new PrimitiveInfo";
-void CHECKNEW_primitive_info___PrimitiveInfo(val_t p0);
-typedef void (*CHECKNEW_primitive_info___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__syntax___mmbuilder___CSHSorter = "init var of CSHSorter";
-void INIT_ATTRIBUTES__syntax___mmbuilder___CSHSorter(val_t p0);
-typedef void (*INIT_ATTRIBUTES__syntax___mmbuilder___CSHSorter_t)(val_t p0);
-val_t NEW_syntax___mmbuilder___CSHSorter(void);
-static const char * const LOCATE_CHECKNEW_syntax___mmbuilder___CSHSorter = "check new CSHSorter";
-void CHECKNEW_syntax___mmbuilder___CSHSorter(val_t p0);
-typedef void (*CHECKNEW_syntax___mmbuilder___CSHSorter_t)(val_t p0);
-static const char * const LOCATE_NEW_CSHSorter_syntax___mmbuilder___CSHSorter___init = "new CSHSorter mmbuilder::CSHSorter::init";
-val_t NEW_CSHSorter_syntax___mmbuilder___CSHSorter___init(void);
-typedef val_t (*NEW_CSHSorter_syntax___mmbuilder___CSHSorter___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__syntax___mmbuilder___MMSrcAncestor = "init var of MMSrcAncestor";
-void INIT_ATTRIBUTES__syntax___mmbuilder___MMSrcAncestor(val_t p0);
-typedef void (*INIT_ATTRIBUTES__syntax___mmbuilder___MMSrcAncestor_t)(val_t p0);
-val_t NEW_syntax___mmbuilder___MMSrcAncestor(void);
-static const char * const LOCATE_CHECKNEW_syntax___mmbuilder___MMSrcAncestor = "check new MMSrcAncestor";
-void CHECKNEW_syntax___mmbuilder___MMSrcAncestor(val_t p0);
-typedef void (*CHECKNEW_syntax___mmbuilder___MMSrcAncestor_t)(val_t p0);
-static const char * const LOCATE_NEW_MMSrcAncestor_syntax___mmbuilder___MMSrcAncestor___init = "new MMSrcAncestor mmbuilder::MMSrcAncestor::init";
-val_t NEW_MMSrcAncestor_syntax___mmbuilder___MMSrcAncestor___init(val_t p0);
-typedef val_t (*NEW_MMSrcAncestor_syntax___mmbuilder___MMSrcAncestor___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__syntax___mmbuilder___ClassBuilderVisitor = "init var of ClassBuilderVisitor";
-void INIT_ATTRIBUTES__syntax___mmbuilder___ClassBuilderVisitor(val_t p0);
-typedef void (*INIT_ATTRIBUTES__syntax___mmbuilder___ClassBuilderVisitor_t)(val_t p0);
-val_t NEW_syntax___mmbuilder___ClassBuilderVisitor(void);
-static const char * const LOCATE_CHECKNEW_syntax___mmbuilder___ClassBuilderVisitor = "check new ClassBuilderVisitor";
-void CHECKNEW_syntax___mmbuilder___ClassBuilderVisitor(val_t p0);
-typedef void (*CHECKNEW_syntax___mmbuilder___ClassBuilderVisitor_t)(val_t p0);
-static const char * const LOCATE_NEW_ClassBuilderVisitor_syntax___mmbuilder___ClassBuilderVisitor___init = "new ClassBuilderVisitor mmbuilder::ClassBuilderVisitor::init";
-val_t NEW_ClassBuilderVisitor_syntax___mmbuilder___ClassBuilderVisitor___init(val_t p0, val_t p1);
-typedef val_t (*NEW_ClassBuilderVisitor_syntax___mmbuilder___ClassBuilderVisitor___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__syntax___mmbuilder___ClassSpecializationBuilderVisitor = "init var of ClassSpecializationBuilderVisitor";
-void INIT_ATTRIBUTES__syntax___mmbuilder___ClassSpecializationBuilderVisitor(val_t p0);
-typedef void (*INIT_ATTRIBUTES__syntax___mmbuilder___ClassSpecializationBuilderVisitor_t)(val_t p0);
-val_t NEW_syntax___mmbuilder___ClassSpecializationBuilderVisitor(void);
-static const char * const LOCATE_CHECKNEW_syntax___mmbuilder___ClassSpecializationBuilderVisitor = "check new ClassSpecializationBuilderVisitor";
-void CHECKNEW_syntax___mmbuilder___ClassSpecializationBuilderVisitor(val_t p0);
-typedef void (*CHECKNEW_syntax___mmbuilder___ClassSpecializationBuilderVisitor_t)(val_t p0);
-static const char * const LOCATE_NEW_ClassSpecializationBuilderVisitor_syntax___mmbuilder___ClassSpecializationBuilderVisitor___init = "new ClassSpecializationBuilderVisitor mmbuilder::ClassSpecializationBuilderVisitor::init";
-val_t NEW_ClassSpecializationBuilderVisitor_syntax___mmbuilder___ClassSpecializationBuilderVisitor___init(val_t p0, val_t p1);
-typedef val_t (*NEW_ClassSpecializationBuilderVisitor_syntax___mmbuilder___ClassSpecializationBuilderVisitor___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__syntax___mmbuilder___ClassAncestorBuilder = "init var of ClassAncestorBuilder";
-void INIT_ATTRIBUTES__syntax___mmbuilder___ClassAncestorBuilder(val_t p0);
-typedef void (*INIT_ATTRIBUTES__syntax___mmbuilder___ClassAncestorBuilder_t)(val_t p0);
-val_t NEW_syntax___mmbuilder___ClassAncestorBuilder(void);
-static const char * const LOCATE_CHECKNEW_syntax___mmbuilder___ClassAncestorBuilder = "check new ClassAncestorBuilder";
-void CHECKNEW_syntax___mmbuilder___ClassAncestorBuilder(val_t p0);
-typedef void (*CHECKNEW_syntax___mmbuilder___ClassAncestorBuilder_t)(val_t p0);
-static const char * const LOCATE_NEW_ClassAncestorBuilder_syntax___mmbuilder___ClassAncestorBuilder___init = "new ClassAncestorBuilder mmbuilder::ClassAncestorBuilder::init";
-val_t NEW_ClassAncestorBuilder_syntax___mmbuilder___ClassAncestorBuilder___init(val_t p0, val_t p1);
-typedef val_t (*NEW_ClassAncestorBuilder_syntax___mmbuilder___ClassAncestorBuilder___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__syntax___mmbuilder___ClassVerifierVisitor = "init var of ClassVerifierVisitor";
-void INIT_ATTRIBUTES__syntax___mmbuilder___ClassVerifierVisitor(val_t p0);
-typedef void (*INIT_ATTRIBUTES__syntax___mmbuilder___ClassVerifierVisitor_t)(val_t p0);
-val_t NEW_syntax___mmbuilder___ClassVerifierVisitor(void);
-static const char * const LOCATE_CHECKNEW_syntax___mmbuilder___ClassVerifierVisitor = "check new ClassVerifierVisitor";
-void CHECKNEW_syntax___mmbuilder___ClassVerifierVisitor(val_t p0);
-typedef void (*CHECKNEW_syntax___mmbuilder___ClassVerifierVisitor_t)(val_t p0);
-static const char * const LOCATE_NEW_ClassVerifierVisitor_syntax___mmbuilder___ClassVerifierVisitor___init = "new ClassVerifierVisitor mmbuilder::ClassVerifierVisitor::init";
-val_t NEW_ClassVerifierVisitor_syntax___mmbuilder___ClassVerifierVisitor___init(val_t p0, val_t p1);
-typedef val_t (*NEW_ClassVerifierVisitor_syntax___mmbuilder___ClassVerifierVisitor___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__syntax___mmbuilder___PropertyBuilderVisitor = "init var of PropertyBuilderVisitor";
-void INIT_ATTRIBUTES__syntax___mmbuilder___PropertyBuilderVisitor(val_t p0);
-typedef void (*INIT_ATTRIBUTES__syntax___mmbuilder___PropertyBuilderVisitor_t)(val_t p0);
-val_t NEW_syntax___mmbuilder___PropertyBuilderVisitor(void);
-static const char * const LOCATE_CHECKNEW_syntax___mmbuilder___PropertyBuilderVisitor = "check new PropertyBuilderVisitor";
-void CHECKNEW_syntax___mmbuilder___PropertyBuilderVisitor(val_t p0);
-typedef void (*CHECKNEW_syntax___mmbuilder___PropertyBuilderVisitor_t)(val_t p0);
-static const char * const LOCATE_NEW_PropertyBuilderVisitor_syntax___mmbuilder___PropertyBuilderVisitor___init = "new PropertyBuilderVisitor mmbuilder::PropertyBuilderVisitor::init";
-val_t NEW_PropertyBuilderVisitor_syntax___mmbuilder___PropertyBuilderVisitor___init(val_t p0, val_t p1);
-typedef val_t (*NEW_PropertyBuilderVisitor_syntax___mmbuilder___PropertyBuilderVisitor___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__syntax___mmbuilder___PropertyVerifierVisitor = "init var of PropertyVerifierVisitor";
-void INIT_ATTRIBUTES__syntax___mmbuilder___PropertyVerifierVisitor(val_t p0);
-typedef void (*INIT_ATTRIBUTES__syntax___mmbuilder___PropertyVerifierVisitor_t)(val_t p0);
-val_t NEW_syntax___mmbuilder___PropertyVerifierVisitor(void);
-static const char * const LOCATE_CHECKNEW_syntax___mmbuilder___PropertyVerifierVisitor = "check new PropertyVerifierVisitor";
-void CHECKNEW_syntax___mmbuilder___PropertyVerifierVisitor(val_t p0);
-typedef void (*CHECKNEW_syntax___mmbuilder___PropertyVerifierVisitor_t)(val_t p0);
-static const char * const LOCATE_NEW_PropertyVerifierVisitor_syntax___mmbuilder___PropertyVerifierVisitor___init = "new PropertyVerifierVisitor mmbuilder::PropertyVerifierVisitor::init";
-val_t NEW_PropertyVerifierVisitor_syntax___mmbuilder___PropertyVerifierVisitor___init(val_t p0, val_t p1);
-typedef val_t (*NEW_PropertyVerifierVisitor_syntax___mmbuilder___PropertyVerifierVisitor___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__syntax___mmbuilder___SignatureBuilder = "init var of SignatureBuilder";
-void INIT_ATTRIBUTES__syntax___mmbuilder___SignatureBuilder(val_t p0);
-typedef void (*INIT_ATTRIBUTES__syntax___mmbuilder___SignatureBuilder_t)(val_t p0);
-val_t NEW_syntax___mmbuilder___SignatureBuilder(void);
-static const char * const LOCATE_CHECKNEW_syntax___mmbuilder___SignatureBuilder = "check new SignatureBuilder";
-void CHECKNEW_syntax___mmbuilder___SignatureBuilder(val_t p0);
-typedef void (*CHECKNEW_syntax___mmbuilder___SignatureBuilder_t)(val_t p0);
-static const char * const LOCATE_NEW_SignatureBuilder_syntax___mmbuilder___SignatureBuilder___init = "new SignatureBuilder mmbuilder::SignatureBuilder::init";
-val_t NEW_SignatureBuilder_syntax___mmbuilder___SignatureBuilder___init(void);
-typedef val_t (*NEW_SignatureBuilder_syntax___mmbuilder___SignatureBuilder___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__syntax___mmbuilder___MethidAccumulator = "init var of MethidAccumulator";
-void INIT_ATTRIBUTES__syntax___mmbuilder___MethidAccumulator(val_t p0);
-typedef void (*INIT_ATTRIBUTES__syntax___mmbuilder___MethidAccumulator_t)(val_t p0);
-val_t NEW_syntax___mmbuilder___MethidAccumulator(void);
-static const char * const LOCATE_CHECKNEW_syntax___mmbuilder___MethidAccumulator = "check new MethidAccumulator";
-void CHECKNEW_syntax___mmbuilder___MethidAccumulator(val_t p0);
-typedef void (*CHECKNEW_syntax___mmbuilder___MethidAccumulator_t)(val_t p0);
-static const char * const LOCATE_NEW_MethidAccumulator_parser___parser_prod___Visitor___init = "new MethidAccumulator parser_prod::Visitor::init";
-val_t NEW_MethidAccumulator_parser___parser_prod___Visitor___init(void);
-typedef val_t (*NEW_MethidAccumulator_parser___parser_prod___Visitor___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__icode___icode_base___IRegister = "init var of IRegister";
-void INIT_ATTRIBUTES__icode___icode_base___IRegister(val_t p0);
-typedef void (*INIT_ATTRIBUTES__icode___icode_base___IRegister_t)(val_t p0);
-val_t NEW_icode___icode_base___IRegister(void);
-static const char * const LOCATE_CHECKNEW_icode___icode_base___IRegister = "check new IRegister";
-void CHECKNEW_icode___icode_base___IRegister(val_t p0);
-typedef void (*CHECKNEW_icode___icode_base___IRegister_t)(val_t p0);
-static const char * const LOCATE_NEW_IRegister_icode___icode_base___IRegister___init = "new IRegister icode_base::IRegister::init";
-val_t NEW_IRegister_icode___icode_base___IRegister___init(val_t p0);
-typedef val_t (*NEW_IRegister_icode___icode_base___IRegister___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__icode___icode_base___IEscapeMark = "init var of IEscapeMark";
-void INIT_ATTRIBUTES__icode___icode_base___IEscapeMark(val_t p0);
-typedef void (*INIT_ATTRIBUTES__icode___icode_base___IEscapeMark_t)(val_t p0);
-val_t NEW_icode___icode_base___IEscapeMark(void);
-static const char * const LOCATE_CHECKNEW_icode___icode_base___IEscapeMark = "check new IEscapeMark";
-void CHECKNEW_icode___icode_base___IEscapeMark(val_t p0);
-typedef void (*CHECKNEW_icode___icode_base___IEscapeMark_t)(val_t p0);
-static const char * const LOCATE_NEW_IEscapeMark_icode___icode_base___IEscapeMark___init = "new IEscapeMark icode_base::IEscapeMark::init";
-val_t NEW_IEscapeMark_icode___icode_base___IEscapeMark___init(void);
-typedef val_t (*NEW_IEscapeMark_icode___icode_base___IEscapeMark___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__icode___icode_base___IClosureDecl = "init var of IClosureDecl";
-void INIT_ATTRIBUTES__icode___icode_base___IClosureDecl(val_t p0);
-typedef void (*INIT_ATTRIBUTES__icode___icode_base___IClosureDecl_t)(val_t p0);
-val_t NEW_icode___icode_base___IClosureDecl(void);
-static const char * const LOCATE_CHECKNEW_icode___icode_base___IClosureDecl = "check new IClosureDecl";
-void CHECKNEW_icode___icode_base___IClosureDecl(val_t p0);
-typedef void (*CHECKNEW_icode___icode_base___IClosureDecl_t)(val_t p0);
-static const char * const LOCATE_NEW_IClosureDecl_icode___icode_base___IClosureDecl___init = "new IClosureDecl icode_base::IClosureDecl::init";
-val_t NEW_IClosureDecl_icode___icode_base___IClosureDecl___init(val_t p0);
-typedef val_t (*NEW_IClosureDecl_icode___icode_base___IClosureDecl___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__icode___icode_base___IRoutine = "init var of IRoutine";
-void INIT_ATTRIBUTES__icode___icode_base___IRoutine(val_t p0);
-typedef void (*INIT_ATTRIBUTES__icode___icode_base___IRoutine_t)(val_t p0);
-val_t NEW_icode___icode_base___IRoutine(void);
-static const char * const LOCATE_CHECKNEW_icode___icode_base___IRoutine = "check new IRoutine";
-void CHECKNEW_icode___icode_base___IRoutine(val_t p0);
-typedef void (*CHECKNEW_icode___icode_base___IRoutine_t)(val_t p0);
-static const char * const LOCATE_NEW_IRoutine_icode___icode_base___IRoutine___init = "new IRoutine icode_base::IRoutine::init";
-val_t NEW_IRoutine_icode___icode_base___IRoutine___init(val_t p0, val_t p1);
-typedef val_t (*NEW_IRoutine_icode___icode_base___IRoutine___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__icode___icode_base___IClosureDef = "init var of IClosureDef";
-void INIT_ATTRIBUTES__icode___icode_base___IClosureDef(val_t p0);
-typedef void (*INIT_ATTRIBUTES__icode___icode_base___IClosureDef_t)(val_t p0);
-val_t NEW_icode___icode_base___IClosureDef(void);
-static const char * const LOCATE_CHECKNEW_icode___icode_base___IClosureDef = "check new IClosureDef";
-void CHECKNEW_icode___icode_base___IClosureDef(val_t p0);
-typedef void (*CHECKNEW_icode___icode_base___IClosureDef_t)(val_t p0);
-static const char * const LOCATE_NEW_IClosureDef_icode___icode_base___IClosureDef___init = "new IClosureDef icode_base::IClosureDef::init";
-val_t NEW_IClosureDef_icode___icode_base___IClosureDef___init(val_t p0, val_t p1);
-typedef val_t (*NEW_IClosureDef_icode___icode_base___IClosureDef___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__icode___icode_base___ISeq = "init var of ISeq";
-void INIT_ATTRIBUTES__icode___icode_base___ISeq(val_t p0);
-typedef void (*INIT_ATTRIBUTES__icode___icode_base___ISeq_t)(val_t p0);
-val_t NEW_icode___icode_base___ISeq(void);
-static const char * const LOCATE_CHECKNEW_icode___icode_base___ISeq = "check new ISeq";
-void CHECKNEW_icode___icode_base___ISeq(val_t p0);
-typedef void (*CHECKNEW_icode___icode_base___ISeq_t)(val_t p0);
-static const char * const LOCATE_NEW_ISeq_icode___icode_base___ISeq___init = "new ISeq icode_base::ISeq::init";
-val_t NEW_ISeq_icode___icode_base___ISeq___init(void);
-typedef val_t (*NEW_ISeq_icode___icode_base___ISeq___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__icode___icode_base___ILoop = "init var of ILoop";
-void INIT_ATTRIBUTES__icode___icode_base___ILoop(val_t p0);
-typedef void (*INIT_ATTRIBUTES__icode___icode_base___ILoop_t)(val_t p0);
-val_t NEW_icode___icode_base___ILoop(void);
-static const char * const LOCATE_CHECKNEW_icode___icode_base___ILoop = "check new ILoop";
-void CHECKNEW_icode___icode_base___ILoop(val_t p0);
-typedef void (*CHECKNEW_icode___icode_base___ILoop_t)(val_t p0);
-static const char * const LOCATE_NEW_ILoop_icode___icode_base___ILoop___init = "new ILoop icode_base::ILoop::init";
-val_t NEW_ILoop_icode___icode_base___ILoop___init(void);
-typedef val_t (*NEW_ILoop_icode___icode_base___ILoop___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__icode___icode_base___IIf = "init var of IIf";
-void INIT_ATTRIBUTES__icode___icode_base___IIf(val_t p0);
-typedef void (*INIT_ATTRIBUTES__icode___icode_base___IIf_t)(val_t p0);
-val_t NEW_icode___icode_base___IIf(void);
-static const char * const LOCATE_CHECKNEW_icode___icode_base___IIf = "check new IIf";
-void CHECKNEW_icode___icode_base___IIf(val_t p0);
-typedef void (*CHECKNEW_icode___icode_base___IIf_t)(val_t p0);
-static const char * const LOCATE_NEW_IIf_icode___icode_base___IIf___init = "new IIf icode_base::IIf::init";
-val_t NEW_IIf_icode___icode_base___IIf___init(val_t p0);
-typedef val_t (*NEW_IIf_icode___icode_base___IIf___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__icode___icode_base___IEscape = "init var of IEscape";
-void INIT_ATTRIBUTES__icode___icode_base___IEscape(val_t p0);
-typedef void (*INIT_ATTRIBUTES__icode___icode_base___IEscape_t)(val_t p0);
-val_t NEW_icode___icode_base___IEscape(void);
-static const char * const LOCATE_CHECKNEW_icode___icode_base___IEscape = "check new IEscape";
-void CHECKNEW_icode___icode_base___IEscape(val_t p0);
-typedef void (*CHECKNEW_icode___icode_base___IEscape_t)(val_t p0);
-static const char * const LOCATE_NEW_IEscape_icode___icode_base___IEscape___init = "new IEscape icode_base::IEscape::init";
-val_t NEW_IEscape_icode___icode_base___IEscape___init(val_t p0);
-typedef val_t (*NEW_IEscape_icode___icode_base___IEscape___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__icode___icode_base___IAbort = "init var of IAbort";
-void INIT_ATTRIBUTES__icode___icode_base___IAbort(val_t p0);
-typedef void (*INIT_ATTRIBUTES__icode___icode_base___IAbort_t)(val_t p0);
-val_t NEW_icode___icode_base___IAbort(void);
-static const char * const LOCATE_CHECKNEW_icode___icode_base___IAbort = "check new IAbort";
-void CHECKNEW_icode___icode_base___IAbort(val_t p0);
-typedef void (*CHECKNEW_icode___icode_base___IAbort_t)(val_t p0);
-static const char * const LOCATE_NEW_IAbort_icode___icode_base___IAbort___init = "new IAbort icode_base::IAbort::init";
-val_t NEW_IAbort_icode___icode_base___IAbort___init(val_t p0, val_t p1);
-typedef val_t (*NEW_IAbort_icode___icode_base___IAbort___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__icode___icode_base___ICall = "init var of ICall";
-void INIT_ATTRIBUTES__icode___icode_base___ICall(val_t p0);
-typedef void (*INIT_ATTRIBUTES__icode___icode_base___ICall_t)(val_t p0);
-val_t NEW_icode___icode_base___ICall(void);
-static const char * const LOCATE_CHECKNEW_icode___icode_base___ICall = "check new ICall";
-void CHECKNEW_icode___icode_base___ICall(val_t p0);
-typedef void (*CHECKNEW_icode___icode_base___ICall_t)(val_t p0);
-static const char * const LOCATE_NEW_ICall_icode___icode_base___ICall___init = "new ICall icode_base::ICall::init";
-val_t NEW_ICall_icode___icode_base___ICall___init(val_t p0, val_t p1);
-typedef val_t (*NEW_ICall_icode___icode_base___ICall___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__icode___icode_base___ISuper = "init var of ISuper";
-void INIT_ATTRIBUTES__icode___icode_base___ISuper(val_t p0);
-typedef void (*INIT_ATTRIBUTES__icode___icode_base___ISuper_t)(val_t p0);
-val_t NEW_icode___icode_base___ISuper(void);
-static const char * const LOCATE_CHECKNEW_icode___icode_base___ISuper = "check new ISuper";
-void CHECKNEW_icode___icode_base___ISuper(val_t p0);
-typedef void (*CHECKNEW_icode___icode_base___ISuper_t)(val_t p0);
-static const char * const LOCATE_NEW_ISuper_icode___icode_base___ISuper___init = "new ISuper icode_base::ISuper::init";
-val_t NEW_ISuper_icode___icode_base___ISuper___init(val_t p0, val_t p1);
-typedef val_t (*NEW_ISuper_icode___icode_base___ISuper___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__icode___icode_base___INew = "init var of INew";
-void INIT_ATTRIBUTES__icode___icode_base___INew(val_t p0);
-typedef void (*INIT_ATTRIBUTES__icode___icode_base___INew_t)(val_t p0);
-val_t NEW_icode___icode_base___INew(void);
-static const char * const LOCATE_CHECKNEW_icode___icode_base___INew = "check new INew";
-void CHECKNEW_icode___icode_base___INew(val_t p0);
-typedef void (*CHECKNEW_icode___icode_base___INew_t)(val_t p0);
-static const char * const LOCATE_NEW_INew_icode___icode_base___INew___init = "new INew icode_base::INew::init";
-val_t NEW_INew_icode___icode_base___INew___init(val_t p0, val_t p1, val_t p2);
-typedef val_t (*NEW_INew_icode___icode_base___INew___init_t)(val_t p0, val_t p1, val_t p2);
-static const char * const LOCATE_INIT_ATTRIBUTES__icode___icode_base___IAllocateInstance = "init var of IAllocateInstance";
-void INIT_ATTRIBUTES__icode___icode_base___IAllocateInstance(val_t p0);
-typedef void (*INIT_ATTRIBUTES__icode___icode_base___IAllocateInstance_t)(val_t p0);
-val_t NEW_icode___icode_base___IAllocateInstance(void);
-static const char * const LOCATE_CHECKNEW_icode___icode_base___IAllocateInstance = "check new IAllocateInstance";
-void CHECKNEW_icode___icode_base___IAllocateInstance(val_t p0);
-typedef void (*CHECKNEW_icode___icode_base___IAllocateInstance_t)(val_t p0);
-static const char * const LOCATE_NEW_IAllocateInstance_icode___icode_base___IAllocateInstance___init = "new IAllocateInstance icode_base::IAllocateInstance::init";
-val_t NEW_IAllocateInstance_icode___icode_base___IAllocateInstance___init(val_t p0);
-typedef val_t (*NEW_IAllocateInstance_icode___icode_base___IAllocateInstance___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__icode___icode_base___IStaticCall = "init var of IStaticCall";
-void INIT_ATTRIBUTES__icode___icode_base___IStaticCall(val_t p0);
-typedef void (*INIT_ATTRIBUTES__icode___icode_base___IStaticCall_t)(val_t p0);
-val_t NEW_icode___icode_base___IStaticCall(void);
-static const char * const LOCATE_CHECKNEW_icode___icode_base___IStaticCall = "check new IStaticCall";
-void CHECKNEW_icode___icode_base___IStaticCall(val_t p0);
-typedef void (*CHECKNEW_icode___icode_base___IStaticCall_t)(val_t p0);
-static const char * const LOCATE_NEW_IStaticCall_icode___icode_base___IStaticCall___init = "new IStaticCall icode_base::IStaticCall::init";
-val_t NEW_IStaticCall_icode___icode_base___IStaticCall___init(val_t p0, val_t p1);
-typedef val_t (*NEW_IStaticCall_icode___icode_base___IStaticCall___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__icode___icode_base___ICheckInstance = "init var of ICheckInstance";
-void INIT_ATTRIBUTES__icode___icode_base___ICheckInstance(val_t p0);
-typedef void (*INIT_ATTRIBUTES__icode___icode_base___ICheckInstance_t)(val_t p0);
-val_t NEW_icode___icode_base___ICheckInstance(void);
-static const char * const LOCATE_CHECKNEW_icode___icode_base___ICheckInstance = "check new ICheckInstance";
-void CHECKNEW_icode___icode_base___ICheckInstance(val_t p0);
-typedef void (*CHECKNEW_icode___icode_base___ICheckInstance_t)(val_t p0);
-static const char * const LOCATE_NEW_ICheckInstance_icode___icode_base___ICheckInstance___init = "new ICheckInstance icode_base::ICheckInstance::init";
-val_t NEW_ICheckInstance_icode___icode_base___ICheckInstance___init(val_t p0, val_t p1);
-typedef val_t (*NEW_ICheckInstance_icode___icode_base___ICheckInstance___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__icode___icode_base___IInitAttributes = "init var of IInitAttributes";
-void INIT_ATTRIBUTES__icode___icode_base___IInitAttributes(val_t p0);
-typedef void (*INIT_ATTRIBUTES__icode___icode_base___IInitAttributes_t)(val_t p0);
-val_t NEW_icode___icode_base___IInitAttributes(void);
-static const char * const LOCATE_CHECKNEW_icode___icode_base___IInitAttributes = "check new IInitAttributes";
-void CHECKNEW_icode___icode_base___IInitAttributes(val_t p0);
-typedef void (*CHECKNEW_icode___icode_base___IInitAttributes_t)(val_t p0);
-static const char * const LOCATE_NEW_IInitAttributes_icode___icode_base___IInitAttributes___init = "new IInitAttributes icode_base::IInitAttributes::init";
-val_t NEW_IInitAttributes_icode___icode_base___IInitAttributes___init(val_t p0, val_t p1);
-typedef val_t (*NEW_IInitAttributes_icode___icode_base___IInitAttributes___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__icode___icode_base___IClosCall = "init var of IClosCall";
-void INIT_ATTRIBUTES__icode___icode_base___IClosCall(val_t p0);
-typedef void (*INIT_ATTRIBUTES__icode___icode_base___IClosCall_t)(val_t p0);
-val_t NEW_icode___icode_base___IClosCall(void);
-static const char * const LOCATE_CHECKNEW_icode___icode_base___IClosCall = "check new IClosCall";
-void CHECKNEW_icode___icode_base___IClosCall(val_t p0);
-typedef void (*CHECKNEW_icode___icode_base___IClosCall_t)(val_t p0);
-static const char * const LOCATE_NEW_IClosCall_icode___icode_base___IClosCall___init = "new IClosCall icode_base::IClosCall::init";
-val_t NEW_IClosCall_icode___icode_base___IClosCall___init(val_t p0, val_t p1);
-typedef val_t (*NEW_IClosCall_icode___icode_base___IClosCall___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__icode___icode_base___INative = "init var of INative";
-void INIT_ATTRIBUTES__icode___icode_base___INative(val_t p0);
-typedef void (*INIT_ATTRIBUTES__icode___icode_base___INative_t)(val_t p0);
-val_t NEW_icode___icode_base___INative(void);
-static const char * const LOCATE_CHECKNEW_icode___icode_base___INative = "check new INative";
-void CHECKNEW_icode___icode_base___INative(val_t p0);
-typedef void (*CHECKNEW_icode___icode_base___INative_t)(val_t p0);
-static const char * const LOCATE_NEW_INative_icode___icode_base___INative___init = "new INative icode_base::INative::init";
-val_t NEW_INative_icode___icode_base___INative___init(val_t p0, val_t p1);
-typedef val_t (*NEW_INative_icode___icode_base___INative___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__icode___icode_base___IIntValue = "init var of IIntValue";
-void INIT_ATTRIBUTES__icode___icode_base___IIntValue(val_t p0);
-typedef void (*INIT_ATTRIBUTES__icode___icode_base___IIntValue_t)(val_t p0);
-val_t NEW_icode___icode_base___IIntValue(void);
-static const char * const LOCATE_CHECKNEW_icode___icode_base___IIntValue = "check new IIntValue";
-void CHECKNEW_icode___icode_base___IIntValue(val_t p0);
-typedef void (*CHECKNEW_icode___icode_base___IIntValue_t)(val_t p0);
-static const char * const LOCATE_NEW_IIntValue_icode___icode_base___IIntValue___init = "new IIntValue icode_base::IIntValue::init";
-val_t NEW_IIntValue_icode___icode_base___IIntValue___init(val_t p0);
-typedef val_t (*NEW_IIntValue_icode___icode_base___IIntValue___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__icode___icode_base___IBoolValue = "init var of IBoolValue";
-void INIT_ATTRIBUTES__icode___icode_base___IBoolValue(val_t p0);
-typedef void (*INIT_ATTRIBUTES__icode___icode_base___IBoolValue_t)(val_t p0);
-val_t NEW_icode___icode_base___IBoolValue(void);
-static const char * const LOCATE_CHECKNEW_icode___icode_base___IBoolValue = "check new IBoolValue";
-void CHECKNEW_icode___icode_base___IBoolValue(val_t p0);
-typedef void (*CHECKNEW_icode___icode_base___IBoolValue_t)(val_t p0);
-static const char * const LOCATE_NEW_IBoolValue_icode___icode_base___IBoolValue___init = "new IBoolValue icode_base::IBoolValue::init";
-val_t NEW_IBoolValue_icode___icode_base___IBoolValue___init(val_t p0);
-typedef val_t (*NEW_IBoolValue_icode___icode_base___IBoolValue___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__icode___icode_base___IStringValue = "init var of IStringValue";
-void INIT_ATTRIBUTES__icode___icode_base___IStringValue(val_t p0);
-typedef void (*INIT_ATTRIBUTES__icode___icode_base___IStringValue_t)(val_t p0);
-val_t NEW_icode___icode_base___IStringValue(void);
-static const char * const LOCATE_CHECKNEW_icode___icode_base___IStringValue = "check new IStringValue";
-void CHECKNEW_icode___icode_base___IStringValue(val_t p0);
-typedef void (*CHECKNEW_icode___icode_base___IStringValue_t)(val_t p0);
-static const char * const LOCATE_NEW_IStringValue_icode___icode_base___IStringValue___init = "new IStringValue icode_base::IStringValue::init";
-val_t NEW_IStringValue_icode___icode_base___IStringValue___init(val_t p0);
-typedef val_t (*NEW_IStringValue_icode___icode_base___IStringValue___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__icode___icode_base___IFloatValue = "init var of IFloatValue";
-void INIT_ATTRIBUTES__icode___icode_base___IFloatValue(val_t p0);
-typedef void (*INIT_ATTRIBUTES__icode___icode_base___IFloatValue_t)(val_t p0);
-val_t NEW_icode___icode_base___IFloatValue(void);
-static const char * const LOCATE_CHECKNEW_icode___icode_base___IFloatValue = "check new IFloatValue";
-void CHECKNEW_icode___icode_base___IFloatValue(val_t p0);
-typedef void (*CHECKNEW_icode___icode_base___IFloatValue_t)(val_t p0);
-static const char * const LOCATE_NEW_IFloatValue_icode___icode_base___IFloatValue___init = "new IFloatValue icode_base::IFloatValue::init";
-val_t NEW_IFloatValue_icode___icode_base___IFloatValue___init(val_t p0);
-typedef val_t (*NEW_IFloatValue_icode___icode_base___IFloatValue___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__icode___icode_base___ICharValue = "init var of ICharValue";
-void INIT_ATTRIBUTES__icode___icode_base___ICharValue(val_t p0);
-typedef void (*INIT_ATTRIBUTES__icode___icode_base___ICharValue_t)(val_t p0);
-val_t NEW_icode___icode_base___ICharValue(void);
-static const char * const LOCATE_CHECKNEW_icode___icode_base___ICharValue = "check new ICharValue";
-void CHECKNEW_icode___icode_base___ICharValue(val_t p0);
-typedef void (*CHECKNEW_icode___icode_base___ICharValue_t)(val_t p0);
-static const char * const LOCATE_NEW_ICharValue_icode___icode_base___ICharValue___init = "new ICharValue icode_base::ICharValue::init";
-val_t NEW_ICharValue_icode___icode_base___ICharValue___init(val_t p0);
-typedef val_t (*NEW_ICharValue_icode___icode_base___ICharValue___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__icode___icode_base___IMove = "init var of IMove";
-void INIT_ATTRIBUTES__icode___icode_base___IMove(val_t p0);
-typedef void (*INIT_ATTRIBUTES__icode___icode_base___IMove_t)(val_t p0);
-val_t NEW_icode___icode_base___IMove(void);
-static const char * const LOCATE_CHECKNEW_icode___icode_base___IMove = "check new IMove";
-void CHECKNEW_icode___icode_base___IMove(val_t p0);
-typedef void (*CHECKNEW_icode___icode_base___IMove_t)(val_t p0);
-static const char * const LOCATE_NEW_IMove_icode___icode_base___IMove___init = "new IMove icode_base::IMove::init";
-val_t NEW_IMove_icode___icode_base___IMove___init(val_t p0, val_t p1);
-typedef val_t (*NEW_IMove_icode___icode_base___IMove___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__icode___icode_base___IAttrRead = "init var of IAttrRead";
-void INIT_ATTRIBUTES__icode___icode_base___IAttrRead(val_t p0);
-typedef void (*INIT_ATTRIBUTES__icode___icode_base___IAttrRead_t)(val_t p0);
-val_t NEW_icode___icode_base___IAttrRead(void);
-static const char * const LOCATE_CHECKNEW_icode___icode_base___IAttrRead = "check new IAttrRead";
-void CHECKNEW_icode___icode_base___IAttrRead(val_t p0);
-typedef void (*CHECKNEW_icode___icode_base___IAttrRead_t)(val_t p0);
-static const char * const LOCATE_NEW_IAttrRead_icode___icode_base___IAttrRead___init = "new IAttrRead icode_base::IAttrRead::init";
-val_t NEW_IAttrRead_icode___icode_base___IAttrRead___init(val_t p0, val_t p1);
-typedef val_t (*NEW_IAttrRead_icode___icode_base___IAttrRead___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__icode___icode_base___IAttrWrite = "init var of IAttrWrite";
-void INIT_ATTRIBUTES__icode___icode_base___IAttrWrite(val_t p0);
-typedef void (*INIT_ATTRIBUTES__icode___icode_base___IAttrWrite_t)(val_t p0);
-val_t NEW_icode___icode_base___IAttrWrite(void);
-static const char * const LOCATE_CHECKNEW_icode___icode_base___IAttrWrite = "check new IAttrWrite";
-void CHECKNEW_icode___icode_base___IAttrWrite(val_t p0);
-typedef void (*CHECKNEW_icode___icode_base___IAttrWrite_t)(val_t p0);
-static const char * const LOCATE_NEW_IAttrWrite_icode___icode_base___IAttrWrite___init = "new IAttrWrite icode_base::IAttrWrite::init";
-val_t NEW_IAttrWrite_icode___icode_base___IAttrWrite___init(val_t p0, val_t p1, val_t p2);
-typedef val_t (*NEW_IAttrWrite_icode___icode_base___IAttrWrite___init_t)(val_t p0, val_t p1, val_t p2);
-static const char * const LOCATE_INIT_ATTRIBUTES__icode___icode_base___IAttrIsset = "init var of IAttrIsset";
-void INIT_ATTRIBUTES__icode___icode_base___IAttrIsset(val_t p0);
-typedef void (*INIT_ATTRIBUTES__icode___icode_base___IAttrIsset_t)(val_t p0);
-val_t NEW_icode___icode_base___IAttrIsset(void);
-static const char * const LOCATE_CHECKNEW_icode___icode_base___IAttrIsset = "check new IAttrIsset";
-void CHECKNEW_icode___icode_base___IAttrIsset(val_t p0);
-typedef void (*CHECKNEW_icode___icode_base___IAttrIsset_t)(val_t p0);
-static const char * const LOCATE_NEW_IAttrIsset_icode___icode_base___IAttrIsset___init = "new IAttrIsset icode_base::IAttrIsset::init";
-val_t NEW_IAttrIsset_icode___icode_base___IAttrIsset___init(val_t p0, val_t p1);
-typedef val_t (*NEW_IAttrIsset_icode___icode_base___IAttrIsset___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__icode___icode_base___ITypeCheck = "init var of ITypeCheck";
-void INIT_ATTRIBUTES__icode___icode_base___ITypeCheck(val_t p0);
-typedef void (*INIT_ATTRIBUTES__icode___icode_base___ITypeCheck_t)(val_t p0);
-val_t NEW_icode___icode_base___ITypeCheck(void);
-static const char * const LOCATE_CHECKNEW_icode___icode_base___ITypeCheck = "check new ITypeCheck";
-void CHECKNEW_icode___icode_base___ITypeCheck(val_t p0);
-typedef void (*CHECKNEW_icode___icode_base___ITypeCheck_t)(val_t p0);
-static const char * const LOCATE_NEW_ITypeCheck_icode___icode_base___ITypeCheck___init = "new ITypeCheck icode_base::ITypeCheck::init";
-val_t NEW_ITypeCheck_icode___icode_base___ITypeCheck___init(val_t p0, val_t p1, val_t p2);
-typedef val_t (*NEW_ITypeCheck_icode___icode_base___ITypeCheck___init_t)(val_t p0, val_t p1, val_t p2);
-static const char * const LOCATE_INIT_ATTRIBUTES__icode___icode_base___IIs = "init var of IIs";
-void INIT_ATTRIBUTES__icode___icode_base___IIs(val_t p0);
-typedef void (*INIT_ATTRIBUTES__icode___icode_base___IIs_t)(val_t p0);
-val_t NEW_icode___icode_base___IIs(void);
-static const char * const LOCATE_CHECKNEW_icode___icode_base___IIs = "check new IIs";
-void CHECKNEW_icode___icode_base___IIs(val_t p0);
-typedef void (*CHECKNEW_icode___icode_base___IIs_t)(val_t p0);
-static const char * const LOCATE_NEW_IIs_icode___icode_base___IIs___init = "new IIs icode_base::IIs::init";
-val_t NEW_IIs_icode___icode_base___IIs___init(val_t p0, val_t p1);
-typedef val_t (*NEW_IIs_icode___icode_base___IIs___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__icode___icode_base___INot = "init var of INot";
-void INIT_ATTRIBUTES__icode___icode_base___INot(val_t p0);
-typedef void (*INIT_ATTRIBUTES__icode___icode_base___INot_t)(val_t p0);
-val_t NEW_icode___icode_base___INot(void);
-static const char * const LOCATE_CHECKNEW_icode___icode_base___INot = "check new INot";
-void CHECKNEW_icode___icode_base___INot(val_t p0);
-typedef void (*CHECKNEW_icode___icode_base___INot_t)(val_t p0);
-static const char * const LOCATE_NEW_INot_icode___icode_base___INot___init = "new INot icode_base::INot::init";
-val_t NEW_INot_icode___icode_base___INot___init(val_t p0);
-typedef val_t (*NEW_INot_icode___icode_base___INot___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__icode___icode_base___IOnce = "init var of IOnce";
-void INIT_ATTRIBUTES__icode___icode_base___IOnce(val_t p0);
-typedef void (*INIT_ATTRIBUTES__icode___icode_base___IOnce_t)(val_t p0);
-val_t NEW_icode___icode_base___IOnce(void);
-static const char * const LOCATE_CHECKNEW_icode___icode_base___IOnce = "check new IOnce";
-void CHECKNEW_icode___icode_base___IOnce(val_t p0);
-typedef void (*CHECKNEW_icode___icode_base___IOnce_t)(val_t p0);
-static const char * const LOCATE_NEW_IOnce_icode___icode_base___IOnce___init = "new IOnce icode_base::IOnce::init";
-val_t NEW_IOnce_icode___icode_base___IOnce___init(void);
-typedef val_t (*NEW_IOnce_icode___icode_base___IOnce___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__icode___icode_base___IHasClos = "init var of IHasClos";
-void INIT_ATTRIBUTES__icode___icode_base___IHasClos(val_t p0);
-typedef void (*INIT_ATTRIBUTES__icode___icode_base___IHasClos_t)(val_t p0);
-val_t NEW_icode___icode_base___IHasClos(void);
-static const char * const LOCATE_CHECKNEW_icode___icode_base___IHasClos = "check new IHasClos";
-void CHECKNEW_icode___icode_base___IHasClos(val_t p0);
-typedef void (*CHECKNEW_icode___icode_base___IHasClos_t)(val_t p0);
-static const char * const LOCATE_NEW_IHasClos_icode___icode_base___IHasClos___init = "new IHasClos icode_base::IHasClos::init";
-val_t NEW_IHasClos_icode___icode_base___IHasClos___init(val_t p0);
-typedef val_t (*NEW_IHasClos_icode___icode_base___IHasClos___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__icode___icode_builder___ICodeBuilder = "init var of ICodeBuilder";
-void INIT_ATTRIBUTES__icode___icode_builder___ICodeBuilder(val_t p0);
-typedef void (*INIT_ATTRIBUTES__icode___icode_builder___ICodeBuilder_t)(val_t p0);
-val_t NEW_icode___icode_builder___ICodeBuilder(void);
-static const char * const LOCATE_CHECKNEW_icode___icode_builder___ICodeBuilder = "check new ICodeBuilder";
-void CHECKNEW_icode___icode_builder___ICodeBuilder(val_t p0);
-typedef void (*CHECKNEW_icode___icode_builder___ICodeBuilder_t)(val_t p0);
-static const char * const LOCATE_NEW_ICodeBuilder_icode___icode_builder___ICodeBuilder___init = "new ICodeBuilder icode_builder::ICodeBuilder::init";
-val_t NEW_ICodeBuilder_icode___icode_builder___ICodeBuilder___init(val_t p0, val_t p1);
-typedef val_t (*NEW_ICodeBuilder_icode___icode_builder___ICodeBuilder___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__icode___icode_tools___ICodeVisitor = "init var of ICodeVisitor";
-void INIT_ATTRIBUTES__icode___icode_tools___ICodeVisitor(val_t p0);
-typedef void (*INIT_ATTRIBUTES__icode___icode_tools___ICodeVisitor_t)(val_t p0);
-val_t NEW_icode___icode_tools___ICodeVisitor(void);
-static const char * const LOCATE_CHECKNEW_icode___icode_tools___ICodeVisitor = "check new ICodeVisitor";
-void CHECKNEW_icode___icode_tools___ICodeVisitor(val_t p0);
-typedef void (*CHECKNEW_icode___icode_tools___ICodeVisitor_t)(val_t p0);
-static const char * const LOCATE_NEW_ICodeVisitor_icode___icode_tools___ICodeVisitor___init = "new ICodeVisitor icode_tools::ICodeVisitor::init";
-val_t NEW_ICodeVisitor_icode___icode_tools___ICodeVisitor___init(void);
-typedef val_t (*NEW_ICodeVisitor_icode___icode_tools___ICodeVisitor___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__icode___icode_tools___ICodeDupContext = "init var of ICodeDupContext";
-void INIT_ATTRIBUTES__icode___icode_tools___ICodeDupContext(val_t p0);
-typedef void (*INIT_ATTRIBUTES__icode___icode_tools___ICodeDupContext_t)(val_t p0);
-val_t NEW_icode___icode_tools___ICodeDupContext(void);
-static const char * const LOCATE_CHECKNEW_icode___icode_tools___ICodeDupContext = "check new ICodeDupContext";
-void CHECKNEW_icode___icode_tools___ICodeDupContext(val_t p0);
-typedef void (*CHECKNEW_icode___icode_tools___ICodeDupContext_t)(val_t p0);
-static const char * const LOCATE_NEW_ICodeDupContext_icode___icode_tools___ICodeDupContext___init = "new ICodeDupContext icode_tools::ICodeDupContext::init";
-val_t NEW_ICodeDupContext_icode___icode_tools___ICodeDupContext___init(val_t p0);
-typedef val_t (*NEW_ICodeDupContext_icode___icode_tools___ICodeDupContext___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__syntax___flow___RootFlowContext = "init var of RootFlowContext";
 void INIT_ATTRIBUTES__syntax___flow___RootFlowContext(val_t p0);
 typedef void (*INIT_ATTRIBUTES__syntax___flow___RootFlowContext_t)(val_t p0);
 val_t NEW_syntax___flow___RootFlowContext(void);
-static const char * const LOCATE_CHECKNEW_syntax___flow___RootFlowContext = "check new RootFlowContext";
 void CHECKNEW_syntax___flow___RootFlowContext(val_t p0);
 typedef void (*CHECKNEW_syntax___flow___RootFlowContext_t)(val_t p0);
-static const char * const LOCATE_NEW_RootFlowContext_syntax___flow___RootFlowContext___init = "new RootFlowContext flow::RootFlowContext::init";
 val_t NEW_RootFlowContext_syntax___flow___RootFlowContext___init(val_t p0, val_t p1);
 typedef val_t (*NEW_RootFlowContext_syntax___flow___RootFlowContext___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__syntax___flow___SubFlowContext = "init var of SubFlowContext";
 void INIT_ATTRIBUTES__syntax___flow___SubFlowContext(val_t p0);
 typedef void (*INIT_ATTRIBUTES__syntax___flow___SubFlowContext_t)(val_t p0);
 val_t NEW_syntax___flow___SubFlowContext(void);
-static const char * const LOCATE_CHECKNEW_syntax___flow___SubFlowContext = "check new SubFlowContext";
 void CHECKNEW_syntax___flow___SubFlowContext(val_t p0);
 typedef void (*CHECKNEW_syntax___flow___SubFlowContext_t)(val_t p0);
-static const char * const LOCATE_NEW_SubFlowContext_syntax___flow___SubFlowContext___with_prev = "new SubFlowContext flow::SubFlowContext::with_prev";
 val_t NEW_SubFlowContext_syntax___flow___SubFlowContext___with_prev(val_t p0, val_t p1);
 typedef val_t (*NEW_SubFlowContext_syntax___flow___SubFlowContext___with_prev_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__syntax___flow___CastFlowContext = "init var of CastFlowContext";
 void INIT_ATTRIBUTES__syntax___flow___CastFlowContext(val_t p0);
 typedef void (*INIT_ATTRIBUTES__syntax___flow___CastFlowContext_t)(val_t p0);
 val_t NEW_syntax___flow___CastFlowContext(void);
-static const char * const LOCATE_CHECKNEW_syntax___flow___CastFlowContext = "check new CastFlowContext";
 void CHECKNEW_syntax___flow___CastFlowContext(val_t p0);
 typedef void (*CHECKNEW_syntax___flow___CastFlowContext_t)(val_t p0);
-static const char * const LOCATE_NEW_CastFlowContext_syntax___flow___CastFlowContext___init = "new CastFlowContext flow::CastFlowContext::init";
 val_t NEW_CastFlowContext_syntax___flow___CastFlowContext___init(val_t p0, val_t p1, val_t p2, val_t p3);
 typedef val_t (*NEW_CastFlowContext_syntax___flow___CastFlowContext___init_t)(val_t p0, val_t p1, val_t p2, val_t p3);
-static const char * const LOCATE_INIT_ATTRIBUTES__syntax___flow___MergeFlowContext = "init var of MergeFlowContext";
 void INIT_ATTRIBUTES__syntax___flow___MergeFlowContext(val_t p0);
 typedef void (*INIT_ATTRIBUTES__syntax___flow___MergeFlowContext_t)(val_t p0);
 val_t NEW_syntax___flow___MergeFlowContext(void);
-static const char * const LOCATE_CHECKNEW_syntax___flow___MergeFlowContext = "check new MergeFlowContext";
 void CHECKNEW_syntax___flow___MergeFlowContext(val_t p0);
 typedef void (*CHECKNEW_syntax___flow___MergeFlowContext_t)(val_t p0);
-static const char * const LOCATE_NEW_MergeFlowContext_syntax___flow___MergeFlowContext___init = "new MergeFlowContext flow::MergeFlowContext::init";
 val_t NEW_MergeFlowContext_syntax___flow___MergeFlowContext___init(val_t p0, val_t p1, val_t p2);
 typedef val_t (*NEW_MergeFlowContext_syntax___flow___MergeFlowContext___init_t)(val_t p0, val_t p1, val_t p2);
-static const char * const LOCATE_INIT_ATTRIBUTES__syntax___scope___ScopeContext = "init var of ScopeContext";
 void INIT_ATTRIBUTES__syntax___scope___ScopeContext(val_t p0);
 typedef void (*INIT_ATTRIBUTES__syntax___scope___ScopeContext_t)(val_t p0);
 val_t NEW_syntax___scope___ScopeContext(void);
-static const char * const LOCATE_CHECKNEW_syntax___scope___ScopeContext = "check new ScopeContext";
 void CHECKNEW_syntax___scope___ScopeContext(val_t p0);
 typedef void (*CHECKNEW_syntax___scope___ScopeContext_t)(val_t p0);
-static const char * const LOCATE_NEW_ScopeContext_syntax___scope___ScopeContext___init = "new ScopeContext scope::ScopeContext::init";
 val_t NEW_ScopeContext_syntax___scope___ScopeContext___init(val_t p0);
 typedef val_t (*NEW_ScopeContext_syntax___scope___ScopeContext___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__syntax___scope___ScopeBlock = "init var of ScopeBlock";
 void INIT_ATTRIBUTES__syntax___scope___ScopeBlock(val_t p0);
 typedef void (*INIT_ATTRIBUTES__syntax___scope___ScopeBlock_t)(val_t p0);
 val_t NEW_syntax___scope___ScopeBlock(void);
-static const char * const LOCATE_CHECKNEW_syntax___scope___ScopeBlock = "check new ScopeBlock";
 void CHECKNEW_syntax___scope___ScopeBlock(val_t p0);
 typedef void (*CHECKNEW_syntax___scope___ScopeBlock_t)(val_t p0);
-static const char * const LOCATE_NEW_ScopeBlock_syntax___scope___ScopeBlock___init = "new ScopeBlock scope::ScopeBlock::init";
 val_t NEW_ScopeBlock_syntax___scope___ScopeBlock___init(val_t p0);
 typedef val_t (*NEW_ScopeBlock_syntax___scope___ScopeBlock___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__syntax___scope___EscapableBlock = "init var of EscapableBlock";
 void INIT_ATTRIBUTES__syntax___scope___EscapableBlock(val_t p0);
 typedef void (*INIT_ATTRIBUTES__syntax___scope___EscapableBlock_t)(val_t p0);
 val_t NEW_syntax___scope___EscapableBlock(void);
-static const char * const LOCATE_CHECKNEW_syntax___scope___EscapableBlock = "check new EscapableBlock";
 void CHECKNEW_syntax___scope___EscapableBlock(val_t p0);
 typedef void (*CHECKNEW_syntax___scope___EscapableBlock_t)(val_t p0);
-static const char * const LOCATE_NEW_EscapableBlock_syntax___scope___EscapableBlock___init = "new EscapableBlock scope::EscapableBlock::init";
 val_t NEW_EscapableBlock_syntax___scope___EscapableBlock___init(val_t p0);
 typedef val_t (*NEW_EscapableBlock_syntax___scope___EscapableBlock___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__syntax___scope___BreakOnlyEscapableBlock = "init var of BreakOnlyEscapableBlock";
 void INIT_ATTRIBUTES__syntax___scope___BreakOnlyEscapableBlock(val_t p0);
 typedef void (*INIT_ATTRIBUTES__syntax___scope___BreakOnlyEscapableBlock_t)(val_t p0);
 val_t NEW_syntax___scope___BreakOnlyEscapableBlock(void);
-static const char * const LOCATE_CHECKNEW_syntax___scope___BreakOnlyEscapableBlock = "check new BreakOnlyEscapableBlock";
 void CHECKNEW_syntax___scope___BreakOnlyEscapableBlock(val_t p0);
 typedef void (*CHECKNEW_syntax___scope___BreakOnlyEscapableBlock_t)(val_t p0);
-static const char * const LOCATE_NEW_BreakOnlyEscapableBlock_syntax___scope___BreakOnlyEscapableBlock___init = "new BreakOnlyEscapableBlock scope::BreakOnlyEscapableBlock::init";
 val_t NEW_BreakOnlyEscapableBlock_syntax___scope___BreakOnlyEscapableBlock___init(val_t p0);
 typedef val_t (*NEW_BreakOnlyEscapableBlock_syntax___scope___BreakOnlyEscapableBlock___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__syntax___scope___EscapableClosure = "init var of EscapableClosure";
 void INIT_ATTRIBUTES__syntax___scope___EscapableClosure(val_t p0);
 typedef void (*INIT_ATTRIBUTES__syntax___scope___EscapableClosure_t)(val_t p0);
 val_t NEW_syntax___scope___EscapableClosure(void);
-static const char * const LOCATE_CHECKNEW_syntax___scope___EscapableClosure = "check new EscapableClosure";
 void CHECKNEW_syntax___scope___EscapableClosure(val_t p0);
 typedef void (*CHECKNEW_syntax___scope___EscapableClosure_t)(val_t p0);
-static const char * const LOCATE_NEW_EscapableClosure_syntax___scope___EscapableClosure___init = "new EscapableClosure scope::EscapableClosure::init";
 val_t NEW_EscapableClosure_syntax___scope___EscapableClosure___init(val_t p0, val_t p1, val_t p2);
 typedef val_t (*NEW_EscapableClosure_syntax___scope___EscapableClosure___init_t)(val_t p0, val_t p1, val_t p2);
-static const char * const LOCATE_INIT_ATTRIBUTES__syntax___scope___AEscapeExpr = "init var of AEscapeExpr";
-void INIT_ATTRIBUTES__syntax___scope___AEscapeExpr(val_t p0);
-typedef void (*INIT_ATTRIBUTES__syntax___scope___AEscapeExpr_t)(val_t p0);
-val_t NEW_syntax___scope___AEscapeExpr(void);
-static const char * const LOCATE_CHECKNEW_syntax___scope___AEscapeExpr = "check new AEscapeExpr";
-void CHECKNEW_syntax___scope___AEscapeExpr(val_t p0);
-typedef void (*CHECKNEW_syntax___scope___AEscapeExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_AEscapeExpr_parser___parser_nodes___ANode___init = "new AEscapeExpr parser_nodes::ANode::init";
-val_t NEW_AEscapeExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AEscapeExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__syntax___typing___TypingVisitor = "init var of TypingVisitor";
 void INIT_ATTRIBUTES__syntax___typing___TypingVisitor(val_t p0);
 typedef void (*INIT_ATTRIBUTES__syntax___typing___TypingVisitor_t)(val_t p0);
 val_t NEW_syntax___typing___TypingVisitor(void);
-static const char * const LOCATE_CHECKNEW_syntax___typing___TypingVisitor = "check new TypingVisitor";
 void CHECKNEW_syntax___typing___TypingVisitor(val_t p0);
 typedef void (*CHECKNEW_syntax___typing___TypingVisitor_t)(val_t p0);
-static const char * const LOCATE_NEW_TypingVisitor_syntax___typing___TypingVisitor___init = "new TypingVisitor typing::TypingVisitor::init";
 val_t NEW_TypingVisitor_syntax___typing___TypingVisitor___init(val_t p0, val_t p1);
 typedef val_t (*NEW_TypingVisitor_syntax___typing___TypingVisitor___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__syntax___typing___AAbsControl = "init var of AAbsControl";
-void INIT_ATTRIBUTES__syntax___typing___AAbsControl(val_t p0);
-typedef void (*INIT_ATTRIBUTES__syntax___typing___AAbsControl_t)(val_t p0);
-val_t NEW_syntax___typing___AAbsControl(void);
-static const char * const LOCATE_CHECKNEW_syntax___typing___AAbsControl = "check new AAbsControl";
-void CHECKNEW_syntax___typing___AAbsControl(val_t p0);
-typedef void (*CHECKNEW_syntax___typing___AAbsControl_t)(val_t p0);
-static const char * const LOCATE_NEW_AAbsControl_parser___parser_nodes___ANode___init = "new AAbsControl parser_nodes::ANode::init";
-val_t NEW_AAbsControl_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AAbsControl_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__syntax___typing___ATypeCheckExpr = "init var of ATypeCheckExpr";
-void INIT_ATTRIBUTES__syntax___typing___ATypeCheckExpr(val_t p0);
-typedef void (*INIT_ATTRIBUTES__syntax___typing___ATypeCheckExpr_t)(val_t p0);
-val_t NEW_syntax___typing___ATypeCheckExpr(void);
-static const char * const LOCATE_CHECKNEW_syntax___typing___ATypeCheckExpr = "check new ATypeCheckExpr";
-void CHECKNEW_syntax___typing___ATypeCheckExpr(val_t p0);
-typedef void (*CHECKNEW_syntax___typing___ATypeCheckExpr_t)(val_t p0);
-static const char * const LOCATE_NEW_ATypeCheckExpr_parser___parser_nodes___ANode___init = "new ATypeCheckExpr parser_nodes::ANode::init";
-val_t NEW_ATypeCheckExpr_parser___parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_ATypeCheckExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__syntax___icode_generation___A2IContext = "init var of A2IContext";
+void INIT_ATTRIBUTES__primitive_info___PrimitiveInfo(val_t p0);
+typedef void (*INIT_ATTRIBUTES__primitive_info___PrimitiveInfo_t)(val_t p0);
+val_t NEW_primitive_info___PrimitiveInfo(void);
+void CHECKNEW_primitive_info___PrimitiveInfo(val_t p0);
+typedef void (*CHECKNEW_primitive_info___PrimitiveInfo_t)(val_t p0);
+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);
 void INIT_ATTRIBUTES__syntax___icode_generation___A2IContext(val_t p0);
 typedef void (*INIT_ATTRIBUTES__syntax___icode_generation___A2IContext_t)(val_t p0);
 val_t NEW_syntax___icode_generation___A2IContext(void);
-static const char * const LOCATE_CHECKNEW_syntax___icode_generation___A2IContext = "check new A2IContext";
 void CHECKNEW_syntax___icode_generation___A2IContext(val_t p0);
 typedef void (*CHECKNEW_syntax___icode_generation___A2IContext_t)(val_t p0);
-static const char * const LOCATE_NEW_A2IContext_syntax___icode_generation___A2IContext___init = "new A2IContext icode_generation::A2IContext::init";
 val_t NEW_A2IContext_syntax___icode_generation___A2IContext___init(val_t p0, val_t p1, val_t p2);
 typedef val_t (*NEW_A2IContext_syntax___icode_generation___A2IContext___init_t)(val_t p0, val_t p1, val_t p2);
-static const char * const LOCATE_INIT_ATTRIBUTES__syntax___icode_generation___A2IVisitor = "init var of A2IVisitor";
 void INIT_ATTRIBUTES__syntax___icode_generation___A2IVisitor(val_t p0);
 typedef void (*INIT_ATTRIBUTES__syntax___icode_generation___A2IVisitor_t)(val_t p0);
 val_t NEW_syntax___icode_generation___A2IVisitor(void);
-static const char * const LOCATE_CHECKNEW_syntax___icode_generation___A2IVisitor = "check new A2IVisitor";
 void CHECKNEW_syntax___icode_generation___A2IVisitor(val_t p0);
 typedef void (*CHECKNEW_syntax___icode_generation___A2IVisitor_t)(val_t p0);
-static const char * const LOCATE_NEW_A2IVisitor_syntax___icode_generation___A2IVisitor___init = "new A2IVisitor icode_generation::A2IVisitor::init";
 val_t NEW_A2IVisitor_syntax___icode_generation___A2IVisitor___init(val_t p0, val_t p1);
 typedef val_t (*NEW_A2IVisitor_syntax___icode_generation___A2IVisitor___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__syntax___SrcModuleLoader = "init var of SrcModuleLoader";
+void INIT_ATTRIBUTES__syntax___mmbuilder___CSHSorter(val_t p0);
+typedef void (*INIT_ATTRIBUTES__syntax___mmbuilder___CSHSorter_t)(val_t p0);
+val_t NEW_syntax___mmbuilder___CSHSorter(void);
+void CHECKNEW_syntax___mmbuilder___CSHSorter(val_t p0);
+typedef void (*CHECKNEW_syntax___mmbuilder___CSHSorter_t)(val_t p0);
+val_t NEW_CSHSorter_syntax___mmbuilder___CSHSorter___init(void);
+typedef val_t (*NEW_CSHSorter_syntax___mmbuilder___CSHSorter___init_t)(void);
+void INIT_ATTRIBUTES__syntax___mmbuilder___MMSrcAncestor(val_t p0);
+typedef void (*INIT_ATTRIBUTES__syntax___mmbuilder___MMSrcAncestor_t)(val_t p0);
+val_t NEW_syntax___mmbuilder___MMSrcAncestor(void);
+void CHECKNEW_syntax___mmbuilder___MMSrcAncestor(val_t p0);
+typedef void (*CHECKNEW_syntax___mmbuilder___MMSrcAncestor_t)(val_t p0);
+val_t NEW_MMSrcAncestor_syntax___mmbuilder___MMSrcAncestor___init(val_t p0);
+typedef val_t (*NEW_MMSrcAncestor_syntax___mmbuilder___MMSrcAncestor___init_t)(val_t p0);
+void INIT_ATTRIBUTES__syntax___mmbuilder___ClassBuilderVisitor(val_t p0);
+typedef void (*INIT_ATTRIBUTES__syntax___mmbuilder___ClassBuilderVisitor_t)(val_t p0);
+val_t NEW_syntax___mmbuilder___ClassBuilderVisitor(void);
+void CHECKNEW_syntax___mmbuilder___ClassBuilderVisitor(val_t p0);
+typedef void (*CHECKNEW_syntax___mmbuilder___ClassBuilderVisitor_t)(val_t p0);
+val_t NEW_ClassBuilderVisitor_syntax___mmbuilder___ClassBuilderVisitor___init(val_t p0, val_t p1);
+typedef val_t (*NEW_ClassBuilderVisitor_syntax___mmbuilder___ClassBuilderVisitor___init_t)(val_t p0, val_t p1);
+void INIT_ATTRIBUTES__syntax___mmbuilder___ClassSpecializationBuilderVisitor(val_t p0);
+typedef void (*INIT_ATTRIBUTES__syntax___mmbuilder___ClassSpecializationBuilderVisitor_t)(val_t p0);
+val_t NEW_syntax___mmbuilder___ClassSpecializationBuilderVisitor(void);
+void CHECKNEW_syntax___mmbuilder___ClassSpecializationBuilderVisitor(val_t p0);
+typedef void (*CHECKNEW_syntax___mmbuilder___ClassSpecializationBuilderVisitor_t)(val_t p0);
+val_t NEW_ClassSpecializationBuilderVisitor_syntax___mmbuilder___ClassSpecializationBuilderVisitor___init(val_t p0, val_t p1);
+typedef val_t (*NEW_ClassSpecializationBuilderVisitor_syntax___mmbuilder___ClassSpecializationBuilderVisitor___init_t)(val_t p0, val_t p1);
+void INIT_ATTRIBUTES__syntax___mmbuilder___ClassAncestorBuilder(val_t p0);
+typedef void (*INIT_ATTRIBUTES__syntax___mmbuilder___ClassAncestorBuilder_t)(val_t p0);
+val_t NEW_syntax___mmbuilder___ClassAncestorBuilder(void);
+void CHECKNEW_syntax___mmbuilder___ClassAncestorBuilder(val_t p0);
+typedef void (*CHECKNEW_syntax___mmbuilder___ClassAncestorBuilder_t)(val_t p0);
+val_t NEW_ClassAncestorBuilder_syntax___mmbuilder___ClassAncestorBuilder___init(val_t p0, val_t p1);
+typedef val_t (*NEW_ClassAncestorBuilder_syntax___mmbuilder___ClassAncestorBuilder___init_t)(val_t p0, val_t p1);
+void INIT_ATTRIBUTES__syntax___mmbuilder___ClassVerifierVisitor(val_t p0);
+typedef void (*INIT_ATTRIBUTES__syntax___mmbuilder___ClassVerifierVisitor_t)(val_t p0);
+val_t NEW_syntax___mmbuilder___ClassVerifierVisitor(void);
+void CHECKNEW_syntax___mmbuilder___ClassVerifierVisitor(val_t p0);
+typedef void (*CHECKNEW_syntax___mmbuilder___ClassVerifierVisitor_t)(val_t p0);
+val_t NEW_ClassVerifierVisitor_syntax___mmbuilder___ClassVerifierVisitor___init(val_t p0, val_t p1);
+typedef val_t (*NEW_ClassVerifierVisitor_syntax___mmbuilder___ClassVerifierVisitor___init_t)(val_t p0, val_t p1);
+void INIT_ATTRIBUTES__syntax___mmbuilder___PropertyBuilderVisitor(val_t p0);
+typedef void (*INIT_ATTRIBUTES__syntax___mmbuilder___PropertyBuilderVisitor_t)(val_t p0);
+val_t NEW_syntax___mmbuilder___PropertyBuilderVisitor(void);
+void CHECKNEW_syntax___mmbuilder___PropertyBuilderVisitor(val_t p0);
+typedef void (*CHECKNEW_syntax___mmbuilder___PropertyBuilderVisitor_t)(val_t p0);
+val_t NEW_PropertyBuilderVisitor_syntax___mmbuilder___PropertyBuilderVisitor___init(val_t p0, val_t p1);
+typedef val_t (*NEW_PropertyBuilderVisitor_syntax___mmbuilder___PropertyBuilderVisitor___init_t)(val_t p0, val_t p1);
+void INIT_ATTRIBUTES__syntax___mmbuilder___PropertyVerifierVisitor(val_t p0);
+typedef void (*INIT_ATTRIBUTES__syntax___mmbuilder___PropertyVerifierVisitor_t)(val_t p0);
+val_t NEW_syntax___mmbuilder___PropertyVerifierVisitor(void);
+void CHECKNEW_syntax___mmbuilder___PropertyVerifierVisitor(val_t p0);
+typedef void (*CHECKNEW_syntax___mmbuilder___PropertyVerifierVisitor_t)(val_t p0);
+val_t NEW_PropertyVerifierVisitor_syntax___mmbuilder___PropertyVerifierVisitor___init(val_t p0, val_t p1);
+typedef val_t (*NEW_PropertyVerifierVisitor_syntax___mmbuilder___PropertyVerifierVisitor___init_t)(val_t p0, val_t p1);
+void INIT_ATTRIBUTES__syntax___mmbuilder___SignatureBuilder(val_t p0);
+typedef void (*INIT_ATTRIBUTES__syntax___mmbuilder___SignatureBuilder_t)(val_t p0);
+val_t NEW_syntax___mmbuilder___SignatureBuilder(void);
+void CHECKNEW_syntax___mmbuilder___SignatureBuilder(val_t p0);
+typedef void (*CHECKNEW_syntax___mmbuilder___SignatureBuilder_t)(val_t p0);
+val_t NEW_SignatureBuilder_syntax___mmbuilder___SignatureBuilder___init(void);
+typedef val_t (*NEW_SignatureBuilder_syntax___mmbuilder___SignatureBuilder___init_t)(void);
+void INIT_ATTRIBUTES__syntax___mmbuilder___MethidAccumulator(val_t p0);
+typedef void (*INIT_ATTRIBUTES__syntax___mmbuilder___MethidAccumulator_t)(val_t p0);
+val_t NEW_syntax___mmbuilder___MethidAccumulator(void);
+void CHECKNEW_syntax___mmbuilder___MethidAccumulator(val_t p0);
+typedef void (*CHECKNEW_syntax___mmbuilder___MethidAccumulator_t)(val_t p0);
+val_t NEW_MethidAccumulator_parser___parser_prod___Visitor___init(void);
+typedef val_t (*NEW_MethidAccumulator_parser___parser_prod___Visitor___init_t)(void);
+void INIT_ATTRIBUTES__syntax___extern_inline___ExternCode(val_t p0);
+typedef void (*INIT_ATTRIBUTES__syntax___extern_inline___ExternCode_t)(val_t p0);
+val_t NEW_syntax___extern_inline___ExternCode(void);
+void CHECKNEW_syntax___extern_inline___ExternCode(val_t p0);
+typedef void (*CHECKNEW_syntax___extern_inline___ExternCode_t)(val_t p0);
+val_t NEW_ExternCode_syntax___extern_inline___ExternCode___init(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_ExternCode_syntax___extern_inline___ExternCode___init_t)(val_t p0, val_t p1, val_t p2);
 void INIT_ATTRIBUTES__syntax___SrcModuleLoader(val_t p0);
 typedef void (*INIT_ATTRIBUTES__syntax___SrcModuleLoader_t)(val_t p0);
 val_t NEW_syntax___SrcModuleLoader(void);
-static const char * const LOCATE_CHECKNEW_syntax___SrcModuleLoader = "check new SrcModuleLoader";
 void CHECKNEW_syntax___SrcModuleLoader(val_t p0);
 typedef void (*CHECKNEW_syntax___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__abstracttool___AbstractCompiler = "init var of AbstractCompiler";
-void INIT_ATTRIBUTES__abstracttool___AbstractCompiler(val_t p0);
-typedef void (*INIT_ATTRIBUTES__abstracttool___AbstractCompiler_t)(val_t p0);
-val_t NEW_abstracttool___AbstractCompiler(void);
-static const char * const LOCATE_CHECKNEW_abstracttool___AbstractCompiler = "check new AbstractCompiler";
-void CHECKNEW_abstracttool___AbstractCompiler(val_t p0);
-typedef void (*CHECKNEW_abstracttool___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___Program = "init var of Program";
 void INIT_ATTRIBUTES__program___Program(val_t p0);
 typedef void (*INIT_ATTRIBUTES__program___Program_t)(val_t p0);
 val_t NEW_program___Program(void);
-static const char * const LOCATE_CHECKNEW_program___Program = "check new Program";
 void CHECKNEW_program___Program(val_t p0);
 typedef void (*CHECKNEW_program___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__compiling___compiling_writer___Writer = "init var of Writer";
-void INIT_ATTRIBUTES__compiling___compiling_writer___Writer(val_t p0);
-typedef void (*INIT_ATTRIBUTES__compiling___compiling_writer___Writer_t)(val_t p0);
-val_t NEW_compiling___compiling_writer___Writer(void);
-static const char * const LOCATE_CHECKNEW_compiling___compiling_writer___Writer = "check new Writer";
-void CHECKNEW_compiling___compiling_writer___Writer(val_t p0);
-typedef void (*CHECKNEW_compiling___compiling_writer___Writer_t)(val_t p0);
-static const char * const LOCATE_NEW_Writer_compiling___compiling_writer___Writer___init = "new Writer compiling_writer::Writer::init";
-val_t NEW_Writer_compiling___compiling_writer___Writer___init(void);
-typedef val_t (*NEW_Writer_compiling___compiling_writer___Writer___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__compiling___compiling_writer___WriterCoreNode = "init var of WriterCoreNode";
-void INIT_ATTRIBUTES__compiling___compiling_writer___WriterCoreNode(val_t p0);
-typedef void (*INIT_ATTRIBUTES__compiling___compiling_writer___WriterCoreNode_t)(val_t p0);
-val_t NEW_compiling___compiling_writer___WriterCoreNode(void);
-static const char * const LOCATE_CHECKNEW_compiling___compiling_writer___WriterCoreNode = "check new WriterCoreNode";
-void CHECKNEW_compiling___compiling_writer___WriterCoreNode(val_t p0);
-typedef void (*CHECKNEW_compiling___compiling_writer___WriterCoreNode_t)(val_t p0);
-static const char * const LOCATE_NEW_WriterCoreNode_compiling___compiling_writer___WriterCoreNode___init = "new WriterCoreNode compiling_writer::WriterCoreNode::init";
-val_t NEW_WriterCoreNode_compiling___compiling_writer___WriterCoreNode___init(val_t p0);
-typedef val_t (*NEW_WriterCoreNode_compiling___compiling_writer___WriterCoreNode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__compiling___compiling_writer___WriterStrings = "init var of WriterStrings";
-void INIT_ATTRIBUTES__compiling___compiling_writer___WriterStrings(val_t p0);
-typedef void (*INIT_ATTRIBUTES__compiling___compiling_writer___WriterStrings_t)(val_t p0);
-val_t NEW_compiling___compiling_writer___WriterStrings(void);
-static const char * const LOCATE_CHECKNEW_compiling___compiling_writer___WriterStrings = "check new WriterStrings";
-void CHECKNEW_compiling___compiling_writer___WriterStrings(val_t p0);
-typedef void (*CHECKNEW_compiling___compiling_writer___WriterStrings_t)(val_t p0);
-static const char * const LOCATE_NEW_WriterStrings_compiling___compiling_writer___WriterStrings___init = "new WriterStrings compiling_writer::WriterStrings::init";
-val_t NEW_WriterStrings_compiling___compiling_writer___WriterStrings___init(val_t p0);
-typedef val_t (*NEW_WriterStrings_compiling___compiling_writer___WriterStrings___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__compiling___compiling_base___CProgram = "init var of CProgram";
+void INIT_ATTRIBUTES__global___reachable_method_analysis___DefaultReachableMethodAnalysis(val_t p0);
+typedef void (*INIT_ATTRIBUTES__global___reachable_method_analysis___DefaultReachableMethodAnalysis_t)(val_t p0);
+val_t NEW_global___reachable_method_analysis___DefaultReachableMethodAnalysis(void);
+void CHECKNEW_global___reachable_method_analysis___DefaultReachableMethodAnalysis(val_t p0);
+typedef void (*CHECKNEW_global___reachable_method_analysis___DefaultReachableMethodAnalysis_t)(val_t p0);
+val_t NEW_DefaultReachableMethodAnalysis_global___reachable_method_analysis___DefaultReachableMethodAnalysis___init(void);
+typedef val_t (*NEW_DefaultReachableMethodAnalysis_global___reachable_method_analysis___DefaultReachableMethodAnalysis___init_t)(void);
+void INIT_ATTRIBUTES__global___cha_analysis___ChaContext(val_t p0);
+typedef void (*INIT_ATTRIBUTES__global___cha_analysis___ChaContext_t)(val_t p0);
+val_t NEW_global___cha_analysis___ChaContext(void);
+void CHECKNEW_global___cha_analysis___ChaContext(val_t p0);
+typedef void (*CHECKNEW_global___cha_analysis___ChaContext_t)(val_t p0);
+val_t NEW_ChaContext_global___cha_analysis___ChaContext___init(void);
+typedef val_t (*NEW_ChaContext_global___cha_analysis___ChaContext___init_t)(void);
+void INIT_ATTRIBUTES__global___cha_analysis___ChaBuilder(val_t p0);
+typedef void (*INIT_ATTRIBUTES__global___cha_analysis___ChaBuilder_t)(val_t p0);
+val_t NEW_global___cha_analysis___ChaBuilder(void);
+void CHECKNEW_global___cha_analysis___ChaBuilder(val_t p0);
+typedef void (*CHECKNEW_global___cha_analysis___ChaBuilder_t)(val_t p0);
+val_t NEW_ChaBuilder_global___cha_analysis___ChaBuilder___init(val_t p0);
+typedef val_t (*NEW_ChaBuilder_global___cha_analysis___ChaBuilder___init_t)(val_t p0);
+void INIT_ATTRIBUTES__global___cha_analysis___ChaVisitor(val_t p0);
+typedef void (*INIT_ATTRIBUTES__global___cha_analysis___ChaVisitor_t)(val_t p0);
+val_t NEW_global___cha_analysis___ChaVisitor(void);
+void CHECKNEW_global___cha_analysis___ChaVisitor(val_t p0);
+typedef void (*CHECKNEW_global___cha_analysis___ChaVisitor_t)(val_t p0);
+val_t NEW_ChaVisitor_global___cha_analysis___ChaVisitor___init(val_t p0);
+typedef val_t (*NEW_ChaVisitor_global___cha_analysis___ChaVisitor___init_t)(val_t p0);
+void INIT_ATTRIBUTES__global___instantiated_type_analysis___DefaultInstantiatedTypeAnalysis(val_t p0);
+typedef void (*INIT_ATTRIBUTES__global___instantiated_type_analysis___DefaultInstantiatedTypeAnalysis_t)(val_t p0);
+val_t NEW_global___instantiated_type_analysis___DefaultInstantiatedTypeAnalysis(void);
+void CHECKNEW_global___instantiated_type_analysis___DefaultInstantiatedTypeAnalysis(val_t p0);
+typedef void (*CHECKNEW_global___instantiated_type_analysis___DefaultInstantiatedTypeAnalysis_t)(val_t p0);
+val_t NEW_DefaultInstantiatedTypeAnalysis_global___instantiated_type_analysis___DefaultInstantiatedTypeAnalysis___init(void);
+typedef val_t (*NEW_DefaultInstantiatedTypeAnalysis_global___instantiated_type_analysis___DefaultInstantiatedTypeAnalysis___init_t)(void);
+void INIT_ATTRIBUTES__global___rta_analysis___RtaContext(val_t p0);
+typedef void (*INIT_ATTRIBUTES__global___rta_analysis___RtaContext_t)(val_t p0);
+val_t NEW_global___rta_analysis___RtaContext(void);
+void CHECKNEW_global___rta_analysis___RtaContext(val_t p0);
+typedef void (*CHECKNEW_global___rta_analysis___RtaContext_t)(val_t p0);
+val_t NEW_RtaContext_global___rta_analysis___RtaContext___init(void);
+typedef val_t (*NEW_RtaContext_global___rta_analysis___RtaContext___init_t)(void);
+void INIT_ATTRIBUTES__global___rta_analysis___RtaBuilder(val_t p0);
+typedef void (*INIT_ATTRIBUTES__global___rta_analysis___RtaBuilder_t)(val_t p0);
+val_t NEW_global___rta_analysis___RtaBuilder(void);
+void CHECKNEW_global___rta_analysis___RtaBuilder(val_t p0);
+typedef void (*CHECKNEW_global___rta_analysis___RtaBuilder_t)(val_t p0);
+val_t NEW_RtaBuilder_global___rta_analysis___RtaBuilder___init(val_t p0);
+typedef val_t (*NEW_RtaBuilder_global___rta_analysis___RtaBuilder___init_t)(val_t p0);
+void INIT_ATTRIBUTES__global___rta_analysis___RtaVisitor(val_t p0);
+typedef void (*INIT_ATTRIBUTES__global___rta_analysis___RtaVisitor_t)(val_t p0);
+val_t NEW_global___rta_analysis___RtaVisitor(void);
+void CHECKNEW_global___rta_analysis___RtaVisitor(val_t p0);
+typedef void (*CHECKNEW_global___rta_analysis___RtaVisitor_t)(val_t p0);
+val_t NEW_RtaVisitor_global___rta_analysis___RtaVisitor___init(val_t p0);
+typedef val_t (*NEW_RtaVisitor_global___rta_analysis___RtaVisitor___init_t)(val_t p0);
+void INIT_ATTRIBUTES__global___reachable_as_init___DefaultReachableAsInitAnalysis(val_t p0);
+typedef void (*INIT_ATTRIBUTES__global___reachable_as_init___DefaultReachableAsInitAnalysis_t)(val_t p0);
+val_t NEW_global___reachable_as_init___DefaultReachableAsInitAnalysis(void);
+void CHECKNEW_global___reachable_as_init___DefaultReachableAsInitAnalysis(val_t p0);
+typedef void (*CHECKNEW_global___reachable_as_init___DefaultReachableAsInitAnalysis_t)(val_t p0);
+val_t NEW_DefaultReachableAsInitAnalysis_global___reachable_as_init___DefaultReachableAsInitAnalysis___init(void);
+typedef val_t (*NEW_DefaultReachableAsInitAnalysis_global___reachable_as_init___DefaultReachableAsInitAnalysis___init_t)(void);
+void INIT_ATTRIBUTES__global___reachable_as_init_impl___ReachableAsInitBuilder(val_t p0);
+typedef void (*INIT_ATTRIBUTES__global___reachable_as_init_impl___ReachableAsInitBuilder_t)(val_t p0);
+val_t NEW_global___reachable_as_init_impl___ReachableAsInitBuilder(void);
+void CHECKNEW_global___reachable_as_init_impl___ReachableAsInitBuilder(val_t p0);
+typedef void (*CHECKNEW_global___reachable_as_init_impl___ReachableAsInitBuilder_t)(val_t p0);
+val_t NEW_ReachableAsInitBuilder_global___reachable_as_init_impl___ReachableAsInitBuilder___init(val_t p0);
+typedef val_t (*NEW_ReachableAsInitBuilder_global___reachable_as_init_impl___ReachableAsInitBuilder___init_t)(val_t p0);
+void INIT_ATTRIBUTES__global___reachable_as_init_impl___ReachableAsInitAnalysisImpl(val_t p0);
+typedef void (*INIT_ATTRIBUTES__global___reachable_as_init_impl___ReachableAsInitAnalysisImpl_t)(val_t p0);
+val_t NEW_global___reachable_as_init_impl___ReachableAsInitAnalysisImpl(void);
+void CHECKNEW_global___reachable_as_init_impl___ReachableAsInitAnalysisImpl(val_t p0);
+typedef void (*CHECKNEW_global___reachable_as_init_impl___ReachableAsInitAnalysisImpl_t)(val_t p0);
+val_t NEW_ReachableAsInitAnalysisImpl_global___reachable_as_init_impl___ReachableAsInitAnalysisImpl___init(void);
+typedef val_t (*NEW_ReachableAsInitAnalysisImpl_global___reachable_as_init_impl___ReachableAsInitAnalysisImpl___init_t)(void);
+void INIT_ATTRIBUTES__global___reachable_as_init_impl___RAIVisitor(val_t p0);
+typedef void (*INIT_ATTRIBUTES__global___reachable_as_init_impl___RAIVisitor_t)(val_t p0);
+val_t NEW_global___reachable_as_init_impl___RAIVisitor(void);
+void CHECKNEW_global___reachable_as_init_impl___RAIVisitor(val_t p0);
+typedef void (*CHECKNEW_global___reachable_as_init_impl___RAIVisitor_t)(val_t p0);
+val_t NEW_RAIVisitor_global___reachable_as_init_impl___RAIVisitor___init(val_t p0);
+typedef val_t (*NEW_RAIVisitor_global___reachable_as_init_impl___RAIVisitor___init_t)(val_t p0);
+void INIT_ATTRIBUTES__global___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis(val_t p0);
+typedef void (*INIT_ATTRIBUTES__global___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis_t)(val_t p0);
+val_t NEW_global___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis(void);
+void CHECKNEW_global___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis(val_t p0);
+typedef void (*CHECKNEW_global___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis_t)(val_t p0);
+val_t NEW_DefaultReachableFromInitMethodAnalysis_global___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis___init(void);
+typedef val_t (*NEW_DefaultReachableFromInitMethodAnalysis_global___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis___init_t)(void);
+void INIT_ATTRIBUTES__global___reachable_from_init_method_analysis_impl___RFIMABuilder(val_t p0);
+typedef void (*INIT_ATTRIBUTES__global___reachable_from_init_method_analysis_impl___RFIMABuilder_t)(val_t p0);
+val_t NEW_global___reachable_from_init_method_analysis_impl___RFIMABuilder(void);
+void CHECKNEW_global___reachable_from_init_method_analysis_impl___RFIMABuilder(val_t p0);
+typedef void (*CHECKNEW_global___reachable_from_init_method_analysis_impl___RFIMABuilder_t)(val_t p0);
+val_t NEW_RFIMABuilder_global___reachable_from_init_method_analysis_impl___RFIMABuilder___init(val_t p0);
+typedef val_t (*NEW_RFIMABuilder_global___reachable_from_init_method_analysis_impl___RFIMABuilder___init_t)(val_t p0);
+void INIT_ATTRIBUTES__global___reachable_from_init_method_analysis_impl___RFIMAContext(val_t p0);
+typedef void (*INIT_ATTRIBUTES__global___reachable_from_init_method_analysis_impl___RFIMAContext_t)(val_t p0);
+val_t NEW_global___reachable_from_init_method_analysis_impl___RFIMAContext(void);
+void CHECKNEW_global___reachable_from_init_method_analysis_impl___RFIMAContext(val_t p0);
+typedef void (*CHECKNEW_global___reachable_from_init_method_analysis_impl___RFIMAContext_t)(val_t p0);
+val_t NEW_RFIMAContext_global___reachable_from_init_method_analysis_impl___RFIMAContext___init(void);
+typedef val_t (*NEW_RFIMAContext_global___reachable_from_init_method_analysis_impl___RFIMAContext___init_t)(void);
+void INIT_ATTRIBUTES__global___reachable_from_init_method_analysis_impl___RFIMAVisitor(val_t p0);
+typedef void (*INIT_ATTRIBUTES__global___reachable_from_init_method_analysis_impl___RFIMAVisitor_t)(val_t p0);
+val_t NEW_global___reachable_from_init_method_analysis_impl___RFIMAVisitor(void);
+void CHECKNEW_global___reachable_from_init_method_analysis_impl___RFIMAVisitor(val_t p0);
+typedef void (*CHECKNEW_global___reachable_from_init_method_analysis_impl___RFIMAVisitor_t)(val_t p0);
+val_t NEW_RFIMAVisitor_global___reachable_from_init_method_analysis_impl___RFIMAVisitor___init(val_t p0, val_t p1);
+typedef val_t (*NEW_RFIMAVisitor_global___reachable_from_init_method_analysis_impl___RFIMAVisitor___init_t)(val_t p0, val_t p1);
+void INIT_ATTRIBUTES__global___inline_get_and_set___InlineGetSetVisitor(val_t p0);
+typedef void (*INIT_ATTRIBUTES__global___inline_get_and_set___InlineGetSetVisitor_t)(val_t p0);
+val_t NEW_global___inline_get_and_set___InlineGetSetVisitor(void);
+void CHECKNEW_global___inline_get_and_set___InlineGetSetVisitor(val_t p0);
+typedef void (*CHECKNEW_global___inline_get_and_set___InlineGetSetVisitor_t)(val_t p0);
+val_t NEW_InlineGetSetVisitor_global___inline_get_and_set___InlineGetSetVisitor___init(val_t p0, val_t p1);
+typedef val_t (*NEW_InlineGetSetVisitor_global___inline_get_and_set___InlineGetSetVisitor___init_t)(val_t p0, val_t p1);
+void INIT_ATTRIBUTES__global___remove_out_of_init_get_test___IssetCounter(val_t p0);
+typedef void (*INIT_ATTRIBUTES__global___remove_out_of_init_get_test___IssetCounter_t)(val_t p0);
+val_t NEW_global___remove_out_of_init_get_test___IssetCounter(void);
+void CHECKNEW_global___remove_out_of_init_get_test___IssetCounter(val_t p0);
+typedef void (*CHECKNEW_global___remove_out_of_init_get_test___IssetCounter_t)(val_t p0);
+val_t NEW_IssetCounter_icode___icode_tools___ICodeVisitor___init(void);
+typedef val_t (*NEW_IssetCounter_icode___icode_tools___ICodeVisitor___init_t)(void);
+void INIT_ATTRIBUTES__global___remove_out_of_init_get_test___GetterTestRemover(val_t p0);
+typedef void (*INIT_ATTRIBUTES__global___remove_out_of_init_get_test___GetterTestRemover_t)(val_t p0);
+val_t NEW_global___remove_out_of_init_get_test___GetterTestRemover(void);
+void CHECKNEW_global___remove_out_of_init_get_test___GetterTestRemover(val_t p0);
+typedef void (*CHECKNEW_global___remove_out_of_init_get_test___GetterTestRemover_t)(val_t p0);
+val_t NEW_GetterTestRemover_icode___icode_tools___ICodeVisitor___init(void);
+typedef val_t (*NEW_GetterTestRemover_icode___icode_tools___ICodeVisitor___init_t)(void);
+void INIT_ATTRIBUTES__compiling_writer___Writer(val_t p0);
+typedef void (*INIT_ATTRIBUTES__compiling_writer___Writer_t)(val_t p0);
+val_t NEW_compiling_writer___Writer(void);
+void CHECKNEW_compiling_writer___Writer(val_t p0);
+typedef void (*CHECKNEW_compiling_writer___Writer_t)(val_t p0);
+val_t NEW_Writer_compiling_writer___Writer___init(void);
+typedef val_t (*NEW_Writer_compiling_writer___Writer___init_t)(void);
+void INIT_ATTRIBUTES__compiling_writer___WriterCoreNode(val_t p0);
+typedef void (*INIT_ATTRIBUTES__compiling_writer___WriterCoreNode_t)(val_t p0);
+val_t NEW_compiling_writer___WriterCoreNode(void);
+void CHECKNEW_compiling_writer___WriterCoreNode(val_t p0);
+typedef void (*CHECKNEW_compiling_writer___WriterCoreNode_t)(val_t p0);
+val_t NEW_WriterCoreNode_compiling_writer___WriterCoreNode___init(val_t p0);
+typedef val_t (*NEW_WriterCoreNode_compiling_writer___WriterCoreNode___init_t)(val_t p0);
+void INIT_ATTRIBUTES__compiling_writer___WriterStrings(val_t p0);
+typedef void (*INIT_ATTRIBUTES__compiling_writer___WriterStrings_t)(val_t p0);
+val_t NEW_compiling_writer___WriterStrings(void);
+void CHECKNEW_compiling_writer___WriterStrings(val_t p0);
+typedef void (*CHECKNEW_compiling_writer___WriterStrings_t)(val_t p0);
+val_t NEW_WriterStrings_compiling_writer___WriterStrings___init(val_t p0);
+typedef val_t (*NEW_WriterStrings_compiling_writer___WriterStrings___init_t)(val_t p0);
 void INIT_ATTRIBUTES__compiling___compiling_base___CProgram(val_t p0);
 typedef void (*INIT_ATTRIBUTES__compiling___compiling_base___CProgram_t)(val_t p0);
 val_t NEW_compiling___compiling_base___CProgram(void);
-static const char * const LOCATE_CHECKNEW_compiling___compiling_base___CProgram = "check new CProgram";
 void CHECKNEW_compiling___compiling_base___CProgram(val_t p0);
 typedef void (*CHECKNEW_compiling___compiling_base___CProgram_t)(val_t p0);
-static const char * const LOCATE_NEW_CProgram_compiling___compiling_base___CProgram___init = "new CProgram compiling_base::CProgram::init";
 val_t NEW_CProgram_compiling___compiling_base___CProgram___init(val_t p0);
 typedef val_t (*NEW_CProgram_compiling___compiling_base___CProgram___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__compiling___compiling_base___CompilerVisitor = "init var of CompilerVisitor";
 void INIT_ATTRIBUTES__compiling___compiling_base___CompilerVisitor(val_t p0);
 typedef void (*INIT_ATTRIBUTES__compiling___compiling_base___CompilerVisitor_t)(val_t p0);
 val_t NEW_compiling___compiling_base___CompilerVisitor(void);
-static const char * const LOCATE_CHECKNEW_compiling___compiling_base___CompilerVisitor = "check new CompilerVisitor";
 void CHECKNEW_compiling___compiling_base___CompilerVisitor(val_t p0);
 typedef void (*CHECKNEW_compiling___compiling_base___CompilerVisitor_t)(val_t p0);
-static const char * const LOCATE_NEW_CompilerVisitor_compiling___compiling_base___CompilerVisitor___init = "new CompilerVisitor compiling_base::CompilerVisitor::init";
 val_t NEW_CompilerVisitor_compiling___compiling_base___CompilerVisitor___init(val_t p0, val_t p1);
 typedef val_t (*NEW_CompilerVisitor_compiling___compiling_base___CompilerVisitor___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor = "init var of IRegisterSlotAllocationVisitor";
 void INIT_ATTRIBUTES__analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor(val_t p0);
 typedef void (*INIT_ATTRIBUTES__analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor_t)(val_t p0);
 val_t NEW_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor(void);
-static const char * const LOCATE_CHECKNEW_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor = "check new IRegisterSlotAllocationVisitor";
 void CHECKNEW_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor(val_t p0);
 typedef void (*CHECKNEW_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor_t)(val_t p0);
-static const char * const LOCATE_NEW_IRegisterSlotAllocationVisitor_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___init = "new IRegisterSlotAllocationVisitor allocate_iregister_slots::IRegisterSlotAllocationVisitor::init";
 val_t NEW_IRegisterSlotAllocationVisitor_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___init(val_t p0);
 typedef val_t (*NEW_IRegisterSlotAllocationVisitor_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__analysis___allocate_iregister_slots___SlotGroup = "init var of SlotGroup";
 void INIT_ATTRIBUTES__analysis___allocate_iregister_slots___SlotGroup(val_t p0);
 typedef void (*INIT_ATTRIBUTES__analysis___allocate_iregister_slots___SlotGroup_t)(val_t p0);
 val_t NEW_analysis___allocate_iregister_slots___SlotGroup(void);
-static const char * const LOCATE_CHECKNEW_analysis___allocate_iregister_slots___SlotGroup = "check new SlotGroup";
 void CHECKNEW_analysis___allocate_iregister_slots___SlotGroup(val_t p0);
 typedef void (*CHECKNEW_analysis___allocate_iregister_slots___SlotGroup_t)(val_t p0);
-static const char * const LOCATE_NEW_SlotGroup_analysis___allocate_iregister_slots___SlotGroup___init = "new SlotGroup allocate_iregister_slots::SlotGroup::init";
 val_t NEW_SlotGroup_analysis___allocate_iregister_slots___SlotGroup___init(void);
 typedef val_t (*NEW_SlotGroup_analysis___allocate_iregister_slots___SlotGroup___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__analysis___icode_dump___ICodeDumper = "init var of ICodeDumper";
 void INIT_ATTRIBUTES__analysis___icode_dump___ICodeDumper(val_t p0);
 typedef void (*INIT_ATTRIBUTES__analysis___icode_dump___ICodeDumper_t)(val_t p0);
 val_t NEW_analysis___icode_dump___ICodeDumper(void);
-static const char * const LOCATE_CHECKNEW_analysis___icode_dump___ICodeDumper = "check new ICodeDumper";
 void CHECKNEW_analysis___icode_dump___ICodeDumper(val_t p0);
 typedef void (*CHECKNEW_analysis___icode_dump___ICodeDumper_t)(val_t p0);
-static const char * const LOCATE_NEW_ICodeDumper_analysis___icode_dump___ICodeDumper___init = "new ICodeDumper icode_dump::ICodeDumper::init";
 val_t NEW_ICodeDumper_analysis___icode_dump___ICodeDumper___init(val_t p0, val_t p1);
 typedef val_t (*NEW_ICodeDumper_analysis___icode_dump___ICodeDumper___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__analysis___inline_methods___InlineMethodVisitor = "init var of InlineMethodVisitor";
 void INIT_ATTRIBUTES__analysis___inline_methods___InlineMethodVisitor(val_t p0);
 typedef void (*INIT_ATTRIBUTES__analysis___inline_methods___InlineMethodVisitor_t)(val_t p0);
 val_t NEW_analysis___inline_methods___InlineMethodVisitor(void);
-static const char * const LOCATE_CHECKNEW_analysis___inline_methods___InlineMethodVisitor = "check new InlineMethodVisitor";
 void CHECKNEW_analysis___inline_methods___InlineMethodVisitor(val_t p0);
 typedef void (*CHECKNEW_analysis___inline_methods___InlineMethodVisitor_t)(val_t p0);
-static const char * const LOCATE_NEW_InlineMethodVisitor_analysis___inline_methods___InlineMethodVisitor___init = "new InlineMethodVisitor inline_methods::InlineMethodVisitor::init";
 val_t NEW_InlineMethodVisitor_analysis___inline_methods___InlineMethodVisitor___init(val_t p0, val_t p1);
 typedef val_t (*NEW_InlineMethodVisitor_analysis___inline_methods___InlineMethodVisitor___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__analysis___reachable_method_analysis___ReachableMethodAnalysis = "init var of ReachableMethodAnalysis";
-void INIT_ATTRIBUTES__analysis___reachable_method_analysis___ReachableMethodAnalysis(val_t p0);
-typedef void (*INIT_ATTRIBUTES__analysis___reachable_method_analysis___ReachableMethodAnalysis_t)(val_t p0);
-val_t NEW_analysis___reachable_method_analysis___ReachableMethodAnalysis(void);
-static const char * const LOCATE_CHECKNEW_analysis___reachable_method_analysis___ReachableMethodAnalysis = "check new ReachableMethodAnalysis";
-void CHECKNEW_analysis___reachable_method_analysis___ReachableMethodAnalysis(val_t p0);
-typedef void (*CHECKNEW_analysis___reachable_method_analysis___ReachableMethodAnalysis_t)(val_t p0);
-static const char * const LOCATE_NEW_ReachableMethodAnalysis_analysis___reachable_method_analysis___ReachableMethodAnalysis___init = "new ReachableMethodAnalysis reachable_method_analysis::ReachableMethodAnalysis::init";
-val_t NEW_ReachableMethodAnalysis_analysis___reachable_method_analysis___ReachableMethodAnalysis___init(void);
-typedef val_t (*NEW_ReachableMethodAnalysis_analysis___reachable_method_analysis___ReachableMethodAnalysis___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__analysis___reachable_method_analysis___DefaultReachableMethodAnalysis = "init var of DefaultReachableMethodAnalysis";
-void INIT_ATTRIBUTES__analysis___reachable_method_analysis___DefaultReachableMethodAnalysis(val_t p0);
-typedef void (*INIT_ATTRIBUTES__analysis___reachable_method_analysis___DefaultReachableMethodAnalysis_t)(val_t p0);
-val_t NEW_analysis___reachable_method_analysis___DefaultReachableMethodAnalysis(void);
-static const char * const LOCATE_CHECKNEW_analysis___reachable_method_analysis___DefaultReachableMethodAnalysis = "check new DefaultReachableMethodAnalysis";
-void CHECKNEW_analysis___reachable_method_analysis___DefaultReachableMethodAnalysis(val_t p0);
-typedef void (*CHECKNEW_analysis___reachable_method_analysis___DefaultReachableMethodAnalysis_t)(val_t p0);
-static const char * const LOCATE_NEW_DefaultReachableMethodAnalysis_analysis___reachable_method_analysis___DefaultReachableMethodAnalysis___init = "new DefaultReachableMethodAnalysis reachable_method_analysis::DefaultReachableMethodAnalysis::init";
-val_t NEW_DefaultReachableMethodAnalysis_analysis___reachable_method_analysis___DefaultReachableMethodAnalysis___init(void);
-typedef val_t (*NEW_DefaultReachableMethodAnalysis_analysis___reachable_method_analysis___DefaultReachableMethodAnalysis___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__analysis___cha_analysis___ChaContext = "init var of ChaContext";
-void INIT_ATTRIBUTES__analysis___cha_analysis___ChaContext(val_t p0);
-typedef void (*INIT_ATTRIBUTES__analysis___cha_analysis___ChaContext_t)(val_t p0);
-val_t NEW_analysis___cha_analysis___ChaContext(void);
-static const char * const LOCATE_CHECKNEW_analysis___cha_analysis___ChaContext = "check new ChaContext";
-void CHECKNEW_analysis___cha_analysis___ChaContext(val_t p0);
-typedef void (*CHECKNEW_analysis___cha_analysis___ChaContext_t)(val_t p0);
-static const char * const LOCATE_NEW_ChaContext_analysis___reachable_method_analysis___ReachableMethodAnalysis___init = "new ChaContext reachable_method_analysis::ReachableMethodAnalysis::init";
-val_t NEW_ChaContext_analysis___reachable_method_analysis___ReachableMethodAnalysis___init(void);
-typedef val_t (*NEW_ChaContext_analysis___reachable_method_analysis___ReachableMethodAnalysis___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__analysis___cha_analysis___ChaBuilder = "init var of ChaBuilder";
-void INIT_ATTRIBUTES__analysis___cha_analysis___ChaBuilder(val_t p0);
-typedef void (*INIT_ATTRIBUTES__analysis___cha_analysis___ChaBuilder_t)(val_t p0);
-val_t NEW_analysis___cha_analysis___ChaBuilder(void);
-static const char * const LOCATE_CHECKNEW_analysis___cha_analysis___ChaBuilder = "check new ChaBuilder";
-void CHECKNEW_analysis___cha_analysis___ChaBuilder(val_t p0);
-typedef void (*CHECKNEW_analysis___cha_analysis___ChaBuilder_t)(val_t p0);
-static const char * const LOCATE_NEW_ChaBuilder_analysis___cha_analysis___ChaBuilder___init = "new ChaBuilder cha_analysis::ChaBuilder::init";
-val_t NEW_ChaBuilder_analysis___cha_analysis___ChaBuilder___init(val_t p0);
-typedef val_t (*NEW_ChaBuilder_analysis___cha_analysis___ChaBuilder___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__analysis___cha_analysis___ChaVisitor = "init var of ChaVisitor";
-void INIT_ATTRIBUTES__analysis___cha_analysis___ChaVisitor(val_t p0);
-typedef void (*INIT_ATTRIBUTES__analysis___cha_analysis___ChaVisitor_t)(val_t p0);
-val_t NEW_analysis___cha_analysis___ChaVisitor(void);
-static const char * const LOCATE_CHECKNEW_analysis___cha_analysis___ChaVisitor = "check new ChaVisitor";
-void CHECKNEW_analysis___cha_analysis___ChaVisitor(val_t p0);
-typedef void (*CHECKNEW_analysis___cha_analysis___ChaVisitor_t)(val_t p0);
-static const char * const LOCATE_NEW_ChaVisitor_analysis___cha_analysis___ChaVisitor___init = "new ChaVisitor cha_analysis::ChaVisitor::init";
-val_t NEW_ChaVisitor_analysis___cha_analysis___ChaVisitor___init(val_t p0);
-typedef val_t (*NEW_ChaVisitor_analysis___cha_analysis___ChaVisitor___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__analysis___instantiated_type_analysis___InstantiatedTypeAnalysis = "init var of InstantiatedTypeAnalysis";
-void INIT_ATTRIBUTES__analysis___instantiated_type_analysis___InstantiatedTypeAnalysis(val_t p0);
-typedef void (*INIT_ATTRIBUTES__analysis___instantiated_type_analysis___InstantiatedTypeAnalysis_t)(val_t p0);
-val_t NEW_analysis___instantiated_type_analysis___InstantiatedTypeAnalysis(void);
-static const char * const LOCATE_CHECKNEW_analysis___instantiated_type_analysis___InstantiatedTypeAnalysis = "check new InstantiatedTypeAnalysis";
-void CHECKNEW_analysis___instantiated_type_analysis___InstantiatedTypeAnalysis(val_t p0);
-typedef void (*CHECKNEW_analysis___instantiated_type_analysis___InstantiatedTypeAnalysis_t)(val_t p0);
-static const char * const LOCATE_NEW_InstantiatedTypeAnalysis_analysis___instantiated_type_analysis___InstantiatedTypeAnalysis___init = "new InstantiatedTypeAnalysis instantiated_type_analysis::InstantiatedTypeAnalysis::init";
-val_t NEW_InstantiatedTypeAnalysis_analysis___instantiated_type_analysis___InstantiatedTypeAnalysis___init(void);
-typedef val_t (*NEW_InstantiatedTypeAnalysis_analysis___instantiated_type_analysis___InstantiatedTypeAnalysis___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__analysis___instantiated_type_analysis___DefaultInstantiatedTypeAnalysis = "init var of DefaultInstantiatedTypeAnalysis";
-void INIT_ATTRIBUTES__analysis___instantiated_type_analysis___DefaultInstantiatedTypeAnalysis(val_t p0);
-typedef void (*INIT_ATTRIBUTES__analysis___instantiated_type_analysis___DefaultInstantiatedTypeAnalysis_t)(val_t p0);
-val_t NEW_analysis___instantiated_type_analysis___DefaultInstantiatedTypeAnalysis(void);
-static const char * const LOCATE_CHECKNEW_analysis___instantiated_type_analysis___DefaultInstantiatedTypeAnalysis = "check new DefaultInstantiatedTypeAnalysis";
-void CHECKNEW_analysis___instantiated_type_analysis___DefaultInstantiatedTypeAnalysis(val_t p0);
-typedef void (*CHECKNEW_analysis___instantiated_type_analysis___DefaultInstantiatedTypeAnalysis_t)(val_t p0);
-static const char * const LOCATE_NEW_DefaultInstantiatedTypeAnalysis_analysis___instantiated_type_analysis___DefaultInstantiatedTypeAnalysis___init = "new DefaultInstantiatedTypeAnalysis instantiated_type_analysis::DefaultInstantiatedTypeAnalysis::init";
-val_t NEW_DefaultInstantiatedTypeAnalysis_analysis___instantiated_type_analysis___DefaultInstantiatedTypeAnalysis___init(void);
-typedef val_t (*NEW_DefaultInstantiatedTypeAnalysis_analysis___instantiated_type_analysis___DefaultInstantiatedTypeAnalysis___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__analysis___rta_analysis___RtaContext = "init var of RtaContext";
-void INIT_ATTRIBUTES__analysis___rta_analysis___RtaContext(val_t p0);
-typedef void (*INIT_ATTRIBUTES__analysis___rta_analysis___RtaContext_t)(val_t p0);
-val_t NEW_analysis___rta_analysis___RtaContext(void);
-static const char * const LOCATE_CHECKNEW_analysis___rta_analysis___RtaContext = "check new RtaContext";
-void CHECKNEW_analysis___rta_analysis___RtaContext(val_t p0);
-typedef void (*CHECKNEW_analysis___rta_analysis___RtaContext_t)(val_t p0);
-static const char * const LOCATE_NEW_RtaContext_analysis___rta_analysis___RtaContext___init = "new RtaContext rta_analysis::RtaContext::init";
-val_t NEW_RtaContext_analysis___rta_analysis___RtaContext___init(void);
-typedef val_t (*NEW_RtaContext_analysis___rta_analysis___RtaContext___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__analysis___rta_analysis___RtaBuilder = "init var of RtaBuilder";
-void INIT_ATTRIBUTES__analysis___rta_analysis___RtaBuilder(val_t p0);
-typedef void (*INIT_ATTRIBUTES__analysis___rta_analysis___RtaBuilder_t)(val_t p0);
-val_t NEW_analysis___rta_analysis___RtaBuilder(void);
-static const char * const LOCATE_CHECKNEW_analysis___rta_analysis___RtaBuilder = "check new RtaBuilder";
-void CHECKNEW_analysis___rta_analysis___RtaBuilder(val_t p0);
-typedef void (*CHECKNEW_analysis___rta_analysis___RtaBuilder_t)(val_t p0);
-static const char * const LOCATE_NEW_RtaBuilder_analysis___rta_analysis___RtaBuilder___init = "new RtaBuilder rta_analysis::RtaBuilder::init";
-val_t NEW_RtaBuilder_analysis___rta_analysis___RtaBuilder___init(val_t p0);
-typedef val_t (*NEW_RtaBuilder_analysis___rta_analysis___RtaBuilder___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__analysis___rta_analysis___RtaVisitor = "init var of RtaVisitor";
-void INIT_ATTRIBUTES__analysis___rta_analysis___RtaVisitor(val_t p0);
-typedef void (*INIT_ATTRIBUTES__analysis___rta_analysis___RtaVisitor_t)(val_t p0);
-val_t NEW_analysis___rta_analysis___RtaVisitor(void);
-static const char * const LOCATE_CHECKNEW_analysis___rta_analysis___RtaVisitor = "check new RtaVisitor";
-void CHECKNEW_analysis___rta_analysis___RtaVisitor(val_t p0);
-typedef void (*CHECKNEW_analysis___rta_analysis___RtaVisitor_t)(val_t p0);
-static const char * const LOCATE_NEW_RtaVisitor_analysis___rta_analysis___RtaVisitor___init = "new RtaVisitor rta_analysis::RtaVisitor::init";
-val_t NEW_RtaVisitor_analysis___rta_analysis___RtaVisitor___init(val_t p0);
-typedef val_t (*NEW_RtaVisitor_analysis___rta_analysis___RtaVisitor___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__analysis___reachable_as_init___ReachableAsInitAnalysis = "init var of ReachableAsInitAnalysis";
-void INIT_ATTRIBUTES__analysis___reachable_as_init___ReachableAsInitAnalysis(val_t p0);
-typedef void (*INIT_ATTRIBUTES__analysis___reachable_as_init___ReachableAsInitAnalysis_t)(val_t p0);
-val_t NEW_analysis___reachable_as_init___ReachableAsInitAnalysis(void);
-static const char * const LOCATE_CHECKNEW_analysis___reachable_as_init___ReachableAsInitAnalysis = "check new ReachableAsInitAnalysis";
-void CHECKNEW_analysis___reachable_as_init___ReachableAsInitAnalysis(val_t p0);
-typedef void (*CHECKNEW_analysis___reachable_as_init___ReachableAsInitAnalysis_t)(val_t p0);
-static const char * const LOCATE_NEW_ReachableAsInitAnalysis_analysis___reachable_as_init___ReachableAsInitAnalysis___init = "new ReachableAsInitAnalysis reachable_as_init::ReachableAsInitAnalysis::init";
-val_t NEW_ReachableAsInitAnalysis_analysis___reachable_as_init___ReachableAsInitAnalysis___init(void);
-typedef val_t (*NEW_ReachableAsInitAnalysis_analysis___reachable_as_init___ReachableAsInitAnalysis___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__analysis___reachable_as_init___DefaultReachableAsInitAnalysis = "init var of DefaultReachableAsInitAnalysis";
-void INIT_ATTRIBUTES__analysis___reachable_as_init___DefaultReachableAsInitAnalysis(val_t p0);
-typedef void (*INIT_ATTRIBUTES__analysis___reachable_as_init___DefaultReachableAsInitAnalysis_t)(val_t p0);
-val_t NEW_analysis___reachable_as_init___DefaultReachableAsInitAnalysis(void);
-static const char * const LOCATE_CHECKNEW_analysis___reachable_as_init___DefaultReachableAsInitAnalysis = "check new DefaultReachableAsInitAnalysis";
-void CHECKNEW_analysis___reachable_as_init___DefaultReachableAsInitAnalysis(val_t p0);
-typedef void (*CHECKNEW_analysis___reachable_as_init___DefaultReachableAsInitAnalysis_t)(val_t p0);
-static const char * const LOCATE_NEW_DefaultReachableAsInitAnalysis_analysis___reachable_as_init___DefaultReachableAsInitAnalysis___init = "new DefaultReachableAsInitAnalysis reachable_as_init::DefaultReachableAsInitAnalysis::init";
-val_t NEW_DefaultReachableAsInitAnalysis_analysis___reachable_as_init___DefaultReachableAsInitAnalysis___init(void);
-typedef val_t (*NEW_DefaultReachableAsInitAnalysis_analysis___reachable_as_init___DefaultReachableAsInitAnalysis___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__analysis___reachable_as_init_impl___ReachableAsInitBuilder = "init var of ReachableAsInitBuilder";
-void INIT_ATTRIBUTES__analysis___reachable_as_init_impl___ReachableAsInitBuilder(val_t p0);
-typedef void (*INIT_ATTRIBUTES__analysis___reachable_as_init_impl___ReachableAsInitBuilder_t)(val_t p0);
-val_t NEW_analysis___reachable_as_init_impl___ReachableAsInitBuilder(void);
-static const char * const LOCATE_CHECKNEW_analysis___reachable_as_init_impl___ReachableAsInitBuilder = "check new ReachableAsInitBuilder";
-void CHECKNEW_analysis___reachable_as_init_impl___ReachableAsInitBuilder(val_t p0);
-typedef void (*CHECKNEW_analysis___reachable_as_init_impl___ReachableAsInitBuilder_t)(val_t p0);
-static const char * const LOCATE_NEW_ReachableAsInitBuilder_analysis___reachable_as_init_impl___ReachableAsInitBuilder___init = "new ReachableAsInitBuilder reachable_as_init_impl::ReachableAsInitBuilder::init";
-val_t NEW_ReachableAsInitBuilder_analysis___reachable_as_init_impl___ReachableAsInitBuilder___init(val_t p0);
-typedef val_t (*NEW_ReachableAsInitBuilder_analysis___reachable_as_init_impl___ReachableAsInitBuilder___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__analysis___reachable_as_init_impl___ReachableAsInitAnalysisImpl = "init var of ReachableAsInitAnalysisImpl";
-void INIT_ATTRIBUTES__analysis___reachable_as_init_impl___ReachableAsInitAnalysisImpl(val_t p0);
-typedef void (*INIT_ATTRIBUTES__analysis___reachable_as_init_impl___ReachableAsInitAnalysisImpl_t)(val_t p0);
-val_t NEW_analysis___reachable_as_init_impl___ReachableAsInitAnalysisImpl(void);
-static const char * const LOCATE_CHECKNEW_analysis___reachable_as_init_impl___ReachableAsInitAnalysisImpl = "check new ReachableAsInitAnalysisImpl";
-void CHECKNEW_analysis___reachable_as_init_impl___ReachableAsInitAnalysisImpl(val_t p0);
-typedef void (*CHECKNEW_analysis___reachable_as_init_impl___ReachableAsInitAnalysisImpl_t)(val_t p0);
-static const char * const LOCATE_NEW_ReachableAsInitAnalysisImpl_analysis___reachable_as_init_impl___ReachableAsInitAnalysisImpl___init = "new ReachableAsInitAnalysisImpl reachable_as_init_impl::ReachableAsInitAnalysisImpl::init";
-val_t NEW_ReachableAsInitAnalysisImpl_analysis___reachable_as_init_impl___ReachableAsInitAnalysisImpl___init(void);
-typedef val_t (*NEW_ReachableAsInitAnalysisImpl_analysis___reachable_as_init_impl___ReachableAsInitAnalysisImpl___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__analysis___reachable_as_init_impl___RAIVisitor = "init var of RAIVisitor";
-void INIT_ATTRIBUTES__analysis___reachable_as_init_impl___RAIVisitor(val_t p0);
-typedef void (*INIT_ATTRIBUTES__analysis___reachable_as_init_impl___RAIVisitor_t)(val_t p0);
-val_t NEW_analysis___reachable_as_init_impl___RAIVisitor(void);
-static const char * const LOCATE_CHECKNEW_analysis___reachable_as_init_impl___RAIVisitor = "check new RAIVisitor";
-void CHECKNEW_analysis___reachable_as_init_impl___RAIVisitor(val_t p0);
-typedef void (*CHECKNEW_analysis___reachable_as_init_impl___RAIVisitor_t)(val_t p0);
-static const char * const LOCATE_NEW_RAIVisitor_analysis___reachable_as_init_impl___RAIVisitor___init = "new RAIVisitor reachable_as_init_impl::RAIVisitor::init";
-val_t NEW_RAIVisitor_analysis___reachable_as_init_impl___RAIVisitor___init(val_t p0);
-typedef val_t (*NEW_RAIVisitor_analysis___reachable_as_init_impl___RAIVisitor___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__analysis___reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis = "init var of ReachableFromInitMethodAnalysis";
-void INIT_ATTRIBUTES__analysis___reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis(val_t p0);
-typedef void (*INIT_ATTRIBUTES__analysis___reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis_t)(val_t p0);
-val_t NEW_analysis___reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis(void);
-static const char * const LOCATE_CHECKNEW_analysis___reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis = "check new ReachableFromInitMethodAnalysis";
-void CHECKNEW_analysis___reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis(val_t p0);
-typedef void (*CHECKNEW_analysis___reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis_t)(val_t p0);
-static const char * const LOCATE_NEW_ReachableFromInitMethodAnalysis_analysis___reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___init = "new ReachableFromInitMethodAnalysis reachable_from_init_method_analysis::ReachableFromInitMethodAnalysis::init";
-val_t NEW_ReachableFromInitMethodAnalysis_analysis___reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___init(void);
-typedef val_t (*NEW_ReachableFromInitMethodAnalysis_analysis___reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__analysis___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis = "init var of DefaultReachableFromInitMethodAnalysis";
-void INIT_ATTRIBUTES__analysis___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis(val_t p0);
-typedef void (*INIT_ATTRIBUTES__analysis___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis_t)(val_t p0);
-val_t NEW_analysis___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis(void);
-static const char * const LOCATE_CHECKNEW_analysis___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis = "check new DefaultReachableFromInitMethodAnalysis";
-void CHECKNEW_analysis___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis(val_t p0);
-typedef void (*CHECKNEW_analysis___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis_t)(val_t p0);
-static const char * const LOCATE_NEW_DefaultReachableFromInitMethodAnalysis_analysis___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis___init = "new DefaultReachableFromInitMethodAnalysis reachable_from_init_method_analysis::DefaultReachableFromInitMethodAnalysis::init";
-val_t NEW_DefaultReachableFromInitMethodAnalysis_analysis___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis___init(void);
-typedef val_t (*NEW_DefaultReachableFromInitMethodAnalysis_analysis___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__analysis___reachable_from_init_method_analysis_impl___RFIMABuilder = "init var of RFIMABuilder";
-void INIT_ATTRIBUTES__analysis___reachable_from_init_method_analysis_impl___RFIMABuilder(val_t p0);
-typedef void (*INIT_ATTRIBUTES__analysis___reachable_from_init_method_analysis_impl___RFIMABuilder_t)(val_t p0);
-val_t NEW_analysis___reachable_from_init_method_analysis_impl___RFIMABuilder(void);
-static const char * const LOCATE_CHECKNEW_analysis___reachable_from_init_method_analysis_impl___RFIMABuilder = "check new RFIMABuilder";
-void CHECKNEW_analysis___reachable_from_init_method_analysis_impl___RFIMABuilder(val_t p0);
-typedef void (*CHECKNEW_analysis___reachable_from_init_method_analysis_impl___RFIMABuilder_t)(val_t p0);
-static const char * const LOCATE_NEW_RFIMABuilder_analysis___reachable_from_init_method_analysis_impl___RFIMABuilder___init = "new RFIMABuilder reachable_from_init_method_analysis_impl::RFIMABuilder::init";
-val_t NEW_RFIMABuilder_analysis___reachable_from_init_method_analysis_impl___RFIMABuilder___init(val_t p0);
-typedef val_t (*NEW_RFIMABuilder_analysis___reachable_from_init_method_analysis_impl___RFIMABuilder___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__analysis___reachable_from_init_method_analysis_impl___RFIMAContext = "init var of RFIMAContext";
-void INIT_ATTRIBUTES__analysis___reachable_from_init_method_analysis_impl___RFIMAContext(val_t p0);
-typedef void (*INIT_ATTRIBUTES__analysis___reachable_from_init_method_analysis_impl___RFIMAContext_t)(val_t p0);
-val_t NEW_analysis___reachable_from_init_method_analysis_impl___RFIMAContext(void);
-static const char * const LOCATE_CHECKNEW_analysis___reachable_from_init_method_analysis_impl___RFIMAContext = "check new RFIMAContext";
-void CHECKNEW_analysis___reachable_from_init_method_analysis_impl___RFIMAContext(val_t p0);
-typedef void (*CHECKNEW_analysis___reachable_from_init_method_analysis_impl___RFIMAContext_t)(val_t p0);
-static const char * const LOCATE_NEW_RFIMAContext_analysis___reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___init = "new RFIMAContext reachable_from_init_method_analysis::ReachableFromInitMethodAnalysis::init";
-val_t NEW_RFIMAContext_analysis___reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___init(void);
-typedef val_t (*NEW_RFIMAContext_analysis___reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor = "init var of RFIMAVisitor";
-void INIT_ATTRIBUTES__analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor(val_t p0);
-typedef void (*INIT_ATTRIBUTES__analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor_t)(val_t p0);
-val_t NEW_analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor(void);
-static const char * const LOCATE_CHECKNEW_analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor = "check new RFIMAVisitor";
-void CHECKNEW_analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor(val_t p0);
-typedef void (*CHECKNEW_analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor_t)(val_t p0);
-static const char * const LOCATE_NEW_RFIMAVisitor_analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor___init = "new RFIMAVisitor reachable_from_init_method_analysis_impl::RFIMAVisitor::init";
-val_t NEW_RFIMAVisitor_analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor___init(val_t p0, val_t p1);
-typedef val_t (*NEW_RFIMAVisitor_analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__analysis___inline_get_and_set___InlineGetSetVisitor = "init var of InlineGetSetVisitor";
-void INIT_ATTRIBUTES__analysis___inline_get_and_set___InlineGetSetVisitor(val_t p0);
-typedef void (*INIT_ATTRIBUTES__analysis___inline_get_and_set___InlineGetSetVisitor_t)(val_t p0);
-val_t NEW_analysis___inline_get_and_set___InlineGetSetVisitor(void);
-static const char * const LOCATE_CHECKNEW_analysis___inline_get_and_set___InlineGetSetVisitor = "check new InlineGetSetVisitor";
-void CHECKNEW_analysis___inline_get_and_set___InlineGetSetVisitor(val_t p0);
-typedef void (*CHECKNEW_analysis___inline_get_and_set___InlineGetSetVisitor_t)(val_t p0);
-static const char * const LOCATE_NEW_InlineGetSetVisitor_analysis___inline_get_and_set___InlineGetSetVisitor___init = "new InlineGetSetVisitor inline_get_and_set::InlineGetSetVisitor::init";
-val_t NEW_InlineGetSetVisitor_analysis___inline_get_and_set___InlineGetSetVisitor___init(val_t p0, val_t p1);
-typedef val_t (*NEW_InlineGetSetVisitor_analysis___inline_get_and_set___InlineGetSetVisitor___init_t)(val_t p0, val_t p1);
-static const char * const LOCATE_INIT_ATTRIBUTES__analysis___remove_out_of_init_get_test___IssetCounter = "init var of IssetCounter";
-void INIT_ATTRIBUTES__analysis___remove_out_of_init_get_test___IssetCounter(val_t p0);
-typedef void (*INIT_ATTRIBUTES__analysis___remove_out_of_init_get_test___IssetCounter_t)(val_t p0);
-val_t NEW_analysis___remove_out_of_init_get_test___IssetCounter(void);
-static const char * const LOCATE_CHECKNEW_analysis___remove_out_of_init_get_test___IssetCounter = "check new IssetCounter";
-void CHECKNEW_analysis___remove_out_of_init_get_test___IssetCounter(val_t p0);
-typedef void (*CHECKNEW_analysis___remove_out_of_init_get_test___IssetCounter_t)(val_t p0);
-static const char * const LOCATE_NEW_IssetCounter_icode___icode_tools___ICodeVisitor___init = "new IssetCounter icode_tools::ICodeVisitor::init";
-val_t NEW_IssetCounter_icode___icode_tools___ICodeVisitor___init(void);
-typedef val_t (*NEW_IssetCounter_icode___icode_tools___ICodeVisitor___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__analysis___remove_out_of_init_get_test___GetterTestRemover = "init var of GetterTestRemover";
-void INIT_ATTRIBUTES__analysis___remove_out_of_init_get_test___GetterTestRemover(val_t p0);
-typedef void (*INIT_ATTRIBUTES__analysis___remove_out_of_init_get_test___GetterTestRemover_t)(val_t p0);
-val_t NEW_analysis___remove_out_of_init_get_test___GetterTestRemover(void);
-static const char * const LOCATE_CHECKNEW_analysis___remove_out_of_init_get_test___GetterTestRemover = "check new GetterTestRemover";
-void CHECKNEW_analysis___remove_out_of_init_get_test___GetterTestRemover(val_t p0);
-typedef void (*CHECKNEW_analysis___remove_out_of_init_get_test___GetterTestRemover_t)(val_t p0);
-static const char * const LOCATE_NEW_GetterTestRemover_icode___icode_tools___ICodeVisitor___init = "new GetterTestRemover icode_tools::ICodeVisitor::init";
-val_t NEW_GetterTestRemover_icode___icode_tools___ICodeVisitor___init(void);
-typedef val_t (*NEW_GetterTestRemover_icode___icode_tools___ICodeVisitor___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__compiling___icode_generator___FileICodeDumper = "init var of FileICodeDumper";
 void INIT_ATTRIBUTES__compiling___icode_generator___FileICodeDumper(val_t p0);
 typedef void (*INIT_ATTRIBUTES__compiling___icode_generator___FileICodeDumper_t)(val_t p0);
 val_t NEW_compiling___icode_generator___FileICodeDumper(void);
-static const char * const LOCATE_CHECKNEW_compiling___icode_generator___FileICodeDumper = "check new FileICodeDumper";
 void CHECKNEW_compiling___icode_generator___FileICodeDumper(val_t p0);
 typedef void (*CHECKNEW_compiling___icode_generator___FileICodeDumper_t)(val_t p0);
-static const char * const LOCATE_NEW_FileICodeDumper_compiling___icode_generator___FileICodeDumper___init = "new FileICodeDumper icode_generator::FileICodeDumper::init";
 val_t NEW_FileICodeDumper_compiling___icode_generator___FileICodeDumper___init(val_t p0);
 typedef val_t (*NEW_FileICodeDumper_compiling___icode_generator___FileICodeDumper___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__compiling___table_computation___ColorContext = "init var of ColorContext";
-void INIT_ATTRIBUTES__compiling___table_computation___ColorContext(val_t p0);
-typedef void (*INIT_ATTRIBUTES__compiling___table_computation___ColorContext_t)(val_t p0);
-val_t NEW_compiling___table_computation___ColorContext(void);
-static const char * const LOCATE_CHECKNEW_compiling___table_computation___ColorContext = "check new ColorContext";
-void CHECKNEW_compiling___table_computation___ColorContext(val_t p0);
-typedef void (*CHECKNEW_compiling___table_computation___ColorContext_t)(val_t p0);
-static const char * const LOCATE_NEW_ColorContext_compiling___table_computation___ColorContext___init = "new ColorContext table_computation::ColorContext::init";
-val_t NEW_ColorContext_compiling___table_computation___ColorContext___init(void);
-typedef val_t (*NEW_ColorContext_compiling___table_computation___ColorContext___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__compiling___table_computation___TableInformation = "init var of TableInformation";
 void INIT_ATTRIBUTES__compiling___table_computation___TableInformation(val_t p0);
 typedef void (*INIT_ATTRIBUTES__compiling___table_computation___TableInformation_t)(val_t p0);
 val_t NEW_compiling___table_computation___TableInformation(void);
-static const char * const LOCATE_CHECKNEW_compiling___table_computation___TableInformation = "check new TableInformation";
 void CHECKNEW_compiling___table_computation___TableInformation(val_t p0);
 typedef void (*CHECKNEW_compiling___table_computation___TableInformation_t)(val_t p0);
-static const char * const LOCATE_NEW_TableInformation_compiling___table_computation___ColorContext___init = "new TableInformation table_computation::ColorContext::init";
 val_t NEW_TableInformation_compiling___table_computation___ColorContext___init(void);
 typedef val_t (*NEW_TableInformation_compiling___table_computation___ColorContext___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__compiling___table_computation___CompiledClass = "init var of CompiledClass";
 void INIT_ATTRIBUTES__compiling___table_computation___CompiledClass(val_t p0);
 typedef void (*INIT_ATTRIBUTES__compiling___table_computation___CompiledClass_t)(val_t p0);
 val_t NEW_compiling___table_computation___CompiledClass(void);
-static const char * const LOCATE_CHECKNEW_compiling___table_computation___CompiledClass = "check new CompiledClass";
 void CHECKNEW_compiling___table_computation___CompiledClass(val_t p0);
 typedef void (*CHECKNEW_compiling___table_computation___CompiledClass_t)(val_t p0);
-static const char * const LOCATE_NEW_CompiledClass_compiling___table_computation___CompiledClass___init = "new CompiledClass table_computation::CompiledClass::init";
 val_t NEW_CompiledClass_compiling___table_computation___CompiledClass___init(val_t p0);
 typedef val_t (*NEW_CompiledClass_compiling___table_computation___CompiledClass___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__compiling___table_computation___ModuleTableEltGroup = "init var of ModuleTableEltGroup";
 void INIT_ATTRIBUTES__compiling___table_computation___ModuleTableEltGroup(val_t p0);
 typedef void (*INIT_ATTRIBUTES__compiling___table_computation___ModuleTableEltGroup_t)(val_t p0);
 val_t NEW_compiling___table_computation___ModuleTableEltGroup(void);
-static const char * const LOCATE_CHECKNEW_compiling___table_computation___ModuleTableEltGroup = "check new ModuleTableEltGroup";
 void CHECKNEW_compiling___table_computation___ModuleTableEltGroup(val_t p0);
 typedef void (*CHECKNEW_compiling___table_computation___ModuleTableEltGroup_t)(val_t p0);
-static const char * const LOCATE_NEW_ModuleTableEltGroup_compiling___table_computation___AbsTableElt___init = "new ModuleTableEltGroup table_computation::AbsTableElt::init";
-val_t NEW_ModuleTableEltGroup_compiling___table_computation___AbsTableElt___init(void);
-typedef val_t (*NEW_ModuleTableEltGroup_compiling___table_computation___AbsTableElt___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__compiling___table_computation___TableEltMeth = "init var of TableEltMeth";
+val_t NEW_ModuleTableEltGroup_compiling___table_computation___ModuleTableEltGroup___init(void);
+typedef val_t (*NEW_ModuleTableEltGroup_compiling___table_computation___ModuleTableEltGroup___init_t)(void);
 void INIT_ATTRIBUTES__compiling___table_computation___TableEltMeth(val_t p0);
 typedef void (*INIT_ATTRIBUTES__compiling___table_computation___TableEltMeth_t)(val_t p0);
 val_t NEW_compiling___table_computation___TableEltMeth(void);
-static const char * const LOCATE_CHECKNEW_compiling___table_computation___TableEltMeth = "check new TableEltMeth";
 void CHECKNEW_compiling___table_computation___TableEltMeth(val_t p0);
 typedef void (*CHECKNEW_compiling___table_computation___TableEltMeth_t)(val_t p0);
-static const char * const LOCATE_NEW_TableEltMeth_compiling___table_computation___TableEltProp___init = "new TableEltMeth table_computation::TableEltProp::init";
 val_t NEW_TableEltMeth_compiling___table_computation___TableEltProp___init(val_t p0);
 typedef val_t (*NEW_TableEltMeth_compiling___table_computation___TableEltProp___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__compiling___table_computation___TableEltVTClassColor = "init var of TableEltVTClassColor";
 void INIT_ATTRIBUTES__compiling___table_computation___TableEltVTClassColor(val_t p0);
 typedef void (*INIT_ATTRIBUTES__compiling___table_computation___TableEltVTClassColor_t)(val_t p0);
 val_t NEW_compiling___table_computation___TableEltVTClassColor(void);
-static const char * const LOCATE_CHECKNEW_compiling___table_computation___TableEltVTClassColor = "check new TableEltVTClassColor";
 void CHECKNEW_compiling___table_computation___TableEltVTClassColor(val_t p0);
 typedef void (*CHECKNEW_compiling___table_computation___TableEltVTClassColor_t)(val_t p0);
-static const char * const LOCATE_NEW_TableEltVTClassColor_compiling___table_computation___TableEltProp___init = "new TableEltVTClassColor table_computation::TableEltProp::init";
 val_t NEW_TableEltVTClassColor_compiling___table_computation___TableEltProp___init(val_t p0);
 typedef val_t (*NEW_TableEltVTClassColor_compiling___table_computation___TableEltProp___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__compiling___table_computation___TableEltVTClassId = "init var of TableEltVTClassId";
 void INIT_ATTRIBUTES__compiling___table_computation___TableEltVTClassId(val_t p0);
 typedef void (*INIT_ATTRIBUTES__compiling___table_computation___TableEltVTClassId_t)(val_t p0);
 val_t NEW_compiling___table_computation___TableEltVTClassId(void);
-static const char * const LOCATE_CHECKNEW_compiling___table_computation___TableEltVTClassId = "check new TableEltVTClassId";
 void CHECKNEW_compiling___table_computation___TableEltVTClassId(val_t p0);
 typedef void (*CHECKNEW_compiling___table_computation___TableEltVTClassId_t)(val_t p0);
-static const char * const LOCATE_NEW_TableEltVTClassId_compiling___table_computation___TableEltProp___init = "new TableEltVTClassId table_computation::TableEltProp::init";
 val_t NEW_TableEltVTClassId_compiling___table_computation___TableEltProp___init(val_t p0);
 typedef val_t (*NEW_TableEltVTClassId_compiling___table_computation___TableEltProp___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__compiling___table_computation___TableEltSuper = "init var of TableEltSuper";
 void INIT_ATTRIBUTES__compiling___table_computation___TableEltSuper(val_t p0);
 typedef void (*INIT_ATTRIBUTES__compiling___table_computation___TableEltSuper_t)(val_t p0);
 val_t NEW_compiling___table_computation___TableEltSuper(void);
-static const char * const LOCATE_CHECKNEW_compiling___table_computation___TableEltSuper = "check new TableEltSuper";
 void CHECKNEW_compiling___table_computation___TableEltSuper(val_t p0);
 typedef void (*CHECKNEW_compiling___table_computation___TableEltSuper_t)(val_t p0);
-static const char * const LOCATE_NEW_TableEltSuper_compiling___table_computation___TableEltProp___init = "new TableEltSuper table_computation::TableEltProp::init";
 val_t NEW_TableEltSuper_compiling___table_computation___TableEltProp___init(val_t p0);
 typedef val_t (*NEW_TableEltSuper_compiling___table_computation___TableEltProp___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__compiling___table_computation___TableEltAttr = "init var of TableEltAttr";
 void INIT_ATTRIBUTES__compiling___table_computation___TableEltAttr(val_t p0);
 typedef void (*INIT_ATTRIBUTES__compiling___table_computation___TableEltAttr_t)(val_t p0);
 val_t NEW_compiling___table_computation___TableEltAttr(void);
-static const char * const LOCATE_CHECKNEW_compiling___table_computation___TableEltAttr = "check new TableEltAttr";
 void CHECKNEW_compiling___table_computation___TableEltAttr(val_t p0);
 typedef void (*CHECKNEW_compiling___table_computation___TableEltAttr_t)(val_t p0);
-static const char * const LOCATE_NEW_TableEltAttr_compiling___table_computation___TableEltProp___init = "new TableEltAttr table_computation::TableEltProp::init";
 val_t NEW_TableEltAttr_compiling___table_computation___TableEltProp___init(val_t p0);
 typedef val_t (*NEW_TableEltAttr_compiling___table_computation___TableEltProp___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__compiling___table_computation___AbsTableEltClass = "init var of AbsTableEltClass";
-void INIT_ATTRIBUTES__compiling___table_computation___AbsTableEltClass(val_t p0);
-typedef void (*INIT_ATTRIBUTES__compiling___table_computation___AbsTableEltClass_t)(val_t p0);
-val_t NEW_compiling___table_computation___AbsTableEltClass(void);
-static const char * const LOCATE_CHECKNEW_compiling___table_computation___AbsTableEltClass = "check new AbsTableEltClass";
-void CHECKNEW_compiling___table_computation___AbsTableEltClass(val_t p0);
-typedef void (*CHECKNEW_compiling___table_computation___AbsTableEltClass_t)(val_t p0);
-static const char * const LOCATE_NEW_AbsTableEltClass_compiling___table_computation___AbsTableEltClass___init = "new AbsTableEltClass table_computation::AbsTableEltClass::init";
-val_t NEW_AbsTableEltClass_compiling___table_computation___AbsTableEltClass___init(val_t p0);
-typedef val_t (*NEW_AbsTableEltClass_compiling___table_computation___AbsTableEltClass___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__compiling___table_computation___TableEltClass = "init var of TableEltClass";
-void INIT_ATTRIBUTES__compiling___table_computation___TableEltClass(val_t p0);
-typedef void (*INIT_ATTRIBUTES__compiling___table_computation___TableEltClass_t)(val_t p0);
-val_t NEW_compiling___table_computation___TableEltClass(void);
-static const char * const LOCATE_CHECKNEW_compiling___table_computation___TableEltClass = "check new TableEltClass";
-void CHECKNEW_compiling___table_computation___TableEltClass(val_t p0);
-typedef void (*CHECKNEW_compiling___table_computation___TableEltClass_t)(val_t p0);
-static const char * const LOCATE_NEW_TableEltClass_compiling___table_computation___AbsTableEltClass___init = "new TableEltClass table_computation::AbsTableEltClass::init";
-val_t NEW_TableEltClass_compiling___table_computation___AbsTableEltClass___init(val_t p0);
-typedef val_t (*NEW_TableEltClass_compiling___table_computation___AbsTableEltClass___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__compiling___table_computation___TableEltClassId = "init var of TableEltClassId";
 void INIT_ATTRIBUTES__compiling___table_computation___TableEltClassId(val_t p0);
 typedef void (*INIT_ATTRIBUTES__compiling___table_computation___TableEltClassId_t)(val_t p0);
 val_t NEW_compiling___table_computation___TableEltClassId(void);
-static const char * const LOCATE_CHECKNEW_compiling___table_computation___TableEltClassId = "check new TableEltClassId";
 void CHECKNEW_compiling___table_computation___TableEltClassId(val_t p0);
 typedef void (*CHECKNEW_compiling___table_computation___TableEltClassId_t)(val_t p0);
-static const char * const LOCATE_NEW_TableEltClassId_compiling___table_computation___AbsTableEltClass___init = "new TableEltClassId table_computation::AbsTableEltClass::init";
 val_t NEW_TableEltClassId_compiling___table_computation___AbsTableEltClass___init(val_t p0);
 typedef val_t (*NEW_TableEltClassId_compiling___table_computation___AbsTableEltClass___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__compiling___table_computation___TableEltClassInitTable = "init var of TableEltClassInitTable";
 void INIT_ATTRIBUTES__compiling___table_computation___TableEltClassInitTable(val_t p0);
 typedef void (*INIT_ATTRIBUTES__compiling___table_computation___TableEltClassInitTable_t)(val_t p0);
 val_t NEW_compiling___table_computation___TableEltClassInitTable(void);
-static const char * const LOCATE_CHECKNEW_compiling___table_computation___TableEltClassInitTable = "check new TableEltClassInitTable";
 void CHECKNEW_compiling___table_computation___TableEltClassInitTable(val_t p0);
 typedef void (*CHECKNEW_compiling___table_computation___TableEltClassInitTable_t)(val_t p0);
-static const char * const LOCATE_NEW_TableEltClassInitTable_compiling___table_computation___AbsTableEltClass___init = "new TableEltClassInitTable table_computation::AbsTableEltClass::init";
 val_t NEW_TableEltClassInitTable_compiling___table_computation___AbsTableEltClass___init(val_t p0);
 typedef val_t (*NEW_TableEltClassInitTable_compiling___table_computation___AbsTableEltClass___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__compiling___table_computation___TableEltClassColor = "init var of TableEltClassColor";
 void INIT_ATTRIBUTES__compiling___table_computation___TableEltClassColor(val_t p0);
 typedef void (*INIT_ATTRIBUTES__compiling___table_computation___TableEltClassColor_t)(val_t p0);
 val_t NEW_compiling___table_computation___TableEltClassColor(void);
-static const char * const LOCATE_CHECKNEW_compiling___table_computation___TableEltClassColor = "check new TableEltClassColor";
 void CHECKNEW_compiling___table_computation___TableEltClassColor(val_t p0);
 typedef void (*CHECKNEW_compiling___table_computation___TableEltClassColor_t)(val_t p0);
-static const char * const LOCATE_NEW_TableEltClassColor_compiling___table_computation___AbsTableEltClass___init = "new TableEltClassColor table_computation::AbsTableEltClass::init";
 val_t NEW_TableEltClassColor_compiling___table_computation___AbsTableEltClass___init(val_t p0);
 typedef val_t (*NEW_TableEltClassColor_compiling___table_computation___AbsTableEltClass___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__compiling___table_computation___TableEltComposite = "init var of TableEltComposite";
 void INIT_ATTRIBUTES__compiling___table_computation___TableEltComposite(val_t p0);
 typedef void (*INIT_ATTRIBUTES__compiling___table_computation___TableEltComposite_t)(val_t p0);
 val_t NEW_compiling___table_computation___TableEltComposite(void);
-static const char * const LOCATE_CHECKNEW_compiling___table_computation___TableEltComposite = "check new TableEltComposite";
 void CHECKNEW_compiling___table_computation___TableEltComposite(val_t p0);
 typedef void (*CHECKNEW_compiling___table_computation___TableEltComposite_t)(val_t p0);
-static const char * const LOCATE_NEW_TableEltComposite_compiling___table_computation___TableEltComposite___init = "new TableEltComposite table_computation::TableEltComposite::init";
 val_t NEW_TableEltComposite_compiling___table_computation___TableEltComposite___init(val_t p0);
 typedef val_t (*NEW_TableEltComposite_compiling___table_computation___TableEltComposite___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__compiling___table_computation___TableEltClassSelfId = "init var of TableEltClassSelfId";
 void INIT_ATTRIBUTES__compiling___table_computation___TableEltClassSelfId(val_t p0);
 typedef void (*INIT_ATTRIBUTES__compiling___table_computation___TableEltClassSelfId_t)(val_t p0);
 val_t NEW_compiling___table_computation___TableEltClassSelfId(void);
-static const char * const LOCATE_CHECKNEW_compiling___table_computation___TableEltClassSelfId = "check new TableEltClassSelfId";
 void CHECKNEW_compiling___table_computation___TableEltClassSelfId(val_t p0);
 typedef void (*CHECKNEW_compiling___table_computation___TableEltClassSelfId_t)(val_t p0);
-static const char * const LOCATE_NEW_TableEltClassSelfId_compiling___table_computation___AbsTableElt___init = "new TableEltClassSelfId table_computation::AbsTableElt::init";
-val_t NEW_TableEltClassSelfId_compiling___table_computation___AbsTableElt___init(void);
-typedef val_t (*NEW_TableEltClassSelfId_compiling___table_computation___AbsTableElt___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__compiling___table_computation___TableEltClassSelfName = "init var of TableEltClassSelfName";
+val_t NEW_TableEltClassSelfId_compiling___table_computation___TableEltClassSelfId___init(void);
+typedef val_t (*NEW_TableEltClassSelfId_compiling___table_computation___TableEltClassSelfId___init_t)(void);
 void INIT_ATTRIBUTES__compiling___table_computation___TableEltClassSelfName(val_t p0);
 typedef void (*INIT_ATTRIBUTES__compiling___table_computation___TableEltClassSelfName_t)(val_t p0);
 val_t NEW_compiling___table_computation___TableEltClassSelfName(void);
-static const char * const LOCATE_CHECKNEW_compiling___table_computation___TableEltClassSelfName = "check new TableEltClassSelfName";
 void CHECKNEW_compiling___table_computation___TableEltClassSelfName(val_t p0);
 typedef void (*CHECKNEW_compiling___table_computation___TableEltClassSelfName_t)(val_t p0);
-static const char * const LOCATE_NEW_TableEltClassSelfName_compiling___table_computation___AbsTableElt___init = "new TableEltClassSelfName table_computation::AbsTableElt::init";
-val_t NEW_TableEltClassSelfName_compiling___table_computation___AbsTableElt___init(void);
-typedef val_t (*NEW_TableEltClassSelfName_compiling___table_computation___AbsTableElt___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__compiling___table_computation___TableEltClassObjectSize = "init var of TableEltClassObjectSize";
+val_t NEW_TableEltClassSelfName_compiling___table_computation___TableEltClassSelfName___init(void);
+typedef val_t (*NEW_TableEltClassSelfName_compiling___table_computation___TableEltClassSelfName___init_t)(void);
 void INIT_ATTRIBUTES__compiling___table_computation___TableEltClassObjectSize(val_t p0);
 typedef void (*INIT_ATTRIBUTES__compiling___table_computation___TableEltClassObjectSize_t)(val_t p0);
 val_t NEW_compiling___table_computation___TableEltClassObjectSize(void);
-static const char * const LOCATE_CHECKNEW_compiling___table_computation___TableEltClassObjectSize = "check new TableEltClassObjectSize";
 void CHECKNEW_compiling___table_computation___TableEltClassObjectSize(val_t p0);
 typedef void (*CHECKNEW_compiling___table_computation___TableEltClassObjectSize_t)(val_t p0);
-static const char * const LOCATE_NEW_TableEltClassObjectSize_compiling___table_computation___AbsTableElt___init = "new TableEltClassObjectSize table_computation::AbsTableElt::init";
-val_t NEW_TableEltClassObjectSize_compiling___table_computation___AbsTableElt___init(void);
-typedef val_t (*NEW_TableEltClassObjectSize_compiling___table_computation___AbsTableElt___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__compiling___table_computation___TableEltObjectId = "init var of TableEltObjectId";
+val_t NEW_TableEltClassObjectSize_compiling___table_computation___TableEltClassObjectSize___init(void);
+typedef val_t (*NEW_TableEltClassObjectSize_compiling___table_computation___TableEltClassObjectSize___init_t)(void);
 void INIT_ATTRIBUTES__compiling___table_computation___TableEltObjectId(val_t p0);
 typedef void (*INIT_ATTRIBUTES__compiling___table_computation___TableEltObjectId_t)(val_t p0);
 val_t NEW_compiling___table_computation___TableEltObjectId(void);
-static const char * const LOCATE_CHECKNEW_compiling___table_computation___TableEltObjectId = "check new TableEltObjectId";
 void CHECKNEW_compiling___table_computation___TableEltObjectId(val_t p0);
 typedef void (*CHECKNEW_compiling___table_computation___TableEltObjectId_t)(val_t p0);
-static const char * const LOCATE_NEW_TableEltObjectId_compiling___table_computation___AbsTableElt___init = "new TableEltObjectId table_computation::AbsTableElt::init";
-val_t NEW_TableEltObjectId_compiling___table_computation___AbsTableElt___init(void);
-typedef val_t (*NEW_TableEltObjectId_compiling___table_computation___AbsTableElt___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__compiling___table_computation___TableEltVftPointer = "init var of TableEltVftPointer";
+val_t NEW_TableEltObjectId_compiling___table_computation___TableEltObjectId___init(void);
+typedef val_t (*NEW_TableEltObjectId_compiling___table_computation___TableEltObjectId___init_t)(void);
 void INIT_ATTRIBUTES__compiling___table_computation___TableEltVftPointer(val_t p0);
 typedef void (*INIT_ATTRIBUTES__compiling___table_computation___TableEltVftPointer_t)(val_t p0);
 val_t NEW_compiling___table_computation___TableEltVftPointer(void);
-static const char * const LOCATE_CHECKNEW_compiling___table_computation___TableEltVftPointer = "check new TableEltVftPointer";
 void CHECKNEW_compiling___table_computation___TableEltVftPointer(val_t p0);
 typedef void (*CHECKNEW_compiling___table_computation___TableEltVftPointer_t)(val_t p0);
-static const char * const LOCATE_NEW_TableEltVftPointer_compiling___table_computation___AbsTableElt___init = "new TableEltVftPointer table_computation::AbsTableElt::init";
-val_t NEW_TableEltVftPointer_compiling___table_computation___AbsTableElt___init(void);
-typedef val_t (*NEW_TableEltVftPointer_compiling___table_computation___AbsTableElt___init_t)(void);
-static const char * const LOCATE_INIT_ATTRIBUTES__compiling___compiling_icode___I2CCompilerVisitor = "init var of I2CCompilerVisitor";
+val_t NEW_TableEltVftPointer_compiling___table_computation___TableEltVftPointer___init(void);
+typedef val_t (*NEW_TableEltVftPointer_compiling___table_computation___TableEltVftPointer___init_t)(void);
 void INIT_ATTRIBUTES__compiling___compiling_icode___I2CCompilerVisitor(val_t p0);
 typedef void (*INIT_ATTRIBUTES__compiling___compiling_icode___I2CCompilerVisitor_t)(val_t p0);
 val_t NEW_compiling___compiling_icode___I2CCompilerVisitor(void);
-static const char * const LOCATE_CHECKNEW_compiling___compiling_icode___I2CCompilerVisitor = "check new I2CCompilerVisitor";
 void CHECKNEW_compiling___compiling_icode___I2CCompilerVisitor(val_t p0);
 typedef void (*CHECKNEW_compiling___compiling_icode___I2CCompilerVisitor_t)(val_t p0);
-static const char * const LOCATE_NEW_I2CCompilerVisitor_compiling___compiling_icode___I2CCompilerVisitor___init = "new I2CCompilerVisitor compiling_icode::I2CCompilerVisitor::init";
 val_t NEW_I2CCompilerVisitor_compiling___compiling_icode___I2CCompilerVisitor___init(val_t p0, val_t p1, val_t p2);
 typedef val_t (*NEW_I2CCompilerVisitor_compiling___compiling_icode___I2CCompilerVisitor___init_t)(val_t p0, val_t p1, val_t p2);
-static const char * const LOCATE_INIT_ATTRIBUTES__native_interface___ni_tools___FunctionCompiler = "init var of FunctionCompiler";
 void INIT_ATTRIBUTES__native_interface___ni_tools___FunctionCompiler(val_t p0);
 typedef void (*INIT_ATTRIBUTES__native_interface___ni_tools___FunctionCompiler_t)(val_t p0);
 val_t NEW_native_interface___ni_tools___FunctionCompiler(void);
-static const char * const LOCATE_CHECKNEW_native_interface___ni_tools___FunctionCompiler = "check new FunctionCompiler";
 void CHECKNEW_native_interface___ni_tools___FunctionCompiler(val_t p0);
 typedef void (*CHECKNEW_native_interface___ni_tools___FunctionCompiler_t)(val_t p0);
-static const char * const LOCATE_NEW_FunctionCompiler_native_interface___ni_tools___FunctionCompiler___init = "new FunctionCompiler ni_tools::FunctionCompiler::init";
 val_t NEW_FunctionCompiler_native_interface___ni_tools___FunctionCompiler___init(val_t p0);
 typedef val_t (*NEW_FunctionCompiler_native_interface___ni_tools___FunctionCompiler___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__native_interface___frontier___FrontierVisitor = "init var of FrontierVisitor";
+void INIT_ATTRIBUTES__native_interface___frontier___ReceiverVariable(val_t p0);
+typedef void (*INIT_ATTRIBUTES__native_interface___frontier___ReceiverVariable_t)(val_t p0);
+val_t NEW_native_interface___frontier___ReceiverVariable(void);
+void CHECKNEW_native_interface___frontier___ReceiverVariable(val_t p0);
+typedef void (*CHECKNEW_native_interface___frontier___ReceiverVariable_t)(val_t p0);
+val_t NEW_ReceiverVariable_native_interface___frontier___ReceiverVariable___init(val_t p0);
+typedef val_t (*NEW_ReceiverVariable_native_interface___frontier___ReceiverVariable___init_t)(val_t p0);
+void INIT_ATTRIBUTES__native_interface___frontier___ReturnVariable(val_t p0);
+typedef void (*INIT_ATTRIBUTES__native_interface___frontier___ReturnVariable_t)(val_t p0);
+val_t NEW_native_interface___frontier___ReturnVariable(void);
+void CHECKNEW_native_interface___frontier___ReturnVariable(val_t p0);
+typedef void (*CHECKNEW_native_interface___frontier___ReturnVariable_t)(val_t p0);
+val_t NEW_ReturnVariable_native_interface___frontier___ReturnVariable___init(val_t p0);
+typedef val_t (*NEW_ReturnVariable_native_interface___frontier___ReturnVariable___init_t)(val_t p0);
 void INIT_ATTRIBUTES__native_interface___frontier___FrontierVisitor(val_t p0);
 typedef void (*INIT_ATTRIBUTES__native_interface___frontier___FrontierVisitor_t)(val_t p0);
 val_t NEW_native_interface___frontier___FrontierVisitor(void);
-static const char * const LOCATE_CHECKNEW_native_interface___frontier___FrontierVisitor = "check new FrontierVisitor";
 void CHECKNEW_native_interface___frontier___FrontierVisitor(val_t p0);
 typedef void (*CHECKNEW_native_interface___frontier___FrontierVisitor_t)(val_t p0);
-static const char * const LOCATE_NEW_FrontierVisitor_native_interface___frontier___FrontierVisitor___init = "new FrontierVisitor frontier::FrontierVisitor::init";
 val_t NEW_FrontierVisitor_native_interface___frontier___FrontierVisitor___init(val_t p0, val_t p1);
 typedef val_t (*NEW_FrontierVisitor_native_interface___frontier___FrontierVisitor___init_t)(val_t p0, val_t p1);
-const char *LOCATE_abstracttool = "./abstracttool.nit";
+void INIT_ATTRIBUTES__c_tools___CCompilationUnit(val_t p0);
+typedef void (*INIT_ATTRIBUTES__c_tools___CCompilationUnit_t)(val_t p0);
+val_t NEW_c_tools___CCompilationUnit(void);
+void CHECKNEW_c_tools___CCompilationUnit(val_t p0);
+typedef void (*CHECKNEW_c_tools___CCompilationUnit_t)(val_t p0);
+val_t NEW_CCompilationUnit_c_tools___CCompilationUnit___init(void);
+typedef val_t (*NEW_CCompilationUnit_c_tools___CCompilationUnit___init_t)(void);
+void INIT_ATTRIBUTES__c_tools___CFunction(val_t p0);
+typedef void (*INIT_ATTRIBUTES__c_tools___CFunction_t)(val_t p0);
+val_t NEW_c_tools___CFunction(void);
+void CHECKNEW_c_tools___CFunction(val_t p0);
+typedef void (*CHECKNEW_c_tools___CFunction_t)(val_t p0);
+val_t NEW_CFunction_c_tools___CFunction___init(val_t p0);
+typedef val_t (*NEW_CFunction_c_tools___CFunction___init_t)(val_t p0);
+void INIT_ATTRIBUTES__ffi___ffi_base___ExternImportSet(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ffi___ffi_base___ExternImportSet_t)(val_t p0);
+val_t NEW_ffi___ffi_base___ExternImportSet(void);
+void CHECKNEW_ffi___ffi_base___ExternImportSet(val_t p0);
+typedef void (*CHECKNEW_ffi___ffi_base___ExternImportSet_t)(val_t p0);
+val_t NEW_ExternImportSet_ffi___ffi_base___ExternImportSet___init(void);
+typedef val_t (*NEW_ExternImportSet_ffi___ffi_base___ExternImportSet___init_t)(void);
+void INIT_ATTRIBUTES__ffi___ffi_base___FFIVisitor(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ffi___ffi_base___FFIVisitor_t)(val_t p0);
+val_t NEW_ffi___ffi_base___FFIVisitor(void);
+void CHECKNEW_ffi___ffi_base___FFIVisitor(val_t p0);
+typedef void (*CHECKNEW_ffi___ffi_base___FFIVisitor_t)(val_t p0);
+val_t NEW_FFIVisitor_ffi___ffi_base___FFIVisitor___init(val_t p0, val_t p1);
+typedef val_t (*NEW_FFIVisitor_ffi___ffi_base___FFIVisitor___init_t)(val_t p0, val_t p1);
+const char LOCATE_global[] = "global/global.nit";
+const int SFT_global[4] = {
+  6 /* Group of ? */,
+  59 /* Group of ? */,
+  141 /* Group of ? */,
+  50 /* Group of ? */,
+};
+const char LOCATE_abstracttool[] = "abstracttool.nit";
 const int SFT_abstracttool[6] = {
-  3035 /* Id of AbstractCompiler */,
+  3723 /* Id of AbstractCompiler */,
   6 /* Color of AbstractCompiler */,
-  51 /* Group of ? */,
-  134 /* Group of ? */,
-  47 /* Group of ? */,
-  47 /* Group of ? */,
+  55 /* Group of ? */,
+  142 /* Group of ? */,
+  74 /* Group of ? */,
+  74 /* Group of ? */,
 };
-const char *LOCATE_syntax = "./syntax//syntax.nit";
+const char LOCATE_syntax[] = "syntax/syntax.nit";
 const int SFT_syntax[6] = {
-  347 /* Id of SrcModuleLoader */,
+  351 /* Id of SrcModuleLoader */,
   5 /* Color of SrcModuleLoader */,
-  58 /* Group of ? */,
-  88 /* Group of ? */,
-  15 /* Group of ? */,
-  76 /* Group of ? */,
+  60 /* Group of ? */,
+  120 /* Group of ? */,
+  14 /* Group of ? */,
+  69 /* Group of ? */,
 };
-const char *LOCATE_syntax___mmbuilder = "./syntax//mmbuilder.nit";
-const int SFT_syntax___mmbuilder[68] = {
-  2351 /* Id of CSHSorter */,
-  5 /* Color of CSHSorter */,
-  54 /* Group of ? */,
-  90 /* Group of ? */,
-  48 /* Group of ? */,
-  122 /* Group of ? */,
-  47 /* Group of ? */,
-  18 /* Group of ? */,
-  2163 /* Id of MMSrcAncestor */,
-  5 /* Color of MMSrcAncestor */,
+const char LOCATE_syntax___icode_generation[] = "syntax/icode_generation.nit";
+const int SFT_syntax___icode_generation[27] = {
+  3323 /* Id of A2IContext */,
+  5 /* Color of A2IContext */,
+  6 /* Group of ? */,
+  74 /* Group of ? */,
   4 /* Group of ? */,
-  57 /* Group of ? */,
-  3003 /* Id of ClassBuilderVisitor */,
-  6 /* Color of ClassBuilderVisitor */,
-  7 /* Group of ? */,
-  81 /* Group of ? */,
-  2999 /* Id of ClassSpecializationBuilderVisitor */,
-  6 /* Color of ClassSpecializationBuilderVisitor */,
-  81 /* Group of ? */,
-  3007 /* Id of ClassAncestorBuilder */,
-  6 /* Color of ClassAncestorBuilder */,
-  81 /* Group of ? */,
-  2995 /* Id of ClassVerifierVisitor */,
-  6 /* Color of ClassVerifierVisitor */,
-  81 /* Group of ? */,
-  2787 /* Id of PropertyBuilderVisitor */,
-  6 /* Color of PropertyBuilderVisitor */,
-  81 /* Group of ? */,
-  2783 /* Id of PropertyVerifierVisitor */,
-  6 /* Color of PropertyVerifierVisitor */,
+  55 /* Group of ? */,
+  122 /* Group of ? */,
+  10 /* Group of ? */,
+  74 /* Group of ? */,
+  11 /* Group of ? */,
+  105 /* Group of ? */,
+  3859 /* Id of A2IVisitor */,
+  6 /* Color of A2IVisitor */,
   7 /* Group of ? */,
-  81 /* Group of ? */,
-  51 /* Id of SignatureBuilder */,
-  4 /* Color of SignatureBuilder */,
-  2 /* Group of ? */,
-  47 /* Group of ? */,
-  47 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  6 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  85 /* Group of ? */,
-  6 /* Group of ? */,
-  72 /* Group of ? */,
-  6 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  8 /* Group of ? */,
-  79 /* Group of ? */,
-  8 /* Group of ? */,
-  79 /* Group of ? */,
+  84 /* Group of ? */,
+  68 /* Group of ? */,
+  100 /* Group of ? */,
   94 /* Group of ? */,
+  85 /* Group of ? */,
+  104 /* Group of ? */,
+  104 /* Group of ? */,
+  82 /* Group of ? */,
+  12 /* Group of ? */,
+  89 /* Group of ? */,
+  97 /* Group of ? */,
   8 /* Group of ? */,
-  79 /* Group of ? */,
-  2119 /* Id of MethidAccumulator */,
-  5 /* Color of MethidAccumulator */,
-  3 /* Group of ? */,
-  52 /* Group of ? */,
-  6 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  6 /* Group of ? */,
-  72 /* Group of ? */,
-  6 /* Group of ? */,
-  72 /* Group of ? */,
+  77 /* Group of ? */,
+};
+const char LOCATE_icode[] = "icode/icode.nit";
+const char LOCATE_icode___icode_tools[] = "icode/icode_tools.nit";
+const int SFT_icode___icode_tools[12] = {
+  211 /* Id of ICodeVisitor */,
+  4 /* Color of ICodeVisitor */,
+  2 /* Group of ? */,
+  50 /* Group of ? */,
+  50 /* Group of ? */,
+  215 /* Id of ICodeDupContext */,
+  4 /* Color of ICodeDupContext */,
+  2 /* Group of ? */,
+  50 /* Group of ? */,
+  56 /* Group of ? */,
+  67 /* Group of ? */,
   72 /* Group of ? */,
 };
-const char *LOCATE_syntax___syntax_base = "./syntax//syntax_base.nit";
-const int SFT_syntax___syntax_base[100] = {
-  2159 /* Id of MMSrcModule */,
-  5 /* Color of MMSrcModule */,
-  21 /* Group of ? */,
-  92 /* Group of ? */,
-  48 /* Group of ? */,
-  47 /* Group of ? */,
-  2843 /* Id of MMSrcLocalClass */,
-  6 /* Color of MMSrcLocalClass */,
-  28 /* Group of ? */,
-  124 /* Group of ? */,
-  47 /* Group of ? */,
-  48 /* Group of ? */,
-  2847 /* Id of MMSrcAttribute */,
-  6 /* Color of MMSrcAttribute */,
-  73 /* Group of ? */,
-  2839 /* Id of MMSrcMethod */,
-  6 /* Color of MMSrcMethod */,
-  100 /* Group of ? */,
-  3199 /* Id of MMAttrImplementationMethod */,
-  7 /* Color of MMAttrImplementationMethod */,
-  101 /* Group of ? */,
-  3547 /* Id of MMReadImplementationMethod */,
-  8 /* Color of MMReadImplementationMethod */,
-  103 /* Group of ? */,
-  3543 /* Id of MMWriteImplementationMethod */,
-  8 /* Color of MMWriteImplementationMethod */,
-  103 /* Group of ? */,
-  3195 /* Id of MMMethSrcMethod */,
-  7 /* Color of MMMethSrcMethod */,
-  11 /* Group of ? */,
-  101 /* Group of ? */,
-  2835 /* Id of MMSrcTypeProperty */,
-  6 /* Color of MMSrcTypeProperty */,
+const char LOCATE_icode___icode_builder[] = "icode/icode_builder.nit";
+const int SFT_icode___icode_builder[5] = {
+  223 /* Id of ICodeBuilder */,
+  4 /* Color of ICodeBuilder */,
+  2 /* Group of ? */,
+  51 /* Group of ? */,
+  56 /* Group of ? */,
+};
+const char LOCATE_icode___icode_base[] = "icode/icode_base.nit";
+const int SFT_icode___icode_base[148] = {
+  199 /* Id of IRegister */,
+  4 /* Color of IRegister */,
+  9 /* Group of ? */,
+  58 /* Group of ? */,
+  207 /* Id of IEscapeMark */,
+  4 /* Color of IEscapeMark */,
+  50 /* Group of ? */,
+  231 /* Id of IClosureDecl */,
+  4 /* Color of IClosureDecl */,
+  2 /* Group of ? */,
+  51 /* Group of ? */,
+  195 /* Id of IRoutine */,
+  4 /* Color of IRoutine */,
+  2 /* Group of ? */,
+  51 /* Group of ? */,
+  3195 /* Id of IClosureDef */,
+  5 /* Color of IClosureDef */,
   72 /* Group of ? */,
-  3551 /* Id of MMImplicitInit */,
-  8 /* Color of MMImplicitInit */,
-  19 /* Group of ? */,
-  104 /* Group of ? */,
-  19 /* Id of Variable */,
-  4 /* Color of Variable */,
+  227 /* Id of ICode */,
+  4 /* Color of ICode */,
   2 /* Group of ? */,
-  48 /* Group of ? */,
-  323 /* Id of VarVariable */,
-  5 /* Color of VarVariable */,
-  55 /* Group of ? */,
-  2087 /* Id of ParamVariable */,
-  5 /* Color of ParamVariable */,
-  55 /* Group of ? */,
-  2359 /* Id of AutoVariable */,
-  5 /* Color of AutoVariable */,
-  55 /* Group of ? */,
-  2339 /* Id of ClosureVariable */,
-  5 /* Color of ClosureVariable */,
+  58 /* Group of ? */,
+  3191 /* Id of ICode0 */,
+  5 /* Color of ICode0 */,
+  66 /* Group of ? */,
+  3187 /* Id of ICode1 */,
+  5 /* Color of ICode1 */,
+  4 /* Group of ? */,
+  66 /* Group of ? */,
+  3183 /* Id of ICode2 */,
+  5 /* Color of ICode2 */,
+  4 /* Group of ? */,
+  66 /* Group of ? */,
+  3179 /* Id of ICodeN */,
+  5 /* Color of ICodeN */,
+  4 /* Group of ? */,
+  67 /* Group of ? */,
+  3555 /* Id of ISeq */,
+  6 /* Color of ISeq */,
+  4 /* Group of ? */,
+  68 /* Group of ? */,
+  4235 /* Id of ILoop */,
+  7 /* Color of ILoop */,
+  73 /* Group of ? */,
+  3595 /* Id of IIf */,
+  6 /* Color of IIf */,
   5 /* Group of ? */,
-  55 /* Group of ? */,
-  2371 /* Id of AbsSyntaxVisitor */,
-  5 /* Color of AbsSyntaxVisitor */,
-  3 /* Group of ? */,
-  52 /* Group of ? */,
-  53 /* Group of ? */,
+  69 /* Group of ? */,
+  3607 /* Id of IEscape */,
+  6 /* Color of IEscape */,
   4 /* Group of ? */,
   67 /* Group of ? */,
-  7 /* Group of ? */,
-  80 /* Group of ? */,
-  76 /* Group of ? */,
-  82 /* Group of ? */,
-  16 /* Group of ? */,
-  102 /* Group of ? */,
-  83 /* Group of ? */,
-  82 /* Group of ? */,
-  76 /* Group of ? */,
+  3647 /* Id of IAbort */,
+  6 /* Color of IAbort */,
+  4 /* Group of ? */,
+  67 /* Group of ? */,
+  3643 /* Id of IAbsCall */,
+  6 /* Color of IAbsCall */,
+  6 /* Group of ? */,
   73 /* Group of ? */,
+  4243 /* Id of ICall */,
+  7 /* Color of ICall */,
+  78 /* Group of ? */,
+  4219 /* Id of ISuper */,
+  7 /* Color of ISuper */,
+  78 /* Group of ? */,
+  4231 /* Id of INew */,
+  7 /* Color of INew */,
+  8 /* Group of ? */,
+  78 /* Group of ? */,
+  3639 /* Id of IAllocateInstance */,
+  6 /* Color of IAllocateInstance */,
+  4 /* Group of ? */,
+  67 /* Group of ? */,
+  4223 /* Id of IStaticCall */,
+  7 /* Color of IStaticCall */,
+  78 /* Group of ? */,
+  3615 /* Id of ICheckInstance */,
+  6 /* Color of ICheckInstance */,
+  5 /* Group of ? */,
+  69 /* Group of ? */,
+  3591 /* Id of IInitAttributes */,
+  6 /* Color of IInitAttributes */,
+  5 /* Group of ? */,
+  69 /* Group of ? */,
+  3611 /* Id of IClosCall */,
+  6 /* Color of IClosCall */,
   6 /* Group of ? */,
   73 /* Group of ? */,
+  3575 /* Id of INative */,
+  6 /* Color of INative */,
+  6 /* Group of ? */,
+  74 /* Group of ? */,
+  3587 /* Id of IIntValue */,
+  6 /* Color of IIntValue */,
+  4 /* Group of ? */,
+  67 /* Group of ? */,
+  3623 /* Id of IBoolValue */,
+  6 /* Color of IBoolValue */,
+  4 /* Group of ? */,
+  67 /* Group of ? */,
+  3551 /* Id of IStringValue */,
+  6 /* Color of IStringValue */,
+  4 /* Group of ? */,
+  67 /* Group of ? */,
+  3603 /* Id of IFloatValue */,
+  6 /* Color of IFloatValue */,
+  4 /* Group of ? */,
+  67 /* Group of ? */,
+  3619 /* Id of ICharValue */,
+  6 /* Color of ICharValue */,
+  4 /* Group of ? */,
+  67 /* Group of ? */,
+  3579 /* Id of IMove */,
+  6 /* Color of IMove */,
+  69 /* Group of ? */,
+  3631 /* Id of IAttrRead */,
+  6 /* Color of IAttrRead */,
+  5 /* Group of ? */,
+  69 /* Group of ? */,
+  3627 /* Id of IAttrWrite */,
+  6 /* Color of IAttrWrite */,
+  6 /* Group of ? */,
+  70 /* Group of ? */,
+  3635 /* Id of IAttrIsset */,
+  6 /* Color of IAttrIsset */,
+  5 /* Group of ? */,
+  69 /* Group of ? */,
+  3547 /* Id of ITypeCheck */,
+  6 /* Color of ITypeCheck */,
+  6 /* Group of ? */,
+  70 /* Group of ? */,
+  3583 /* Id of IIs */,
+  6 /* Color of IIs */,
+  70 /* Group of ? */,
+  3571 /* Id of INot */,
+  6 /* Color of INot */,
+  69 /* Group of ? */,
+  3563 /* Id of IOnce */,
+  6 /* Color of IOnce */,
+  4 /* Group of ? */,
+  67 /* Group of ? */,
+  3599 /* Id of IHasClos */,
+  6 /* Color of IHasClos */,
+  4 /* Group of ? */,
+  67 /* Group of ? */,
   72 /* Group of ? */,
-  3527 /* Id of AAbsAbsSendExpr */,
-  5 /* Color of AAbsAbsSendExpr */,
-  94 /* Group of ? */,
-  3739 /* Id of AAbsSendExpr */,
-  9 /* Color of AAbsSendExpr */,
   100 /* Group of ? */,
-  3751 /* Id of ASuperInitCall */,
-  10 /* Color of ASuperInitCall */,
+};
+const char LOCATE_metamodel[] = "metamodel/metamodel.nit";
+const char LOCATE_metamodel___vararg[] = "metamodel/vararg.nit";
+const int SFT_metamodel___vararg[2] = {
+  4 /* Group of ? */,
+  58 /* Group of ? */,
+};
+const char LOCATE_metamodel___genericity[] = "metamodel/genericity.nit";
+const int SFT_metamodel___genericity[11] = {
+  7 /* Group of ? */,
+  87 /* Group of ? */,
   68 /* Group of ? */,
-  103 /* Group of ? */,
-  105 /* Group of ? */,
-  86 /* Group of ? */,
-  3787 /* Id of ASendReassignExpr */,
-  12 /* Color of ASendReassignExpr */,
-  82 /* Group of ? */,
-  91 /* Group of ? */,
-  82 /* Group of ? */,
-  82 /* Group of ? */,
+  3507 /* Id of MMTypeGeneric */,
+  6 /* Color of MMTypeGeneric */,
+  4 /* Group of ? */,
   87 /* Group of ? */,
-  82 /* Group of ? */,
-  82 /* Group of ? */,
-  97 /* Group of ? */,
-  11 /* Group of ? */,
-  76 /* Group of ? */,
-  73 /* Group of ? */,
+  3511 /* Id of MMTypeFormalParameter */,
+  6 /* Color of MMTypeFormalParameter */,
+  5 /* Group of ? */,
+  89 /* Group of ? */,
 };
-const char *LOCATE_parser = "./parser//parser.nit";
-const int SFT_parser[1280] = {
-  39 /* Id of State */,
-  4 /* Color of State */,
+const char LOCATE_metamodel___type_formal[] = "metamodel/type_formal.nit";
+const int SFT_metamodel___type_formal[5] = {
+  69 /* Group of ? */,
+  3095 /* Id of MMTypeFormal */,
+  5 /* Color of MMTypeFormal */,
+  3 /* Group of ? */,
+  85 /* Group of ? */,
+};
+const char LOCATE_metamodel___inheritance[] = "metamodel/inheritance.nit";
+const int SFT_metamodel___inheritance[19] = {
+  50 /* Group of ? */,
+  80 /* Group of ? */,
+  9 /* Group of ? */,
+  93 /* Group of ? */,
+  53 /* Group of ? */,
+  50 /* Group of ? */,
+  3531 /* Id of MMImplicitLocalClass */,
+  7 /* Color of MMImplicitLocalClass */,
+  152 /* Group of ? */,
+  3111 /* Id of MMRefineAncestor */,
+  5 /* Color of MMRefineAncestor */,
+  4 /* Group of ? */,
+  60 /* Group of ? */,
+  3107 /* Id of MMSpecAncestor */,
+  5 /* Color of MMSpecAncestor */,
+  60 /* Group of ? */,
+  3135 /* Id of MMDefaultAncestor */,
+  5 /* Color of MMDefaultAncestor */,
+  60 /* Group of ? */,
+};
+const char LOCATE_metamodel___static_type[] = "metamodel/static_type.nit";
+const int SFT_metamodel___static_type[48] = {
+  12 /* Group of ? */,
+  109 /* Group of ? */,
   2 /* Group of ? */,
-  47 /* Group of ? */,
-  2083 /* Id of Parser */,
-  5 /* Color of Parser */,
+  54 /* Group of ? */,
+  3115 /* Id of MMParam */,
+  5 /* Color of MMParam */,
   2 /* Group of ? */,
-  52 /* Group of ? */,
-  4 /* Group of ? */,
-  2327 /* Id of ComputeProdLocationVisitor */,
-  5 /* Color of ComputeProdLocationVisitor */,
-  3 /* Group of ? */,
-  52 /* Group of ? */,
-  67 /* Id of ReduceAction */,
-  4 /* Color of ReduceAction */,
+  60 /* Group of ? */,
+  147 /* Id of MMSignature */,
+  4 /* Color of MMSignature */,
+  5 /* Group of ? */,
+  64 /* Group of ? */,
   2 /* Group of ? */,
-  47 /* Group of ? */,
-  2051 /* Id of ReduceAction0 */,
-  5 /* Color of ReduceAction0 */,
-  51 /* Group of ? */,
-  2047 /* Id of ReduceAction1 */,
-  5 /* Color of ReduceAction1 */,
-  51 /* Group of ? */,
-  1603 /* Id of ReduceAction2 */,
-  5 /* Color of ReduceAction2 */,
-  51 /* Group of ? */,
-  1199 /* Id of ReduceAction3 */,
-  5 /* Color of ReduceAction3 */,
-  51 /* Group of ? */,
-  847 /* Id of ReduceAction4 */,
-  5 /* Color of ReduceAction4 */,
-  51 /* Group of ? */,
-  711 /* Id of ReduceAction5 */,
-  5 /* Color of ReduceAction5 */,
-  51 /* Group of ? */,
-  667 /* Id of ReduceAction6 */,
-  5 /* Color of ReduceAction6 */,
-  51 /* Group of ? */,
-  607 /* Id of ReduceAction7 */,
-  5 /* Color of ReduceAction7 */,
   51 /* Group of ? */,
-  455 /* Id of ReduceAction8 */,
-  5 /* Color of ReduceAction8 */,
+  179 /* Id of MMClosure */,
+  4 /* Color of MMClosure */,
+  2 /* Group of ? */,
+  50 /* Group of ? */,
+  183 /* Id of MMAncestor */,
+  4 /* Color of MMAncestor */,
+  2 /* Group of ? */,
   51 /* Group of ? */,
-  411 /* Id of ReduceAction9 */,
-  5 /* Color of ReduceAction9 */,
+  143 /* Id of MMType */,
+  4 /* Color of MMType */,
+  2 /* Group of ? */,
+  71 /* Group of ? */,
+  3119 /* Id of MMNullableType */,
+  5 /* Color of MMNullableType */,
+  3 /* Group of ? */,
+  85 /* Group of ? */,
+  3099 /* Id of MMTypeClass */,
+  5 /* Color of MMTypeClass */,
+  3 /* Group of ? */,
+  85 /* Group of ? */,
+  3503 /* Id of MMTypeSimpleClass */,
+  6 /* Color of MMTypeSimpleClass */,
+  87 /* Group of ? */,
+  3091 /* Id of MMTypeNone */,
+  5 /* Color of MMTypeNone */,
+  3 /* Group of ? */,
+  85 /* Group of ? */,
+  4 /* Group of ? */,
+  84 /* Group of ? */,
+  155 /* Id of MMImportedCast */,
+  4 /* Color of MMImportedCast */,
+  3 /* Group of ? */,
+  64 /* Group of ? */,
+  79 /* Group of ? */,
+};
+const char LOCATE_metamodel___abstractmetamodel[] = "metamodel/abstractmetamodel.nit";
+const int SFT_metamodel___abstractmetamodel[41] = {
+  175 /* Id of MMContext */,
+  4 /* Color of MMContext */,
+  2 /* Group of ? */,
   51 /* Group of ? */,
-  2043 /* Id of ReduceAction10 */,
-  5 /* Color of ReduceAction10 */,
+  171 /* Id of MMDirectory */,
+  4 /* Color of MMDirectory */,
+  2 /* Group of ? */,
+  50 /* Group of ? */,
+  3123 /* Id of MMModule */,
+  6 /* Color of MMModule */,
+  5 /* Group of ? */,
+  86 /* Group of ? */,
+  163 /* Id of MMGlobalClass */,
+  4 /* Color of MMGlobalClass */,
+  2 /* Group of ? */,
   51 /* Group of ? */,
-  1999 /* Id of ReduceAction11 */,
-  5 /* Color of ReduceAction11 */,
+  3131 /* Id of MMLocalClass */,
+  6 /* Color of MMLocalClass */,
+  14 /* Group of ? */,
+  113 /* Group of ? */,
+  159 /* Id of MMGlobalProperty */,
+  4 /* Color of MMGlobalProperty */,
+  2 /* Group of ? */,
+  52 /* Group of ? */,
+  151 /* Id of MMLocalProperty */,
+  4 /* Color of MMLocalProperty */,
+  4 /* Group of ? */,
+  57 /* Group of ? */,
+  3139 /* Id of MMAttribute */,
+  5 /* Color of MMAttribute */,
+  73 /* Group of ? */,
+  167 /* Id of MMExplicitImport */,
+  4 /* Color of MMExplicitImport */,
+  3 /* Group of ? */,
+  54 /* Group of ? */,
+  3127 /* Id of MMMethod */,
+  6 /* Color of MMMethod */,
+  80 /* Group of ? */,
+  3535 /* Id of MMConcreteClass */,
+  7 /* Color of MMConcreteClass */,
+  156 /* Group of ? */,
+};
+const char LOCATE_metamodel___partial_order[] = "metamodel/partial_order.nit";
+const int SFT_metamodel___partial_order[8] = {
+  3023 /* Id of PartialOrder */,
+  8 /* Color of PartialOrder */,
+  2 /* Group of ? */,
+  80 /* Group of ? */,
+  107 /* Id of PartialOrderElement */,
+  4 /* Color of PartialOrderElement */,
+  2 /* Group of ? */,
+  50 /* Group of ? */,
+};
+const char LOCATE_standard[] = "../lib/standard/standard.nit";
+const char LOCATE_standard___environ[] = "../lib/standard/environ.nit";
+const int SFT_standard___environ[2] = {
+  127 /* Group of ? */,
+  50 /* Group of ? */,
+};
+const char LOCATE_standard___string[] = "../lib/standard/string.nit";
+const int SFT_standard___string[26] = {
+  4255 /* Id of AbstractString */,
+  13 /* Color of AbstractString */,
+  3 /* Group of ? */,
+  111 /* Group of ? */,
+  4603 /* Id of String */,
+  9 /* Color of String */,
+  4 /* Group of ? */,
+  129 /* Group of ? */,
+  4823 /* Id of Buffer */,
+  5 /* Color of Buffer */,
+  4 /* Group of ? */,
+  126 /* Group of ? */,
+  37 /* Group of ? */,
+  74 /* Group of ? */,
+  50 /* Group of ? */,
+  74 /* Group of ? */,
+  68 /* Group of ? */,
+  61 /* Group of ? */,
+  -5 /* Id of NativeString */,
+  4 /* Color of NativeString */,
+  52 /* Group of ? */,
+  35 /* Id of StringCapable */,
+  4 /* Color of StringCapable */,
+  50 /* Group of ? */,
+  2 /* Group of ? */,
+  55 /* Group of ? */,
+};
+const char LOCATE_standard___collection[] = "../lib/standard/collection/collection.nit";
+const int SFT_standard___collection[1] = {
+  100 /* Group of ? */,
+};
+const char LOCATE_standard___collection___range[] = "../lib/standard/collection/range.nit";
+const int SFT_standard___collection___range[8] = {
+  3003 /* Id of Range */,
+  8 /* Color of Range */,
+  2 /* Group of ? */,
+  80 /* Group of ? */,
+  3151 /* Id of IteratorRange */,
+  5 /* Color of IteratorRange */,
+  2 /* Group of ? */,
+  55 /* Group of ? */,
+};
+const char LOCATE_standard___collection___abstract_collection[] = "../lib/standard/collection/abstract_collection.nit";
+const int SFT_standard___collection___abstract_collection[63] = {
+  283 /* Id of Collection */,
+  7 /* Color of Collection */,
+  70 /* Group of ? */,
+  3055 /* Id of NaiveCollection */,
+  8 /* Color of NaiveCollection */,
+  80 /* Group of ? */,
+  187 /* Id of Iterator */,
+  4 /* Color of Iterator */,
   51 /* Group of ? */,
-  1955 /* Id of ReduceAction12 */,
-  5 /* Color of ReduceAction12 */,
+  3267 /* Id of Container */,
+  8 /* Color of Container */,
+  2 /* Group of ? */,
+  80 /* Group of ? */,
+  3271 /* Id of ContainerIterator */,
+  5 /* Color of ContainerIterator */,
+  2 /* Group of ? */,
+  55 /* Group of ? */,
+  375 /* Id of RemovableCollection */,
+  9 /* Color of RemovableCollection */,
+  52 /* Group of ? */,
+  3459 /* Id of SimpleCollection */,
+  10 /* Color of SimpleCollection */,
+  90 /* Group of ? */,
+  4195 /* Id of Set */,
+  4 /* Color of Set */,
+  50 /* Group of ? */,
+  135 /* Id of MapRead */,
+  4 /* Color of MapRead */,
+  50 /* Group of ? */,
+  3079 /* Id of Map */,
+  6 /* Color of Map */,
+  62 /* Group of ? */,
+  139 /* Id of MapIterator */,
+  4 /* Color of MapIterator */,
+  50 /* Group of ? */,
+  3083 /* Id of MapKeysIterator */,
+  5 /* Color of MapKeysIterator */,
+  2 /* Group of ? */,
+  55 /* Group of ? */,
+  3075 /* Id of MapValuesIterator */,
+  5 /* Color of MapValuesIterator */,
+  2 /* Group of ? */,
+  55 /* Group of ? */,
+  355 /* Id of SequenceRead */,
+  8 /* Color of SequenceRead */,
+  80 /* Group of ? */,
+  4199 /* Id of Sequence */,
+  12 /* Color of Sequence */,
+  101 /* Group of ? */,
+  3167 /* Id of IndexedIterator */,
+  5 /* Color of IndexedIterator */,
+  55 /* Group of ? */,
+  3679 /* Id of CoupleMap */,
+  7 /* Color of CoupleMap */,
+  66 /* Group of ? */,
+  3263 /* Id of CoupleMapIterator */,
+  5 /* Color of CoupleMapIterator */,
+  2 /* Group of ? */,
+  55 /* Group of ? */,
+  267 /* Id of Couple */,
+  4 /* Color of Couple */,
+  2 /* Group of ? */,
+  50 /* Group of ? */,
+};
+const char LOCATE_standard___kernel[] = "../lib/standard/kernel.nit";
+const int SFT_standard___kernel[27] = {
+  3 /* Id of Object */,
+  3 /* Color of Object */,
+  19 /* Group of ? */,
+  27 /* Id of Sys */,
+  4 /* Color of Sys */,
   51 /* Group of ? */,
-  1911 /* Id of ReduceAction13 */,
-  5 /* Color of ReduceAction13 */,
+  275 /* Id of Comparable */,
+  6 /* Color of Comparable */,
+  57 /* Group of ? */,
+  3243 /* Id of Discrete */,
+  4 /* Color of Discrete */,
+  68 /* Group of ? */,
+  -13 /* Id of Bool */,
+  4 /* Color of Bool */,
+  50 /* Group of ? */,
+  -9 /* Id of Float */,
+  4 /* Color of Float */,
+  52 /* Group of ? */,
+  -29 /* Id of Int */,
+  7 /* Color of Int */,
+  77 /* Group of ? */,
+  -33 /* Id of Char */,
+  7 /* Color of Char */,
+  77 /* Group of ? */,
+  -1 /* Id of Pointer */,
+  4 /* Color of Pointer */,
+  50 /* Group of ? */,
+};
+const char LOCATE_standard___collection___list[] = "../lib/standard/collection/list.nit";
+const int SFT_standard___collection___list[12] = {
+  4623 /* Id of List */,
+  13 /* Color of List */,
+  2 /* Group of ? */,
+  111 /* Group of ? */,
+  3543 /* Id of ListIterator */,
+  6 /* Color of ListIterator */,
+  2 /* Group of ? */,
+  57 /* Group of ? */,
+  3539 /* Id of ListNode */,
+  9 /* Color of ListNode */,
+  3 /* Group of ? */,
+  84 /* Group of ? */,
+};
+const char LOCATE_standard___collection___sorter[] = "../lib/standard/collection/sorter.nit";
+const int SFT_standard___collection___sorter[6] = {
+  307 /* Id of AbstractSorter */,
+  4 /* Color of AbstractSorter */,
+  50 /* Group of ? */,
+  3283 /* Id of ComparableSorter */,
+  5 /* Color of ComparableSorter */,
+  56 /* Group of ? */,
+};
+const char LOCATE_standard___collection___array[] = "../lib/standard/collection/array.nit";
+const int SFT_standard___collection___array[43] = {
+  3727 /* Id of AbstractArrayRead */,
+  11 /* Color of AbstractArrayRead */,
+  2 /* Group of ? */,
+  93 /* Group of ? */,
+  4635 /* Id of AbstractArray */,
+  14 /* Color of AbstractArray */,
+  84 /* Group of ? */,
+  4827 /* Id of Array */,
+  4 /* Color of Array */,
+  3 /* Group of ? */,
+  111 /* Group of ? */,
+  3719 /* Id of ArrayIterator */,
+  6 /* Color of ArrayIterator */,
+  2 /* Group of ? */,
+  57 /* Group of ? */,
+  4631 /* Id of ArraySet */,
+  11 /* Color of ArraySet */,
+  2 /* Group of ? */,
+  93 /* Group of ? */,
+  3311 /* Id of ArraySetIterator */,
+  5 /* Color of ArraySetIterator */,
+  2 /* Group of ? */,
+  55 /* Group of ? */,
+  4251 /* Id of ArrayMap */,
+  8 /* Color of ArrayMap */,
+  2 /* Group of ? */,
+  68 /* Group of ? */,
+  3715 /* Id of ArrayMapKeys */,
+  10 /* Color of ArrayMapKeys */,
+  2 /* Group of ? */,
+  80 /* Group of ? */,
+  3711 /* Id of ArrayMapValues */,
+  10 /* Color of ArrayMapValues */,
+  2 /* Group of ? */,
+  80 /* Group of ? */,
+  50 /* Group of ? */,
+  69 /* Group of ? */,
+  303 /* Id of ArrayCapable */,
+  5 /* Color of ArrayCapable */,
+  59 /* Group of ? */,
+  123 /* Id of NativeArray */,
+  4 /* Color of NativeArray */,
+  50 /* Group of ? */,
+};
+const char LOCATE_standard___collection___hash_collection[] = "../lib/standard/collection/hash_collection.nit";
+const int SFT_standard___collection___hash_collection[38] = {
+  3215 /* Id of HashCollection */,
+  8 /* Color of HashCollection */,
+  2 /* Group of ? */,
+  80 /* Group of ? */,
+  239 /* Id of HashNode */,
+  4 /* Color of HashNode */,
+  2 /* Group of ? */,
+  50 /* Group of ? */,
+  3651 /* Id of HashMap */,
+  7 /* Color of HashMap */,
+  9 /* Group of ? */,
+  66 /* Group of ? */,
+  3659 /* Id of HashMapKeys */,
+  10 /* Color of HashMapKeys */,
+  2 /* Group of ? */,
+  80 /* Group of ? */,
+  3655 /* Id of HashMapValues */,
+  10 /* Color of HashMapValues */,
+  2 /* Group of ? */,
+  80 /* Group of ? */,
+  3207 /* Id of HashMapNode */,
+  5 /* Color of HashMapNode */,
+  7 /* Group of ? */,
+  58 /* Group of ? */,
+  3211 /* Id of HashMapIterator */,
+  5 /* Color of HashMapIterator */,
+  2 /* Group of ? */,
+  55 /* Group of ? */,
+  4627 /* Id of HashSet */,
+  6 /* Color of HashSet */,
+  56 /* Group of ? */,
+  3199 /* Id of HashSetNode */,
+  5 /* Color of HashSetNode */,
+  58 /* Group of ? */,
+  3203 /* Id of HashSetIterator */,
+  5 /* Color of HashSetIterator */,
+  2 /* Group of ? */,
+  55 /* Group of ? */,
+};
+const char LOCATE_standard___hash[] = "../lib/standard/hash.nit";
+const int SFT_standard___hash[1] = {
+  43 /* Group of ? */,
+};
+const char LOCATE_standard___time[] = "../lib/standard/time.nit";
+const int SFT_standard___time[2] = {
+  18 /* Group of ? */,
+  50 /* Group of ? */,
+};
+const char LOCATE_standard___file[] = "../lib/standard/file.nit";
+const int SFT_standard___file[30] = {
+  28 /* Group of ? */,
+  3227 /* Id of FStream */,
+  4 /* Color of FStream */,
+  2 /* Group of ? */,
+  50 /* Group of ? */,
+  4239 /* Id of IFStream */,
+  8 /* Color of IFStream */,
+  6 /* Group of ? */,
+  73 /* Group of ? */,
+  3491 /* Id of OFStream */,
+  7 /* Color of OFStream */,
+  4 /* Group of ? */,
+  54 /* Group of ? */,
+  4607 /* Id of Stdin */,
+  9 /* Color of Stdin */,
+  78 /* Group of ? */,
+  4187 /* Id of Stdout */,
+  8 /* Color of Stdout */,
+  66 /* Group of ? */,
+  4191 /* Id of Stderr */,
+  8 /* Color of Stderr */,
+  66 /* Group of ? */,
+  139 /* Group of ? */,
+  60 /* Group of ? */,
+  -25 /* Id of FileStat */,
+  5 /* Color of FileStat */,
   51 /* Group of ? */,
-  1867 /* Id of ReduceAction14 */,
-  5 /* Color of ReduceAction14 */,
+  -21 /* Id of NativeFile */,
+  5 /* Color of NativeFile */,
   51 /* Group of ? */,
-  1823 /* Id of ReduceAction15 */,
-  5 /* Color of ReduceAction15 */,
+};
+const char LOCATE_standard___stream[] = "../lib/standard/stream.nit";
+const int SFT_standard___stream[32] = {
+  203 /* Id of IOS */,
+  5 /* Color of IOS */,
+  61 /* Group of ? */,
+  3171 /* Id of IStream */,
+  7 /* Color of IStream */,
+  66 /* Group of ? */,
+  3051 /* Id of OStream */,
+  6 /* Color of OStream */,
+  63 /* Group of ? */,
+  3703 /* Id of BufferedIStream */,
+  6 /* Color of BufferedIStream */,
+  4 /* Group of ? */,
+  54 /* Group of ? */,
+  3567 /* Id of IOStream */,
+  10 /* Color of IOStream */,
+  83 /* Group of ? */,
+  3231 /* Id of FDStream */,
+  4 /* Color of FDStream */,
+  2 /* Group of ? */,
+  50 /* Group of ? */,
+  3667 /* Id of FDIStream */,
+  9 /* Color of FDIStream */,
+  4 /* Group of ? */,
+  76 /* Group of ? */,
+  3663 /* Id of FDOStream */,
+  8 /* Color of FDOStream */,
+  3 /* Group of ? */,
+  73 /* Group of ? */,
+  4247 /* Id of FDIOStream */,
+  11 /* Color of FDIOStream */,
+  59 /* Group of ? */,
+  35 /* Group of ? */,
+};
+const char LOCATE_standard___string_search[] = "../lib/standard/string_search.nit";
+const int SFT_standard___string_search[12] = {
+  103 /* Id of Pattern */,
+  5 /* Color of Pattern */,
+  52 /* Group of ? */,
+  3303 /* Id of BM_Pattern */,
+  6 /* Color of BM_Pattern */,
+  2 /* Group of ? */,
+  57 /* Group of ? */,
+  131 /* Id of Match */,
+  4 /* Color of Match */,
+  2 /* Group of ? */,
+  50 /* Group of ? */,
+  150 /* Group of ? */,
+};
+const char LOCATE_standard___exec[] = "../lib/standard/exec.nit";
+const int SFT_standard___exec[20] = {
+  95 /* Id of Process */,
+  4 /* Color of Process */,
+  2 /* Group of ? */,
+  50 /* Group of ? */,
+  3559 /* Id of IProcess */,
+  9 /* Color of IProcess */,
+  4 /* Group of ? */,
+  78 /* Group of ? */,
+  3487 /* Id of OProcess */,
+  8 /* Color of OProcess */,
+  3 /* Group of ? */,
+  73 /* Group of ? */,
+  4227 /* Id of IOProcess */,
+  11 /* Color of IOProcess */,
+  84 /* Group of ? */,
+  54 /* Group of ? */,
+  64 /* Group of ? */,
+  -17 /* Id of NativeProcess */,
+  5 /* Color of NativeProcess */,
   51 /* Group of ? */,
-  1779 /* Id of ReduceAction16 */,
-  5 /* Color of ReduceAction16 */,
+};
+const char LOCATE_standard___math[] = "../lib/standard/math.nit";
+const int SFT_standard___math[4] = {
+  91 /* Group of ? */,
+  63 /* Group of ? */,
+  79 /* Group of ? */,
+  44 /* Group of ? */,
+};
+const char LOCATE_standard___gc[] = "../lib/standard/gc.nit";
+const int SFT_standard___gc[1] = {
+  59 /* Group of ? */,
+};
+const char LOCATE_location[] = "location.nit";
+const int SFT_location[8] = {
+  43 /* Id of SourceFile */,
+  4 /* Color of SourceFile */,
+  2 /* Group of ? */,
+  50 /* Group of ? */,
+  3143 /* Id of Location */,
+  7 /* Color of Location */,
+  2 /* Group of ? */,
+  69 /* Group of ? */,
+};
+const char LOCATE_symbol[] = "../lib/symbol.nit";
+const int SFT_symbol[5] = {
+  126 /* Group of ? */,
+  31 /* Id of Symbol */,
+  4 /* Color of Symbol */,
+  2 /* Group of ? */,
+  50 /* Group of ? */,
+};
+const char LOCATE_metamodel___virtualtype[] = "metamodel/virtualtype.nit";
+const int SFT_metamodel___virtualtype[10] = {
   51 /* Group of ? */,
-  1735 /* Id of ReduceAction17 */,
-  5 /* Color of ReduceAction17 */,
+  3087 /* Id of MMTypeProperty */,
+  5 /* Color of MMTypeProperty */,
+  10 /* Group of ? */,
+  72 /* Group of ? */,
+  3499 /* Id of MMVirtualType */,
+  6 /* Color of MMVirtualType */,
+  5 /* Group of ? */,
+  89 /* Group of ? */,
+  140 /* Group of ? */,
+};
+const char LOCATE_syntax___typing[] = "syntax/typing.nit";
+const int SFT_syntax___typing[55] = {
+  123 /* Group of ? */,
+  3327 /* Id of TypingVisitor */,
+  6 /* Color of TypingVisitor */,
+  7 /* Group of ? */,
+  84 /* Group of ? */,
+  69 /* Group of ? */,
+  88 /* Group of ? */,
+  8 /* Group of ? */,
+  101 /* Group of ? */,
+  96 /* Group of ? */,
+  98 /* Group of ? */,
+  104 /* Group of ? */,
+  105 /* Group of ? */,
+  14 /* Group of ? */,
+  86 /* Group of ? */,
+  12 /* Group of ? */,
+  8 /* Group of ? */,
+  83 /* Group of ? */,
+  12 /* Group of ? */,
+  4591 /* Id of AAbsControl */,
+  8 /* Color of AAbsControl */,
+  12 /* Group of ? */,
+  89 /* Group of ? */,
+  13 /* Group of ? */,
+  93 /* Group of ? */,
+  12 /* Group of ? */,
+  14 /* Group of ? */,
+  92 /* Group of ? */,
+  75 /* Group of ? */,
+  12 /* Group of ? */,
+  12 /* Group of ? */,
+  89 /* Group of ? */,
+  19 /* Group of ? */,
+  75 /* Group of ? */,
+  80 /* Group of ? */,
+  17 /* Group of ? */,
+  97 /* Group of ? */,
+  12 /* Group of ? */,
+  98 /* Group of ? */,
+  17 /* Group of ? */,
+  104 /* Group of ? */,
+  75 /* Group of ? */,
+  110 /* Group of ? */,
+  7 /* Group of ? */,
+  122 /* Group of ? */,
+  122 /* Group of ? */,
+  118 /* Group of ? */,
+  14 /* Group of ? */,
+  75 /* Group of ? */,
+  9 /* Group of ? */,
+  78 /* Group of ? */,
+  4275 /* Id of ATypeCheckExpr */,
+  6 /* Color of ATypeCheckExpr */,
+  75 /* Group of ? */,
+  91 /* Group of ? */,
+};
+const char LOCATE_syntax___scope[] = "syntax/scope.nit";
+const int SFT_syntax___scope[23] = {
+  55 /* Id of ScopeContext */,
+  4 /* Color of ScopeContext */,
+  2 /* Group of ? */,
+  50 /* Group of ? */,
+  59 /* Id of ScopeBlock */,
+  4 /* Color of ScopeBlock */,
+  2 /* Group of ? */,
+  50 /* Group of ? */,
+  3239 /* Id of EscapableBlock */,
+  5 /* Color of EscapableBlock */,
+  8 /* Group of ? */,
+  63 /* Group of ? */,
+  3707 /* Id of BreakOnlyEscapableBlock */,
+  6 /* Color of BreakOnlyEscapableBlock */,
+  71 /* Group of ? */,
+  3671 /* Id of EscapableClosure */,
+  6 /* Color of EscapableClosure */,
+  11 /* Group of ? */,
+  71 /* Group of ? */,
+  4495 /* Id of AEscapeExpr */,
+  8 /* Color of AEscapeExpr */,
+  12 /* Group of ? */,
+  89 /* Group of ? */,
+};
+const char LOCATE_syntax___flow[] = "syntax/flow.nit";
+const int SFT_syntax___flow[20] = {
+  251 /* Id of FlowContext */,
+  4 /* Color of FlowContext */,
+  2 /* Group of ? */,
+  50 /* Group of ? */,
+  367 /* Id of RootFlowContext */,
+  5 /* Color of RootFlowContext */,
+  65 /* Group of ? */,
+  347 /* Id of SubFlowContext */,
+  5 /* Color of SubFlowContext */,
+  7 /* Group of ? */,
+  65 /* Group of ? */,
+  3699 /* Id of CastFlowContext */,
+  6 /* Color of CastFlowContext */,
+  8 /* Group of ? */,
+  68 /* Group of ? */,
+  3071 /* Id of MergeFlowContext */,
+  5 /* Color of MergeFlowContext */,
+  7 /* Group of ? */,
+  65 /* Group of ? */,
+  50 /* Group of ? */,
+};
+const char LOCATE_syntax___syntax_base[] = "syntax/syntax_base.nit";
+const int SFT_syntax___syntax_base[101] = {
+  3519 /* Id of MMSrcModule */,
+  7 /* Color of MMSrcModule */,
+  23 /* Group of ? */,
+  124 /* Group of ? */,
+  78 /* Group of ? */,
+  50 /* Group of ? */,
+  4207 /* Id of MMSrcLocalClass */,
+  8 /* Color of MMSrcLocalClass */,
+  31 /* Group of ? */,
+  159 /* Group of ? */,
+  50 /* Group of ? */,
   51 /* Group of ? */,
-  1691 /* Id of ReduceAction18 */,
-  5 /* Color of ReduceAction18 */,
+  3527 /* Id of MMSrcAttribute */,
+  6 /* Color of MMSrcAttribute */,
+  76 /* Group of ? */,
+  3523 /* Id of MMSrcMethod */,
+  7 /* Color of MMSrcMethod */,
+  108 /* Group of ? */,
+  4215 /* Id of MMAttrImplementationMethod */,
+  8 /* Color of MMAttrImplementationMethod */,
+  109 /* Group of ? */,
+  4615 /* Id of MMReadImplementationMethod */,
+  9 /* Color of MMReadImplementationMethod */,
+  111 /* Group of ? */,
+  4611 /* Id of MMWriteImplementationMethod */,
+  9 /* Color of MMWriteImplementationMethod */,
+  111 /* Group of ? */,
+  4211 /* Id of MMMethSrcMethod */,
+  8 /* Color of MMMethSrcMethod */,
+  12 /* Group of ? */,
+  109 /* Group of ? */,
+  3515 /* Id of MMSrcTypeProperty */,
+  6 /* Color of MMSrcTypeProperty */,
+  75 /* Group of ? */,
+  4619 /* Id of MMImplicitInit */,
+  9 /* Color of MMImplicitInit */,
+  20 /* Group of ? */,
+  112 /* Group of ? */,
+  19 /* Id of Variable */,
+  4 /* Color of Variable */,
+  2 /* Group of ? */,
   51 /* Group of ? */,
-  1647 /* Id of ReduceAction19 */,
+  327 /* Id of VarVariable */,
+  5 /* Color of VarVariable */,
+  58 /* Group of ? */,
+  3031 /* Id of ParamVariable */,
+  5 /* Color of ParamVariable */,
+  58 /* Group of ? */,
+  3307 /* Id of AutoVariable */,
+  5 /* Color of AutoVariable */,
+  58 /* Group of ? */,
+  3287 /* Id of ClosureVariable */,
+  5 /* Color of ClosureVariable */,
+  5 /* Group of ? */,
+  58 /* Group of ? */,
+  3319 /* Id of AbsSyntaxVisitor */,
+  5 /* Color of AbsSyntaxVisitor */,
+  3 /* Group of ? */,
+  55 /* Group of ? */,
+  56 /* Group of ? */,
+  4 /* Group of ? */,
+  71 /* Group of ? */,
+  8 /* Group of ? */,
+  83 /* Group of ? */,
+  79 /* Group of ? */,
+  85 /* Group of ? */,
+  17 /* Group of ? */,
+  106 /* Group of ? */,
+  86 /* Group of ? */,
+  85 /* Group of ? */,
+  79 /* Group of ? */,
+  76 /* Group of ? */,
+  7 /* Group of ? */,
+  76 /* Group of ? */,
+  78 /* Group of ? */,
+  4595 /* Id of AAbsAbsSendExpr */,
+  6 /* Color of AAbsAbsSendExpr */,
+  101 /* Group of ? */,
+  4819 /* Id of AAbsSendExpr */,
+  9 /* Color of AAbsSendExpr */,
+  107 /* Group of ? */,
+  4831 /* Id of ASuperInitCall */,
+  10 /* Color of ASuperInitCall */,
+  76 /* Group of ? */,
+  110 /* Group of ? */,
+  112 /* Group of ? */,
+  93 /* Group of ? */,
+  4871 /* Id of ASendReassignExpr */,
+  13 /* Color of ASendReassignExpr */,
+  90 /* Group of ? */,
+  98 /* Group of ? */,
+  89 /* Group of ? */,
+  89 /* Group of ? */,
+  94 /* Group of ? */,
+  89 /* Group of ? */,
+  89 /* Group of ? */,
+  104 /* Group of ? */,
+  12 /* Group of ? */,
+  81 /* Group of ? */,
+  76 /* Group of ? */,
+  75 /* Group of ? */,
+};
+const char LOCATE_parser[] = "parser/parser.nit";
+const int SFT_parser[1979] = {
+  39 /* Id of State */,
+  4 /* Color of State */,
+  2 /* Group of ? */,
+  50 /* Group of ? */,
+  3027 /* Id of Parser */,
+  5 /* Color of Parser */,
+  2 /* Group of ? */,
+  55 /* Group of ? */,
+  4 /* Group of ? */,
+  3275 /* Id of ComputeProdLocationVisitor */,
+  5 /* Color of ComputeProdLocationVisitor */,
+  3 /* Group of ? */,
+  55 /* Group of ? */,
+  67 /* Id of ReduceAction */,
+  4 /* Color of ReduceAction */,
+  2 /* Group of ? */,
+  50 /* Group of ? */,
+  2991 /* Id of ReduceAction0 */,
+  5 /* Color of ReduceAction0 */,
+  54 /* Group of ? */,
+  2987 /* Id of ReduceAction1 */,
+  5 /* Color of ReduceAction1 */,
+  54 /* Group of ? */,
+  2427 /* Id of ReduceAction2 */,
+  5 /* Color of ReduceAction2 */,
+  54 /* Group of ? */,
+  1983 /* Id of ReduceAction3 */,
+  5 /* Color of ReduceAction3 */,
+  54 /* Group of ? */,
+  1547 /* Id of ReduceAction4 */,
+  5 /* Color of ReduceAction4 */,
+  54 /* Group of ? */,
+  1143 /* Id of ReduceAction5 */,
+  5 /* Color of ReduceAction5 */,
+  54 /* Group of ? */,
+  783 /* Id of ReduceAction6 */,
+  5 /* Color of ReduceAction6 */,
+  54 /* Group of ? */,
+  527 /* Id of ReduceAction7 */,
+  5 /* Color of ReduceAction7 */,
+  54 /* Group of ? */,
+  487 /* Id of ReduceAction8 */,
+  5 /* Color of ReduceAction8 */,
+  54 /* Group of ? */,
+  443 /* Id of ReduceAction9 */,
+  5 /* Color of ReduceAction9 */,
+  54 /* Group of ? */,
+  2983 /* Id of ReduceAction10 */,
+  5 /* Color of ReduceAction10 */,
+  54 /* Group of ? */,
+  2939 /* Id of ReduceAction11 */,
+  5 /* Color of ReduceAction11 */,
+  54 /* Group of ? */,
+  2895 /* Id of ReduceAction12 */,
+  5 /* Color of ReduceAction12 */,
+  54 /* Group of ? */,
+  2735 /* Id of ReduceAction13 */,
+  5 /* Color of ReduceAction13 */,
+  54 /* Group of ? */,
+  2691 /* Id of ReduceAction14 */,
+  5 /* Color of ReduceAction14 */,
+  54 /* Group of ? */,
+  2647 /* Id of ReduceAction15 */,
+  5 /* Color of ReduceAction15 */,
+  54 /* Group of ? */,
+  2603 /* Id of ReduceAction16 */,
+  5 /* Color of ReduceAction16 */,
+  54 /* Group of ? */,
+  2559 /* Id of ReduceAction17 */,
+  5 /* Color of ReduceAction17 */,
+  54 /* Group of ? */,
+  2515 /* Id of ReduceAction18 */,
+  5 /* Color of ReduceAction18 */,
+  54 /* Group of ? */,
+  2471 /* Id of ReduceAction19 */,
   5 /* Color of ReduceAction19 */,
-  51 /* Group of ? */,
-  1599 /* Id of ReduceAction20 */,
+  54 /* Group of ? */,
+  2423 /* Id of ReduceAction20 */,
   5 /* Color of ReduceAction20 */,
-  51 /* Group of ? */,
-  1555 /* Id of ReduceAction21 */,
+  54 /* Group of ? */,
+  2379 /* Id of ReduceAction21 */,
   5 /* Color of ReduceAction21 */,
-  51 /* Group of ? */,
-  1515 /* Id of ReduceAction22 */,
+  54 /* Group of ? */,
+  2335 /* Id of ReduceAction22 */,
   5 /* Color of ReduceAction22 */,
-  51 /* Group of ? */,
-  1471 /* Id of ReduceAction23 */,
+  54 /* Group of ? */,
+  2291 /* Id of ReduceAction23 */,
   5 /* Color of ReduceAction23 */,
-  51 /* Group of ? */,
-  1431 /* Id of ReduceAction24 */,
+  54 /* Group of ? */,
+  2247 /* Id of ReduceAction24 */,
   5 /* Color of ReduceAction24 */,
-  51 /* Group of ? */,
-  1395 /* Id of ReduceAction25 */,
+  54 /* Group of ? */,
+  2203 /* Id of ReduceAction25 */,
   5 /* Color of ReduceAction25 */,
-  51 /* Group of ? */,
-  1363 /* Id of ReduceAction26 */,
+  54 /* Group of ? */,
+  2159 /* Id of ReduceAction26 */,
   5 /* Color of ReduceAction26 */,
-  51 /* Group of ? */,
-  1331 /* Id of ReduceAction27 */,
+  54 /* Group of ? */,
+  2115 /* Id of ReduceAction27 */,
   5 /* Color of ReduceAction27 */,
-  51 /* Group of ? */,
-  1287 /* Id of ReduceAction28 */,
+  54 /* Group of ? */,
+  2071 /* Id of ReduceAction28 */,
   5 /* Color of ReduceAction28 */,
-  51 /* Group of ? */,
-  1243 /* Id of ReduceAction29 */,
+  54 /* Group of ? */,
+  2027 /* Id of ReduceAction29 */,
   5 /* Color of ReduceAction29 */,
-  51 /* Group of ? */,
-  1195 /* Id of ReduceAction30 */,
+  54 /* Group of ? */,
+  1979 /* Id of ReduceAction30 */,
   5 /* Color of ReduceAction30 */,
-  51 /* Group of ? */,
-  1151 /* Id of ReduceAction31 */,
+  54 /* Group of ? */,
+  1935 /* Id of ReduceAction31 */,
   5 /* Color of ReduceAction31 */,
-  51 /* Group of ? */,
-  1115 /* Id of ReduceAction32 */,
+  54 /* Group of ? */,
+  1891 /* Id of ReduceAction32 */,
   5 /* Color of ReduceAction32 */,
-  51 /* Group of ? */,
-  1071 /* Id of ReduceAction33 */,
+  54 /* Group of ? */,
+  1851 /* Id of ReduceAction33 */,
   5 /* Color of ReduceAction33 */,
-  51 /* Group of ? */,
-  1047 /* Id of ReduceAction34 */,
+  54 /* Group of ? */,
+  1807 /* Id of ReduceAction34 */,
   5 /* Color of ReduceAction34 */,
-  51 /* Group of ? */,
-  1011 /* Id of ReduceAction35 */,
+  54 /* Group of ? */,
+  1763 /* Id of ReduceAction35 */,
   5 /* Color of ReduceAction35 */,
-  51 /* Group of ? */,
-  975 /* Id of ReduceAction36 */,
+  54 /* Group of ? */,
+  1719 /* Id of ReduceAction36 */,
   5 /* Color of ReduceAction36 */,
-  51 /* Group of ? */,
-  939 /* Id of ReduceAction37 */,
+  54 /* Group of ? */,
+  1675 /* Id of ReduceAction37 */,
   5 /* Color of ReduceAction37 */,
-  51 /* Group of ? */,
-  883 /* Id of ReduceAction39 */,
+  54 /* Group of ? */,
+  1631 /* Id of ReduceAction38 */,
+  5 /* Color of ReduceAction38 */,
+  54 /* Group of ? */,
+  1587 /* Id of ReduceAction39 */,
   5 /* Color of ReduceAction39 */,
-  51 /* Group of ? */,
-  843 /* Id of ReduceAction40 */,
+  54 /* Group of ? */,
+  1543 /* Id of ReduceAction40 */,
   5 /* Color of ReduceAction40 */,
-  51 /* Group of ? */,
-  823 /* Id of ReduceAction41 */,
+  54 /* Group of ? */,
+  1499 /* Id of ReduceAction41 */,
   5 /* Color of ReduceAction41 */,
-  51 /* Group of ? */,
-  783 /* Id of ReduceAction42 */,
+  54 /* Group of ? */,
+  1459 /* Id of ReduceAction42 */,
   5 /* Color of ReduceAction42 */,
-  51 /* Group of ? */,
-  747 /* Id of ReduceAction43 */,
+  54 /* Group of ? */,
+  1427 /* Id of ReduceAction43 */,
   5 /* Color of ReduceAction43 */,
-  51 /* Group of ? */,
-  735 /* Id of ReduceAction44 */,
+  54 /* Group of ? */,
+  1383 /* Id of ReduceAction44 */,
   5 /* Color of ReduceAction44 */,
-  51 /* Group of ? */,
-  731 /* Id of ReduceAction45 */,
+  54 /* Group of ? */,
+  1363 /* Id of ReduceAction45 */,
   5 /* Color of ReduceAction45 */,
-  51 /* Group of ? */,
-  727 /* Id of ReduceAction46 */,
+  54 /* Group of ? */,
+  1319 /* Id of ReduceAction46 */,
   5 /* Color of ReduceAction46 */,
-  51 /* Group of ? */,
-  723 /* Id of ReduceAction47 */,
+  54 /* Group of ? */,
+  1275 /* Id of ReduceAction47 */,
   5 /* Color of ReduceAction47 */,
-  51 /* Group of ? */,
-  719 /* Id of ReduceAction48 */,
+  54 /* Group of ? */,
+  1231 /* Id of ReduceAction48 */,
   5 /* Color of ReduceAction48 */,
-  51 /* Group of ? */,
-  715 /* Id of ReduceAction49 */,
+  54 /* Group of ? */,
+  1187 /* Id of ReduceAction49 */,
   5 /* Color of ReduceAction49 */,
-  51 /* Group of ? */,
-  707 /* Id of ReduceAction50 */,
+  54 /* Group of ? */,
+  1139 /* Id of ReduceAction50 */,
   5 /* Color of ReduceAction50 */,
-  51 /* Group of ? */,
-  703 /* Id of ReduceAction51 */,
+  54 /* Group of ? */,
+  1103 /* Id of ReduceAction51 */,
   5 /* Color of ReduceAction51 */,
-  51 /* Group of ? */,
-  699 /* Id of ReduceAction52 */,
+  54 /* Group of ? */,
+  1067 /* Id of ReduceAction52 */,
   5 /* Color of ReduceAction52 */,
-  51 /* Group of ? */,
-  695 /* Id of ReduceAction53 */,
+  54 /* Group of ? */,
+  1039 /* Id of ReduceAction53 */,
   5 /* Color of ReduceAction53 */,
-  51 /* Group of ? */,
-  691 /* Id of ReduceAction54 */,
+  54 /* Group of ? */,
+  999 /* Id of ReduceAction54 */,
   5 /* Color of ReduceAction54 */,
-  51 /* Group of ? */,
-  687 /* Id of ReduceAction55 */,
+  54 /* Group of ? */,
+  967 /* Id of ReduceAction55 */,
   5 /* Color of ReduceAction55 */,
-  51 /* Group of ? */,
-  683 /* Id of ReduceAction56 */,
+  54 /* Group of ? */,
+  935 /* Id of ReduceAction56 */,
   5 /* Color of ReduceAction56 */,
-  51 /* Group of ? */,
-  679 /* Id of ReduceAction57 */,
+  54 /* Group of ? */,
+  907 /* Id of ReduceAction57 */,
   5 /* Color of ReduceAction57 */,
-  51 /* Group of ? */,
-  675 /* Id of ReduceAction58 */,
+  54 /* Group of ? */,
+  863 /* Id of ReduceAction58 */,
   5 /* Color of ReduceAction58 */,
-  51 /* Group of ? */,
-  671 /* Id of ReduceAction59 */,
+  54 /* Group of ? */,
+  823 /* Id of ReduceAction59 */,
   5 /* Color of ReduceAction59 */,
-  51 /* Group of ? */,
-  663 /* Id of ReduceAction60 */,
+  54 /* Group of ? */,
+  779 /* Id of ReduceAction60 */,
   5 /* Color of ReduceAction60 */,
-  51 /* Group of ? */,
-  659 /* Id of ReduceAction61 */,
+  54 /* Group of ? */,
+  735 /* Id of ReduceAction61 */,
   5 /* Color of ReduceAction61 */,
-  51 /* Group of ? */,
-  655 /* Id of ReduceAction62 */,
+  54 /* Group of ? */,
+  695 /* Id of ReduceAction62 */,
   5 /* Color of ReduceAction62 */,
-  51 /* Group of ? */,
-  651 /* Id of ReduceAction63 */,
+  54 /* Group of ? */,
+  655 /* Id of ReduceAction63 */,
   5 /* Color of ReduceAction63 */,
-  51 /* Group of ? */,
-  647 /* Id of ReduceAction64 */,
+  54 /* Group of ? */,
+  623 /* Id of ReduceAction64 */,
   5 /* Color of ReduceAction64 */,
-  51 /* Group of ? */,
-  643 /* Id of ReduceAction65 */,
+  54 /* Group of ? */,
+  579 /* Id of ReduceAction65 */,
   5 /* Color of ReduceAction65 */,
-  51 /* Group of ? */,
-  639 /* Id of ReduceAction66 */,
+  54 /* Group of ? */,
+  543 /* Id of ReduceAction66 */,
   5 /* Color of ReduceAction66 */,
-  51 /* Group of ? */,
-  635 /* Id of ReduceAction67 */,
+  54 /* Group of ? */,
+  539 /* Id of ReduceAction67 */,
   5 /* Color of ReduceAction67 */,
-  51 /* Group of ? */,
-  631 /* Id of ReduceAction68 */,
+  54 /* Group of ? */,
+  535 /* Id of ReduceAction68 */,
   5 /* Color of ReduceAction68 */,
-  51 /* Group of ? */,
-  619 /* Id of ReduceAction69 */,
+  54 /* Group of ? */,
+  531 /* Id of ReduceAction69 */,
   5 /* Color of ReduceAction69 */,
-  51 /* Group of ? */,
-  603 /* Id of ReduceAction70 */,
+  54 /* Group of ? */,
+  523 /* Id of ReduceAction70 */,
   5 /* Color of ReduceAction70 */,
-  51 /* Group of ? */,
-  591 /* Id of ReduceAction71 */,
+  54 /* Group of ? */,
+  519 /* Id of ReduceAction71 */,
   5 /* Color of ReduceAction71 */,
-  51 /* Group of ? */,
-  563 /* Id of ReduceAction72 */,
-  5 /* Color of ReduceAction72 */,
-  51 /* Group of ? */,
-  527 /* Id of ReduceAction73 */,
+  54 /* Group of ? */,
+  515 /* Id of ReduceAction73 */,
   5 /* Color of ReduceAction73 */,
-  51 /* Group of ? */,
-  499 /* Id of ReduceAction74 */,
+  54 /* Group of ? */,
+  511 /* Id of ReduceAction74 */,
   5 /* Color of ReduceAction74 */,
-  51 /* Group of ? */,
-  475 /* Id of ReduceAction75 */,
+  54 /* Group of ? */,
+  507 /* Id of ReduceAction75 */,
   5 /* Color of ReduceAction75 */,
-  51 /* Group of ? */,
-  471 /* Id of ReduceAction76 */,
+  54 /* Group of ? */,
+  503 /* Id of ReduceAction76 */,
   5 /* Color of ReduceAction76 */,
-  51 /* Group of ? */,
-  467 /* Id of ReduceAction77 */,
+  54 /* Group of ? */,
+  499 /* Id of ReduceAction77 */,
   5 /* Color of ReduceAction77 */,
-  51 /* Group of ? */,
-  463 /* Id of ReduceAction78 */,
+  54 /* Group of ? */,
+  495 /* Id of ReduceAction78 */,
   5 /* Color of ReduceAction78 */,
-  51 /* Group of ? */,
-  459 /* Id of ReduceAction79 */,
+  54 /* Group of ? */,
+  491 /* Id of ReduceAction79 */,
   5 /* Color of ReduceAction79 */,
-  51 /* Group of ? */,
-  451 /* Id of ReduceAction80 */,
+  54 /* Group of ? */,
+  483 /* Id of ReduceAction80 */,
   5 /* Color of ReduceAction80 */,
-  51 /* Group of ? */,
-  447 /* Id of ReduceAction81 */,
+  54 /* Group of ? */,
+  479 /* Id of ReduceAction81 */,
   5 /* Color of ReduceAction81 */,
-  51 /* Group of ? */,
-  443 /* Id of ReduceAction82 */,
+  54 /* Group of ? */,
+  475 /* Id of ReduceAction82 */,
   5 /* Color of ReduceAction82 */,
-  51 /* Group of ? */,
-  439 /* Id of ReduceAction83 */,
+  54 /* Group of ? */,
+  471 /* Id of ReduceAction83 */,
   5 /* Color of ReduceAction83 */,
-  51 /* Group of ? */,
-  435 /* Id of ReduceAction84 */,
+  54 /* Group of ? */,
+  467 /* Id of ReduceAction84 */,
   5 /* Color of ReduceAction84 */,
-  51 /* Group of ? */,
-  431 /* Id of ReduceAction85 */,
+  54 /* Group of ? */,
+  463 /* Id of ReduceAction85 */,
   5 /* Color of ReduceAction85 */,
-  51 /* Group of ? */,
-  427 /* Id of ReduceAction86 */,
+  54 /* Group of ? */,
+  459 /* Id of ReduceAction86 */,
   5 /* Color of ReduceAction86 */,
-  51 /* Group of ? */,
-  423 /* Id of ReduceAction87 */,
+  54 /* Group of ? */,
+  455 /* Id of ReduceAction87 */,
   5 /* Color of ReduceAction87 */,
-  51 /* Group of ? */,
-  419 /* Id of ReduceAction88 */,
+  54 /* Group of ? */,
+  451 /* Id of ReduceAction88 */,
   5 /* Color of ReduceAction88 */,
-  51 /* Group of ? */,
-  415 /* Id of ReduceAction89 */,
+  54 /* Group of ? */,
+  447 /* Id of ReduceAction89 */,
   5 /* Color of ReduceAction89 */,
-  51 /* Group of ? */,
-  407 /* Id of ReduceAction90 */,
+  54 /* Group of ? */,
+  439 /* Id of ReduceAction90 */,
   5 /* Color of ReduceAction90 */,
-  51 /* Group of ? */,
-  403 /* Id of ReduceAction91 */,
+  54 /* Group of ? */,
+  435 /* Id of ReduceAction91 */,
   5 /* Color of ReduceAction91 */,
-  51 /* Group of ? */,
-  399 /* Id of ReduceAction92 */,
+  54 /* Group of ? */,
+  431 /* Id of ReduceAction92 */,
   5 /* Color of ReduceAction92 */,
-  51 /* Group of ? */,
-  395 /* Id of ReduceAction93 */,
+  54 /* Group of ? */,
+  427 /* Id of ReduceAction93 */,
   5 /* Color of ReduceAction93 */,
-  51 /* Group of ? */,
-  391 /* Id of ReduceAction94 */,
+  54 /* Group of ? */,
+  407 /* Id of ReduceAction94 */,
   5 /* Color of ReduceAction94 */,
-  51 /* Group of ? */,
-  387 /* Id of ReduceAction95 */,
+  54 /* Group of ? */,
+  403 /* Id of ReduceAction95 */,
   5 /* Color of ReduceAction95 */,
-  51 /* Group of ? */,
-  383 /* Id of ReduceAction96 */,
+  54 /* Group of ? */,
+  391 /* Id of ReduceAction96 */,
   5 /* Color of ReduceAction96 */,
-  51 /* Group of ? */,
-  379 /* Id of ReduceAction97 */,
+  54 /* Group of ? */,
+  387 /* Id of ReduceAction97 */,
   5 /* Color of ReduceAction97 */,
-  51 /* Group of ? */,
-  375 /* Id of ReduceAction98 */,
+  54 /* Group of ? */,
+  383 /* Id of ReduceAction98 */,
   5 /* Color of ReduceAction98 */,
-  51 /* Group of ? */,
-  371 /* Id of ReduceAction99 */,
+  54 /* Group of ? */,
+  379 /* Id of ReduceAction99 */,
   5 /* Color of ReduceAction99 */,
-  51 /* Group of ? */,
-  2039 /* Id of ReduceAction100 */,
+  54 /* Group of ? */,
+  2979 /* Id of ReduceAction100 */,
   5 /* Color of ReduceAction100 */,
-  51 /* Group of ? */,
-  2035 /* Id of ReduceAction101 */,
+  54 /* Group of ? */,
+  2975 /* Id of ReduceAction101 */,
   5 /* Color of ReduceAction101 */,
-  51 /* Group of ? */,
-  2031 /* Id of ReduceAction102 */,
+  54 /* Group of ? */,
+  2971 /* Id of ReduceAction102 */,
   5 /* Color of ReduceAction102 */,
-  51 /* Group of ? */,
-  2027 /* Id of ReduceAction103 */,
+  54 /* Group of ? */,
+  2967 /* Id of ReduceAction103 */,
   5 /* Color of ReduceAction103 */,
-  51 /* Group of ? */,
-  2023 /* Id of ReduceAction104 */,
+  54 /* Group of ? */,
+  2963 /* Id of ReduceAction104 */,
   5 /* Color of ReduceAction104 */,
-  51 /* Group of ? */,
-  2019 /* Id of ReduceAction105 */,
+  54 /* Group of ? */,
+  2959 /* Id of ReduceAction105 */,
   5 /* Color of ReduceAction105 */,
-  51 /* Group of ? */,
-  2015 /* Id of ReduceAction106 */,
+  54 /* Group of ? */,
+  2955 /* Id of ReduceAction106 */,
   5 /* Color of ReduceAction106 */,
-  51 /* Group of ? */,
-  2011 /* Id of ReduceAction107 */,
+  54 /* Group of ? */,
+  2951 /* Id of ReduceAction107 */,
   5 /* Color of ReduceAction107 */,
-  51 /* Group of ? */,
-  2007 /* Id of ReduceAction108 */,
+  54 /* Group of ? */,
+  2947 /* Id of ReduceAction108 */,
   5 /* Color of ReduceAction108 */,
-  51 /* Group of ? */,
-  2003 /* Id of ReduceAction109 */,
+  54 /* Group of ? */,
+  2943 /* Id of ReduceAction109 */,
   5 /* Color of ReduceAction109 */,
-  51 /* Group of ? */,
-  1995 /* Id of ReduceAction110 */,
+  54 /* Group of ? */,
+  2935 /* Id of ReduceAction110 */,
   5 /* Color of ReduceAction110 */,
-  51 /* Group of ? */,
-  1991 /* Id of ReduceAction111 */,
+  54 /* Group of ? */,
+  2931 /* Id of ReduceAction111 */,
   5 /* Color of ReduceAction111 */,
-  51 /* Group of ? */,
-  1987 /* Id of ReduceAction112 */,
+  54 /* Group of ? */,
+  2927 /* Id of ReduceAction112 */,
   5 /* Color of ReduceAction112 */,
-  51 /* Group of ? */,
-  1983 /* Id of ReduceAction113 */,
+  54 /* Group of ? */,
+  2923 /* Id of ReduceAction113 */,
   5 /* Color of ReduceAction113 */,
-  51 /* Group of ? */,
-  1979 /* Id of ReduceAction114 */,
+  54 /* Group of ? */,
+  2919 /* Id of ReduceAction114 */,
   5 /* Color of ReduceAction114 */,
-  51 /* Group of ? */,
-  1975 /* Id of ReduceAction115 */,
+  54 /* Group of ? */,
+  2915 /* Id of ReduceAction115 */,
   5 /* Color of ReduceAction115 */,
-  51 /* Group of ? */,
-  1971 /* Id of ReduceAction116 */,
+  54 /* Group of ? */,
+  2911 /* Id of ReduceAction116 */,
   5 /* Color of ReduceAction116 */,
-  51 /* Group of ? */,
-  1967 /* Id of ReduceAction117 */,
+  54 /* Group of ? */,
+  2907 /* Id of ReduceAction117 */,
   5 /* Color of ReduceAction117 */,
-  51 /* Group of ? */,
-  1963 /* Id of ReduceAction118 */,
+  54 /* Group of ? */,
+  2903 /* Id of ReduceAction118 */,
   5 /* Color of ReduceAction118 */,
-  51 /* Group of ? */,
-  1959 /* Id of ReduceAction119 */,
+  54 /* Group of ? */,
+  2899 /* Id of ReduceAction119 */,
   5 /* Color of ReduceAction119 */,
-  51 /* Group of ? */,
-  1951 /* Id of ReduceAction120 */,
+  54 /* Group of ? */,
+  2891 /* Id of ReduceAction120 */,
   5 /* Color of ReduceAction120 */,
-  51 /* Group of ? */,
-  1947 /* Id of ReduceAction121 */,
+  54 /* Group of ? */,
+  2887 /* Id of ReduceAction121 */,
   5 /* Color of ReduceAction121 */,
-  51 /* Group of ? */,
-  1943 /* Id of ReduceAction122 */,
+  54 /* Group of ? */,
+  2883 /* Id of ReduceAction122 */,
   5 /* Color of ReduceAction122 */,
-  51 /* Group of ? */,
-  1939 /* Id of ReduceAction123 */,
+  54 /* Group of ? */,
+  2879 /* Id of ReduceAction123 */,
   5 /* Color of ReduceAction123 */,
-  51 /* Group of ? */,
-  1935 /* Id of ReduceAction124 */,
+  54 /* Group of ? */,
+  2875 /* Id of ReduceAction124 */,
   5 /* Color of ReduceAction124 */,
-  51 /* Group of ? */,
-  1931 /* Id of ReduceAction125 */,
+  54 /* Group of ? */,
+  2871 /* Id of ReduceAction125 */,
   5 /* Color of ReduceAction125 */,
-  51 /* Group of ? */,
-  1927 /* Id of ReduceAction126 */,
+  54 /* Group of ? */,
+  2827 /* Id of ReduceAction126 */,
   5 /* Color of ReduceAction126 */,
-  51 /* Group of ? */,
-  1923 /* Id of ReduceAction127 */,
+  54 /* Group of ? */,
+  2791 /* Id of ReduceAction127 */,
   5 /* Color of ReduceAction127 */,
-  51 /* Group of ? */,
-  1919 /* Id of ReduceAction128 */,
+  54 /* Group of ? */,
+  2767 /* Id of ReduceAction128 */,
   5 /* Color of ReduceAction128 */,
-  51 /* Group of ? */,
-  1915 /* Id of ReduceAction129 */,
+  54 /* Group of ? */,
+  2739 /* Id of ReduceAction129 */,
   5 /* Color of ReduceAction129 */,
-  51 /* Group of ? */,
-  1907 /* Id of ReduceAction130 */,
+  54 /* Group of ? */,
+  2731 /* Id of ReduceAction130 */,
   5 /* Color of ReduceAction130 */,
-  51 /* Group of ? */,
-  1903 /* Id of ReduceAction131 */,
+  54 /* Group of ? */,
+  2727 /* Id of ReduceAction131 */,
   5 /* Color of ReduceAction131 */,
-  51 /* Group of ? */,
-  1899 /* Id of ReduceAction132 */,
+  54 /* Group of ? */,
+  2723 /* Id of ReduceAction132 */,
   5 /* Color of ReduceAction132 */,
-  51 /* Group of ? */,
-  1895 /* Id of ReduceAction133 */,
+  54 /* Group of ? */,
+  2719 /* Id of ReduceAction133 */,
   5 /* Color of ReduceAction133 */,
-  51 /* Group of ? */,
-  1891 /* Id of ReduceAction134 */,
+  54 /* Group of ? */,
+  2715 /* Id of ReduceAction134 */,
   5 /* Color of ReduceAction134 */,
-  51 /* Group of ? */,
-  1887 /* Id of ReduceAction135 */,
+  54 /* Group of ? */,
+  2711 /* Id of ReduceAction135 */,
   5 /* Color of ReduceAction135 */,
-  51 /* Group of ? */,
-  1883 /* Id of ReduceAction136 */,
+  54 /* Group of ? */,
+  2707 /* Id of ReduceAction136 */,
   5 /* Color of ReduceAction136 */,
-  51 /* Group of ? */,
-  1879 /* Id of ReduceAction137 */,
+  54 /* Group of ? */,
+  2703 /* Id of ReduceAction137 */,
   5 /* Color of ReduceAction137 */,
-  51 /* Group of ? */,
-  1875 /* Id of ReduceAction138 */,
+  54 /* Group of ? */,
+  2699 /* Id of ReduceAction138 */,
   5 /* Color of ReduceAction138 */,
-  51 /* Group of ? */,
-  1871 /* Id of ReduceAction139 */,
+  54 /* Group of ? */,
+  2695 /* Id of ReduceAction139 */,
   5 /* Color of ReduceAction139 */,
-  51 /* Group of ? */,
-  1863 /* Id of ReduceAction140 */,
+  54 /* Group of ? */,
+  2687 /* Id of ReduceAction140 */,
   5 /* Color of ReduceAction140 */,
-  51 /* Group of ? */,
-  1859 /* Id of ReduceAction141 */,
+  54 /* Group of ? */,
+  2683 /* Id of ReduceAction141 */,
   5 /* Color of ReduceAction141 */,
-  51 /* Group of ? */,
-  1855 /* Id of ReduceAction142 */,
+  54 /* Group of ? */,
+  2679 /* Id of ReduceAction142 */,
   5 /* Color of ReduceAction142 */,
-  51 /* Group of ? */,
-  1851 /* Id of ReduceAction143 */,
+  54 /* Group of ? */,
+  2675 /* Id of ReduceAction143 */,
   5 /* Color of ReduceAction143 */,
-  51 /* Group of ? */,
-  1847 /* Id of ReduceAction144 */,
+  54 /* Group of ? */,
+  2671 /* Id of ReduceAction144 */,
   5 /* Color of ReduceAction144 */,
-  51 /* Group of ? */,
-  1843 /* Id of ReduceAction145 */,
+  54 /* Group of ? */,
+  2667 /* Id of ReduceAction145 */,
   5 /* Color of ReduceAction145 */,
-  51 /* Group of ? */,
-  1839 /* Id of ReduceAction146 */,
+  54 /* Group of ? */,
+  2663 /* Id of ReduceAction146 */,
   5 /* Color of ReduceAction146 */,
-  51 /* Group of ? */,
-  1835 /* Id of ReduceAction147 */,
+  54 /* Group of ? */,
+  2659 /* Id of ReduceAction147 */,
   5 /* Color of ReduceAction147 */,
-  51 /* Group of ? */,
-  1831 /* Id of ReduceAction148 */,
+  54 /* Group of ? */,
+  2655 /* Id of ReduceAction148 */,
   5 /* Color of ReduceAction148 */,
-  51 /* Group of ? */,
-  1827 /* Id of ReduceAction149 */,
+  54 /* Group of ? */,
+  2651 /* Id of ReduceAction149 */,
   5 /* Color of ReduceAction149 */,
-  51 /* Group of ? */,
-  1819 /* Id of ReduceAction150 */,
+  54 /* Group of ? */,
+  2643 /* Id of ReduceAction150 */,
   5 /* Color of ReduceAction150 */,
-  51 /* Group of ? */,
-  1815 /* Id of ReduceAction151 */,
+  54 /* Group of ? */,
+  2639 /* Id of ReduceAction151 */,
   5 /* Color of ReduceAction151 */,
-  51 /* Group of ? */,
-  1811 /* Id of ReduceAction152 */,
+  54 /* Group of ? */,
+  2635 /* Id of ReduceAction152 */,
   5 /* Color of ReduceAction152 */,
-  51 /* Group of ? */,
-  1807 /* Id of ReduceAction153 */,
+  54 /* Group of ? */,
+  2631 /* Id of ReduceAction153 */,
   5 /* Color of ReduceAction153 */,
-  51 /* Group of ? */,
-  1803 /* Id of ReduceAction154 */,
+  54 /* Group of ? */,
+  2627 /* Id of ReduceAction154 */,
   5 /* Color of ReduceAction154 */,
-  51 /* Group of ? */,
-  1799 /* Id of ReduceAction155 */,
+  54 /* Group of ? */,
+  2623 /* Id of ReduceAction155 */,
   5 /* Color of ReduceAction155 */,
-  51 /* Group of ? */,
-  1795 /* Id of ReduceAction156 */,
+  54 /* Group of ? */,
+  2619 /* Id of ReduceAction156 */,
   5 /* Color of ReduceAction156 */,
-  51 /* Group of ? */,
-  1791 /* Id of ReduceAction157 */,
+  54 /* Group of ? */,
+  2615 /* Id of ReduceAction157 */,
   5 /* Color of ReduceAction157 */,
-  51 /* Group of ? */,
-  1787 /* Id of ReduceAction158 */,
+  54 /* Group of ? */,
+  2611 /* Id of ReduceAction158 */,
   5 /* Color of ReduceAction158 */,
-  51 /* Group of ? */,
-  1783 /* Id of ReduceAction159 */,
+  54 /* Group of ? */,
+  2607 /* Id of ReduceAction159 */,
   5 /* Color of ReduceAction159 */,
-  51 /* Group of ? */,
-  1775 /* Id of ReduceAction160 */,
+  54 /* Group of ? */,
+  2599 /* Id of ReduceAction160 */,
   5 /* Color of ReduceAction160 */,
-  51 /* Group of ? */,
-  1771 /* Id of ReduceAction161 */,
+  54 /* Group of ? */,
+  2595 /* Id of ReduceAction161 */,
   5 /* Color of ReduceAction161 */,
-  51 /* Group of ? */,
-  1767 /* Id of ReduceAction162 */,
+  54 /* Group of ? */,
+  2591 /* Id of ReduceAction162 */,
   5 /* Color of ReduceAction162 */,
-  51 /* Group of ? */,
-  1763 /* Id of ReduceAction163 */,
+  54 /* Group of ? */,
+  2587 /* Id of ReduceAction163 */,
   5 /* Color of ReduceAction163 */,
-  51 /* Group of ? */,
-  1759 /* Id of ReduceAction164 */,
+  54 /* Group of ? */,
+  2583 /* Id of ReduceAction164 */,
   5 /* Color of ReduceAction164 */,
-  51 /* Group of ? */,
-  1755 /* Id of ReduceAction165 */,
+  54 /* Group of ? */,
+  2579 /* Id of ReduceAction165 */,
   5 /* Color of ReduceAction165 */,
-  51 /* Group of ? */,
-  1751 /* Id of ReduceAction166 */,
+  54 /* Group of ? */,
+  2575 /* Id of ReduceAction166 */,
   5 /* Color of ReduceAction166 */,
-  51 /* Group of ? */,
-  1747 /* Id of ReduceAction167 */,
+  54 /* Group of ? */,
+  2571 /* Id of ReduceAction167 */,
   5 /* Color of ReduceAction167 */,
-  51 /* Group of ? */,
-  1743 /* Id of ReduceAction168 */,
+  54 /* Group of ? */,
+  2567 /* Id of ReduceAction168 */,
   5 /* Color of ReduceAction168 */,
-  51 /* Group of ? */,
-  1739 /* Id of ReduceAction169 */,
+  54 /* Group of ? */,
+  2563 /* Id of ReduceAction169 */,
   5 /* Color of ReduceAction169 */,
-  51 /* Group of ? */,
-  1731 /* Id of ReduceAction170 */,
+  54 /* Group of ? */,
+  2555 /* Id of ReduceAction170 */,
   5 /* Color of ReduceAction170 */,
-  51 /* Group of ? */,
-  1727 /* Id of ReduceAction171 */,
+  54 /* Group of ? */,
+  2551 /* Id of ReduceAction171 */,
   5 /* Color of ReduceAction171 */,
-  51 /* Group of ? */,
-  1723 /* Id of ReduceAction172 */,
+  54 /* Group of ? */,
+  2547 /* Id of ReduceAction172 */,
   5 /* Color of ReduceAction172 */,
-  51 /* Group of ? */,
-  1719 /* Id of ReduceAction173 */,
+  54 /* Group of ? */,
+  2543 /* Id of ReduceAction173 */,
   5 /* Color of ReduceAction173 */,
-  51 /* Group of ? */,
-  1715 /* Id of ReduceAction174 */,
+  54 /* Group of ? */,
+  2539 /* Id of ReduceAction174 */,
   5 /* Color of ReduceAction174 */,
-  51 /* Group of ? */,
-  1711 /* Id of ReduceAction175 */,
+  54 /* Group of ? */,
+  2535 /* Id of ReduceAction175 */,
   5 /* Color of ReduceAction175 */,
-  51 /* Group of ? */,
-  1707 /* Id of ReduceAction176 */,
+  54 /* Group of ? */,
+  2531 /* Id of ReduceAction176 */,
   5 /* Color of ReduceAction176 */,
-  51 /* Group of ? */,
-  1703 /* Id of ReduceAction177 */,
+  54 /* Group of ? */,
+  2527 /* Id of ReduceAction177 */,
   5 /* Color of ReduceAction177 */,
-  51 /* Group of ? */,
-  1699 /* Id of ReduceAction178 */,
+  54 /* Group of ? */,
+  2523 /* Id of ReduceAction178 */,
   5 /* Color of ReduceAction178 */,
-  51 /* Group of ? */,
-  1695 /* Id of ReduceAction179 */,
+  54 /* Group of ? */,
+  2519 /* Id of ReduceAction179 */,
   5 /* Color of ReduceAction179 */,
-  51 /* Group of ? */,
-  1687 /* Id of ReduceAction180 */,
+  54 /* Group of ? */,
+  2511 /* Id of ReduceAction180 */,
   5 /* Color of ReduceAction180 */,
-  51 /* Group of ? */,
-  1683 /* Id of ReduceAction181 */,
+  54 /* Group of ? */,
+  2507 /* Id of ReduceAction181 */,
   5 /* Color of ReduceAction181 */,
-  51 /* Group of ? */,
-  1679 /* Id of ReduceAction182 */,
+  54 /* Group of ? */,
+  2503 /* Id of ReduceAction182 */,
   5 /* Color of ReduceAction182 */,
-  51 /* Group of ? */,
-  1675 /* Id of ReduceAction183 */,
+  54 /* Group of ? */,
+  2499 /* Id of ReduceAction183 */,
   5 /* Color of ReduceAction183 */,
-  51 /* Group of ? */,
-  1671 /* Id of ReduceAction184 */,
+  54 /* Group of ? */,
+  2495 /* Id of ReduceAction184 */,
   5 /* Color of ReduceAction184 */,
-  51 /* Group of ? */,
-  1667 /* Id of ReduceAction185 */,
+  54 /* Group of ? */,
+  2491 /* Id of ReduceAction185 */,
   5 /* Color of ReduceAction185 */,
-  51 /* Group of ? */,
-  1663 /* Id of ReduceAction186 */,
+  54 /* Group of ? */,
+  2487 /* Id of ReduceAction186 */,
   5 /* Color of ReduceAction186 */,
-  51 /* Group of ? */,
-  1659 /* Id of ReduceAction187 */,
+  54 /* Group of ? */,
+  2483 /* Id of ReduceAction187 */,
   5 /* Color of ReduceAction187 */,
-  51 /* Group of ? */,
-  1655 /* Id of ReduceAction188 */,
+  54 /* Group of ? */,
+  2479 /* Id of ReduceAction188 */,
   5 /* Color of ReduceAction188 */,
-  51 /* Group of ? */,
-  1651 /* Id of ReduceAction189 */,
+  54 /* Group of ? */,
+  2475 /* Id of ReduceAction189 */,
   5 /* Color of ReduceAction189 */,
-  51 /* Group of ? */,
-  1643 /* Id of ReduceAction190 */,
+  54 /* Group of ? */,
+  2467 /* Id of ReduceAction190 */,
   5 /* Color of ReduceAction190 */,
-  51 /* Group of ? */,
-  1639 /* Id of ReduceAction191 */,
+  54 /* Group of ? */,
+  2463 /* Id of ReduceAction191 */,
   5 /* Color of ReduceAction191 */,
-  51 /* Group of ? */,
-  1635 /* Id of ReduceAction192 */,
+  54 /* Group of ? */,
+  2459 /* Id of ReduceAction192 */,
   5 /* Color of ReduceAction192 */,
-  51 /* Group of ? */,
-  1631 /* Id of ReduceAction193 */,
+  54 /* Group of ? */,
+  2455 /* Id of ReduceAction193 */,
   5 /* Color of ReduceAction193 */,
-  51 /* Group of ? */,
-  1627 /* Id of ReduceAction194 */,
+  54 /* Group of ? */,
+  2451 /* Id of ReduceAction194 */,
   5 /* Color of ReduceAction194 */,
-  51 /* Group of ? */,
-  1623 /* Id of ReduceAction195 */,
+  54 /* Group of ? */,
+  2447 /* Id of ReduceAction195 */,
   5 /* Color of ReduceAction195 */,
-  51 /* Group of ? */,
-  1619 /* Id of ReduceAction196 */,
+  54 /* Group of ? */,
+  2443 /* Id of ReduceAction196 */,
   5 /* Color of ReduceAction196 */,
-  51 /* Group of ? */,
-  1615 /* Id of ReduceAction197 */,
+  54 /* Group of ? */,
+  2439 /* Id of ReduceAction197 */,
   5 /* Color of ReduceAction197 */,
-  51 /* Group of ? */,
-  1611 /* Id of ReduceAction198 */,
+  54 /* Group of ? */,
+  2435 /* Id of ReduceAction198 */,
   5 /* Color of ReduceAction198 */,
-  51 /* Group of ? */,
-  1607 /* Id of ReduceAction199 */,
+  54 /* Group of ? */,
+  2431 /* Id of ReduceAction199 */,
   5 /* Color of ReduceAction199 */,
-  51 /* Group of ? */,
-  1595 /* Id of ReduceAction200 */,
+  54 /* Group of ? */,
+  2419 /* Id of ReduceAction200 */,
   5 /* Color of ReduceAction200 */,
-  51 /* Group of ? */,
-  1591 /* Id of ReduceAction201 */,
+  54 /* Group of ? */,
+  2415 /* Id of ReduceAction201 */,
   5 /* Color of ReduceAction201 */,
-  51 /* Group of ? */,
-  1587 /* Id of ReduceAction202 */,
+  54 /* Group of ? */,
+  2411 /* Id of ReduceAction202 */,
   5 /* Color of ReduceAction202 */,
-  51 /* Group of ? */,
-  1583 /* Id of ReduceAction203 */,
+  54 /* Group of ? */,
+  2407 /* Id of ReduceAction203 */,
   5 /* Color of ReduceAction203 */,
-  51 /* Group of ? */,
-  1579 /* Id of ReduceAction204 */,
+  54 /* Group of ? */,
+  2403 /* Id of ReduceAction204 */,
   5 /* Color of ReduceAction204 */,
-  51 /* Group of ? */,
-  1575 /* Id of ReduceAction205 */,
+  54 /* Group of ? */,
+  2399 /* Id of ReduceAction205 */,
   5 /* Color of ReduceAction205 */,
-  51 /* Group of ? */,
-  1571 /* Id of ReduceAction206 */,
+  54 /* Group of ? */,
+  2395 /* Id of ReduceAction206 */,
   5 /* Color of ReduceAction206 */,
-  51 /* Group of ? */,
-  1567 /* Id of ReduceAction207 */,
+  54 /* Group of ? */,
+  2391 /* Id of ReduceAction207 */,
   5 /* Color of ReduceAction207 */,
-  51 /* Group of ? */,
-  1563 /* Id of ReduceAction208 */,
+  54 /* Group of ? */,
+  2387 /* Id of ReduceAction208 */,
   5 /* Color of ReduceAction208 */,
-  51 /* Group of ? */,
-  1559 /* Id of ReduceAction209 */,
+  54 /* Group of ? */,
+  2383 /* Id of ReduceAction209 */,
   5 /* Color of ReduceAction209 */,
-  51 /* Group of ? */,
-  1551 /* Id of ReduceAction210 */,
+  54 /* Group of ? */,
+  2375 /* Id of ReduceAction210 */,
   5 /* Color of ReduceAction210 */,
-  51 /* Group of ? */,
-  1547 /* Id of ReduceAction211 */,
+  54 /* Group of ? */,
+  2371 /* Id of ReduceAction211 */,
   5 /* Color of ReduceAction211 */,
-  51 /* Group of ? */,
-  1543 /* Id of ReduceAction212 */,
+  54 /* Group of ? */,
+  2367 /* Id of ReduceAction212 */,
   5 /* Color of ReduceAction212 */,
-  51 /* Group of ? */,
-  1539 /* Id of ReduceAction213 */,
+  54 /* Group of ? */,
+  2363 /* Id of ReduceAction213 */,
   5 /* Color of ReduceAction213 */,
-  51 /* Group of ? */,
-  1535 /* Id of ReduceAction214 */,
+  54 /* Group of ? */,
+  2359 /* Id of ReduceAction214 */,
   5 /* Color of ReduceAction214 */,
-  51 /* Group of ? */,
-  1531 /* Id of ReduceAction215 */,
+  54 /* Group of ? */,
+  2355 /* Id of ReduceAction215 */,
   5 /* Color of ReduceAction215 */,
-  51 /* Group of ? */,
-  1527 /* Id of ReduceAction216 */,
+  54 /* Group of ? */,
+  2351 /* Id of ReduceAction216 */,
   5 /* Color of ReduceAction216 */,
-  51 /* Group of ? */,
-  1523 /* Id of ReduceAction217 */,
+  54 /* Group of ? */,
+  2347 /* Id of ReduceAction217 */,
   5 /* Color of ReduceAction217 */,
-  51 /* Group of ? */,
-  1519 /* Id of ReduceAction218 */,
+  54 /* Group of ? */,
+  2343 /* Id of ReduceAction218 */,
   5 /* Color of ReduceAction218 */,
-  51 /* Group of ? */,
-  1511 /* Id of ReduceAction220 */,
+  54 /* Group of ? */,
+  2339 /* Id of ReduceAction219 */,
+  5 /* Color of ReduceAction219 */,
+  54 /* Group of ? */,
+  2331 /* Id of ReduceAction220 */,
   5 /* Color of ReduceAction220 */,
-  51 /* Group of ? */,
-  1507 /* Id of ReduceAction221 */,
+  54 /* Group of ? */,
+  2327 /* Id of ReduceAction221 */,
   5 /* Color of ReduceAction221 */,
-  51 /* Group of ? */,
-  1503 /* Id of ReduceAction222 */,
+  54 /* Group of ? */,
+  2323 /* Id of ReduceAction222 */,
   5 /* Color of ReduceAction222 */,
-  51 /* Group of ? */,
-  1499 /* Id of ReduceAction223 */,
+  54 /* Group of ? */,
+  2319 /* Id of ReduceAction223 */,
   5 /* Color of ReduceAction223 */,
-  51 /* Group of ? */,
-  1495 /* Id of ReduceAction224 */,
+  54 /* Group of ? */,
+  2315 /* Id of ReduceAction224 */,
   5 /* Color of ReduceAction224 */,
-  51 /* Group of ? */,
-  1491 /* Id of ReduceAction225 */,
+  54 /* Group of ? */,
+  2311 /* Id of ReduceAction225 */,
   5 /* Color of ReduceAction225 */,
-  51 /* Group of ? */,
-  1487 /* Id of ReduceAction226 */,
+  54 /* Group of ? */,
+  2307 /* Id of ReduceAction226 */,
   5 /* Color of ReduceAction226 */,
-  51 /* Group of ? */,
-  1483 /* Id of ReduceAction227 */,
+  54 /* Group of ? */,
+  2303 /* Id of ReduceAction227 */,
   5 /* Color of ReduceAction227 */,
-  51 /* Group of ? */,
-  1479 /* Id of ReduceAction228 */,
+  54 /* Group of ? */,
+  2299 /* Id of ReduceAction228 */,
   5 /* Color of ReduceAction228 */,
-  51 /* Group of ? */,
-  1475 /* Id of ReduceAction229 */,
+  54 /* Group of ? */,
+  2295 /* Id of ReduceAction229 */,
   5 /* Color of ReduceAction229 */,
-  51 /* Group of ? */,
-  1467 /* Id of ReduceAction230 */,
+  54 /* Group of ? */,
+  2287 /* Id of ReduceAction230 */,
   5 /* Color of ReduceAction230 */,
-  51 /* Group of ? */,
-  1463 /* Id of ReduceAction231 */,
+  54 /* Group of ? */,
+  2283 /* Id of ReduceAction231 */,
   5 /* Color of ReduceAction231 */,
-  51 /* Group of ? */,
-  1459 /* Id of ReduceAction232 */,
+  54 /* Group of ? */,
+  2279 /* Id of ReduceAction232 */,
   5 /* Color of ReduceAction232 */,
-  51 /* Group of ? */,
-  1455 /* Id of ReduceAction233 */,
+  54 /* Group of ? */,
+  2275 /* Id of ReduceAction233 */,
   5 /* Color of ReduceAction233 */,
-  51 /* Group of ? */,
-  1451 /* Id of ReduceAction235 */,
+  54 /* Group of ? */,
+  2271 /* Id of ReduceAction234 */,
+  5 /* Color of ReduceAction234 */,
+  54 /* Group of ? */,
+  2267 /* Id of ReduceAction235 */,
   5 /* Color of ReduceAction235 */,
-  51 /* Group of ? */,
-  1447 /* Id of ReduceAction236 */,
+  54 /* Group of ? */,
+  2263 /* Id of ReduceAction236 */,
   5 /* Color of ReduceAction236 */,
-  51 /* Group of ? */,
-  1443 /* Id of ReduceAction237 */,
+  54 /* Group of ? */,
+  2259 /* Id of ReduceAction237 */,
   5 /* Color of ReduceAction237 */,
-  51 /* Group of ? */,
-  1439 /* Id of ReduceAction238 */,
+  54 /* Group of ? */,
+  2255 /* Id of ReduceAction238 */,
   5 /* Color of ReduceAction238 */,
-  51 /* Group of ? */,
-  1435 /* Id of ReduceAction239 */,
+  54 /* Group of ? */,
+  2251 /* Id of ReduceAction239 */,
   5 /* Color of ReduceAction239 */,
-  51 /* Group of ? */,
-  1427 /* Id of ReduceAction240 */,
+  54 /* Group of ? */,
+  2243 /* Id of ReduceAction240 */,
   5 /* Color of ReduceAction240 */,
-  51 /* Group of ? */,
-  1423 /* Id of ReduceAction241 */,
+  54 /* Group of ? */,
+  2239 /* Id of ReduceAction241 */,
   5 /* Color of ReduceAction241 */,
-  51 /* Group of ? */,
-  1419 /* Id of ReduceAction242 */,
+  54 /* Group of ? */,
+  2235 /* Id of ReduceAction242 */,
   5 /* Color of ReduceAction242 */,
-  51 /* Group of ? */,
-  1415 /* Id of ReduceAction243 */,
+  54 /* Group of ? */,
+  2231 /* Id of ReduceAction243 */,
   5 /* Color of ReduceAction243 */,
-  51 /* Group of ? */,
-  1411 /* Id of ReduceAction246 */,
+  54 /* Group of ? */,
+  2227 /* Id of ReduceAction244 */,
+  5 /* Color of ReduceAction244 */,
+  54 /* Group of ? */,
+  2223 /* Id of ReduceAction245 */,
+  5 /* Color of ReduceAction245 */,
+  54 /* Group of ? */,
+  2219 /* Id of ReduceAction246 */,
   5 /* Color of ReduceAction246 */,
-  51 /* Group of ? */,
-  1407 /* Id of ReduceAction247 */,
+  54 /* Group of ? */,
+  2215 /* Id of ReduceAction247 */,
   5 /* Color of ReduceAction247 */,
-  51 /* Group of ? */,
-  1403 /* Id of ReduceAction248 */,
+  54 /* Group of ? */,
+  2211 /* Id of ReduceAction248 */,
   5 /* Color of ReduceAction248 */,
-  51 /* Group of ? */,
-  1399 /* Id of ReduceAction249 */,
+  54 /* Group of ? */,
+  2207 /* Id of ReduceAction249 */,
   5 /* Color of ReduceAction249 */,
-  51 /* Group of ? */,
-  1391 /* Id of ReduceAction250 */,
+  54 /* Group of ? */,
+  2199 /* Id of ReduceAction250 */,
   5 /* Color of ReduceAction250 */,
-  51 /* Group of ? */,
-  1387 /* Id of ReduceAction251 */,
+  54 /* Group of ? */,
+  2195 /* Id of ReduceAction251 */,
   5 /* Color of ReduceAction251 */,
-  51 /* Group of ? */,
-  1383 /* Id of ReduceAction252 */,
+  54 /* Group of ? */,
+  2191 /* Id of ReduceAction252 */,
   5 /* Color of ReduceAction252 */,
-  51 /* Group of ? */,
-  1379 /* Id of ReduceAction253 */,
+  54 /* Group of ? */,
+  2187 /* Id of ReduceAction253 */,
   5 /* Color of ReduceAction253 */,
-  51 /* Group of ? */,
-  1375 /* Id of ReduceAction254 */,
+  54 /* Group of ? */,
+  2183 /* Id of ReduceAction254 */,
   5 /* Color of ReduceAction254 */,
-  51 /* Group of ? */,
-  1371 /* Id of ReduceAction255 */,
+  54 /* Group of ? */,
+  2179 /* Id of ReduceAction255 */,
   5 /* Color of ReduceAction255 */,
-  51 /* Group of ? */,
-  1367 /* Id of ReduceAction256 */,
+  54 /* Group of ? */,
+  2175 /* Id of ReduceAction256 */,
   5 /* Color of ReduceAction256 */,
-  51 /* Group of ? */,
-  1359 /* Id of ReduceAction263 */,
+  54 /* Group of ? */,
+  2171 /* Id of ReduceAction257 */,
+  5 /* Color of ReduceAction257 */,
+  54 /* Group of ? */,
+  2167 /* Id of ReduceAction258 */,
+  5 /* Color of ReduceAction258 */,
+  54 /* Group of ? */,
+  2163 /* Id of ReduceAction259 */,
+  5 /* Color of ReduceAction259 */,
+  54 /* Group of ? */,
+  2155 /* Id of ReduceAction260 */,
+  5 /* Color of ReduceAction260 */,
+  54 /* Group of ? */,
+  2151 /* Id of ReduceAction261 */,
+  5 /* Color of ReduceAction261 */,
+  54 /* Group of ? */,
+  2147 /* Id of ReduceAction262 */,
+  5 /* Color of ReduceAction262 */,
+  54 /* Group of ? */,
+  2143 /* Id of ReduceAction263 */,
   5 /* Color of ReduceAction263 */,
-  51 /* Group of ? */,
-  1355 /* Id of ReduceAction264 */,
+  54 /* Group of ? */,
+  2139 /* Id of ReduceAction264 */,
   5 /* Color of ReduceAction264 */,
-  51 /* Group of ? */,
-  1351 /* Id of ReduceAction265 */,
+  54 /* Group of ? */,
+  2135 /* Id of ReduceAction265 */,
   5 /* Color of ReduceAction265 */,
-  51 /* Group of ? */,
-  1347 /* Id of ReduceAction266 */,
+  54 /* Group of ? */,
+  2131 /* Id of ReduceAction266 */,
   5 /* Color of ReduceAction266 */,
-  51 /* Group of ? */,
-  1343 /* Id of ReduceAction267 */,
+  54 /* Group of ? */,
+  2127 /* Id of ReduceAction267 */,
   5 /* Color of ReduceAction267 */,
-  51 /* Group of ? */,
-  1339 /* Id of ReduceAction268 */,
+  54 /* Group of ? */,
+  2123 /* Id of ReduceAction268 */,
   5 /* Color of ReduceAction268 */,
-  51 /* Group of ? */,
-  1335 /* Id of ReduceAction269 */,
+  54 /* Group of ? */,
+  2119 /* Id of ReduceAction269 */,
   5 /* Color of ReduceAction269 */,
-  51 /* Group of ? */,
-  1327 /* Id of ReduceAction270 */,
+  54 /* Group of ? */,
+  2111 /* Id of ReduceAction270 */,
   5 /* Color of ReduceAction270 */,
-  51 /* Group of ? */,
-  1323 /* Id of ReduceAction271 */,
+  54 /* Group of ? */,
+  2107 /* Id of ReduceAction271 */,
   5 /* Color of ReduceAction271 */,
-  51 /* Group of ? */,
-  1319 /* Id of ReduceAction272 */,
+  54 /* Group of ? */,
+  2103 /* Id of ReduceAction272 */,
   5 /* Color of ReduceAction272 */,
-  51 /* Group of ? */,
-  1315 /* Id of ReduceAction273 */,
+  54 /* Group of ? */,
+  2099 /* Id of ReduceAction273 */,
   5 /* Color of ReduceAction273 */,
-  51 /* Group of ? */,
-  1311 /* Id of ReduceAction274 */,
+  54 /* Group of ? */,
+  2095 /* Id of ReduceAction274 */,
   5 /* Color of ReduceAction274 */,
-  51 /* Group of ? */,
-  1307 /* Id of ReduceAction275 */,
+  54 /* Group of ? */,
+  2091 /* Id of ReduceAction275 */,
   5 /* Color of ReduceAction275 */,
-  51 /* Group of ? */,
-  1303 /* Id of ReduceAction276 */,
+  54 /* Group of ? */,
+  2087 /* Id of ReduceAction276 */,
   5 /* Color of ReduceAction276 */,
-  51 /* Group of ? */,
-  1299 /* Id of ReduceAction277 */,
+  54 /* Group of ? */,
+  2083 /* Id of ReduceAction277 */,
   5 /* Color of ReduceAction277 */,
-  51 /* Group of ? */,
-  1295 /* Id of ReduceAction278 */,
+  54 /* Group of ? */,
+  2079 /* Id of ReduceAction278 */,
   5 /* Color of ReduceAction278 */,
-  51 /* Group of ? */,
-  1291 /* Id of ReduceAction279 */,
+  54 /* Group of ? */,
+  2075 /* Id of ReduceAction279 */,
   5 /* Color of ReduceAction279 */,
-  51 /* Group of ? */,
-  1283 /* Id of ReduceAction280 */,
+  54 /* Group of ? */,
+  2067 /* Id of ReduceAction280 */,
   5 /* Color of ReduceAction280 */,
-  51 /* Group of ? */,
-  1279 /* Id of ReduceAction281 */,
+  54 /* Group of ? */,
+  2063 /* Id of ReduceAction281 */,
   5 /* Color of ReduceAction281 */,
-  51 /* Group of ? */,
-  1275 /* Id of ReduceAction282 */,
+  54 /* Group of ? */,
+  2059 /* Id of ReduceAction282 */,
   5 /* Color of ReduceAction282 */,
-  51 /* Group of ? */,
-  1271 /* Id of ReduceAction283 */,
+  54 /* Group of ? */,
+  2055 /* Id of ReduceAction283 */,
   5 /* Color of ReduceAction283 */,
-  51 /* Group of ? */,
-  1267 /* Id of ReduceAction284 */,
+  54 /* Group of ? */,
+  2051 /* Id of ReduceAction284 */,
   5 /* Color of ReduceAction284 */,
-  51 /* Group of ? */,
-  1263 /* Id of ReduceAction285 */,
+  54 /* Group of ? */,
+  2047 /* Id of ReduceAction285 */,
   5 /* Color of ReduceAction285 */,
-  51 /* Group of ? */,
-  1259 /* Id of ReduceAction286 */,
+  54 /* Group of ? */,
+  2043 /* Id of ReduceAction286 */,
   5 /* Color of ReduceAction286 */,
-  51 /* Group of ? */,
-  1255 /* Id of ReduceAction287 */,
+  54 /* Group of ? */,
+  2039 /* Id of ReduceAction287 */,
   5 /* Color of ReduceAction287 */,
-  51 /* Group of ? */,
-  1251 /* Id of ReduceAction288 */,
+  54 /* Group of ? */,
+  2035 /* Id of ReduceAction288 */,
   5 /* Color of ReduceAction288 */,
-  51 /* Group of ? */,
-  1247 /* Id of ReduceAction289 */,
+  54 /* Group of ? */,
+  2031 /* Id of ReduceAction289 */,
   5 /* Color of ReduceAction289 */,
-  51 /* Group of ? */,
-  1239 /* Id of ReduceAction290 */,
+  54 /* Group of ? */,
+  2023 /* Id of ReduceAction290 */,
   5 /* Color of ReduceAction290 */,
-  51 /* Group of ? */,
-  1235 /* Id of ReduceAction291 */,
+  54 /* Group of ? */,
+  2019 /* Id of ReduceAction291 */,
   5 /* Color of ReduceAction291 */,
-  51 /* Group of ? */,
-  1231 /* Id of ReduceAction292 */,
+  54 /* Group of ? */,
+  2015 /* Id of ReduceAction292 */,
   5 /* Color of ReduceAction292 */,
-  51 /* Group of ? */,
-  1227 /* Id of ReduceAction293 */,
+  54 /* Group of ? */,
+  2011 /* Id of ReduceAction293 */,
   5 /* Color of ReduceAction293 */,
-  51 /* Group of ? */,
-  1223 /* Id of ReduceAction294 */,
+  54 /* Group of ? */,
+  2007 /* Id of ReduceAction294 */,
   5 /* Color of ReduceAction294 */,
-  51 /* Group of ? */,
-  1219 /* Id of ReduceAction295 */,
+  54 /* Group of ? */,
+  2003 /* Id of ReduceAction295 */,
   5 /* Color of ReduceAction295 */,
-  51 /* Group of ? */,
-  1215 /* Id of ReduceAction296 */,
+  54 /* Group of ? */,
+  1999 /* Id of ReduceAction296 */,
   5 /* Color of ReduceAction296 */,
-  51 /* Group of ? */,
-  1211 /* Id of ReduceAction297 */,
+  54 /* Group of ? */,
+  1995 /* Id of ReduceAction297 */,
   5 /* Color of ReduceAction297 */,
-  51 /* Group of ? */,
-  1207 /* Id of ReduceAction298 */,
+  54 /* Group of ? */,
+  1991 /* Id of ReduceAction298 */,
   5 /* Color of ReduceAction298 */,
-  51 /* Group of ? */,
-  1203 /* Id of ReduceAction299 */,
+  54 /* Group of ? */,
+  1987 /* Id of ReduceAction299 */,
   5 /* Color of ReduceAction299 */,
-  51 /* Group of ? */,
-  1191 /* Id of ReduceAction300 */,
+  54 /* Group of ? */,
+  1975 /* Id of ReduceAction300 */,
   5 /* Color of ReduceAction300 */,
-  51 /* Group of ? */,
-  1187 /* Id of ReduceAction301 */,
+  54 /* Group of ? */,
+  1971 /* Id of ReduceAction301 */,
   5 /* Color of ReduceAction301 */,
-  51 /* Group of ? */,
-  1183 /* Id of ReduceAction302 */,
+  54 /* Group of ? */,
+  1967 /* Id of ReduceAction302 */,
   5 /* Color of ReduceAction302 */,
-  51 /* Group of ? */,
-  1179 /* Id of ReduceAction303 */,
+  54 /* Group of ? */,
+  1963 /* Id of ReduceAction303 */,
   5 /* Color of ReduceAction303 */,
-  51 /* Group of ? */,
-  1175 /* Id of ReduceAction304 */,
+  54 /* Group of ? */,
+  1959 /* Id of ReduceAction304 */,
   5 /* Color of ReduceAction304 */,
-  51 /* Group of ? */,
-  1171 /* Id of ReduceAction305 */,
+  54 /* Group of ? */,
+  1955 /* Id of ReduceAction305 */,
   5 /* Color of ReduceAction305 */,
-  51 /* Group of ? */,
-  1167 /* Id of ReduceAction306 */,
+  54 /* Group of ? */,
+  1951 /* Id of ReduceAction306 */,
   5 /* Color of ReduceAction306 */,
-  51 /* Group of ? */,
-  1163 /* Id of ReduceAction307 */,
+  54 /* Group of ? */,
+  1947 /* Id of ReduceAction307 */,
   5 /* Color of ReduceAction307 */,
-  51 /* Group of ? */,
-  1159 /* Id of ReduceAction308 */,
+  54 /* Group of ? */,
+  1943 /* Id of ReduceAction308 */,
   5 /* Color of ReduceAction308 */,
-  51 /* Group of ? */,
-  1155 /* Id of ReduceAction309 */,
+  54 /* Group of ? */,
+  1939 /* Id of ReduceAction309 */,
   5 /* Color of ReduceAction309 */,
-  51 /* Group of ? */,
-  1147 /* Id of ReduceAction310 */,
+  54 /* Group of ? */,
+  1931 /* Id of ReduceAction310 */,
   5 /* Color of ReduceAction310 */,
-  51 /* Group of ? */,
-  1143 /* Id of ReduceAction311 */,
+  54 /* Group of ? */,
+  1927 /* Id of ReduceAction311 */,
   5 /* Color of ReduceAction311 */,
-  51 /* Group of ? */,
-  1139 /* Id of ReduceAction312 */,
+  54 /* Group of ? */,
+  1923 /* Id of ReduceAction312 */,
   5 /* Color of ReduceAction312 */,
-  51 /* Group of ? */,
-  1135 /* Id of ReduceAction313 */,
+  54 /* Group of ? */,
+  1919 /* Id of ReduceAction313 */,
   5 /* Color of ReduceAction313 */,
-  51 /* Group of ? */,
-  1131 /* Id of ReduceAction314 */,
+  54 /* Group of ? */,
+  1915 /* Id of ReduceAction314 */,
   5 /* Color of ReduceAction314 */,
-  51 /* Group of ? */,
-  1127 /* Id of ReduceAction317 */,
+  54 /* Group of ? */,
+  1911 /* Id of ReduceAction315 */,
+  5 /* Color of ReduceAction315 */,
+  54 /* Group of ? */,
+  1907 /* Id of ReduceAction316 */,
+  5 /* Color of ReduceAction316 */,
+  54 /* Group of ? */,
+  1903 /* Id of ReduceAction317 */,
   5 /* Color of ReduceAction317 */,
-  51 /* Group of ? */,
-  1123 /* Id of ReduceAction318 */,
+  54 /* Group of ? */,
+  1899 /* Id of ReduceAction318 */,
   5 /* Color of ReduceAction318 */,
-  51 /* Group of ? */,
-  1119 /* Id of ReduceAction319 */,
+  54 /* Group of ? */,
+  1895 /* Id of ReduceAction319 */,
   5 /* Color of ReduceAction319 */,
-  51 /* Group of ? */,
-  1111 /* Id of ReduceAction320 */,
+  54 /* Group of ? */,
+  1887 /* Id of ReduceAction320 */,
   5 /* Color of ReduceAction320 */,
-  51 /* Group of ? */,
-  1107 /* Id of ReduceAction321 */,
+  54 /* Group of ? */,
+  1883 /* Id of ReduceAction321 */,
   5 /* Color of ReduceAction321 */,
-  51 /* Group of ? */,
-  1103 /* Id of ReduceAction322 */,
+  54 /* Group of ? */,
+  1879 /* Id of ReduceAction322 */,
   5 /* Color of ReduceAction322 */,
-  51 /* Group of ? */,
-  1099 /* Id of ReduceAction323 */,
-  5 /* Color of ReduceAction323 */,
-  51 /* Group of ? */,
-  1095 /* Id of ReduceAction324 */,
+  54 /* Group of ? */,
+  1875 /* Id of ReduceAction324 */,
   5 /* Color of ReduceAction324 */,
-  51 /* Group of ? */,
-  1091 /* Id of ReduceAction325 */,
+  54 /* Group of ? */,
+  1871 /* Id of ReduceAction325 */,
   5 /* Color of ReduceAction325 */,
-  51 /* Group of ? */,
-  1087 /* Id of ReduceAction326 */,
+  54 /* Group of ? */,
+  1867 /* Id of ReduceAction326 */,
   5 /* Color of ReduceAction326 */,
-  51 /* Group of ? */,
-  1083 /* Id of ReduceAction327 */,
+  54 /* Group of ? */,
+  1863 /* Id of ReduceAction327 */,
   5 /* Color of ReduceAction327 */,
-  51 /* Group of ? */,
-  1079 /* Id of ReduceAction328 */,
+  54 /* Group of ? */,
+  1859 /* Id of ReduceAction328 */,
   5 /* Color of ReduceAction328 */,
-  51 /* Group of ? */,
-  1075 /* Id of ReduceAction329 */,
+  54 /* Group of ? */,
+  1855 /* Id of ReduceAction329 */,
   5 /* Color of ReduceAction329 */,
-  51 /* Group of ? */,
-  1067 /* Id of ReduceAction333 */,
+  54 /* Group of ? */,
+  1847 /* Id of ReduceAction330 */,
+  5 /* Color of ReduceAction330 */,
+  54 /* Group of ? */,
+  1843 /* Id of ReduceAction331 */,
+  5 /* Color of ReduceAction331 */,
+  54 /* Group of ? */,
+  1839 /* Id of ReduceAction332 */,
+  5 /* Color of ReduceAction332 */,
+  54 /* Group of ? */,
+  1835 /* Id of ReduceAction333 */,
   5 /* Color of ReduceAction333 */,
-  51 /* Group of ? */,
-  1063 /* Id of ReduceAction335 */,
+  54 /* Group of ? */,
+  1831 /* Id of ReduceAction334 */,
+  5 /* Color of ReduceAction334 */,
+  54 /* Group of ? */,
+  1827 /* Id of ReduceAction335 */,
   5 /* Color of ReduceAction335 */,
-  51 /* Group of ? */,
-  1059 /* Id of ReduceAction337 */,
+  54 /* Group of ? */,
+  1823 /* Id of ReduceAction336 */,
+  5 /* Color of ReduceAction336 */,
+  54 /* Group of ? */,
+  1819 /* Id of ReduceAction337 */,
   5 /* Color of ReduceAction337 */,
-  51 /* Group of ? */,
-  1055 /* Id of ReduceAction338 */,
+  54 /* Group of ? */,
+  1815 /* Id of ReduceAction338 */,
   5 /* Color of ReduceAction338 */,
-  51 /* Group of ? */,
-  1051 /* Id of ReduceAction339 */,
+  54 /* Group of ? */,
+  1811 /* Id of ReduceAction339 */,
   5 /* Color of ReduceAction339 */,
-  51 /* Group of ? */,
-  1043 /* Id of ReduceAction341 */,
+  54 /* Group of ? */,
+  1803 /* Id of ReduceAction340 */,
+  5 /* Color of ReduceAction340 */,
+  54 /* Group of ? */,
+  1799 /* Id of ReduceAction341 */,
   5 /* Color of ReduceAction341 */,
-  51 /* Group of ? */,
-  1039 /* Id of ReduceAction343 */,
+  54 /* Group of ? */,
+  1795 /* Id of ReduceAction342 */,
+  5 /* Color of ReduceAction342 */,
+  54 /* Group of ? */,
+  1791 /* Id of ReduceAction343 */,
   5 /* Color of ReduceAction343 */,
-  51 /* Group of ? */,
-  1035 /* Id of ReduceAction344 */,
+  54 /* Group of ? */,
+  1787 /* Id of ReduceAction344 */,
   5 /* Color of ReduceAction344 */,
-  51 /* Group of ? */,
-  1031 /* Id of ReduceAction345 */,
+  54 /* Group of ? */,
+  1783 /* Id of ReduceAction345 */,
   5 /* Color of ReduceAction345 */,
-  51 /* Group of ? */,
-  1027 /* Id of ReduceAction346 */,
+  54 /* Group of ? */,
+  1779 /* Id of ReduceAction346 */,
   5 /* Color of ReduceAction346 */,
-  51 /* Group of ? */,
-  1023 /* Id of ReduceAction347 */,
+  54 /* Group of ? */,
+  1775 /* Id of ReduceAction347 */,
   5 /* Color of ReduceAction347 */,
-  51 /* Group of ? */,
-  1019 /* Id of ReduceAction348 */,
+  54 /* Group of ? */,
+  1771 /* Id of ReduceAction348 */,
   5 /* Color of ReduceAction348 */,
-  51 /* Group of ? */,
-  1015 /* Id of ReduceAction349 */,
+  54 /* Group of ? */,
+  1767 /* Id of ReduceAction349 */,
   5 /* Color of ReduceAction349 */,
-  51 /* Group of ? */,
-  1007 /* Id of ReduceAction350 */,
+  54 /* Group of ? */,
+  1759 /* Id of ReduceAction350 */,
   5 /* Color of ReduceAction350 */,
-  51 /* Group of ? */,
-  1003 /* Id of ReduceAction351 */,
+  54 /* Group of ? */,
+  1755 /* Id of ReduceAction351 */,
   5 /* Color of ReduceAction351 */,
-  51 /* Group of ? */,
-  999 /* Id of ReduceAction352 */,
+  54 /* Group of ? */,
+  1751 /* Id of ReduceAction352 */,
   5 /* Color of ReduceAction352 */,
-  51 /* Group of ? */,
-  995 /* Id of ReduceAction353 */,
+  54 /* Group of ? */,
+  1747 /* Id of ReduceAction353 */,
   5 /* Color of ReduceAction353 */,
-  51 /* Group of ? */,
-  991 /* Id of ReduceAction355 */,
+  54 /* Group of ? */,
+  1743 /* Id of ReduceAction354 */,
+  5 /* Color of ReduceAction354 */,
+  54 /* Group of ? */,
+  1739 /* Id of ReduceAction355 */,
   5 /* Color of ReduceAction355 */,
-  51 /* Group of ? */,
-  987 /* Id of ReduceAction356 */,
+  54 /* Group of ? */,
+  1735 /* Id of ReduceAction356 */,
   5 /* Color of ReduceAction356 */,
-  51 /* Group of ? */,
-  983 /* Id of ReduceAction358 */,
+  54 /* Group of ? */,
+  1731 /* Id of ReduceAction357 */,
+  5 /* Color of ReduceAction357 */,
+  54 /* Group of ? */,
+  1727 /* Id of ReduceAction358 */,
   5 /* Color of ReduceAction358 */,
-  51 /* Group of ? */,
-  979 /* Id of ReduceAction359 */,
+  54 /* Group of ? */,
+  1723 /* Id of ReduceAction359 */,
   5 /* Color of ReduceAction359 */,
-  51 /* Group of ? */,
-  971 /* Id of ReduceAction360 */,
+  54 /* Group of ? */,
+  1715 /* Id of ReduceAction360 */,
   5 /* Color of ReduceAction360 */,
-  51 /* Group of ? */,
-  967 /* Id of ReduceAction362 */,
+  54 /* Group of ? */,
+  1711 /* Id of ReduceAction361 */,
+  5 /* Color of ReduceAction361 */,
+  54 /* Group of ? */,
+  1707 /* Id of ReduceAction362 */,
   5 /* Color of ReduceAction362 */,
-  51 /* Group of ? */,
-  963 /* Id of ReduceAction363 */,
+  54 /* Group of ? */,
+  1703 /* Id of ReduceAction363 */,
   5 /* Color of ReduceAction363 */,
-  51 /* Group of ? */,
-  959 /* Id of ReduceAction365 */,
+  54 /* Group of ? */,
+  1699 /* Id of ReduceAction364 */,
+  5 /* Color of ReduceAction364 */,
+  54 /* Group of ? */,
+  1695 /* Id of ReduceAction365 */,
   5 /* Color of ReduceAction365 */,
-  51 /* Group of ? */,
-  955 /* Id of ReduceAction366 */,
+  54 /* Group of ? */,
+  1691 /* Id of ReduceAction366 */,
   5 /* Color of ReduceAction366 */,
-  51 /* Group of ? */,
-  951 /* Id of ReduceAction367 */,
+  54 /* Group of ? */,
+  1687 /* Id of ReduceAction367 */,
   5 /* Color of ReduceAction367 */,
-  51 /* Group of ? */,
-  947 /* Id of ReduceAction368 */,
+  54 /* Group of ? */,
+  1683 /* Id of ReduceAction368 */,
   5 /* Color of ReduceAction368 */,
-  51 /* Group of ? */,
-  943 /* Id of ReduceAction369 */,
+  54 /* Group of ? */,
+  1679 /* Id of ReduceAction369 */,
   5 /* Color of ReduceAction369 */,
-  51 /* Group of ? */,
-  935 /* Id of ReduceAction376 */,
+  54 /* Group of ? */,
+  1671 /* Id of ReduceAction370 */,
+  5 /* Color of ReduceAction370 */,
+  54 /* Group of ? */,
+  1667 /* Id of ReduceAction371 */,
+  5 /* Color of ReduceAction371 */,
+  54 /* Group of ? */,
+  1663 /* Id of ReduceAction372 */,
+  5 /* Color of ReduceAction372 */,
+  54 /* Group of ? */,
+  1659 /* Id of ReduceAction373 */,
+  5 /* Color of ReduceAction373 */,
+  54 /* Group of ? */,
+  1655 /* Id of ReduceAction374 */,
+  5 /* Color of ReduceAction374 */,
+  54 /* Group of ? */,
+  1651 /* Id of ReduceAction375 */,
+  5 /* Color of ReduceAction375 */,
+  54 /* Group of ? */,
+  1647 /* Id of ReduceAction376 */,
   5 /* Color of ReduceAction376 */,
-  51 /* Group of ? */,
-  931 /* Id of ReduceAction377 */,
+  54 /* Group of ? */,
+  1643 /* Id of ReduceAction377 */,
   5 /* Color of ReduceAction377 */,
-  51 /* Group of ? */,
-  927 /* Id of ReduceAction378 */,
+  54 /* Group of ? */,
+  1639 /* Id of ReduceAction378 */,
   5 /* Color of ReduceAction378 */,
-  51 /* Group of ? */,
-  923 /* Id of ReduceAction379 */,
+  54 /* Group of ? */,
+  1635 /* Id of ReduceAction379 */,
   5 /* Color of ReduceAction379 */,
-  51 /* Group of ? */,
-  919 /* Id of ReduceAction380 */,
+  54 /* Group of ? */,
+  1627 /* Id of ReduceAction380 */,
   5 /* Color of ReduceAction380 */,
-  51 /* Group of ? */,
-  915 /* Id of ReduceAction381 */,
+  54 /* Group of ? */,
+  1623 /* Id of ReduceAction381 */,
   5 /* Color of ReduceAction381 */,
-  51 /* Group of ? */,
-  911 /* Id of ReduceAction382 */,
+  54 /* Group of ? */,
+  1619 /* Id of ReduceAction382 */,
   5 /* Color of ReduceAction382 */,
-  51 /* Group of ? */,
-  907 /* Id of ReduceAction383 */,
+  54 /* Group of ? */,
+  1615 /* Id of ReduceAction383 */,
   5 /* Color of ReduceAction383 */,
-  51 /* Group of ? */,
-  903 /* Id of ReduceAction384 */,
+  54 /* Group of ? */,
+  1611 /* Id of ReduceAction384 */,
   5 /* Color of ReduceAction384 */,
-  51 /* Group of ? */,
-  899 /* Id of ReduceAction385 */,
+  54 /* Group of ? */,
+  1607 /* Id of ReduceAction385 */,
   5 /* Color of ReduceAction385 */,
-  51 /* Group of ? */,
-  895 /* Id of ReduceAction386 */,
+  54 /* Group of ? */,
+  1603 /* Id of ReduceAction386 */,
   5 /* Color of ReduceAction386 */,
-  51 /* Group of ? */,
-  891 /* Id of ReduceAction387 */,
+  54 /* Group of ? */,
+  1599 /* Id of ReduceAction387 */,
   5 /* Color of ReduceAction387 */,
-  51 /* Group of ? */,
-  887 /* Id of ReduceAction388 */,
+  54 /* Group of ? */,
+  1595 /* Id of ReduceAction388 */,
   5 /* Color of ReduceAction388 */,
-  51 /* Group of ? */,
-  879 /* Id of ReduceAction391 */,
+  54 /* Group of ? */,
+  1591 /* Id of ReduceAction389 */,
+  5 /* Color of ReduceAction389 */,
+  54 /* Group of ? */,
+  1583 /* Id of ReduceAction390 */,
+  5 /* Color of ReduceAction390 */,
+  54 /* Group of ? */,
+  1579 /* Id of ReduceAction391 */,
   5 /* Color of ReduceAction391 */,
-  51 /* Group of ? */,
-  875 /* Id of ReduceAction392 */,
-  5 /* Color of ReduceAction392 */,
-  51 /* Group of ? */,
-  871 /* Id of ReduceAction393 */,
+  54 /* Group of ? */,
+  1575 /* Id of ReduceAction393 */,
   5 /* Color of ReduceAction393 */,
-  51 /* Group of ? */,
-  867 /* Id of ReduceAction394 */,
+  54 /* Group of ? */,
+  1571 /* Id of ReduceAction394 */,
   5 /* Color of ReduceAction394 */,
-  51 /* Group of ? */,
-  863 /* Id of ReduceAction395 */,
+  54 /* Group of ? */,
+  1567 /* Id of ReduceAction395 */,
   5 /* Color of ReduceAction395 */,
-  51 /* Group of ? */,
-  859 /* Id of ReduceAction396 */,
+  54 /* Group of ? */,
+  1563 /* Id of ReduceAction396 */,
   5 /* Color of ReduceAction396 */,
-  51 /* Group of ? */,
-  855 /* Id of ReduceAction398 */,
+  54 /* Group of ? */,
+  1559 /* Id of ReduceAction397 */,
+  5 /* Color of ReduceAction397 */,
+  54 /* Group of ? */,
+  1555 /* Id of ReduceAction398 */,
   5 /* Color of ReduceAction398 */,
-  51 /* Group of ? */,
-  851 /* Id of ReduceAction399 */,
+  54 /* Group of ? */,
+  1551 /* Id of ReduceAction399 */,
   5 /* Color of ReduceAction399 */,
-  51 /* Group of ? */,
-  839 /* Id of ReduceAction400 */,
+  54 /* Group of ? */,
+  1539 /* Id of ReduceAction400 */,
   5 /* Color of ReduceAction400 */,
-  51 /* Group of ? */,
-  835 /* Id of ReduceAction401 */,
+  54 /* Group of ? */,
+  1535 /* Id of ReduceAction401 */,
   5 /* Color of ReduceAction401 */,
-  51 /* Group of ? */,
-  831 /* Id of ReduceAction403 */,
+  54 /* Group of ? */,
+  1531 /* Id of ReduceAction402 */,
+  5 /* Color of ReduceAction402 */,
+  54 /* Group of ? */,
+  1527 /* Id of ReduceAction403 */,
   5 /* Color of ReduceAction403 */,
-  51 /* Group of ? */,
-  827 /* Id of ReduceAction406 */,
+  54 /* Group of ? */,
+  1523 /* Id of ReduceAction404 */,
+  5 /* Color of ReduceAction404 */,
+  54 /* Group of ? */,
+  1519 /* Id of ReduceAction405 */,
+  5 /* Color of ReduceAction405 */,
+  54 /* Group of ? */,
+  1515 /* Id of ReduceAction406 */,
   5 /* Color of ReduceAction406 */,
-  51 /* Group of ? */,
-  819 /* Id of ReduceAction411 */,
+  54 /* Group of ? */,
+  1511 /* Id of ReduceAction407 */,
+  5 /* Color of ReduceAction407 */,
+  54 /* Group of ? */,
+  1507 /* Id of ReduceAction408 */,
+  5 /* Color of ReduceAction408 */,
+  54 /* Group of ? */,
+  1503 /* Id of ReduceAction409 */,
+  5 /* Color of ReduceAction409 */,
+  54 /* Group of ? */,
+  1495 /* Id of ReduceAction410 */,
+  5 /* Color of ReduceAction410 */,
+  54 /* Group of ? */,
+  1491 /* Id of ReduceAction411 */,
   5 /* Color of ReduceAction411 */,
-  51 /* Group of ? */,
-  815 /* Id of ReduceAction412 */,
+  54 /* Group of ? */,
+  1487 /* Id of ReduceAction412 */,
   5 /* Color of ReduceAction412 */,
-  51 /* Group of ? */,
-  811 /* Id of ReduceAction413 */,
+  54 /* Group of ? */,
+  1483 /* Id of ReduceAction413 */,
   5 /* Color of ReduceAction413 */,
-  51 /* Group of ? */,
-  807 /* Id of ReduceAction414 */,
+  54 /* Group of ? */,
+  1479 /* Id of ReduceAction414 */,
   5 /* Color of ReduceAction414 */,
-  51 /* Group of ? */,
-  803 /* Id of ReduceAction415 */,
-  5 /* Color of ReduceAction415 */,
-  51 /* Group of ? */,
-  799 /* Id of ReduceAction416 */,
+  54 /* Group of ? */,
+  1475 /* Id of ReduceAction416 */,
   5 /* Color of ReduceAction416 */,
-  51 /* Group of ? */,
-  795 /* Id of ReduceAction417 */,
+  54 /* Group of ? */,
+  1471 /* Id of ReduceAction417 */,
   5 /* Color of ReduceAction417 */,
-  51 /* Group of ? */,
-  791 /* Id of ReduceAction418 */,
+  54 /* Group of ? */,
+  1467 /* Id of ReduceAction418 */,
   5 /* Color of ReduceAction418 */,
-  51 /* Group of ? */,
-  787 /* Id of ReduceAction419 */,
+  54 /* Group of ? */,
+  1463 /* Id of ReduceAction419 */,
   5 /* Color of ReduceAction419 */,
-  51 /* Group of ? */,
-  779 /* Id of ReduceAction420 */,
+  54 /* Group of ? */,
+  1455 /* Id of ReduceAction420 */,
   5 /* Color of ReduceAction420 */,
-  51 /* Group of ? */,
-  775 /* Id of ReduceAction421 */,
+  54 /* Group of ? */,
+  1451 /* Id of ReduceAction421 */,
   5 /* Color of ReduceAction421 */,
-  51 /* Group of ? */,
-  771 /* Id of ReduceAction422 */,
+  54 /* Group of ? */,
+  1447 /* Id of ReduceAction422 */,
   5 /* Color of ReduceAction422 */,
-  51 /* Group of ? */,
-  767 /* Id of ReduceAction423 */,
+  54 /* Group of ? */,
+  1443 /* Id of ReduceAction423 */,
   5 /* Color of ReduceAction423 */,
-  51 /* Group of ? */,
-  763 /* Id of ReduceAction425 */,
+  54 /* Group of ? */,
+  1439 /* Id of ReduceAction424 */,
+  5 /* Color of ReduceAction424 */,
+  54 /* Group of ? */,
+  1435 /* Id of ReduceAction425 */,
   5 /* Color of ReduceAction425 */,
-  51 /* Group of ? */,
-  759 /* Id of ReduceAction426 */,
-  5 /* Color of ReduceAction426 */,
-  51 /* Group of ? */,
-  755 /* Id of ReduceAction428 */,
-  5 /* Color of ReduceAction428 */,
-  51 /* Group of ? */,
-  751 /* Id of ReduceAction429 */,
+  54 /* Group of ? */,
+  1431 /* Id of ReduceAction429 */,
   5 /* Color of ReduceAction429 */,
-  51 /* Group of ? */,
-  743 /* Id of ReduceAction430 */,
+  54 /* Group of ? */,
+  1423 /* Id of ReduceAction430 */,
   5 /* Color of ReduceAction430 */,
-  51 /* Group of ? */,
-  739 /* Id of ReduceAction431 */,
+  54 /* Group of ? */,
+  1419 /* Id of ReduceAction431 */,
   5 /* Color of ReduceAction431 */,
-  51 /* Group of ? */,
-  627 /* Id of ReduceAction688 */,
-  5 /* Color of ReduceAction688 */,
-  51 /* Group of ? */,
-  623 /* Id of ReduceAction689 */,
-  5 /* Color of ReduceAction689 */,
-  51 /* Group of ? */,
-  615 /* Id of ReduceAction690 */,
-  5 /* Color of ReduceAction690 */,
-  51 /* Group of ? */,
-  611 /* Id of ReduceAction693 */,
-  5 /* Color of ReduceAction693 */,
-  51 /* Group of ? */,
-  599 /* Id of ReduceAction706 */,
-  5 /* Color of ReduceAction706 */,
-  51 /* Group of ? */,
-  595 /* Id of ReduceAction707 */,
-  5 /* Color of ReduceAction707 */,
-  51 /* Group of ? */,
-  587 /* Id of ReduceAction714 */,
-  5 /* Color of ReduceAction714 */,
-  51 /* Group of ? */,
-  583 /* Id of ReduceAction715 */,
-  5 /* Color of ReduceAction715 */,
-  51 /* Group of ? */,
-  579 /* Id of ReduceAction716 */,
-  5 /* Color of ReduceAction716 */,
-  51 /* Group of ? */,
-  575 /* Id of ReduceAction717 */,
-  5 /* Color of ReduceAction717 */,
-  51 /* Group of ? */,
-  571 /* Id of ReduceAction718 */,
-  5 /* Color of ReduceAction718 */,
-  51 /* Group of ? */,
-  567 /* Id of ReduceAction719 */,
-  5 /* Color of ReduceAction719 */,
-  51 /* Group of ? */,
-  559 /* Id of ReduceAction720 */,
-  5 /* Color of ReduceAction720 */,
-  51 /* Group of ? */,
-  555 /* Id of ReduceAction721 */,
-  5 /* Color of ReduceAction721 */,
-  51 /* Group of ? */,
-  551 /* Id of ReduceAction724 */,
-  5 /* Color of ReduceAction724 */,
-  51 /* Group of ? */,
-  547 /* Id of ReduceAction725 */,
-  5 /* Color of ReduceAction725 */,
-  51 /* Group of ? */,
-  543 /* Id of ReduceAction726 */,
-  5 /* Color of ReduceAction726 */,
-  51 /* Group of ? */,
-  539 /* Id of ReduceAction727 */,
-  5 /* Color of ReduceAction727 */,
-  51 /* Group of ? */,
-  535 /* Id of ReduceAction728 */,
-  5 /* Color of ReduceAction728 */,
-  51 /* Group of ? */,
-  531 /* Id of ReduceAction729 */,
-  5 /* Color of ReduceAction729 */,
-  51 /* Group of ? */,
-  523 /* Id of ReduceAction730 */,
-  5 /* Color of ReduceAction730 */,
-  51 /* Group of ? */,
-  519 /* Id of ReduceAction731 */,
-  5 /* Color of ReduceAction731 */,
-  51 /* Group of ? */,
-  515 /* Id of ReduceAction733 */,
-  5 /* Color of ReduceAction733 */,
-  51 /* Group of ? */,
-  511 /* Id of ReduceAction735 */,
-  5 /* Color of ReduceAction735 */,
-  51 /* Group of ? */,
-  507 /* Id of ReduceAction736 */,
-  5 /* Color of ReduceAction736 */,
-  51 /* Group of ? */,
-  503 /* Id of ReduceAction737 */,
-  5 /* Color of ReduceAction737 */,
-  51 /* Group of ? */,
-  495 /* Id of ReduceAction741 */,
-  5 /* Color of ReduceAction741 */,
-  51 /* Group of ? */,
-  491 /* Id of ReduceAction742 */,
-  5 /* Color of ReduceAction742 */,
-  51 /* Group of ? */,
-  487 /* Id of ReduceAction743 */,
-  5 /* Color of ReduceAction743 */,
-  51 /* Group of ? */,
-  483 /* Id of ReduceAction744 */,
-  5 /* Color of ReduceAction744 */,
-  51 /* Group of ? */,
-  479 /* Id of ReduceAction745 */,
-  5 /* Color of ReduceAction745 */,
-  51 /* Group of ? */,
+  54 /* Group of ? */,
+  1415 /* Id of ReduceAction432 */,
+  5 /* Color of ReduceAction432 */,
+  54 /* Group of ? */,
+  1411 /* Id of ReduceAction433 */,
+  5 /* Color of ReduceAction433 */,
+  54 /* Group of ? */,
+  1407 /* Id of ReduceAction434 */,
+  5 /* Color of ReduceAction434 */,
+  54 /* Group of ? */,
+  1403 /* Id of ReduceAction435 */,
+  5 /* Color of ReduceAction435 */,
+  54 /* Group of ? */,
+  1399 /* Id of ReduceAction436 */,
+  5 /* Color of ReduceAction436 */,
+  54 /* Group of ? */,
+  1395 /* Id of ReduceAction437 */,
+  5 /* Color of ReduceAction437 */,
+  54 /* Group of ? */,
+  1391 /* Id of ReduceAction438 */,
+  5 /* Color of ReduceAction438 */,
+  54 /* Group of ? */,
+  1387 /* Id of ReduceAction439 */,
+  5 /* Color of ReduceAction439 */,
+  54 /* Group of ? */,
+  1379 /* Id of ReduceAction446 */,
+  5 /* Color of ReduceAction446 */,
+  54 /* Group of ? */,
+  1375 /* Id of ReduceAction447 */,
+  5 /* Color of ReduceAction447 */,
+  54 /* Group of ? */,
+  1371 /* Id of ReduceAction448 */,
+  5 /* Color of ReduceAction448 */,
+  54 /* Group of ? */,
+  1367 /* Id of ReduceAction449 */,
+  5 /* Color of ReduceAction449 */,
+  54 /* Group of ? */,
+  1359 /* Id of ReduceAction450 */,
+  5 /* Color of ReduceAction450 */,
+  54 /* Group of ? */,
+  1355 /* Id of ReduceAction451 */,
+  5 /* Color of ReduceAction451 */,
+  54 /* Group of ? */,
+  1351 /* Id of ReduceAction452 */,
+  5 /* Color of ReduceAction452 */,
+  54 /* Group of ? */,
+  1347 /* Id of ReduceAction453 */,
+  5 /* Color of ReduceAction453 */,
+  54 /* Group of ? */,
+  1343 /* Id of ReduceAction454 */,
+  5 /* Color of ReduceAction454 */,
+  54 /* Group of ? */,
+  1339 /* Id of ReduceAction455 */,
+  5 /* Color of ReduceAction455 */,
+  54 /* Group of ? */,
+  1335 /* Id of ReduceAction456 */,
+  5 /* Color of ReduceAction456 */,
+  54 /* Group of ? */,
+  1331 /* Id of ReduceAction457 */,
+  5 /* Color of ReduceAction457 */,
+  54 /* Group of ? */,
+  1327 /* Id of ReduceAction458 */,
+  5 /* Color of ReduceAction458 */,
+  54 /* Group of ? */,
+  1323 /* Id of ReduceAction459 */,
+  5 /* Color of ReduceAction459 */,
+  54 /* Group of ? */,
+  1315 /* Id of ReduceAction460 */,
+  5 /* Color of ReduceAction460 */,
+  54 /* Group of ? */,
+  1311 /* Id of ReduceAction461 */,
+  5 /* Color of ReduceAction461 */,
+  54 /* Group of ? */,
+  1307 /* Id of ReduceAction462 */,
+  5 /* Color of ReduceAction462 */,
+  54 /* Group of ? */,
+  1303 /* Id of ReduceAction463 */,
+  5 /* Color of ReduceAction463 */,
+  54 /* Group of ? */,
+  1299 /* Id of ReduceAction464 */,
+  5 /* Color of ReduceAction464 */,
+  54 /* Group of ? */,
+  1295 /* Id of ReduceAction465 */,
+  5 /* Color of ReduceAction465 */,
+  54 /* Group of ? */,
+  1291 /* Id of ReduceAction466 */,
+  5 /* Color of ReduceAction466 */,
+  54 /* Group of ? */,
+  1287 /* Id of ReduceAction467 */,
+  5 /* Color of ReduceAction467 */,
+  54 /* Group of ? */,
+  1283 /* Id of ReduceAction468 */,
+  5 /* Color of ReduceAction468 */,
+  54 /* Group of ? */,
+  1279 /* Id of ReduceAction469 */,
+  5 /* Color of ReduceAction469 */,
+  54 /* Group of ? */,
+  1271 /* Id of ReduceAction470 */,
+  5 /* Color of ReduceAction470 */,
+  54 /* Group of ? */,
+  1267 /* Id of ReduceAction471 */,
+  5 /* Color of ReduceAction471 */,
+  54 /* Group of ? */,
+  1263 /* Id of ReduceAction472 */,
+  5 /* Color of ReduceAction472 */,
+  54 /* Group of ? */,
+  1259 /* Id of ReduceAction473 */,
+  5 /* Color of ReduceAction473 */,
+  54 /* Group of ? */,
+  1255 /* Id of ReduceAction474 */,
+  5 /* Color of ReduceAction474 */,
+  54 /* Group of ? */,
+  1251 /* Id of ReduceAction475 */,
+  5 /* Color of ReduceAction475 */,
+  54 /* Group of ? */,
+  1247 /* Id of ReduceAction476 */,
+  5 /* Color of ReduceAction476 */,
+  54 /* Group of ? */,
+  1243 /* Id of ReduceAction477 */,
+  5 /* Color of ReduceAction477 */,
+  54 /* Group of ? */,
+  1239 /* Id of ReduceAction478 */,
+  5 /* Color of ReduceAction478 */,
+  54 /* Group of ? */,
+  1235 /* Id of ReduceAction479 */,
+  5 /* Color of ReduceAction479 */,
+  54 /* Group of ? */,
+  1227 /* Id of ReduceAction480 */,
+  5 /* Color of ReduceAction480 */,
+  54 /* Group of ? */,
+  1223 /* Id of ReduceAction481 */,
+  5 /* Color of ReduceAction481 */,
+  54 /* Group of ? */,
+  1219 /* Id of ReduceAction482 */,
+  5 /* Color of ReduceAction482 */,
+  54 /* Group of ? */,
+  1215 /* Id of ReduceAction483 */,
+  5 /* Color of ReduceAction483 */,
+  54 /* Group of ? */,
+  1211 /* Id of ReduceAction484 */,
+  5 /* Color of ReduceAction484 */,
+  54 /* Group of ? */,
+  1207 /* Id of ReduceAction485 */,
+  5 /* Color of ReduceAction485 */,
+  54 /* Group of ? */,
+  1203 /* Id of ReduceAction486 */,
+  5 /* Color of ReduceAction486 */,
+  54 /* Group of ? */,
+  1199 /* Id of ReduceAction487 */,
+  5 /* Color of ReduceAction487 */,
+  54 /* Group of ? */,
+  1195 /* Id of ReduceAction488 */,
+  5 /* Color of ReduceAction488 */,
+  54 /* Group of ? */,
+  1191 /* Id of ReduceAction489 */,
+  5 /* Color of ReduceAction489 */,
+  54 /* Group of ? */,
+  1183 /* Id of ReduceAction490 */,
+  5 /* Color of ReduceAction490 */,
+  54 /* Group of ? */,
+  1179 /* Id of ReduceAction491 */,
+  5 /* Color of ReduceAction491 */,
+  54 /* Group of ? */,
+  1175 /* Id of ReduceAction492 */,
+  5 /* Color of ReduceAction492 */,
+  54 /* Group of ? */,
+  1171 /* Id of ReduceAction493 */,
+  5 /* Color of ReduceAction493 */,
+  54 /* Group of ? */,
+  1167 /* Id of ReduceAction494 */,
+  5 /* Color of ReduceAction494 */,
+  54 /* Group of ? */,
+  1163 /* Id of ReduceAction495 */,
+  5 /* Color of ReduceAction495 */,
+  54 /* Group of ? */,
+  1159 /* Id of ReduceAction496 */,
+  5 /* Color of ReduceAction496 */,
+  54 /* Group of ? */,
+  1155 /* Id of ReduceAction497 */,
+  5 /* Color of ReduceAction497 */,
+  54 /* Group of ? */,
+  1151 /* Id of ReduceAction498 */,
+  5 /* Color of ReduceAction498 */,
+  54 /* Group of ? */,
+  1147 /* Id of ReduceAction499 */,
+  5 /* Color of ReduceAction499 */,
+  54 /* Group of ? */,
+  1135 /* Id of ReduceAction500 */,
+  5 /* Color of ReduceAction500 */,
+  54 /* Group of ? */,
+  1131 /* Id of ReduceAction501 */,
+  5 /* Color of ReduceAction501 */,
+  54 /* Group of ? */,
+  1127 /* Id of ReduceAction502 */,
+  5 /* Color of ReduceAction502 */,
+  54 /* Group of ? */,
+  1123 /* Id of ReduceAction505 */,
+  5 /* Color of ReduceAction505 */,
+  54 /* Group of ? */,
+  1119 /* Id of ReduceAction506 */,
+  5 /* Color of ReduceAction506 */,
+  54 /* Group of ? */,
+  1115 /* Id of ReduceAction507 */,
+  5 /* Color of ReduceAction507 */,
+  54 /* Group of ? */,
+  1111 /* Id of ReduceAction508 */,
+  5 /* Color of ReduceAction508 */,
+  54 /* Group of ? */,
+  1107 /* Id of ReduceAction509 */,
+  5 /* Color of ReduceAction509 */,
+  54 /* Group of ? */,
+  1099 /* Id of ReduceAction510 */,
+  5 /* Color of ReduceAction510 */,
+  54 /* Group of ? */,
+  1095 /* Id of ReduceAction511 */,
+  5 /* Color of ReduceAction511 */,
+  54 /* Group of ? */,
+  1091 /* Id of ReduceAction512 */,
+  5 /* Color of ReduceAction512 */,
+  54 /* Group of ? */,
+  1087 /* Id of ReduceAction513 */,
+  5 /* Color of ReduceAction513 */,
+  54 /* Group of ? */,
+  1083 /* Id of ReduceAction514 */,
+  5 /* Color of ReduceAction514 */,
+  54 /* Group of ? */,
+  1079 /* Id of ReduceAction515 */,
+  5 /* Color of ReduceAction515 */,
+  54 /* Group of ? */,
+  1075 /* Id of ReduceAction516 */,
+  5 /* Color of ReduceAction516 */,
+  54 /* Group of ? */,
+  1071 /* Id of ReduceAction517 */,
+  5 /* Color of ReduceAction517 */,
+  54 /* Group of ? */,
+  1063 /* Id of ReduceAction521 */,
+  5 /* Color of ReduceAction521 */,
+  54 /* Group of ? */,
+  1059 /* Id of ReduceAction523 */,
+  5 /* Color of ReduceAction523 */,
+  54 /* Group of ? */,
+  1055 /* Id of ReduceAction525 */,
+  5 /* Color of ReduceAction525 */,
+  54 /* Group of ? */,
+  1051 /* Id of ReduceAction526 */,
+  5 /* Color of ReduceAction526 */,
+  54 /* Group of ? */,
+  1047 /* Id of ReduceAction527 */,
+  5 /* Color of ReduceAction527 */,
+  54 /* Group of ? */,
+  1043 /* Id of ReduceAction529 */,
+  5 /* Color of ReduceAction529 */,
+  54 /* Group of ? */,
+  1035 /* Id of ReduceAction531 */,
+  5 /* Color of ReduceAction531 */,
+  54 /* Group of ? */,
+  1031 /* Id of ReduceAction532 */,
+  5 /* Color of ReduceAction532 */,
+  54 /* Group of ? */,
+  1027 /* Id of ReduceAction533 */,
+  5 /* Color of ReduceAction533 */,
+  54 /* Group of ? */,
+  1023 /* Id of ReduceAction534 */,
+  5 /* Color of ReduceAction534 */,
+  54 /* Group of ? */,
+  1019 /* Id of ReduceAction535 */,
+  5 /* Color of ReduceAction535 */,
+  54 /* Group of ? */,
+  1015 /* Id of ReduceAction536 */,
+  5 /* Color of ReduceAction536 */,
+  54 /* Group of ? */,
+  1011 /* Id of ReduceAction537 */,
+  5 /* Color of ReduceAction537 */,
+  54 /* Group of ? */,
+  1007 /* Id of ReduceAction538 */,
+  5 /* Color of ReduceAction538 */,
+  54 /* Group of ? */,
+  1003 /* Id of ReduceAction539 */,
+  5 /* Color of ReduceAction539 */,
+  54 /* Group of ? */,
+  995 /* Id of ReduceAction540 */,
+  5 /* Color of ReduceAction540 */,
+  54 /* Group of ? */,
+  991 /* Id of ReduceAction541 */,
+  5 /* Color of ReduceAction541 */,
+  54 /* Group of ? */,
+  987 /* Id of ReduceAction543 */,
+  5 /* Color of ReduceAction543 */,
+  54 /* Group of ? */,
+  983 /* Id of ReduceAction544 */,
+  5 /* Color of ReduceAction544 */,
+  54 /* Group of ? */,
+  979 /* Id of ReduceAction546 */,
+  5 /* Color of ReduceAction546 */,
+  54 /* Group of ? */,
+  975 /* Id of ReduceAction547 */,
+  5 /* Color of ReduceAction547 */,
+  54 /* Group of ? */,
+  971 /* Id of ReduceAction548 */,
+  5 /* Color of ReduceAction548 */,
+  54 /* Group of ? */,
+  963 /* Id of ReduceAction550 */,
+  5 /* Color of ReduceAction550 */,
+  54 /* Group of ? */,
+  959 /* Id of ReduceAction551 */,
+  5 /* Color of ReduceAction551 */,
+  54 /* Group of ? */,
+  955 /* Id of ReduceAction553 */,
+  5 /* Color of ReduceAction553 */,
+  54 /* Group of ? */,
+  951 /* Id of ReduceAction554 */,
+  5 /* Color of ReduceAction554 */,
+  54 /* Group of ? */,
+  947 /* Id of ReduceAction555 */,
+  5 /* Color of ReduceAction555 */,
+  54 /* Group of ? */,
+  943 /* Id of ReduceAction556 */,
+  5 /* Color of ReduceAction556 */,
+  54 /* Group of ? */,
+  939 /* Id of ReduceAction557 */,
+  5 /* Color of ReduceAction557 */,
+  54 /* Group of ? */,
+  931 /* Id of ReduceAction564 */,
+  5 /* Color of ReduceAction564 */,
+  54 /* Group of ? */,
+  927 /* Id of ReduceAction565 */,
+  5 /* Color of ReduceAction565 */,
+  54 /* Group of ? */,
+  923 /* Id of ReduceAction566 */,
+  5 /* Color of ReduceAction566 */,
+  54 /* Group of ? */,
+  919 /* Id of ReduceAction567 */,
+  5 /* Color of ReduceAction567 */,
+  54 /* Group of ? */,
+  915 /* Id of ReduceAction568 */,
+  5 /* Color of ReduceAction568 */,
+  54 /* Group of ? */,
+  911 /* Id of ReduceAction569 */,
+  5 /* Color of ReduceAction569 */,
+  54 /* Group of ? */,
+  903 /* Id of ReduceAction570 */,
+  5 /* Color of ReduceAction570 */,
+  54 /* Group of ? */,
+  899 /* Id of ReduceAction571 */,
+  5 /* Color of ReduceAction571 */,
+  54 /* Group of ? */,
+  895 /* Id of ReduceAction572 */,
+  5 /* Color of ReduceAction572 */,
+  54 /* Group of ? */,
+  891 /* Id of ReduceAction573 */,
+  5 /* Color of ReduceAction573 */,
+  54 /* Group of ? */,
+  887 /* Id of ReduceAction574 */,
+  5 /* Color of ReduceAction574 */,
+  54 /* Group of ? */,
+  883 /* Id of ReduceAction575 */,
+  5 /* Color of ReduceAction575 */,
+  54 /* Group of ? */,
+  879 /* Id of ReduceAction576 */,
+  5 /* Color of ReduceAction576 */,
+  54 /* Group of ? */,
+  875 /* Id of ReduceAction577 */,
+  5 /* Color of ReduceAction577 */,
+  54 /* Group of ? */,
+  871 /* Id of ReduceAction578 */,
+  5 /* Color of ReduceAction578 */,
+  54 /* Group of ? */,
+  867 /* Id of ReduceAction579 */,
+  5 /* Color of ReduceAction579 */,
+  54 /* Group of ? */,
+  859 /* Id of ReduceAction580 */,
+  5 /* Color of ReduceAction580 */,
+  54 /* Group of ? */,
+  855 /* Id of ReduceAction581 */,
+  5 /* Color of ReduceAction581 */,
+  54 /* Group of ? */,
+  851 /* Id of ReduceAction582 */,
+  5 /* Color of ReduceAction582 */,
+  54 /* Group of ? */,
+  847 /* Id of ReduceAction583 */,
+  5 /* Color of ReduceAction583 */,
+  54 /* Group of ? */,
+  843 /* Id of ReduceAction584 */,
+  5 /* Color of ReduceAction584 */,
+  54 /* Group of ? */,
+  839 /* Id of ReduceAction585 */,
+  5 /* Color of ReduceAction585 */,
+  54 /* Group of ? */,
+  835 /* Id of ReduceAction586 */,
+  5 /* Color of ReduceAction586 */,
+  54 /* Group of ? */,
+  831 /* Id of ReduceAction587 */,
+  5 /* Color of ReduceAction587 */,
+  54 /* Group of ? */,
+  827 /* Id of ReduceAction589 */,
+  5 /* Color of ReduceAction589 */,
+  54 /* Group of ? */,
+  819 /* Id of ReduceAction590 */,
+  5 /* Color of ReduceAction590 */,
+  54 /* Group of ? */,
+  815 /* Id of ReduceAction591 */,
+  5 /* Color of ReduceAction591 */,
+  54 /* Group of ? */,
+  811 /* Id of ReduceAction592 */,
+  5 /* Color of ReduceAction592 */,
+  54 /* Group of ? */,
+  807 /* Id of ReduceAction593 */,
+  5 /* Color of ReduceAction593 */,
+  54 /* Group of ? */,
+  803 /* Id of ReduceAction594 */,
+  5 /* Color of ReduceAction594 */,
+  54 /* Group of ? */,
+  799 /* Id of ReduceAction595 */,
+  5 /* Color of ReduceAction595 */,
+  54 /* Group of ? */,
+  795 /* Id of ReduceAction596 */,
+  5 /* Color of ReduceAction596 */,
+  54 /* Group of ? */,
+  791 /* Id of ReduceAction597 */,
+  5 /* Color of ReduceAction597 */,
+  54 /* Group of ? */,
+  787 /* Id of ReduceAction598 */,
+  5 /* Color of ReduceAction598 */,
+  54 /* Group of ? */,
+  775 /* Id of ReduceAction600 */,
+  5 /* Color of ReduceAction600 */,
+  54 /* Group of ? */,
+  771 /* Id of ReduceAction601 */,
+  5 /* Color of ReduceAction601 */,
+  54 /* Group of ? */,
+  767 /* Id of ReduceAction602 */,
+  5 /* Color of ReduceAction602 */,
+  54 /* Group of ? */,
+  763 /* Id of ReduceAction603 */,
+  5 /* Color of ReduceAction603 */,
+  54 /* Group of ? */,
+  759 /* Id of ReduceAction604 */,
+  5 /* Color of ReduceAction604 */,
+  54 /* Group of ? */,
+  755 /* Id of ReduceAction605 */,
+  5 /* Color of ReduceAction605 */,
+  54 /* Group of ? */,
+  751 /* Id of ReduceAction606 */,
+  5 /* Color of ReduceAction606 */,
+  54 /* Group of ? */,
+  747 /* Id of ReduceAction607 */,
+  5 /* Color of ReduceAction607 */,
+  54 /* Group of ? */,
+  743 /* Id of ReduceAction608 */,
+  5 /* Color of ReduceAction608 */,
+  54 /* Group of ? */,
+  739 /* Id of ReduceAction609 */,
+  5 /* Color of ReduceAction609 */,
+  54 /* Group of ? */,
+  731 /* Id of ReduceAction610 */,
+  5 /* Color of ReduceAction610 */,
+  54 /* Group of ? */,
+  727 /* Id of ReduceAction612 */,
+  5 /* Color of ReduceAction612 */,
+  54 /* Group of ? */,
+  723 /* Id of ReduceAction613 */,
+  5 /* Color of ReduceAction613 */,
+  54 /* Group of ? */,
+  719 /* Id of ReduceAction614 */,
+  5 /* Color of ReduceAction614 */,
+  54 /* Group of ? */,
+  715 /* Id of ReduceAction615 */,
+  5 /* Color of ReduceAction615 */,
+  54 /* Group of ? */,
+  711 /* Id of ReduceAction616 */,
+  5 /* Color of ReduceAction616 */,
+  54 /* Group of ? */,
+  707 /* Id of ReduceAction617 */,
+  5 /* Color of ReduceAction617 */,
+  54 /* Group of ? */,
+  703 /* Id of ReduceAction618 */,
+  5 /* Color of ReduceAction618 */,
+  54 /* Group of ? */,
+  699 /* Id of ReduceAction619 */,
+  5 /* Color of ReduceAction619 */,
+  54 /* Group of ? */,
+  691 /* Id of ReduceAction620 */,
+  5 /* Color of ReduceAction620 */,
+  54 /* Group of ? */,
+  687 /* Id of ReduceAction621 */,
+  5 /* Color of ReduceAction621 */,
+  54 /* Group of ? */,
+  683 /* Id of ReduceAction622 */,
+  5 /* Color of ReduceAction622 */,
+  54 /* Group of ? */,
+  679 /* Id of ReduceAction624 */,
+  5 /* Color of ReduceAction624 */,
+  54 /* Group of ? */,
+  675 /* Id of ReduceAction625 */,
+  5 /* Color of ReduceAction625 */,
+  54 /* Group of ? */,
+  671 /* Id of ReduceAction626 */,
+  5 /* Color of ReduceAction626 */,
+  54 /* Group of ? */,
+  667 /* Id of ReduceAction627 */,
+  5 /* Color of ReduceAction627 */,
+  54 /* Group of ? */,
+  663 /* Id of ReduceAction628 */,
+  5 /* Color of ReduceAction628 */,
+  54 /* Group of ? */,
+  659 /* Id of ReduceAction629 */,
+  5 /* Color of ReduceAction629 */,
+  54 /* Group of ? */,
+  651 /* Id of ReduceAction630 */,
+  5 /* Color of ReduceAction630 */,
+  54 /* Group of ? */,
+  647 /* Id of ReduceAction631 */,
+  5 /* Color of ReduceAction631 */,
+  54 /* Group of ? */,
+  643 /* Id of ReduceAction633 */,
+  5 /* Color of ReduceAction633 */,
+  54 /* Group of ? */,
+  639 /* Id of ReduceAction636 */,
+  5 /* Color of ReduceAction636 */,
+  54 /* Group of ? */,
+  635 /* Id of ReduceAction637 */,
+  5 /* Color of ReduceAction637 */,
+  54 /* Group of ? */,
+  631 /* Id of ReduceAction638 */,
+  5 /* Color of ReduceAction638 */,
+  54 /* Group of ? */,
+  627 /* Id of ReduceAction639 */,
+  5 /* Color of ReduceAction639 */,
+  54 /* Group of ? */,
+  619 /* Id of ReduceAction640 */,
+  5 /* Color of ReduceAction640 */,
+  54 /* Group of ? */,
+  615 /* Id of ReduceAction641 */,
+  5 /* Color of ReduceAction641 */,
+  54 /* Group of ? */,
+  611 /* Id of ReduceAction642 */,
+  5 /* Color of ReduceAction642 */,
+  54 /* Group of ? */,
+  607 /* Id of ReduceAction643 */,
+  5 /* Color of ReduceAction643 */,
+  54 /* Group of ? */,
+  603 /* Id of ReduceAction644 */,
+  5 /* Color of ReduceAction644 */,
+  54 /* Group of ? */,
+  599 /* Id of ReduceAction645 */,
+  5 /* Color of ReduceAction645 */,
+  54 /* Group of ? */,
+  595 /* Id of ReduceAction646 */,
+  5 /* Color of ReduceAction646 */,
+  54 /* Group of ? */,
+  591 /* Id of ReduceAction647 */,
+  5 /* Color of ReduceAction647 */,
+  54 /* Group of ? */,
+  587 /* Id of ReduceAction648 */,
+  5 /* Color of ReduceAction648 */,
+  54 /* Group of ? */,
+  583 /* Id of ReduceAction649 */,
+  5 /* Color of ReduceAction649 */,
+  54 /* Group of ? */,
+  575 /* Id of ReduceAction650 */,
+  5 /* Color of ReduceAction650 */,
+  54 /* Group of ? */,
+  571 /* Id of ReduceAction651 */,
+  5 /* Color of ReduceAction651 */,
+  54 /* Group of ? */,
+  567 /* Id of ReduceAction653 */,
+  5 /* Color of ReduceAction653 */,
+  54 /* Group of ? */,
+  563 /* Id of ReduceAction654 */,
+  5 /* Color of ReduceAction654 */,
+  54 /* Group of ? */,
+  559 /* Id of ReduceAction656 */,
+  5 /* Color of ReduceAction656 */,
+  54 /* Group of ? */,
+  555 /* Id of ReduceAction657 */,
+  5 /* Color of ReduceAction657 */,
+  54 /* Group of ? */,
+  551 /* Id of ReduceAction658 */,
+  5 /* Color of ReduceAction658 */,
+  54 /* Group of ? */,
+  547 /* Id of ReduceAction659 */,
+  5 /* Color of ReduceAction659 */,
+  54 /* Group of ? */,
+  423 /* Id of ReduceAction931 */,
+  5 /* Color of ReduceAction931 */,
+  54 /* Group of ? */,
+  419 /* Id of ReduceAction932 */,
+  5 /* Color of ReduceAction932 */,
+  54 /* Group of ? */,
+  415 /* Id of ReduceAction933 */,
+  5 /* Color of ReduceAction933 */,
+  54 /* Group of ? */,
+  411 /* Id of ReduceAction936 */,
+  5 /* Color of ReduceAction936 */,
+  54 /* Group of ? */,
+  399 /* Id of ReduceAction957 */,
+  5 /* Color of ReduceAction957 */,
+  54 /* Group of ? */,
+  395 /* Id of ReduceAction958 */,
+  5 /* Color of ReduceAction958 */,
+  54 /* Group of ? */,
+  2867 /* Id of ReduceAction1250 */,
+  5 /* Color of ReduceAction1250 */,
+  54 /* Group of ? */,
+  2863 /* Id of ReduceAction1251 */,
+  5 /* Color of ReduceAction1251 */,
+  54 /* Group of ? */,
+  2859 /* Id of ReduceAction1252 */,
+  5 /* Color of ReduceAction1252 */,
+  54 /* Group of ? */,
+  2855 /* Id of ReduceAction1253 */,
+  5 /* Color of ReduceAction1253 */,
+  54 /* Group of ? */,
+  2851 /* Id of ReduceAction1254 */,
+  5 /* Color of ReduceAction1254 */,
+  54 /* Group of ? */,
+  2847 /* Id of ReduceAction1255 */,
+  5 /* Color of ReduceAction1255 */,
+  54 /* Group of ? */,
+  2843 /* Id of ReduceAction1256 */,
+  5 /* Color of ReduceAction1256 */,
+  54 /* Group of ? */,
+  2839 /* Id of ReduceAction1257 */,
+  5 /* Color of ReduceAction1257 */,
+  54 /* Group of ? */,
+  2835 /* Id of ReduceAction1258 */,
+  5 /* Color of ReduceAction1258 */,
+  54 /* Group of ? */,
+  2831 /* Id of ReduceAction1259 */,
+  5 /* Color of ReduceAction1259 */,
+  54 /* Group of ? */,
+  2823 /* Id of ReduceAction1262 */,
+  5 /* Color of ReduceAction1262 */,
+  54 /* Group of ? */,
+  2819 /* Id of ReduceAction1263 */,
+  5 /* Color of ReduceAction1263 */,
+  54 /* Group of ? */,
+  2815 /* Id of ReduceAction1264 */,
+  5 /* Color of ReduceAction1264 */,
+  54 /* Group of ? */,
+  2811 /* Id of ReduceAction1265 */,
+  5 /* Color of ReduceAction1265 */,
+  54 /* Group of ? */,
+  2807 /* Id of ReduceAction1266 */,
+  5 /* Color of ReduceAction1266 */,
+  54 /* Group of ? */,
+  2803 /* Id of ReduceAction1267 */,
+  5 /* Color of ReduceAction1267 */,
+  54 /* Group of ? */,
+  2799 /* Id of ReduceAction1268 */,
+  5 /* Color of ReduceAction1268 */,
+  54 /* Group of ? */,
+  2795 /* Id of ReduceAction1269 */,
+  5 /* Color of ReduceAction1269 */,
+  54 /* Group of ? */,
+  2787 /* Id of ReduceAction1271 */,
+  5 /* Color of ReduceAction1271 */,
+  54 /* Group of ? */,
+  2783 /* Id of ReduceAction1272 */,
+  5 /* Color of ReduceAction1272 */,
+  54 /* Group of ? */,
+  2779 /* Id of ReduceAction1273 */,
+  5 /* Color of ReduceAction1273 */,
+  54 /* Group of ? */,
+  2775 /* Id of ReduceAction1275 */,
+  5 /* Color of ReduceAction1275 */,
+  54 /* Group of ? */,
+  2771 /* Id of ReduceAction1277 */,
+  5 /* Color of ReduceAction1277 */,
+  54 /* Group of ? */,
+  2763 /* Id of ReduceAction1281 */,
+  5 /* Color of ReduceAction1281 */,
+  54 /* Group of ? */,
+  2759 /* Id of ReduceAction1285 */,
+  5 /* Color of ReduceAction1285 */,
+  54 /* Group of ? */,
+  2755 /* Id of ReduceAction1286 */,
+  5 /* Color of ReduceAction1286 */,
+  54 /* Group of ? */,
+  2751 /* Id of ReduceAction1287 */,
+  5 /* Color of ReduceAction1287 */,
+  54 /* Group of ? */,
+  2747 /* Id of ReduceAction1288 */,
+  5 /* Color of ReduceAction1288 */,
+  54 /* Group of ? */,
+  2743 /* Id of ReduceAction1289 */,
+  5 /* Color of ReduceAction1289 */,
+  54 /* Group of ? */,
 };
-const char *LOCATE_parser___parser_prod = "./parser//parser_prod.nit";
-const int SFT_parser___parser_prod[152] = {
+const char LOCATE_parser___parser_prod[] = "parser/parser_prod.nit";
+const int SFT_parser___parser_prod[168] = {
   2 /* Group of ? */,
-  54 /* Group of ? */,
-  69 /* Group of ? */,
+  57 /* Group of ? */,
+  71 /* Group of ? */,
   15 /* Id of Visitor */,
   4 /* Color of Visitor */,
   2 /* Group of ? */,
-  47 /* Group of ? */,
-  73 /* Group of ? */,
-  72 /* Group of ? */,
-  75 /* Group of ? */,
+  50 /* Group of ? */,
+  76 /* Group of ? */,
   75 /* Group of ? */,
-  74 /* Group of ? */,
-  74 /* Group of ? */,
-  74 /* Group of ? */,
-  74 /* Group of ? */,
-  87 /* Group of ? */,
-  85 /* Group of ? */,
-  85 /* Group of ? */,
+  78 /* Group of ? */,
+  78 /* Group of ? */,
   77 /* Group of ? */,
   77 /* Group of ? */,
   77 /* Group of ? */,
   77 /* Group of ? */,
+  92 /* Group of ? */,
+  89 /* Group of ? */,
+  89 /* Group of ? */,
+  80 /* Group of ? */,
+  80 /* Group of ? */,
+  80 /* Group of ? */,
+  80 /* Group of ? */,
+  80 /* Group of ? */,
   77 /* Group of ? */,
-  74 /* Group of ? */,
-  76 /* Group of ? */,
-  85 /* Group of ? */,
-  84 /* Group of ? */,
-  94 /* Group of ? */,
-  94 /* Group of ? */,
+  79 /* Group of ? */,
+  88 /* Group of ? */,
+  87 /* Group of ? */,
+  97 /* Group of ? */,
+  97 /* Group of ? */,
+  105 /* Group of ? */,
   99 /* Group of ? */,
-  95 /* Group of ? */,
+  108 /* Group of ? */,
+  107 /* Group of ? */,
   104 /* Group of ? */,
-  101 /* Group of ? */,
-  100 /* Group of ? */,
-  83 /* Group of ? */,
-  75 /* Group of ? */,
-  75 /* Group of ? */,
-  75 /* Group of ? */,
-  75 /* Group of ? */,
-  75 /* Group of ? */,
-  75 /* Group of ? */,
-  75 /* Group of ? */,
-  75 /* Group of ? */,
-  75 /* Group of ? */,
-  75 /* Group of ? */,
-  75 /* Group of ? */,
-  75 /* Group of ? */,
-  75 /* Group of ? */,
-  75 /* Group of ? */,
-  75 /* Group of ? */,
-  75 /* Group of ? */,
-  75 /* Group of ? */,
-  75 /* Group of ? */,
-  75 /* Group of ? */,
-  75 /* Group of ? */,
-  74 /* Group of ? */,
-  78 /* Group of ? */,
-  75 /* Group of ? */,
-  79 /* Group of ? */,
-  72 /* Group of ? */,
-  82 /* Group of ? */,
-  83 /* Group of ? */,
-  82 /* Group of ? */,
-  86 /* Group of ? */,
-  82 /* Group of ? */,
-  86 /* Group of ? */,
   86 /* Group of ? */,
+  78 /* Group of ? */,
+  78 /* Group of ? */,
+  78 /* Group of ? */,
+  78 /* Group of ? */,
+  78 /* Group of ? */,
+  78 /* Group of ? */,
+  78 /* Group of ? */,
+  78 /* Group of ? */,
+  78 /* Group of ? */,
+  78 /* Group of ? */,
+  78 /* Group of ? */,
+  78 /* Group of ? */,
+  78 /* Group of ? */,
+  78 /* Group of ? */,
+  78 /* Group of ? */,
+  78 /* Group of ? */,
+  78 /* Group of ? */,
+  78 /* Group of ? */,
+  78 /* Group of ? */,
+  78 /* Group of ? */,
+  77 /* Group of ? */,
+  81 /* Group of ? */,
+  78 /* Group of ? */,
   82 /* Group of ? */,
-  82 /* Group of ? */,
-  86 /* Group of ? */,
-  86 /* Group of ? */,
-  88 /* Group of ? */,
-  82 /* Group of ? */,
-  85 /* Group of ? */,
-  106 /* Group of ? */,
-  111 /* Group of ? */,
-  83 /* Group of ? */,
-  83 /* Group of ? */,
-  83 /* Group of ? */,
-  83 /* Group of ? */,
-  117 /* Group of ? */,
-  83 /* Group of ? */,
-  117 /* Group of ? */,
-  115 /* Group of ? */,
-  115 /* Group of ? */,
-  115 /* Group of ? */,
-  115 /* Group of ? */,
-  115 /* Group of ? */,
-  115 /* Group of ? */,
-  83 /* Group of ? */,
-  115 /* Group of ? */,
-  115 /* Group of ? */,
-  115 /* Group of ? */,
-  115 /* Group of ? */,
-  115 /* Group of ? */,
-  115 /* Group of ? */,
-  111 /* Group of ? */,
+  75 /* Group of ? */,
+  89 /* Group of ? */,
+  90 /* Group of ? */,
+  89 /* Group of ? */,
+  93 /* Group of ? */,
+  89 /* Group of ? */,
+  93 /* Group of ? */,
+  93 /* Group of ? */,
+  89 /* Group of ? */,
+  89 /* Group of ? */,
+  93 /* Group of ? */,
+  93 /* Group of ? */,
+  95 /* Group of ? */,
+  89 /* Group of ? */,
+  92 /* Group of ? */,
+  113 /* Group of ? */,
+  118 /* Group of ? */,
+  90 /* Group of ? */,
+  90 /* Group of ? */,
+  90 /* Group of ? */,
+  90 /* Group of ? */,
+  124 /* Group of ? */,
+  90 /* Group of ? */,
+  124 /* Group of ? */,
+  122 /* Group of ? */,
+  122 /* Group of ? */,
+  122 /* Group of ? */,
+  122 /* Group of ? */,
+  122 /* Group of ? */,
+  122 /* Group of ? */,
+  90 /* Group of ? */,
+  122 /* Group of ? */,
+  122 /* Group of ? */,
+  122 /* Group of ? */,
+  122 /* Group of ? */,
+  122 /* Group of ? */,
+  122 /* Group of ? */,
+  118 /* Group of ? */,
+  110 /* Group of ? */,
   103 /* Group of ? */,
-  96 /* Group of ? */,
-  82 /* Group of ? */,
-  82 /* Group of ? */,
-  116 /* Group of ? */,
-  82 /* Group of ? */,
-  116 /* Group of ? */,
-  104 /* Group of ? */,
+  89 /* Group of ? */,
+  89 /* Group of ? */,
+  123 /* Group of ? */,
+  89 /* Group of ? */,
+  123 /* Group of ? */,
   111 /* Group of ? */,
-  113 /* Group of ? */,
-  82 /* Group of ? */,
-  113 /* Group of ? */,
-  98 /* Group of ? */,
-  85 /* Group of ? */,
-  88 /* Group of ? */,
+  118 /* Group of ? */,
+  120 /* Group of ? */,
+  89 /* Group of ? */,
+  120 /* Group of ? */,
+  105 /* Group of ? */,
+  92 /* Group of ? */,
+  95 /* Group of ? */,
+  97 /* Group of ? */,
+  89 /* Group of ? */,
+  94 /* Group of ? */,
+  94 /* Group of ? */,
   90 /* Group of ? */,
-  82 /* Group of ? */,
-  87 /* Group of ? */,
-  87 /* Group of ? */,
-  83 /* Group of ? */,
-  83 /* Group of ? */,
-  87 /* Group of ? */,
-  83 /* Group of ? */,
-  83 /* Group of ? */,
-  82 /* Group of ? */,
-  82 /* Group of ? */,
-  82 /* Group of ? */,
-  82 /* Group of ? */,
-  85 /* Group of ? */,
-  85 /* Group of ? */,
-  85 /* Group of ? */,
-  85 /* Group of ? */,
-  83 /* Group of ? */,
-  84 /* Group of ? */,
-  82 /* Group of ? */,
-  82 /* Group of ? */,
-  96 /* Group of ? */,
-  74 /* Group of ? */,
-  74 /* Group of ? */,
-  79 /* Group of ? */,
-  74 /* Group of ? */,
-  74 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  74 /* Group of ? */,
-  77 /* Group of ? */,
+  90 /* Group of ? */,
+  94 /* Group of ? */,
+  90 /* Group of ? */,
+  90 /* Group of ? */,
+  89 /* Group of ? */,
+  89 /* Group of ? */,
+  89 /* Group of ? */,
+  89 /* Group of ? */,
+  93 /* Group of ? */,
+  93 /* Group of ? */,
+  93 /* Group of ? */,
+  93 /* Group of ? */,
+  90 /* Group of ? */,
+  91 /* Group of ? */,
+  89 /* Group of ? */,
+  89 /* Group of ? */,
+  103 /* Group of ? */,
+  89 /* Group of ? */,
   78 /* Group of ? */,
   78 /* Group of ? */,
   78 /* Group of ? */,
-  80 /* Group of ? */,
-  80 /* Group of ? */,
-  80 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-};
-const char *LOCATE_parser___lexer = "./parser//lexer.nit";
-const int SFT_parser___lexer[98] = {
-  5 /* Group of ? */,
-  68 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  6 /* Group of ? */,
-  74 /* Group of ? */,
-  2203 /* Id of Lexer */,
-  5 /* Color of Lexer */,
-  2 /* Group of ? */,
-  52 /* Group of ? */,
-};
-const char *LOCATE_parser___parser_nodes = "./parser//parser_nodes.nit";
-const int SFT_parser___parser_nodes[913] = {
-  307 /* Id of ANode */,
-  4 /* Color of ANode */,
-  3 /* Group of ? */,
-  60 /* Group of ? */,
-  331 /* Id of Token */,
-  5 /* Color of Token */,
-  70 /* Group of ? */,
-  2075 /* Id of Prod */,
-  6 /* Color of Prod */,
-  70 /* Group of ? */,
-  2715 /* Id of TEol */,
-  6 /* Color of TEol */,
-  72 /* Group of ? */,
-  2739 /* Id of TComment */,
-  6 /* Color of TComment */,
-  72 /* Group of ? */,
-  2575 /* Id of TKwmodule */,
-  6 /* Color of TKwmodule */,
-  72 /* Group of ? */,
-  2623 /* Id of TKwimport */,
-  6 /* Color of TKwimport */,
-  72 /* Group of ? */,
-  2663 /* Id of TKwclass */,
-  6 /* Color of TKwclass */,
-  72 /* Group of ? */,
-  2683 /* Id of TKwabstract */,
-  6 /* Color of TKwabstract */,
-  72 /* Group of ? */,
-  2611 /* Id of TKwinterface */,
-  6 /* Color of TKwinterface */,
-  72 /* Group of ? */,
-  2643 /* Id of TKwenum */,
-  6 /* Color of TKwenum */,
-  72 /* Group of ? */,
-  2523 /* Id of TKwspecial */,
-  6 /* Color of TKwspecial */,
-  72 /* Group of ? */,
-  2647 /* Id of TKwend */,
-  6 /* Color of TKwend */,
-  72 /* Group of ? */,
-  2579 /* Id of TKwmeth */,
-  6 /* Color of TKwmeth */,
-  72 /* Group of ? */,
-  2507 /* Id of TKwtype */,
-  6 /* Color of TKwtype */,
-  72 /* Group of ? */,
-  2615 /* Id of TKwinit */,
-  6 /* Color of TKwinit */,
-  72 /* Group of ? */,
-  2535 /* Id of TKwredef */,
-  6 /* Color of TKwredef */,
-  72 /* Group of ? */,
-  2599 /* Id of TKwis */,
-  6 /* Color of TKwis */,
-  72 /* Group of ? */,
-  2655 /* Id of TKwdo */,
-  6 /* Color of TKwdo */,
-  72 /* Group of ? */,
-  2539 /* Id of TKwreadable */,
-  6 /* Color of TKwreadable */,
-  72 /* Group of ? */,
-  2495 /* Id of TKwwritable */,
-  6 /* Color of TKwwritable */,
-  72 /* Group of ? */,
-  2503 /* Id of TKwvar */,
-  6 /* Color of TKwvar */,
-  72 /* Group of ? */,
-  2607 /* Id of TKwintern */,
-  6 /* Color of TKwintern */,
-  72 /* Group of ? */,
-  2639 /* Id of TKwextern */,
-  6 /* Color of TKwextern */,
-  72 /* Group of ? */,
-  2543 /* Id of TKwprotected */,
-  6 /* Color of TKwprotected */,
-  72 /* Group of ? */,
-  2547 /* Id of TKwprivate */,
-  6 /* Color of TKwprivate */,
-  72 /* Group of ? */,
-  2603 /* Id of TKwintrude */,
-  6 /* Color of TKwintrude */,
-  72 /* Group of ? */,
-  2627 /* Id of TKwif */,
-  6 /* Color of TKwif */,
-  72 /* Group of ? */,
-  2515 /* Id of TKwthen */,
-  6 /* Color of TKwthen */,
-  72 /* Group of ? */,
-  2651 /* Id of TKwelse */,
-  6 /* Color of TKwelse */,
-  72 /* Group of ? */,
-  2499 /* Id of TKwwhile */,
-  6 /* Color of TKwwhile */,
-  72 /* Group of ? */,
-  2583 /* Id of TKwloop */,
-  6 /* Color of TKwloop */,
-  72 /* Group of ? */,
-  2631 /* Id of TKwfor */,
-  6 /* Color of TKwfor */,
-  72 /* Group of ? */,
-  2619 /* Id of TKwin */,
-  6 /* Color of TKwin */,
-  72 /* Group of ? */,
-  2679 /* Id of TKwand */,
-  6 /* Color of TKwand */,
-  72 /* Group of ? */,
-  2551 /* Id of TKwor */,
-  6 /* Color of TKwor */,
-  72 /* Group of ? */,
-  2567 /* Id of TKwnot */,
-  6 /* Color of TKwnot */,
-  72 /* Group of ? */,
-  2531 /* Id of TKwreturn */,
-  6 /* Color of TKwreturn */,
-  72 /* Group of ? */,
-  2659 /* Id of TKwcontinue */,
-  6 /* Color of TKwcontinue */,
-  72 /* Group of ? */,
-  2667 /* Id of TKwbreak */,
-  6 /* Color of TKwbreak */,
-  72 /* Group of ? */,
-  2687 /* Id of TKwabort */,
-  6 /* Color of TKwabort */,
-  72 /* Group of ? */,
-  2671 /* Id of TKwassert */,
-  6 /* Color of TKwassert */,
-  72 /* Group of ? */,
-  2571 /* Id of TKwnew */,
-  6 /* Color of TKwnew */,
-  72 /* Group of ? */,
-  2595 /* Id of TKwisa */,
-  6 /* Color of TKwisa */,
-  72 /* Group of ? */,
-  2555 /* Id of TKwonce */,
-  6 /* Color of TKwonce */,
-  72 /* Group of ? */,
-  2519 /* Id of TKwsuper */,
-  6 /* Color of TKwsuper */,
-  72 /* Group of ? */,
-  2527 /* Id of TKwself */,
-  6 /* Color of TKwself */,
-  72 /* Group of ? */,
-  2511 /* Id of TKwtrue */,
-  6 /* Color of TKwtrue */,
-  72 /* Group of ? */,
-  2635 /* Id of TKwfalse */,
-  6 /* Color of TKwfalse */,
-  72 /* Group of ? */,
-  2563 /* Id of TKwnull */,
-  6 /* Color of TKwnull */,
-  72 /* Group of ? */,
-  2675 /* Id of TKwas */,
-  6 /* Color of TKwas */,
-  72 /* Group of ? */,
-  2559 /* Id of TKwnullable */,
-  6 /* Color of TKwnullable */,
-  72 /* Group of ? */,
-  2591 /* Id of TKwisset */,
-  6 /* Color of TKwisset */,
-  72 /* Group of ? */,
-  2587 /* Id of TKwlabel */,
-  6 /* Color of TKwlabel */,
-  72 /* Group of ? */,
-  2455 /* Id of TOpar */,
-  6 /* Color of TOpar */,
-  72 /* Group of ? */,
-  2735 /* Id of TCpar */,
-  6 /* Color of TCpar */,
-  72 /* Group of ? */,
-  2459 /* Id of TObra */,
-  6 /* Color of TObra */,
-  72 /* Group of ? */,
-  2759 /* Id of TCbra */,
-  6 /* Color of TCbra */,
-  72 /* Group of ? */,
-  2743 /* Id of TComma */,
-  6 /* Color of TComma */,
-  72 /* Group of ? */,
-  2747 /* Id of TColumn */,
-  6 /* Color of TColumn */,
-  72 /* Group of ? */,
-  2439 /* Id of TQuad */,
-  6 /* Color of TQuad */,
-  72 /* Group of ? */,
-  2771 /* Id of TAssign */,
-  6 /* Color of TAssign */,
-  72 /* Group of ? */,
-  2443 /* Id of TPluseq */,
-  6 /* Color of TPluseq */,
-  72 /* Group of ? */,
-  2471 /* Id of TMinuseq */,
-  6 /* Color of TMinuseq */,
-  72 /* Group of ? */,
-  2723 /* Id of TDotdotdot */,
-  6 /* Color of TDotdotdot */,
-  72 /* Group of ? */,
-  2727 /* Id of TDotdot */,
-  6 /* Color of TDotdot */,
-  72 /* Group of ? */,
-  2731 /* Id of TDot */,
-  6 /* Color of TDot */,
-  72 /* Group of ? */,
-  2447 /* Id of TPlus */,
-  6 /* Color of TPlus */,
-  72 /* Group of ? */,
-  2475 /* Id of TMinus */,
-  6 /* Color of TMinus */,
-  72 /* Group of ? */,
-  2431 /* Id of TStar */,
-  6 /* Color of TStar */,
-  72 /* Group of ? */,
-  2435 /* Id of TSlash */,
-  6 /* Color of TSlash */,
-  72 /* Group of ? */,
-  2451 /* Id of TPercent */,
-  6 /* Color of TPercent */,
-  72 /* Group of ? */,
-  2711 /* Id of TEq */,
-  6 /* Color of TEq */,
-  72 /* Group of ? */,
-  2467 /* Id of TNe */,
-  6 /* Color of TNe */,
-  72 /* Group of ? */,
-  2483 /* Id of TLt */,
-  6 /* Color of TLt */,
-  72 /* Group of ? */,
-  2491 /* Id of TLe */,
-  6 /* Color of TLe */,
-  72 /* Group of ? */,
-  2487 /* Id of TLl */,
-  6 /* Color of TLl */,
-  72 /* Group of ? */,
-  2695 /* Id of TGt */,
-  6 /* Color of TGt */,
-  72 /* Group of ? */,
-  2703 /* Id of TGe */,
-  6 /* Color of TGe */,
-  72 /* Group of ? */,
-  2699 /* Id of TGg */,
-  6 /* Color of TGg */,
-  72 /* Group of ? */,
-  2427 /* Id of TStarship */,
-  6 /* Color of TStarship */,
-  72 /* Group of ? */,
-  2763 /* Id of TBang */,
-  6 /* Color of TBang */,
-  72 /* Group of ? */,
-  2751 /* Id of TClassid */,
-  6 /* Color of TClassid */,
-  72 /* Group of ? */,
-  2691 /* Id of TId */,
-  6 /* Color of TId */,
-  72 /* Group of ? */,
-  2767 /* Id of TAttrid */,
-  6 /* Color of TAttrid */,
-  72 /* Group of ? */,
-  2463 /* Id of TNumber */,
-  6 /* Color of TNumber */,
-  72 /* Group of ? */,
-  2707 /* Id of TFloat */,
-  6 /* Color of TFloat */,
-  72 /* Group of ? */,
-  2755 /* Id of TChar */,
-  6 /* Color of TChar */,
-  72 /* Group of ? */,
-  2419 /* Id of TString */,
-  6 /* Color of TString */,
-  72 /* Group of ? */,
-  2423 /* Id of TStartString */,
-  6 /* Color of TStartString */,
-  72 /* Group of ? */,
-  2479 /* Id of TMidString */,
-  6 /* Color of TMidString */,
-  72 /* Group of ? */,
-  2719 /* Id of TEndString */,
-  6 /* Color of TEndString */,
-  72 /* Group of ? */,
-  2987 /* Id of EOF */,
-  6 /* Color of EOF */,
-  72 /* Group of ? */,
-  3443 /* Id of AError */,
-  7 /* Color of AError */,
-  76 /* Group of ? */,
-  3079 /* Id of AModule */,
-  7 /* Color of AModule */,
-  6 /* Group of ? */,
-  75 /* Group of ? */,
-  3071 /* Id of AModuledecl */,
-  7 /* Color of AModuledecl */,
-  6 /* Group of ? */,
-  74 /* Group of ? */,
-  3095 /* Id of AImport */,
-  7 /* Color of AImport */,
-  74 /* Group of ? */,
-  3279 /* Id of AStdImport */,
-  8 /* Color of AStdImport */,
-  6 /* Group of ? */,
   77 /* Group of ? */,
-  3359 /* Id of ANoImport */,
-  8 /* Color of ANoImport */,
-  6 /* Group of ? */,
   77 /* Group of ? */,
-  3043 /* Id of AVisibility */,
-  7 /* Color of AVisibility */,
-  73 /* Group of ? */,
-  3323 /* Id of APublicVisibility */,
-  8 /* Color of APublicVisibility */,
+  84 /* Group of ? */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+  75 /* Group of ? */,
+  75 /* Group of ? */,
+  77 /* Group of ? */,
+  80 /* Group of ? */,
+  81 /* Group of ? */,
+  81 /* Group of ? */,
+  81 /* Group of ? */,
+  83 /* Group of ? */,
+  83 /* Group of ? */,
+  83 /* Group of ? */,
+  75 /* Group of ? */,
   76 /* Group of ? */,
-  3339 /* Id of APrivateVisibility */,
-  8 /* Color of APrivateVisibility */,
-  6 /* Group of ? */,
+  75 /* Group of ? */,
+  75 /* Group of ? */,
+  75 /* Group of ? */,
+  75 /* Group of ? */,
   76 /* Group of ? */,
-  3331 /* Id of AProtectedVisibility */,
-  8 /* Color of AProtectedVisibility */,
-  6 /* Group of ? */,
   76 /* Group of ? */,
-  3395 /* Id of AIntrudeVisibility */,
-  8 /* Color of AIntrudeVisibility */,
-  6 /* Group of ? */,
   76 /* Group of ? */,
-  3131 /* Id of AClassdef */,
-  7 /* Color of AClassdef */,
-  83 /* Group of ? */,
-  3283 /* Id of AStdClassdef */,
-  8 /* Color of AStdClassdef */,
-  8 /* Group of ? */,
-  89 /* Group of ? */,
-  3263 /* Id of ATopClassdef */,
-  8 /* Color of ATopClassdef */,
-  8 /* Group of ? */,
-  87 /* Group of ? */,
-  3379 /* Id of AMainClassdef */,
-  8 /* Color of AMainClassdef */,
-  8 /* Group of ? */,
-  87 /* Group of ? */,
-  3127 /* Id of AClasskind */,
-  7 /* Color of AClasskind */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+};
+const char LOCATE_parser___lexer[] = "parser/lexer.nit";
+const int SFT_parser___lexer[106] = {
+  5 /* Group of ? */,
+  72 /* Group of ? */,
   76 /* Group of ? */,
-  3455 /* Id of AConcreteClasskind */,
-  8 /* Color of AConcreteClasskind */,
-  6 /* Group of ? */,
-  79 /* Group of ? */,
-  3519 /* Id of AAbstractClasskind */,
-  8 /* Color of AAbstractClasskind */,
-  6 /* Group of ? */,
-  79 /* Group of ? */,
-  3399 /* Id of AInterfaceClasskind */,
-  8 /* Color of AInterfaceClasskind */,
-  6 /* Group of ? */,
-  79 /* Group of ? */,
-  3451 /* Id of AEnumClasskind */,
-  8 /* Color of AEnumClasskind */,
-  6 /* Group of ? */,
-  79 /* Group of ? */,
-  3435 /* Id of AExternClasskind */,
-  8 /* Color of AExternClasskind */,
-  6 /* Group of ? */,
-  79 /* Group of ? */,
-  3099 /* Id of AFormaldef */,
-  7 /* Color of AFormaldef */,
-  7 /* Group of ? */,
   76 /* Group of ? */,
-  3051 /* Id of ASuperclass */,
-  7 /* Color of ASuperclass */,
-  7 /* Group of ? */,
-  78 /* Group of ? */,
-  3063 /* Id of APropdef */,
-  7 /* Color of APropdef */,
-  6 /* Group of ? */,
   77 /* Group of ? */,
-  3491 /* Id of AAttrPropdef */,
-  8 /* Color of AAttrPropdef */,
-  11 /* Group of ? */,
-  87 /* Group of ? */,
-  3375 /* Id of AMethPropdef */,
-  8 /* Color of AMethPropdef */,
-  10 /* Group of ? */,
-  86 /* Group of ? */,
-  3683 /* Id of ADeferredMethPropdef */,
-  9 /* Color of ADeferredMethPropdef */,
-  14 /* Group of ? */,
-  96 /* Group of ? */,
-  3643 /* Id of AInternMethPropdef */,
-  9 /* Color of AInternMethPropdef */,
-  14 /* Group of ? */,
-  96 /* Group of ? */,
-  3667 /* Id of AExternPropdef */,
-  9 /* Color of AExternPropdef */,
-  14 /* Group of ? */,
-  95 /* Group of ? */,
-  3763 /* Id of AExternMethPropdef */,
-  10 /* Color of AExternMethPropdef */,
-  16 /* Group of ? */,
-  101 /* Group of ? */,
-  3695 /* Id of AConcreteMethPropdef */,
-  9 /* Color of AConcreteMethPropdef */,
-  14 /* Group of ? */,
-  97 /* Group of ? */,
-  311 /* Id of AInitPropdef */,
-  5 /* Color of AInitPropdef */,
-  67 /* Group of ? */,
-  3771 /* Id of AConcreteInitPropdef */,
-  10 /* Color of AConcreteInitPropdef */,
-  18 /* Group of ? */,
-  106 /* Group of ? */,
-  3767 /* Id of AExternInitPropdef */,
-  10 /* Color of AExternInitPropdef */,
-  16 /* Group of ? */,
-  103 /* Group of ? */,
-  3759 /* Id of AMainMethPropdef */,
-  10 /* Color of AMainMethPropdef */,
-  102 /* Group of ? */,
-  3103 /* Id of AExternCalls */,
-  7 /* Color of AExternCalls */,
-  6 /* Group of ? */,
-  74 /* Group of ? */,
-  3107 /* Id of AExternCall */,
-  7 /* Color of AExternCall */,
-  76 /* Group of ? */,
-  3335 /* Id of APropExternCall */,
-  8 /* Color of APropExternCall */,
   77 /* Group of ? */,
-  3631 /* Id of ALocalPropExternCall */,
-  9 /* Color of ALocalPropExternCall */,
-  6 /* Group of ? */,
-  80 /* Group of ? */,
-  3655 /* Id of AFullPropExternCall */,
-  9 /* Color of AFullPropExternCall */,
-  6 /* Group of ? */,
-  80 /* Group of ? */,
-  3647 /* Id of AInitPropExternCall */,
-  9 /* Color of AInitPropExternCall */,
-  6 /* Group of ? */,
-  80 /* Group of ? */,
-  3271 /* Id of ASuperExternCall */,
-  8 /* Color of ASuperExternCall */,
-  6 /* Group of ? */,
-  79 /* Group of ? */,
-  3467 /* Id of ACastExternCall */,
-  8 /* Color of ACastExternCall */,
-  79 /* Group of ? */,
-  3703 /* Id of ACastAsExternCall */,
-  9 /* Color of ACastAsExternCall */,
-  6 /* Group of ? */,
-  82 /* Group of ? */,
-  3723 /* Id of AAsNullableExternCall */,
-  9 /* Color of AAsNullableExternCall */,
-  6 /* Group of ? */,
-  82 /* Group of ? */,
-  3727 /* Id of AAsNotNullableExternCall */,
-  9 /* Color of AAsNotNullableExternCall */,
-  6 /* Group of ? */,
-  82 /* Group of ? */,
-  3255 /* Id of ATypePropdef */,
-  8 /* Color of ATypePropdef */,
-  9 /* Group of ? */,
-  85 /* Group of ? */,
-  3139 /* Id of AAble */,
-  7 /* Color of AAble */,
-  6 /* Group of ? */,
-  72 /* Group of ? */,
-  3315 /* Id of AReadAble */,
-  8 /* Color of AReadAble */,
-  8 /* Group of ? */,
   77 /* Group of ? */,
-  3243 /* Id of AWriteAble */,
-  8 /* Color of AWriteAble */,
-  8 /* Group of ? */,
   77 /* Group of ? */,
-  3083 /* Id of AMethid */,
-  7 /* Color of AMethid */,
-  74 /* Group of ? */,
-  3415 /* Id of AIdMethid */,
-  8 /* Color of AIdMethid */,
-  7 /* Group of ? */,
   77 /* Group of ? */,
-  3343 /* Id of APlusMethid */,
-  8 /* Color of APlusMethid */,
-  7 /* Group of ? */,
   77 /* Group of ? */,
-  3367 /* Id of AMinusMethid */,
-  8 /* Color of AMinusMethid */,
-  7 /* Group of ? */,
   77 /* Group of ? */,
-  3291 /* Id of AStarMethid */,
-  8 /* Color of AStarMethid */,
-  7 /* Group of ? */,
   77 /* Group of ? */,
-  3295 /* Id of ASlashMethid */,
-  8 /* Color of ASlashMethid */,
-  7 /* Group of ? */,
   77 /* Group of ? */,
-  3351 /* Id of APercentMethid */,
-  8 /* Color of APercentMethid */,
-  7 /* Group of ? */,
   77 /* Group of ? */,
-  3447 /* Id of AEqMethid */,
-  8 /* Color of AEqMethid */,
-  7 /* Group of ? */,
   77 /* Group of ? */,
-  3363 /* Id of ANeMethid */,
-  8 /* Color of ANeMethid */,
-  7 /* Group of ? */,
   77 /* Group of ? */,
-  3391 /* Id of ALeMethid */,
-  8 /* Color of ALeMethid */,
-  7 /* Group of ? */,
   77 /* Group of ? */,
-  3427 /* Id of AGeMethid */,
-  8 /* Color of AGeMethid */,
-  7 /* Group of ? */,
   77 /* Group of ? */,
-  3383 /* Id of ALtMethid */,
-  8 /* Color of ALtMethid */,
-  7 /* Group of ? */,
   77 /* Group of ? */,
-  3419 /* Id of AGtMethid */,
-  8 /* Color of AGtMethid */,
-  7 /* Group of ? */,
   77 /* Group of ? */,
-  3387 /* Id of ALlMethid */,
-  8 /* Color of ALlMethid */,
-  7 /* Group of ? */,
   77 /* Group of ? */,
-  3423 /* Id of AGgMethid */,
-  8 /* Color of AGgMethid */,
-  7 /* Group of ? */,
   77 /* Group of ? */,
-  3479 /* Id of ABraMethid */,
-  8 /* Color of ABraMethid */,
-  7 /* Group of ? */,
   77 /* Group of ? */,
-  3287 /* Id of AStarshipMethid */,
-  8 /* Color of AStarshipMethid */,
-  7 /* Group of ? */,
   77 /* Group of ? */,
-  3499 /* Id of AAssignMethid */,
-  8 /* Color of AAssignMethid */,
-  7 /* Group of ? */,
   77 /* Group of ? */,
-  3475 /* Id of ABraassignMethid */,
-  8 /* Color of ABraassignMethid */,
-  7 /* Group of ? */,
   77 /* Group of ? */,
-  3055 /* Id of ASignature */,
-  7 /* Color of ASignature */,
-  6 /* Group of ? */,
-  76 /* Group of ? */,
-  3067 /* Id of AParam */,
-  7 /* Color of AParam */,
-  9 /* Group of ? */,
-  80 /* Group of ? */,
-  3123 /* Id of AClosureDecl */,
-  7 /* Color of AClosureDecl */,
-  8 /* Group of ? */,
   77 /* Group of ? */,
-  3047 /* Id of AType */,
-  7 /* Color of AType */,
-  8 /* Group of ? */,
-  81 /* Group of ? */,
-  3091 /* Id of ALabel */,
-  7 /* Color of ALabel */,
-  6 /* Group of ? */,
-  74 /* Group of ? */,
-  3111 /* Id of AExpr */,
-  7 /* Color of AExpr */,
-  75 /* Group of ? */,
-  3487 /* Id of ABlockExpr */,
-  8 /* Color of ABlockExpr */,
-  11 /* Group of ? */,
-  84 /* Group of ? */,
-  3247 /* Id of AVardeclExpr */,
-  8 /* Color of AVardeclExpr */,
-  12 /* Group of ? */,
-  85 /* Group of ? */,
-  3307 /* Id of AReturnExpr */,
-  8 /* Color of AReturnExpr */,
-  11 /* Group of ? */,
-  84 /* Group of ? */,
-  3087 /* Id of ALabelable */,
-  5 /* Color of ALabelable */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+  76 /* Group of ? */,
+  76 /* Group of ? */,
+  76 /* Group of ? */,
+  76 /* Group of ? */,
+  76 /* Group of ? */,
+  76 /* Group of ? */,
+  76 /* Group of ? */,
+  76 /* Group of ? */,
+  76 /* Group of ? */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+  76 /* Group of ? */,
+  76 /* Group of ? */,
+  76 /* Group of ? */,
+  76 /* Group of ? */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+  76 /* Group of ? */,
+  77 /* Group of ? */,
+  76 /* Group of ? */,
+  76 /* Group of ? */,
+  77 /* Group of ? */,
+  76 /* Group of ? */,
   6 /* Group of ? */,
-  67 /* Group of ? */,
-  3707 /* Id of ABreakExpr */,
-  9 /* Color of ABreakExpr */,
+  78 /* Group of ? */,
+  7 /* Group of ? */,
+  81 /* Group of ? */,
+  7 /* Group of ? */,
+  81 /* Group of ? */,
+  3147 /* Id of Lexer */,
+  5 /* Color of Lexer */,
+  2 /* Group of ? */,
+  55 /* Group of ? */,
+};
+const char LOCATE_parser___parser_nodes[] = "parser/parser_nodes.nit";
+const int SFT_parser___parser_nodes[1014] = {
+  315 /* Id of ANode */,
+  4 /* Color of ANode */,
+  3 /* Group of ? */,
+  63 /* Group of ? */,
+  335 /* Id of Token */,
+  5 /* Color of Token */,
+  73 /* Group of ? */,
+  3019 /* Id of Prod */,
+  5 /* Color of Prod */,
+  6 /* Group of ? */,
+  72 /* Group of ? */,
+  3403 /* Id of TEol */,
+  6 /* Color of TEol */,
+  77 /* Group of ? */,
+  3415 /* Id of TComment */,
+  6 /* Color of TComment */,
+  77 /* Group of ? */,
+  3339 /* Id of TokenKeyword */,
+  6 /* Color of TokenKeyword */,
+  76 /* Group of ? */,
+  4031 /* Id of TKwmodule */,
+  7 /* Color of TKwmodule */,
+  78 /* Group of ? */,
+  4079 /* Id of TKwimport */,
+  7 /* Color of TKwimport */,
+  78 /* Group of ? */,
+  4119 /* Id of TKwclass */,
+  7 /* Color of TKwclass */,
+  78 /* Group of ? */,
+  4139 /* Id of TKwabstract */,
+  7 /* Color of TKwabstract */,
+  78 /* Group of ? */,
+  4067 /* Id of TKwinterface */,
+  7 /* Color of TKwinterface */,
+  78 /* Group of ? */,
+  4099 /* Id of TKwenum */,
+  7 /* Color of TKwenum */,
+  78 /* Group of ? */,
+  4103 /* Id of TKwend */,
+  7 /* Color of TKwend */,
+  78 /* Group of ? */,
+  4035 /* Id of TKwmeth */,
+  7 /* Color of TKwmeth */,
+  78 /* Group of ? */,
+  3967 /* Id of TKwtype */,
+  7 /* Color of TKwtype */,
+  78 /* Group of ? */,
+  4071 /* Id of TKwinit */,
+  7 /* Color of TKwinit */,
+  78 /* Group of ? */,
+  3991 /* Id of TKwredef */,
+  7 /* Color of TKwredef */,
+  78 /* Group of ? */,
+  4055 /* Id of TKwis */,
+  7 /* Color of TKwis */,
+  78 /* Group of ? */,
+  4111 /* Id of TKwdo */,
+  7 /* Color of TKwdo */,
+  78 /* Group of ? */,
+  3995 /* Id of TKwreadable */,
+  7 /* Color of TKwreadable */,
+  78 /* Group of ? */,
+  3955 /* Id of TKwwritable */,
+  7 /* Color of TKwwritable */,
+  78 /* Group of ? */,
+  3963 /* Id of TKwvar */,
+  7 /* Color of TKwvar */,
+  78 /* Group of ? */,
+  4063 /* Id of TKwintern */,
+  7 /* Color of TKwintern */,
+  78 /* Group of ? */,
+  4095 /* Id of TKwextern */,
+  7 /* Color of TKwextern */,
+  78 /* Group of ? */,
+  3999 /* Id of TKwprotected */,
+  7 /* Color of TKwprotected */,
+  78 /* Group of ? */,
+  4003 /* Id of TKwprivate */,
+  7 /* Color of TKwprivate */,
+  78 /* Group of ? */,
+  4059 /* Id of TKwintrude */,
+  7 /* Color of TKwintrude */,
+  78 /* Group of ? */,
+  4083 /* Id of TKwif */,
+  7 /* Color of TKwif */,
+  78 /* Group of ? */,
+  3975 /* Id of TKwthen */,
+  7 /* Color of TKwthen */,
+  78 /* Group of ? */,
+  4107 /* Id of TKwelse */,
+  7 /* Color of TKwelse */,
+  78 /* Group of ? */,
+  3959 /* Id of TKwwhile */,
+  7 /* Color of TKwwhile */,
+  78 /* Group of ? */,
+  4039 /* Id of TKwloop */,
+  7 /* Color of TKwloop */,
+  78 /* Group of ? */,
+  4087 /* Id of TKwfor */,
+  7 /* Color of TKwfor */,
+  78 /* Group of ? */,
+  4075 /* Id of TKwin */,
+  7 /* Color of TKwin */,
+  78 /* Group of ? */,
+  4135 /* Id of TKwand */,
+  7 /* Color of TKwand */,
+  78 /* Group of ? */,
+  4007 /* Id of TKwor */,
+  7 /* Color of TKwor */,
+  78 /* Group of ? */,
+  4023 /* Id of TKwnot */,
+  7 /* Color of TKwnot */,
+  78 /* Group of ? */,
+  3987 /* Id of TKwreturn */,
+  7 /* Color of TKwreturn */,
+  78 /* Group of ? */,
+  4115 /* Id of TKwcontinue */,
+  7 /* Color of TKwcontinue */,
+  78 /* Group of ? */,
+  4123 /* Id of TKwbreak */,
+  7 /* Color of TKwbreak */,
+  78 /* Group of ? */,
+  4143 /* Id of TKwabort */,
+  7 /* Color of TKwabort */,
+  78 /* Group of ? */,
+  4127 /* Id of TKwassert */,
+  7 /* Color of TKwassert */,
+  78 /* Group of ? */,
+  4027 /* Id of TKwnew */,
+  7 /* Color of TKwnew */,
+  78 /* Group of ? */,
+  4051 /* Id of TKwisa */,
+  7 /* Color of TKwisa */,
+  78 /* Group of ? */,
+  4011 /* Id of TKwonce */,
+  7 /* Color of TKwonce */,
+  78 /* Group of ? */,
+  3979 /* Id of TKwsuper */,
+  7 /* Color of TKwsuper */,
+  78 /* Group of ? */,
+  3983 /* Id of TKwself */,
+  7 /* Color of TKwself */,
+  78 /* Group of ? */,
+  3971 /* Id of TKwtrue */,
+  7 /* Color of TKwtrue */,
+  78 /* Group of ? */,
+  4091 /* Id of TKwfalse */,
+  7 /* Color of TKwfalse */,
+  78 /* Group of ? */,
+  4019 /* Id of TKwnull */,
+  7 /* Color of TKwnull */,
+  78 /* Group of ? */,
+  4131 /* Id of TKwas */,
+  7 /* Color of TKwas */,
+  78 /* Group of ? */,
+  4015 /* Id of TKwnullable */,
+  7 /* Color of TKwnullable */,
+  78 /* Group of ? */,
+  4047 /* Id of TKwisset */,
+  7 /* Color of TKwisset */,
+  78 /* Group of ? */,
+  4043 /* Id of TKwlabel */,
+  7 /* Color of TKwlabel */,
+  78 /* Group of ? */,
+  3391 /* Id of TKwdebug */,
+  6 /* Color of TKwdebug */,
+  77 /* Group of ? */,
+  3383 /* Id of TOpar */,
+  6 /* Color of TOpar */,
+  77 /* Group of ? */,
+  3411 /* Id of TCpar */,
+  6 /* Color of TCpar */,
+  77 /* Group of ? */,
+  3387 /* Id of TObra */,
+  6 /* Color of TObra */,
+  77 /* Group of ? */,
+  3431 /* Id of TCbra */,
+  6 /* Color of TCbra */,
+  77 /* Group of ? */,
+  3419 /* Id of TComma */,
+  6 /* Color of TComma */,
+  77 /* Group of ? */,
+  3423 /* Id of TColumn */,
+  6 /* Color of TColumn */,
+  77 /* Group of ? */,
+  3379 /* Id of TQuad */,
+  6 /* Color of TQuad */,
+  77 /* Group of ? */,
+  3451 /* Id of TAssign */,
+  6 /* Color of TAssign */,
+  77 /* Group of ? */,
+  3331 /* Id of TokenOperator */,
+  6 /* Color of TokenOperator */,
+  76 /* Group of ? */,
+  3911 /* Id of TPluseq */,
+  7 /* Color of TPluseq */,
+  78 /* Group of ? */,
+  3931 /* Id of TMinuseq */,
+  7 /* Color of TMinuseq */,
+  78 /* Group of ? */,
+  4167 /* Id of TDotdotdot */,
+  7 /* Color of TDotdotdot */,
+  78 /* Group of ? */,
+  4171 /* Id of TDotdot */,
+  7 /* Color of TDotdot */,
+  78 /* Group of ? */,
+  4175 /* Id of TDot */,
+  7 /* Color of TDot */,
+  78 /* Group of ? */,
+  3915 /* Id of TPlus */,
+  7 /* Color of TPlus */,
+  78 /* Group of ? */,
+  3935 /* Id of TMinus */,
+  7 /* Color of TMinus */,
+  78 /* Group of ? */,
+  3903 /* Id of TStar */,
+  7 /* Color of TStar */,
+  78 /* Group of ? */,
+  3907 /* Id of TSlash */,
+  7 /* Color of TSlash */,
+  78 /* Group of ? */,
+  3919 /* Id of TPercent */,
+  7 /* Color of TPercent */,
+  78 /* Group of ? */,
+  4163 /* Id of TEq */,
+  7 /* Color of TEq */,
+  78 /* Group of ? */,
+  3927 /* Id of TNe */,
+  7 /* Color of TNe */,
+  78 /* Group of ? */,
+  3943 /* Id of TLt */,
+  7 /* Color of TLt */,
+  78 /* Group of ? */,
+  3951 /* Id of TLe */,
+  7 /* Color of TLe */,
+  78 /* Group of ? */,
+  3947 /* Id of TLl */,
+  7 /* Color of TLl */,
+  78 /* Group of ? */,
+  4147 /* Id of TGt */,
+  7 /* Color of TGt */,
+  78 /* Group of ? */,
+  4155 /* Id of TGe */,
+  7 /* Color of TGe */,
+  78 /* Group of ? */,
+  4151 /* Id of TGg */,
+  7 /* Color of TGg */,
+  78 /* Group of ? */,
+  3899 /* Id of TStarship */,
+  7 /* Color of TStarship */,
+  78 /* Group of ? */,
+  4183 /* Id of TBang */,
+  7 /* Color of TBang */,
+  78 /* Group of ? */,
+  3447 /* Id of TAt */,
+  6 /* Color of TAt */,
+  77 /* Group of ? */,
+  3427 /* Id of TClassid */,
+  6 /* Color of TClassid */,
+  77 /* Group of ? */,
+  3395 /* Id of TId */,
+  6 /* Color of TId */,
+  77 /* Group of ? */,
+  3443 /* Id of TAttrid */,
+  6 /* Color of TAttrid */,
+  77 /* Group of ? */,
+  3335 /* Id of TokenLiteral */,
+  6 /* Color of TokenLiteral */,
+  76 /* Group of ? */,
+  3923 /* Id of TNumber */,
+  7 /* Color of TNumber */,
+  78 /* Group of ? */,
+  4159 /* Id of TFloat */,
+  7 /* Color of TFloat */,
+  78 /* Group of ? */,
+  4179 /* Id of TChar */,
+  7 /* Color of TChar */,
+  78 /* Group of ? */,
+  3891 /* Id of TString */,
+  7 /* Color of TString */,
+  78 /* Group of ? */,
+  3895 /* Id of TStartString */,
+  7 /* Color of TStartString */,
+  78 /* Group of ? */,
+  3939 /* Id of TMidString */,
+  7 /* Color of TMidString */,
+  78 /* Group of ? */,
+  3407 /* Id of TEndString */,
+  6 /* Color of TEndString */,
+  77 /* Group of ? */,
+  3435 /* Id of TBadString */,
+  6 /* Color of TBadString */,
+  77 /* Group of ? */,
+  3439 /* Id of TBadChar */,
+  6 /* Color of TBadChar */,
+  77 /* Group of ? */,
+  3399 /* Id of TExternCodeSegment */,
+  6 /* Color of TExternCodeSegment */,
+  78 /* Group of ? */,
+  3675 /* Id of EOF */,
+  6 /* Color of EOF */,
+  77 /* Group of ? */,
+  4499 /* Id of AError */,
+  7 /* Color of AError */,
+  80 /* Group of ? */,
+  4707 /* Id of ALexerError */,
+  8 /* Color of ALexerError */,
+  83 /* Group of ? */,
+  4667 /* Id of AParserError */,
+  8 /* Color of AParserError */,
+  83 /* Group of ? */,
+  3767 /* Id of AModule */,
+  6 /* Color of AModule */,
+  7 /* Group of ? */,
+  78 /* Group of ? */,
+  3759 /* Id of AModuledecl */,
+  6 /* Color of AModuledecl */,
+  7 /* Group of ? */,
+  77 /* Group of ? */,
+  3787 /* Id of AImport */,
+  6 /* Color of AImport */,
+  77 /* Group of ? */,
+  4299 /* Id of AStdImport */,
+  7 /* Color of AStdImport */,
+  7 /* Group of ? */,
+  80 /* Group of ? */,
+  4383 /* Id of ANoImport */,
+  7 /* Color of ANoImport */,
+  7 /* Group of ? */,
+  80 /* Group of ? */,
+  3731 /* Id of AVisibility */,
+  6 /* Color of AVisibility */,
+  76 /* Group of ? */,
+  4343 /* Id of APublicVisibility */,
+  7 /* Color of APublicVisibility */,
+  79 /* Group of ? */,
+  4359 /* Id of APrivateVisibility */,
+  7 /* Color of APrivateVisibility */,
+  7 /* Group of ? */,
+  79 /* Group of ? */,
+  4351 /* Id of AProtectedVisibility */,
+  7 /* Color of AProtectedVisibility */,
+  7 /* Group of ? */,
+  79 /* Group of ? */,
+  4443 /* Id of AIntrudeVisibility */,
+  7 /* Color of AIntrudeVisibility */,
+  7 /* Group of ? */,
+  79 /* Group of ? */,
+  3831 /* Id of AClassdef */,
+  6 /* Color of AClassdef */,
+  9 /* Group of ? */,
+  86 /* Group of ? */,
+  4303 /* Id of AStdClassdef */,
+  7 /* Color of AStdClassdef */,
+  10 /* Group of ? */,
+  94 /* Group of ? */,
+  4283 /* Id of ATopClassdef */,
+  7 /* Color of ATopClassdef */,
+  91 /* Group of ? */,
+  4403 /* Id of AMainClassdef */,
+  7 /* Color of AMainClassdef */,
+  91 /* Group of ? */,
+  3827 /* Id of AClasskind */,
+  6 /* Color of AClasskind */,
+  79 /* Group of ? */,
+  4515 /* Id of AConcreteClasskind */,
+  7 /* Color of AConcreteClasskind */,
+  7 /* Group of ? */,
+  82 /* Group of ? */,
+  4587 /* Id of AAbstractClasskind */,
+  7 /* Color of AAbstractClasskind */,
+  7 /* Group of ? */,
+  82 /* Group of ? */,
+  4447 /* Id of AInterfaceClasskind */,
+  7 /* Color of AInterfaceClasskind */,
+  7 /* Group of ? */,
+  82 /* Group of ? */,
+  4507 /* Id of AEnumClasskind */,
+  7 /* Color of AEnumClasskind */,
+  7 /* Group of ? */,
+  82 /* Group of ? */,
+  4487 /* Id of AExternClasskind */,
+  7 /* Color of AExternClasskind */,
+  7 /* Group of ? */,
+  82 /* Group of ? */,
+  3791 /* Id of AFormaldef */,
+  6 /* Color of AFormaldef */,
+  8 /* Group of ? */,
+  79 /* Group of ? */,
+  3739 /* Id of ASuperclass */,
+  6 /* Color of ASuperclass */,
+  8 /* Group of ? */,
+  81 /* Group of ? */,
+  3751 /* Id of APropdef */,
+  6 /* Color of APropdef */,
+  7 /* Group of ? */,
+  80 /* Group of ? */,
+  4555 /* Id of AAttrPropdef */,
+  7 /* Color of AAttrPropdef */,
   12 /* Group of ? */,
-  88 /* Group of ? */,
-  3531 /* Id of AAbortExpr */,
-  8 /* Color of AAbortExpr */,
+  90 /* Group of ? */,
+  4399 /* Id of AMethPropdef */,
+  7 /* Color of AMethPropdef */,
   11 /* Group of ? */,
+  89 /* Group of ? */,
+  4763 /* Id of ADeferredMethPropdef */,
+  8 /* Color of ADeferredMethPropdef */,
+  15 /* Group of ? */,
+  99 /* Group of ? */,
+  4719 /* Id of AInternMethPropdef */,
+  8 /* Color of AInternMethPropdef */,
+  15 /* Group of ? */,
+  99 /* Group of ? */,
+  4747 /* Id of AExternPropdef */,
+  9 /* Color of AExternPropdef */,
+  15 /* Group of ? */,
+  98 /* Group of ? */,
+  4843 /* Id of AExternMethPropdef */,
+  10 /* Color of AExternMethPropdef */,
+  18 /* Group of ? */,
+  107 /* Group of ? */,
+  4775 /* Id of AConcreteMethPropdef */,
+  9 /* Color of AConcreteMethPropdef */,
+  15 /* Group of ? */,
+  101 /* Group of ? */,
+  4723 /* Id of AInitPropdef */,
+  8 /* Color of AInitPropdef */,
+  97 /* Group of ? */,
+  4851 /* Id of AConcreteInitPropdef */,
+  10 /* Color of AConcreteInitPropdef */,
+  19 /* Group of ? */,
+  110 /* Group of ? */,
+  4847 /* Id of AExternInitPropdef */,
+  10 /* Color of AExternInitPropdef */,
+  18 /* Group of ? */,
+  109 /* Group of ? */,
+  4839 /* Id of AMainMethPropdef */,
+  10 /* Color of AMainMethPropdef */,
+  106 /* Group of ? */,
+  3799 /* Id of AExternCalls */,
+  6 /* Color of AExternCalls */,
+  7 /* Group of ? */,
+  77 /* Group of ? */,
+  3803 /* Id of AExternCall */,
+  6 /* Color of AExternCall */,
+  79 /* Group of ? */,
+  4355 /* Id of APropExternCall */,
+  7 /* Color of APropExternCall */,
+  80 /* Group of ? */,
+  4703 /* Id of ALocalPropExternCall */,
+  8 /* Color of ALocalPropExternCall */,
+  7 /* Group of ? */,
+  83 /* Group of ? */,
+  4735 /* Id of AFullPropExternCall */,
+  8 /* Color of AFullPropExternCall */,
+  7 /* Group of ? */,
+  83 /* Group of ? */,
+  4727 /* Id of AInitPropExternCall */,
+  8 /* Color of AInitPropExternCall */,
+  7 /* Group of ? */,
+  83 /* Group of ? */,
+  4291 /* Id of ASuperExternCall */,
+  7 /* Color of ASuperExternCall */,
+  7 /* Group of ? */,
+  82 /* Group of ? */,
+  4527 /* Id of ACastExternCall */,
+  7 /* Color of ACastExternCall */,
+  82 /* Group of ? */,
+  4783 /* Id of ACastAsExternCall */,
+  8 /* Color of ACastAsExternCall */,
+  7 /* Group of ? */,
+  85 /* Group of ? */,
+  4803 /* Id of AAsNullableExternCall */,
+  8 /* Color of AAsNullableExternCall */,
+  7 /* Group of ? */,
+  85 /* Group of ? */,
+  4807 /* Id of AAsNotNullableExternCall */,
+  8 /* Color of AAsNotNullableExternCall */,
+  7 /* Group of ? */,
+  85 /* Group of ? */,
+  4271 /* Id of ATypePropdef */,
+  7 /* Color of ATypePropdef */,
+  10 /* Group of ? */,
+  88 /* Group of ? */,
+  3855 /* Id of AAble */,
+  6 /* Color of AAble */,
+  7 /* Group of ? */,
+  75 /* Group of ? */,
+  4335 /* Id of AReadAble */,
+  7 /* Color of AReadAble */,
+  9 /* Group of ? */,
+  80 /* Group of ? */,
+  4259 /* Id of AWriteAble */,
+  7 /* Color of AWriteAble */,
+  9 /* Group of ? */,
+  80 /* Group of ? */,
+  3771 /* Id of AMethid */,
+  6 /* Color of AMethid */,
+  77 /* Group of ? */,
+  4463 /* Id of AIdMethid */,
+  7 /* Color of AIdMethid */,
+  8 /* Group of ? */,
+  80 /* Group of ? */,
+  4363 /* Id of APlusMethid */,
+  7 /* Color of APlusMethid */,
+  8 /* Group of ? */,
+  80 /* Group of ? */,
+  4391 /* Id of AMinusMethid */,
+  7 /* Color of AMinusMethid */,
+  8 /* Group of ? */,
+  80 /* Group of ? */,
+  4311 /* Id of AStarMethid */,
+  7 /* Color of AStarMethid */,
+  8 /* Group of ? */,
+  80 /* Group of ? */,
+  4315 /* Id of ASlashMethid */,
+  7 /* Color of ASlashMethid */,
+  8 /* Group of ? */,
+  80 /* Group of ? */,
+  4371 /* Id of APercentMethid */,
+  7 /* Color of APercentMethid */,
+  8 /* Group of ? */,
+  80 /* Group of ? */,
+  4503 /* Id of AEqMethid */,
+  7 /* Color of AEqMethid */,
+  8 /* Group of ? */,
+  80 /* Group of ? */,
+  4387 /* Id of ANeMethid */,
+  7 /* Color of ANeMethid */,
+  8 /* Group of ? */,
+  80 /* Group of ? */,
+  4419 /* Id of ALeMethid */,
+  7 /* Color of ALeMethid */,
+  8 /* Group of ? */,
+  80 /* Group of ? */,
+  4479 /* Id of AGeMethid */,
+  7 /* Color of AGeMethid */,
+  8 /* Group of ? */,
+  80 /* Group of ? */,
+  4407 /* Id of ALtMethid */,
+  7 /* Color of ALtMethid */,
+  8 /* Group of ? */,
+  80 /* Group of ? */,
+  4471 /* Id of AGtMethid */,
+  7 /* Color of AGtMethid */,
+  8 /* Group of ? */,
+  80 /* Group of ? */,
+  4411 /* Id of ALlMethid */,
+  7 /* Color of ALlMethid */,
+  8 /* Group of ? */,
+  80 /* Group of ? */,
+  4475 /* Id of AGgMethid */,
+  7 /* Color of AGgMethid */,
+  8 /* Group of ? */,
+  80 /* Group of ? */,
+  4539 /* Id of ABraMethid */,
+  7 /* Color of ABraMethid */,
+  8 /* Group of ? */,
+  80 /* Group of ? */,
+  4307 /* Id of AStarshipMethid */,
+  7 /* Color of AStarshipMethid */,
+  8 /* Group of ? */,
+  80 /* Group of ? */,
+  4567 /* Id of AAssignMethid */,
+  7 /* Color of AAssignMethid */,
+  8 /* Group of ? */,
+  80 /* Group of ? */,
+  4535 /* Id of ABraassignMethid */,
+  7 /* Color of ABraassignMethid */,
+  8 /* Group of ? */,
+  80 /* Group of ? */,
+  3743 /* Id of ASignature */,
+  6 /* Color of ASignature */,
+  7 /* Group of ? */,
+  79 /* Group of ? */,
+  3755 /* Id of AParam */,
+  6 /* Color of AParam */,
+  10 /* Group of ? */,
+  83 /* Group of ? */,
+  3823 /* Id of AClosureDecl */,
+  6 /* Color of AClosureDecl */,
+  9 /* Group of ? */,
+  80 /* Group of ? */,
+  3735 /* Id of AType */,
+  6 /* Color of AType */,
+  9 /* Group of ? */,
   84 /* Group of ? */,
-  3691 /* Id of AContinueExpr */,
-  9 /* Color of AContinueExpr */,
+  3779 /* Id of ALabel */,
+  6 /* Color of ALabel */,
+  7 /* Group of ? */,
+  77 /* Group of ? */,
+  3811 /* Id of AExpr */,
+  7 /* Color of AExpr */,
+  81 /* Group of ? */,
+  4551 /* Id of ABlockExpr */,
+  8 /* Color of ABlockExpr */,
   12 /* Group of ? */,
-  88 /* Group of ? */,
-  3679 /* Id of ADoExpr */,
-  9 /* Color of ADoExpr */,
+  91 /* Group of ? */,
+  4263 /* Id of AVardeclExpr */,
+  8 /* Color of AVardeclExpr */,
+  13 /* Group of ? */,
+  92 /* Group of ? */,
+  4327 /* Id of AReturnExpr */,
+  8 /* Color of AReturnExpr */,
   12 /* Group of ? */,
-  88 /* Group of ? */,
-  3411 /* Id of AIfExpr */,
+  91 /* Group of ? */,
+  3775 /* Id of ALabelable */,
+  6 /* Color of ALabelable */,
+  7 /* Group of ? */,
+  75 /* Group of ? */,
+  4787 /* Id of ABreakExpr */,
+  9 /* Color of ABreakExpr */,
+  13 /* Group of ? */,
+  95 /* Group of ? */,
+  4599 /* Id of AAbortExpr */,
+  8 /* Color of AAbortExpr */,
+  12 /* Group of ? */,
+  91 /* Group of ? */,
+  4771 /* Id of AContinueExpr */,
+  9 /* Color of AContinueExpr */,
+  13 /* Group of ? */,
+  95 /* Group of ? */,
+  4759 /* Id of ADoExpr */,
+  9 /* Color of ADoExpr */,
+  13 /* Group of ? */,
+  95 /* Group of ? */,
+  4459 /* Id of AIfExpr */,
   8 /* Color of AIfExpr */,
-  11 /* Group of ? */,
-  84 /* Group of ? */,
-  3407 /* Id of AIfexprExpr */,
+  12 /* Group of ? */,
+  91 /* Group of ? */,
+  4455 /* Id of AIfexprExpr */,
   8 /* Color of AIfexprExpr */,
-  11 /* Group of ? */,
-  84 /* Group of ? */,
-  3571 /* Id of AWhileExpr */,
-  9 /* Color of AWhileExpr */,
   12 /* Group of ? */,
-  88 /* Group of ? */,
-  3627 /* Id of ALoopExpr */,
+  91 /* Group of ? */,
+  4639 /* Id of AWhileExpr */,
+  9 /* Color of AWhileExpr */,
+  13 /* Group of ? */,
+  95 /* Group of ? */,
+  4699 /* Id of ALoopExpr */,
   9 /* Color of ALoopExpr */,
-  12 /* Group of ? */,
-  88 /* Group of ? */,
-  3659 /* Id of AForExpr */,
-  9 /* Color of AForExpr */,
   13 /* Group of ? */,
-  90 /* Group of ? */,
-  3507 /* Id of AAssertExpr */,
+  95 /* Group of ? */,
+  4739 /* Id of AForExpr */,
+  9 /* Color of AForExpr */,
+  14 /* Group of ? */,
+  97 /* Group of ? */,
+  4575 /* Id of AAssertExpr */,
   8 /* Color of AAssertExpr */,
-  11 /* Group of ? */,
-  84 /* Group of ? */,
-  3503 /* Id of AAssignFormExpr */,
+  12 /* Group of ? */,
+  91 /* Group of ? */,
+  4571 /* Id of AAssignFormExpr */,
   8 /* Color of AAssignFormExpr */,
-  13 /* Group of ? */,
-  85 /* Group of ? */,
-  3311 /* Id of AReassignFormExpr */,
-  8 /* Color of AReassignFormExpr */,
   14 /* Group of ? */,
-  87 /* Group of ? */,
-  3615 /* Id of AOnceExpr */,
+  92 /* Group of ? */,
+  4331 /* Id of AReassignFormExpr */,
+  8 /* Color of AReassignFormExpr */,
+  15 /* Group of ? */,
+  94 /* Group of ? */,
+  4687 /* Id of AOnceExpr */,
   9 /* Color of AOnceExpr */,
-  12 /* Group of ? */,
-  87 /* Group of ? */,
-  3779 /* Id of ASendExpr */,
+  13 /* Group of ? */,
+  94 /* Group of ? */,
+  4859 /* Id of ASendExpr */,
   11 /* Color of ASendExpr */,
-  18 /* Group of ? */,
-  108 /* Group of ? */,
-  3803 /* Id of ABinopExpr */,
+  19 /* Group of ? */,
+  115 /* Group of ? */,
+  4887 /* Id of ABinopExpr */,
   12 /* Color of ABinopExpr */,
-  20 /* Group of ? */,
-  113 /* Group of ? */,
-  3483 /* Id of ABoolExpr */,
+  21 /* Group of ? */,
+  120 /* Group of ? */,
+  4547 /* Id of ABoolExpr */,
   8 /* Color of ABoolExpr */,
-  82 /* Group of ? */,
-  3607 /* Id of AOrExpr */,
+  89 /* Group of ? */,
+  4679 /* Id of AOrExpr */,
   9 /* Color of AOrExpr */,
-  11 /* Group of ? */,
-  85 /* Group of ? */,
-  3735 /* Id of AAndExpr */,
+  12 /* Group of ? */,
+  92 /* Group of ? */,
+  4815 /* Id of AAndExpr */,
   9 /* Color of AAndExpr */,
-  11 /* Group of ? */,
-  85 /* Group of ? */,
-  3611 /* Id of AOrElseExpr */,
+  12 /* Group of ? */,
+  92 /* Group of ? */,
+  4683 /* Id of AOrElseExpr */,
   9 /* Color of AOrElseExpr */,
-  11 /* Group of ? */,
-  85 /* Group of ? */,
-  3619 /* Id of ANotExpr */,
+  12 /* Group of ? */,
+  92 /* Group of ? */,
+  4691 /* Id of ANotExpr */,
   9 /* Color of ANotExpr */,
-  11 /* Group of ? */,
-  85 /* Group of ? */,
-  3859 /* Id of AEqExpr */,
+  12 /* Group of ? */,
+  92 /* Group of ? */,
+  4943 /* Id of AEqExpr */,
   13 /* Color of AEqExpr */,
-  119 /* Group of ? */,
-  3675 /* Id of AEeExpr */,
+  126 /* Group of ? */,
+  4755 /* Id of AEeExpr */,
   9 /* Color of AEeExpr */,
-  11 /* Group of ? */,
-  85 /* Group of ? */,
-  3827 /* Id of ANeExpr */,
+  12 /* Group of ? */,
+  92 /* Group of ? */,
+  4911 /* Id of ANeExpr */,
   13 /* Color of ANeExpr */,
-  119 /* Group of ? */,
-  3835 /* Id of ALtExpr */,
+  126 /* Group of ? */,
+  4919 /* Id of ALtExpr */,
   13 /* Color of ALtExpr */,
-  117 /* Group of ? */,
-  3843 /* Id of ALeExpr */,
+  124 /* Group of ? */,
+  4927 /* Id of ALeExpr */,
   13 /* Color of ALeExpr */,
-  117 /* Group of ? */,
-  3839 /* Id of ALlExpr */,
+  124 /* Group of ? */,
+  4923 /* Id of ALlExpr */,
   13 /* Color of ALlExpr */,
-  117 /* Group of ? */,
-  3847 /* Id of AGtExpr */,
+  124 /* Group of ? */,
+  4931 /* Id of AGtExpr */,
   13 /* Color of AGtExpr */,
-  117 /* Group of ? */,
-  3855 /* Id of AGeExpr */,
+  124 /* Group of ? */,
+  4939 /* Id of AGeExpr */,
   13 /* Color of AGeExpr */,
-  117 /* Group of ? */,
-  3851 /* Id of AGgExpr */,
+  124 /* Group of ? */,
+  4935 /* Id of AGgExpr */,
   13 /* Color of AGgExpr */,
-  117 /* Group of ? */,
-  3639 /* Id of AIsaExpr */,
+  124 /* Group of ? */,
+  4715 /* Id of AIsaExpr */,
   9 /* Color of AIsaExpr */,
-  11 /* Group of ? */,
-  85 /* Group of ? */,
-  3819 /* Id of APlusExpr */,
+  12 /* Group of ? */,
+  92 /* Group of ? */,
+  4903 /* Id of APlusExpr */,
   13 /* Color of APlusExpr */,
-  117 /* Group of ? */,
-  3831 /* Id of AMinusExpr */,
+  124 /* Group of ? */,
+  4915 /* Id of AMinusExpr */,
   13 /* Color of AMinusExpr */,
-  117 /* Group of ? */,
-  3807 /* Id of AStarshipExpr */,
+  124 /* Group of ? */,
+  4891 /* Id of AStarshipExpr */,
   13 /* Color of AStarshipExpr */,
-  117 /* Group of ? */,
-  3811 /* Id of AStarExpr */,
+  124 /* Group of ? */,
+  4895 /* Id of AStarExpr */,
   13 /* Color of AStarExpr */,
-  117 /* Group of ? */,
-  3815 /* Id of ASlashExpr */,
+  124 /* Group of ? */,
+  4899 /* Id of ASlashExpr */,
   13 /* Color of ASlashExpr */,
-  117 /* Group of ? */,
-  3823 /* Id of APercentExpr */,
+  124 /* Group of ? */,
+  4907 /* Id of APercentExpr */,
   13 /* Color of APercentExpr */,
-  117 /* Group of ? */,
-  3783 /* Id of AUminusExpr */,
+  124 /* Group of ? */,
+  4863 /* Id of AUminusExpr */,
   12 /* Color of AUminusExpr */,
-  20 /* Group of ? */,
-  113 /* Group of ? */,
-  3755 /* Id of ANewExpr */,
+  21 /* Group of ? */,
+  120 /* Group of ? */,
+  4835 /* Id of ANewExpr */,
   10 /* Color of ANewExpr */,
-  18 /* Group of ? */,
-  105 /* Group of ? */,
-  3495 /* Id of AAttrFormExpr */,
-  5 /* Color of AAttrFormExpr */,
-  18 /* Group of ? */,
-  93 /* Group of ? */,
-  3715 /* Id of AAttrExpr */,
+  19 /* Group of ? */,
+  112 /* Group of ? */,
+  4559 /* Id of AAttrFormExpr */,
+  6 /* Color of AAttrFormExpr */,
+  19 /* Group of ? */,
+  100 /* Group of ? */,
+  4795 /* Id of AAttrExpr */,
   8 /* Color of AAttrExpr */,
-  98 /* Group of ? */,
-  3719 /* Id of AAttrAssignExpr */,
+  105 /* Group of ? */,
+  4799 /* Id of AAttrAssignExpr */,
   9 /* Color of AAttrAssignExpr */,
-  84 /* Group of ? */,
-  3795 /* Id of ACallFormExpr */,
-  13 /* Color of ACallFormExpr */,
-  20 /* Group of ? */,
-  113 /* Group of ? */,
-  3711 /* Id of AAttrReassignExpr */,
+  91 /* Group of ? */,
+  4879 /* Id of ACallFormExpr */,
+  14 /* Color of ACallFormExpr */,
+  21 /* Group of ? */,
+  120 /* Group of ? */,
+  4867 /* Id of ASendReassignFormExpr */,
+  12 /* Color of ASendReassignFormExpr */,
+  89 /* Group of ? */,
+  4791 /* Id of AAttrReassignExpr */,
   9 /* Color of AAttrReassignExpr */,
-  84 /* Group of ? */,
-  3867 /* Id of ACallExpr */,
-  14 /* Color of ACallExpr */,
-  118 /* Group of ? */,
-  3871 /* Id of ACallAssignExpr */,
+  91 /* Group of ? */,
+  4951 /* Id of ACallExpr */,
+  15 /* Color of ACallExpr */,
+  125 /* Group of ? */,
+  4955 /* Id of ACallAssignExpr */,
   12 /* Color of ACallAssignExpr */,
-  84 /* Group of ? */,
-  3863 /* Id of ACallReassignExpr */,
-  14 /* Color of ACallReassignExpr */,
-  118 /* Group of ? */,
-  3775 /* Id of ASuperExpr */,
+  91 /* Group of ? */,
+  4947 /* Id of ACallReassignExpr */,
+  15 /* Color of ACallReassignExpr */,
+  125 /* Group of ? */,
+  4855 /* Id of ASuperExpr */,
   11 /* Color of ASuperExpr */,
-  19 /* Group of ? */,
-  106 /* Group of ? */,
-  3791 /* Id of AInitExpr */,
-  12 /* Color of AInitExpr */,
   20 /* Group of ? */,
   113 /* Group of ? */,
-  3799 /* Id of ABraFormExpr */,
-  13 /* Color of ABraFormExpr */,
-  20 /* Group of ? */,
-  111 /* Group of ? */,
-  3879 /* Id of ABraExpr */,
-  14 /* Color of ABraExpr */,
-  115 /* Group of ? */,
-  3883 /* Id of ABraAssignExpr */,
+  4875 /* Id of AInitExpr */,
+  12 /* Color of AInitExpr */,
+  21 /* Group of ? */,
+  120 /* Group of ? */,
+  4883 /* Id of ABraFormExpr */,
+  14 /* Color of ABraFormExpr */,
+  21 /* Group of ? */,
+  118 /* Group of ? */,
+  4963 /* Id of ABraExpr */,
+  15 /* Color of ABraExpr */,
+  122 /* Group of ? */,
+  4967 /* Id of ABraAssignExpr */,
   12 /* Color of ABraAssignExpr */,
-  84 /* Group of ? */,
-  3251 /* Id of AVarFormExpr */,
-  5 /* Color of AVarFormExpr */,
-  12 /* Group of ? */,
-  83 /* Group of ? */,
-  3875 /* Id of ABraReassignExpr */,
-  14 /* Color of ABraReassignExpr */,
-  115 /* Group of ? */,
-  3699 /* Id of AClosureCallExpr */,
+  91 /* Group of ? */,
+  4267 /* Id of AVarFormExpr */,
+  6 /* Color of AVarFormExpr */,
+  13 /* Group of ? */,
+  90 /* Group of ? */,
+  4959 /* Id of ABraReassignExpr */,
+  15 /* Color of ABraReassignExpr */,
+  122 /* Group of ? */,
+  4779 /* Id of AClosureCallExpr */,
   8 /* Color of AClosureCallExpr */,
-  14 /* Group of ? */,
-  100 /* Group of ? */,
-  3579 /* Id of AVarExpr */,
+  15 /* Group of ? */,
+  107 /* Group of ? */,
+  4647 /* Id of AVarExpr */,
   8 /* Color of AVarExpr */,
-  87 /* Group of ? */,
-  3583 /* Id of AVarAssignExpr */,
+  94 /* Group of ? */,
+  4651 /* Id of AVarAssignExpr */,
   9 /* Color of AVarAssignExpr */,
-  90 /* Group of ? */,
-  3575 /* Id of AVarReassignExpr */,
+  97 /* Group of ? */,
+  4643 /* Id of AVarReassignExpr */,
   9 /* Color of AVarReassignExpr */,
-  92 /* Group of ? */,
-  3319 /* Id of ARangeExpr */,
+  99 /* Group of ? */,
+  4339 /* Id of ARangeExpr */,
   8 /* Color of ARangeExpr */,
-  11 /* Group of ? */,
-  84 /* Group of ? */,
-  3687 /* Id of ACrangeExpr */,
+  12 /* Group of ? */,
+  91 /* Group of ? */,
+  4767 /* Id of ACrangeExpr */,
   9 /* Color of ACrangeExpr */,
-  89 /* Group of ? */,
-  3603 /* Id of AOrangeExpr */,
+  14 /* Group of ? */,
+  96 /* Group of ? */,
+  4675 /* Id of AOrangeExpr */,
   9 /* Color of AOrangeExpr */,
-  89 /* Group of ? */,
-  3515 /* Id of AArrayExpr */,
+  14 /* Group of ? */,
+  96 /* Group of ? */,
+  4583 /* Id of AArrayExpr */,
   8 /* Color of AArrayExpr */,
-  11 /* Group of ? */,
-  85 /* Group of ? */,
-  3303 /* Id of ASelfExpr */,
-  8 /* Color of ASelfExpr */,
   12 /* Group of ? */,
-  85 /* Group of ? */,
-  3651 /* Id of AImplicitSelfExpr */,
+  92 /* Group of ? */,
+  4323 /* Id of ASelfExpr */,
+  8 /* Color of ASelfExpr */,
+  13 /* Group of ? */,
+  92 /* Group of ? */,
+  4731 /* Id of AImplicitSelfExpr */,
   9 /* Color of AImplicitSelfExpr */,
-  89 /* Group of ? */,
-  3587 /* Id of ATrueExpr */,
+  96 /* Group of ? */,
+  4655 /* Id of ATrueExpr */,
   9 /* Color of ATrueExpr */,
-  11 /* Group of ? */,
-  85 /* Group of ? */,
-  3663 /* Id of AFalseExpr */,
+  12 /* Group of ? */,
+  92 /* Group of ? */,
+  4743 /* Id of AFalseExpr */,
   9 /* Color of AFalseExpr */,
-  11 /* Group of ? */,
-  85 /* Group of ? */,
-  3355 /* Id of ANullExpr */,
+  12 /* Group of ? */,
+  92 /* Group of ? */,
+  4379 /* Id of ANullExpr */,
   8 /* Color of ANullExpr */,
-  11 /* Group of ? */,
-  84 /* Group of ? */,
-  3403 /* Id of AIntExpr */,
+  12 /* Group of ? */,
+  91 /* Group of ? */,
+  4451 /* Id of AIntExpr */,
   8 /* Color of AIntExpr */,
-  11 /* Group of ? */,
-  84 /* Group of ? */,
-  3431 /* Id of AFloatExpr */,
+  12 /* Group of ? */,
+  91 /* Group of ? */,
+  4483 /* Id of AFloatExpr */,
   8 /* Color of AFloatExpr */,
-  11 /* Group of ? */,
-  84 /* Group of ? */,
-  3463 /* Id of ACharExpr */,
+  12 /* Group of ? */,
+  91 /* Group of ? */,
+  4523 /* Id of ACharExpr */,
   8 /* Color of ACharExpr */,
-  11 /* Group of ? */,
-  84 /* Group of ? */,
-  3275 /* Id of AStringFormExpr */,
+  12 /* Group of ? */,
+  91 /* Group of ? */,
+  4295 /* Id of AStringFormExpr */,
   8 /* Color of AStringFormExpr */,
-  84 /* Group of ? */,
-  3591 /* Id of AStringExpr */,
+  14 /* Group of ? */,
+  91 /* Group of ? */,
+  4659 /* Id of AStringExpr */,
   9 /* Color of AStringExpr */,
-  13 /* Group of ? */,
-  87 /* Group of ? */,
-  3595 /* Id of AStartStringExpr */,
+  95 /* Group of ? */,
+  4663 /* Id of AStartStringExpr */,
   9 /* Color of AStartStringExpr */,
-  13 /* Group of ? */,
-  87 /* Group of ? */,
-  3623 /* Id of AMidStringExpr */,
+  95 /* Group of ? */,
+  4695 /* Id of AMidStringExpr */,
   9 /* Color of AMidStringExpr */,
-  13 /* Group of ? */,
-  87 /* Group of ? */,
-  3671 /* Id of AEndStringExpr */,
+  95 /* Group of ? */,
+  4751 /* Id of AEndStringExpr */,
   9 /* Color of AEndStringExpr */,
-  13 /* Group of ? */,
-  87 /* Group of ? */,
-  3267 /* Id of ASuperstringExpr */,
+  95 /* Group of ? */,
+  4287 /* Id of ASuperstringExpr */,
   8 /* Color of ASuperstringExpr */,
-  12 /* Group of ? */,
-  85 /* Group of ? */,
-  3599 /* Id of AParExpr */,
+  13 /* Group of ? */,
+  92 /* Group of ? */,
+  4671 /* Id of AParExpr */,
   9 /* Color of AParExpr */,
-  86 /* Group of ? */,
-  3327 /* Id of AProxyExpr */,
+  13 /* Group of ? */,
+  93 /* Group of ? */,
+  4347 /* Id of AProxyExpr */,
   8 /* Color of AProxyExpr */,
-  11 /* Group of ? */,
-  82 /* Group of ? */,
-  3731 /* Id of AAsCastExpr */,
+  12 /* Group of ? */,
+  89 /* Group of ? */,
+  4811 /* Id of AAsCastExpr */,
   8 /* Color of AAsCastExpr */,
-  11 /* Group of ? */,
-  84 /* Group of ? */,
-  3511 /* Id of AAsNotnullExpr */,
+  12 /* Group of ? */,
+  91 /* Group of ? */,
+  4579 /* Id of AAsNotnullExpr */,
   8 /* Color of AAsNotnullExpr */,
-  11 /* Group of ? */,
-  84 /* Group of ? */,
-  3635 /* Id of AIssetAttrExpr */,
+  12 /* Group of ? */,
+  91 /* Group of ? */,
+  4711 /* Id of AIssetAttrExpr */,
   8 /* Color of AIssetAttrExpr */,
-  20 /* Group of ? */,
-  98 /* Group of ? */,
-  3135 /* Id of AAssignOp */,
-  7 /* Color of AAssignOp */,
-  73 /* Group of ? */,
-  3347 /* Id of APlusAssignOp */,
-  8 /* Color of APlusAssignOp */,
-  6 /* Group of ? */,
-  76 /* Group of ? */,
-  3371 /* Id of AMinusAssignOp */,
-  8 /* Color of AMinusAssignOp */,
-  6 /* Group of ? */,
+  21 /* Group of ? */,
+  105 /* Group of ? */,
+  3807 /* Id of AExprs */,
+  6 /* Color of AExprs */,
+  7 /* Group of ? */,
   76 /* Group of ? */,
-  3459 /* Id of AClosureDef */,
-  7 /* Color of AClosureDef */,
+  4511 /* Id of ADebugTypeExpr */,
+  8 /* Color of ADebugTypeExpr */,
   12 /* Group of ? */,
-  81 /* Group of ? */,
-  3119 /* Id of AClosureId */,
-  7 /* Color of AClosureId */,
-  73 /* Group of ? */,
-  3299 /* Id of ASimpleClosureId */,
-  8 /* Color of ASimpleClosureId */,
-  6 /* Group of ? */,
+  91 /* Group of ? */,
+  4415 /* Id of AListExprs */,
+  7 /* Color of AListExprs */,
+  80 /* Group of ? */,
+  4375 /* Id of AParExprs */,
+  7 /* Color of AParExprs */,
+  8 /* Group of ? */,
+  80 /* Group of ? */,
+  4543 /* Id of ABraExprs */,
+  7 /* Color of ABraExprs */,
+  8 /* Group of ? */,
+  80 /* Group of ? */,
+  3843 /* Id of AAssignOp */,
+  6 /* Color of AAssignOp */,
   76 /* Group of ? */,
-  3471 /* Id of ABreakClosureId */,
-  8 /* Color of ABreakClosureId */,
-  6 /* Group of ? */,
+  4367 /* Id of APlusAssignOp */,
+  7 /* Color of APlusAssignOp */,
+  7 /* Group of ? */,
+  79 /* Group of ? */,
+  4395 /* Id of AMinusAssignOp */,
+  7 /* Color of AMinusAssignOp */,
+  7 /* Group of ? */,
+  79 /* Group of ? */,
+  4519 /* Id of AClosureDef */,
+  7 /* Color of AClosureDef */,
+  13 /* Group of ? */,
+  86 /* Group of ? */,
+  3819 /* Id of AClosureId */,
+  6 /* Color of AClosureId */,
   76 /* Group of ? */,
-  3075 /* Id of AModuleName */,
-  7 /* Color of AModuleName */,
-  6 /* Group of ? */,
+  4319 /* Id of ASimpleClosureId */,
+  7 /* Color of ASimpleClosureId */,
+  7 /* Group of ? */,
+  79 /* Group of ? */,
+  4531 /* Id of ABreakClosureId */,
+  7 /* Color of ABreakClosureId */,
+  7 /* Group of ? */,
+  79 /* Group of ? */,
+  3763 /* Id of AModuleName */,
+  6 /* Color of AModuleName */,
+  7 /* Group of ? */,
+  77 /* Group of ? */,
+  3783 /* Id of AInLanguage */,
+  6 /* Color of AInLanguage */,
+  7 /* Group of ? */,
+  77 /* Group of ? */,
+  3795 /* Id of AExternCodeBlock */,
+  6 /* Color of AExternCodeBlock */,
+  7 /* Group of ? */,
+  78 /* Group of ? */,
+  3747 /* Id of AQualified */,
+  6 /* Color of AQualified */,
+  7 /* Group of ? */,
+  77 /* Group of ? */,
+  3815 /* Id of ADoc */,
+  6 /* Color of ADoc */,
+  7 /* Group of ? */,
+  77 /* Group of ? */,
+  3847 /* Id of AAnnotations */,
+  6 /* Color of AAnnotations */,
+  7 /* Group of ? */,
+  77 /* Group of ? */,
+  3851 /* Id of AAnnotation */,
+  6 /* Color of AAnnotation */,
+  7 /* Group of ? */,
+  77 /* Group of ? */,
+  3839 /* Id of AAtArg */,
+  6 /* Color of AAtArg */,
+  75 /* Group of ? */,
+  4279 /* Id of ATypeAtArg */,
+  7 /* Color of ATypeAtArg */,
+  7 /* Group of ? */,
+  78 /* Group of ? */,
+  4491 /* Id of AExprAtArg */,
+  7 /* Color of AExprAtArg */,
+  7 /* Group of ? */,
+  78 /* Group of ? */,
+  4563 /* Id of AAtAtArg */,
+  7 /* Color of AAtAtArg */,
+  78 /* Group of ? */,
+  3835 /* Id of AAtid */,
+  6 /* Color of AAtid */,
+  7 /* Group of ? */,
+  75 /* Group of ? */,
+  4467 /* Id of AIdAtid */,
+  7 /* Color of AIdAtid */,
+  79 /* Group of ? */,
+  4439 /* Id of AKwexternAtid */,
+  7 /* Color of AKwexternAtid */,
+  79 /* Group of ? */,
+  4431 /* Id of AKwinternAtid */,
+  7 /* Color of AKwinternAtid */,
+  79 /* Group of ? */,
+  4427 /* Id of AKwreadableAtid */,
+  7 /* Color of AKwreadableAtid */,
+  79 /* Group of ? */,
+  4423 /* Id of AKwwritableAtid */,
+  7 /* Color of AKwwritableAtid */,
+  79 /* Group of ? */,
+  4435 /* Id of AKwimportAtid */,
+  7 /* Color of AKwimportAtid */,
+  79 /* Group of ? */,
+  3455 /* Id of Start */,
+  6 /* Color of Start */,
+  7 /* Group of ? */,
+  75 /* Group of ? */,
+};
+const char LOCATE_parser___tables[] = "parser/tables.nit";
+const int SFT_parser___tables[3] = {
+  23 /* Id of TablesCapable */,
+  4 /* Color of TablesCapable */,
+  50 /* Group of ? */,
+};
+const char LOCATE_mmloader[] = "mmloader.nit";
+const int SFT_mmloader[5] = {
+  15 /* Group of ? */,
+  71 /* Group of ? */,
+  127 /* Id of ModuleLoader */,
+  4 /* Color of ModuleLoader */,
+  50 /* Group of ? */,
+};
+const char LOCATE_toolcontext[] = "toolcontext.nit";
+const int SFT_toolcontext[8] = {
+  3067 /* Id of Message */,
+  7 /* Color of Message */,
+  2 /* Group of ? */,
+  68 /* Group of ? */,
+  331 /* Id of ToolContext */,
+  5 /* Color of ToolContext */,
+  22 /* Group of ? */,
+  82 /* Group of ? */,
+};
+const char LOCATE_opts[] = "../lib/opts.nit";
+const int SFT_opts[35] = {
+  115 /* Id of Option */,
+  4 /* Color of Option */,
+  2 /* Group of ? */,
+  50 /* Group of ? */,
+  3035 /* Id of OptionText */,
+  5 /* Color of OptionText */,
+  68 /* Group of ? */,
+  3047 /* Id of OptionBool */,
+  5 /* Color of OptionBool */,
+  68 /* Group of ? */,
+  3043 /* Id of OptionCount */,
+  5 /* Color of OptionCount */,
+  68 /* Group of ? */,
+  3039 /* Id of OptionParameter */,
+  5 /* Color of OptionParameter */,
+  9 /* Group of ? */,
+  68 /* Group of ? */,
+  3471 /* Id of OptionString */,
+  6 /* Color of OptionString */,
   74 /* Group of ? */,
-  3059 /* Id of AQualified */,
-  7 /* Color of AQualified */,
-  6 /* Group of ? */,
+  3479 /* Id of OptionEnum */,
+  6 /* Color of OptionEnum */,
+  10 /* Group of ? */,
   74 /* Group of ? */,
-  3115 /* Id of ADoc */,
-  7 /* Color of ADoc */,
-  6 /* Group of ? */,
+  3475 /* Id of OptionInt */,
+  6 /* Color of OptionInt */,
   74 /* Group of ? */,
-  2775 /* Id of Start */,
-  7 /* Color of Start */,
-  6 /* Group of ? */,
-  73 /* Group of ? */,
-};
-const char *LOCATE_location = "./location.nit";
-const int SFT_location[8] = {
-  43 /* Id of SourceFile */,
-  4 /* Color of SourceFile */,
+  3483 /* Id of OptionArray */,
+  6 /* Color of OptionArray */,
+  10 /* Group of ? */,
+  74 /* Group of ? */,
+  111 /* Id of OptionContext */,
+  4 /* Color of OptionContext */,
   2 /* Group of ? */,
-  47 /* Group of ? */,
-  2199 /* Id of Location */,
-  6 /* Color of Location */,
+  50 /* Group of ? */,
+};
+const char LOCATE_primitive_info[] = "primitive_info.nit";
+const int SFT_primitive_info[8] = {
+  5 /* Group of ? */,
+  84 /* Group of ? */,
+  99 /* Id of PrimitiveInfo */,
+  4 /* Color of PrimitiveInfo */,
   2 /* Group of ? */,
+  50 /* Group of ? */,
   63 /* Group of ? */,
+  77 /* Group of ? */,
 };
-const char *LOCATE_standard = "./../lib/standard//standard.nit";
-const char *LOCATE_standard___environ = "./../lib/standard//environ.nit";
-const int SFT_standard___environ[2] = {
-  47 /* Group of ? */,
-  47 /* Group of ? */,
-};
-const char *LOCATE_standard___symbol = "./../lib/standard//symbol.nit";
-const int SFT_standard___symbol[5] = {
-  119 /* Group of ? */,
-  31 /* Id of Symbol */,
-  4 /* Color of Symbol */,
+const char LOCATE_syntax___extern_type_inheritance[] = "syntax/extern_type_inheritance.nit";
+const int SFT_syntax___extern_type_inheritance[2] = {
   2 /* Group of ? */,
-  48 /* Group of ? */,
+  75 /* Group of ? */,
 };
-const char *LOCATE_standard___string = "./../lib/standard//string.nit";
-const int SFT_standard___string[24] = {
-  3239 /* Id of AbstractString */,
-  12 /* Color of AbstractString */,
+const char LOCATE_syntax___extern_inline[] = "syntax/extern_inline.nit";
+const int SFT_syntax___extern_inline[15] = {
+  3235 /* Id of ExternCode */,
+  6 /* Color of ExternCode */,
   3 /* Group of ? */,
-  106 /* Group of ? */,
-  3535 /* Id of String */,
-  8 /* Color of String */,
-  120 /* Group of ? */,
-  3743 /* Id of Buffer */,
-  14 /* Color of Buffer */,
-  4 /* Group of ? */,
-  122 /* Group of ? */,
-  34 /* Group of ? */,
-  69 /* Group of ? */,
-  47 /* Group of ? */,
-  63 /* Group of ? */,
-  58 /* Group of ? */,
-  -5 /* Id of NativeString */,
-  4 /* Color of NativeString */,
-  48 /* Group of ? */,
-  35 /* Id of StringCapable */,
-  4 /* Color of StringCapable */,
-  47 /* Group of ? */,
+  80 /* Group of ? */,
   2 /* Group of ? */,
-  48 /* Group of ? */,
+  75 /* Group of ? */,
+  4 /* Group of ? */,
+  80 /* Group of ? */,
+  10 /* Group of ? */,
+  75 /* Group of ? */,
+  76 /* Group of ? */,
+  75 /* Group of ? */,
+  102 /* Group of ? */,
+  89 /* Group of ? */,
+  129 /* Group of ? */,
 };
-const char *LOCATE_standard___collection = "./../lib/standard//collection//collection.nit";
-const char *LOCATE_standard___collection___range = "./../lib/standard//collection//range.nit";
-const int SFT_standard___collection___range[8] = {
-  2059 /* Id of Range */,
-  7 /* Color of Range */,
+const char LOCATE_syntax___mmbuilder[] = "syntax/mmbuilder.nit";
+const int SFT_syntax___mmbuilder[69] = {
+  3299 /* Id of CSHSorter */,
+  5 /* Color of CSHSorter */,
+  56 /* Group of ? */,
+  130 /* Group of ? */,
+  82 /* Group of ? */,
+  157 /* Group of ? */,
+  50 /* Group of ? */,
+  19 /* Group of ? */,
+  3103 /* Id of MMSrcAncestor */,
+  5 /* Color of MMSrcAncestor */,
+  4 /* Group of ? */,
+  60 /* Group of ? */,
+  3691 /* Id of ClassBuilderVisitor */,
+  6 /* Color of ClassBuilderVisitor */,
+  7 /* Group of ? */,
+  84 /* Group of ? */,
+  3687 /* Id of ClassSpecializationBuilderVisitor */,
+  6 /* Color of ClassSpecializationBuilderVisitor */,
+  84 /* Group of ? */,
+  3695 /* Id of ClassAncestorBuilder */,
+  6 /* Color of ClassAncestorBuilder */,
+  84 /* Group of ? */,
+  3683 /* Id of ClassVerifierVisitor */,
+  6 /* Color of ClassVerifierVisitor */,
+  84 /* Group of ? */,
+  3467 /* Id of PropertyBuilderVisitor */,
+  6 /* Color of PropertyBuilderVisitor */,
+  84 /* Group of ? */,
+  3463 /* Id of PropertyVerifierVisitor */,
+  6 /* Color of PropertyVerifierVisitor */,
+  7 /* Group of ? */,
+  84 /* Group of ? */,
+  51 /* Id of SignatureBuilder */,
+  4 /* Color of SignatureBuilder */,
   2 /* Group of ? */,
+  50 /* Group of ? */,
+  50 /* Group of ? */,
   75 /* Group of ? */,
-  2207 /* Id of IteratorRange */,
-  5 /* Color of IteratorRange */,
-  2 /* Group of ? */,
-  52 /* Group of ? */,
-};
-const char *LOCATE_standard___collection___abstract_collection = "./../lib/standard//collection//abstract_collection.nit";
-const int SFT_standard___collection___abstract_collection[63] = {
-  283 /* Id of Collection */,
-  6 /* Color of Collection */,
-  65 /* Group of ? */,
-  2111 /* Id of NaiveCollection */,
-  7 /* Color of NaiveCollection */,
   75 /* Group of ? */,
-  199 /* Id of Iterator */,
-  4 /* Color of Iterator */,
-  48 /* Group of ? */,
-  2323 /* Id of Container */,
-  7 /* Color of Container */,
-  2 /* Group of ? */,
   75 /* Group of ? */,
-  2319 /* Id of ContainerIterator */,
-  5 /* Color of ContainerIterator */,
-  2 /* Group of ? */,
-  52 /* Group of ? */,
-  367 /* Id of RemovableCollection */,
-  8 /* Color of RemovableCollection */,
-  79 /* Group of ? */,
-  2779 /* Id of SimpleCollection */,
-  9 /* Color of SimpleCollection */,
-  93 /* Group of ? */,
-  3183 /* Id of Set */,
-  4 /* Color of Set */,
-  47 /* Group of ? */,
-  135 /* Id of MapRead */,
-  4 /* Color of MapRead */,
-  47 /* Group of ? */,
-  2139 /* Id of Map */,
-  6 /* Color of Map */,
-  59 /* Group of ? */,
-  139 /* Id of MapIterator */,
-  4 /* Color of MapIterator */,
-  47 /* Group of ? */,
-  2135 /* Id of MapKeysIterator */,
-  5 /* Color of MapKeysIterator */,
-  2 /* Group of ? */,
-  52 /* Group of ? */,
-  2131 /* Id of MapValuesIterator */,
-  5 /* Color of MapValuesIterator */,
-  2 /* Group of ? */,
-  52 /* Group of ? */,
-  351 /* Id of SequenceRead */,
-  7 /* Color of SequenceRead */,
+  7 /* Group of ? */,
   75 /* Group of ? */,
-  3187 /* Id of Sequence */,
-  11 /* Color of Sequence */,
-  96 /* Group of ? */,
-  2223 /* Id of IndexedIterator */,
-  5 /* Color of IndexedIterator */,
-  52 /* Group of ? */,
-  2991 /* Id of CoupleMap */,
-  7 /* Color of CoupleMap */,
-  63 /* Group of ? */,
-  2315 /* Id of CoupleMapIterator */,
-  5 /* Color of CoupleMapIterator */,
-  2 /* Group of ? */,
-  52 /* Group of ? */,
-  267 /* Id of Couple */,
-  4 /* Color of Couple */,
-  2 /* Group of ? */,
-  47 /* Group of ? */,
+  75 /* Group of ? */,
+  90 /* Group of ? */,
+  7 /* Group of ? */,
+  75 /* Group of ? */,
+  7 /* Group of ? */,
+  75 /* Group of ? */,
+  75 /* Group of ? */,
+  9 /* Group of ? */,
+  82 /* Group of ? */,
+  9 /* Group of ? */,
+  82 /* Group of ? */,
+  103 /* Group of ? */,
+  9 /* Group of ? */,
+  82 /* Group of ? */,
+  3063 /* Id of MethidAccumulator */,
+  5 /* Color of MethidAccumulator */,
+  3 /* Group of ? */,
+  55 /* Group of ? */,
+  7 /* Group of ? */,
+  75 /* Group of ? */,
+  75 /* Group of ? */,
+  7 /* Group of ? */,
+  75 /* Group of ? */,
+  7 /* Group of ? */,
+  75 /* Group of ? */,
+  75 /* Group of ? */,
+  77 /* Group of ? */,
 };
-const char *LOCATE_standard___kernel = "./../lib/standard//kernel.nit";
-const int SFT_standard___kernel[27] = {
-  3 /* Id of Object */,
-  3 /* Color of Object */,
-  18 /* Group of ? */,
-  27 /* Id of Sys */,
-  4 /* Color of Sys */,
-  52 /* Group of ? */,
-  275 /* Id of Comparable */,
-  5 /* Color of Comparable */,
-  52 /* Group of ? */,
-  2295 /* Id of Discrete */,
-  6 /* Color of Discrete */,
-  63 /* Group of ? */,
-  -13 /* Id of Bool */,
-  4 /* Color of Bool */,
-  47 /* Group of ? */,
-  -9 /* Id of Float */,
-  4 /* Color of Float */,
-  48 /* Group of ? */,
-  -29 /* Id of Int */,
-  7 /* Color of Int */,
-  72 /* Group of ? */,
-  -33 /* Id of Char */,
-  7 /* Color of Char */,
-  69 /* Group of ? */,
-  -1 /* Id of Pointer */,
-  4 /* Color of Pointer */,
-  47 /* Group of ? */,
+const char LOCATE_nit_version[] = "nit_version.nit";
+const int SFT_nit_version[1] = {
+  17 /* Group of ? */,
 };
-const char *LOCATE_standard___collection___list = "./../lib/standard//collection//list.nit";
-const int SFT_standard___collection___list[12] = {
-  3555 /* Id of List */,
-  12 /* Color of List */,
+const char LOCATE_global___cha_analysis[] = "global/cha_analysis.nit";
+const int SFT_global___cha_analysis[12] = {
+  3295 /* Id of ChaContext */,
+  5 /* Color of ChaContext */,
   2 /* Group of ? */,
-  106 /* Group of ? */,
-  2855 /* Id of ListIterator */,
-  6 /* Color of ListIterator */,
+  53 /* Group of ? */,
+  287 /* Id of ChaBuilder */,
+  4 /* Color of ChaBuilder */,
   2 /* Group of ? */,
-  54 /* Group of ? */,
-  2851 /* Id of ListNode */,
-  8 /* Color of ListNode */,
+  50 /* Group of ? */,
+  3291 /* Id of ChaVisitor */,
+  5 /* Color of ChaVisitor */,
   3 /* Group of ? */,
-  79 /* Group of ? */,
+  58 /* Group of ? */,
 };
-const char *LOCATE_standard___collection___sorter = "./../lib/standard//collection//sorter.nit";
-const int SFT_standard___collection___sorter[6] = {
-  299 /* Id of AbstractSorter */,
-  4 /* Color of AbstractSorter */,
-  47 /* Group of ? */,
-  2335 /* Id of ComparableSorter */,
-  5 /* Color of ComparableSorter */,
-  54 /* Group of ? */,
+const char LOCATE_global___reachable_method_analysis[] = "global/reachable_method_analysis.nit";
+const int SFT_global___reachable_method_analysis[8] = {
+  10 /* Group of ? */,
+  76 /* Group of ? */,
+  71 /* Id of ReachableMethodAnalysis */,
+  4 /* Color of ReachableMethodAnalysis */,
+  50 /* Group of ? */,
+  3247 /* Id of DefaultReachableMethodAnalysis */,
+  5 /* Color of DefaultReachableMethodAnalysis */,
+  53 /* Group of ? */,
 };
-const char *LOCATE_standard___collection___array = "./../lib/standard//collection//array.nit";
-const int SFT_standard___collection___array[43] = {
-  3039 /* Id of AbstractArrayRead */,
-  10 /* Color of AbstractArrayRead */,
-  2 /* Group of ? */,
-  83 /* Group of ? */,
-  3567 /* Id of AbstractArray */,
-  13 /* Color of AbstractArray */,
-  118 /* Group of ? */,
-  3747 /* Id of Array */,
-  4 /* Color of Array */,
+const char LOCATE_program[] = "program.nit";
+const int SFT_program[8] = {
+  38 /* Group of ? */,
+  104 /* Group of ? */,
+  91 /* Id of Program */,
+  4 /* Color of Program */,
   3 /* Group of ? */,
-  47 /* Group of ? */,
-  3031 /* Id of ArrayIterator */,
-  6 /* Color of ArrayIterator */,
-  2 /* Group of ? */,
-  54 /* Group of ? */,
-  3563 /* Id of ArraySet */,
-  10 /* Color of ArraySet */,
-  2 /* Group of ? */,
-  96 /* Group of ? */,
-  2363 /* Id of ArraySetIterator */,
-  5 /* Color of ArraySetIterator */,
-  2 /* Group of ? */,
-  52 /* Group of ? */,
-  3235 /* Id of ArrayMap */,
-  8 /* Color of ArrayMap */,
-  2 /* Group of ? */,
-  65 /* Group of ? */,
-  3027 /* Id of ArrayMapKeys */,
-  9 /* Color of ArrayMapKeys */,
-  2 /* Group of ? */,
-  83 /* Group of ? */,
-  3023 /* Id of ArrayMapValues */,
-  9 /* Color of ArrayMapValues */,
-  2 /* Group of ? */,
-  83 /* Group of ? */,
-  47 /* Group of ? */,
-  64 /* Group of ? */,
-  295 /* Id of ArrayCapable */,
-  5 /* Color of ArrayCapable */,
-  56 /* Group of ? */,
-  123 /* Id of NativeArray */,
-  4 /* Color of NativeArray */,
-  47 /* Group of ? */,
+  57 /* Group of ? */,
+  25 /* Group of ? */,
+  145 /* Group of ? */,
 };
-const char *LOCATE_standard___collection___hash_collection = "./../lib/standard//collection//hash_collection.nit";
-const int SFT_standard___collection___hash_collection[38] = {
-  2271 /* Id of HashCollection */,
-  7 /* Color of HashCollection */,
-  2 /* Group of ? */,
-  83 /* Group of ? */,
-  251 /* Id of HashNode */,
-  4 /* Color of HashNode */,
-  2 /* Group of ? */,
-  47 /* Group of ? */,
-  2971 /* Id of HashMap */,
-  8 /* Color of HashMap */,
-  9 /* Group of ? */,
-  63 /* Group of ? */,
-  2967 /* Id of HashMapKeys */,
-  9 /* Color of HashMapKeys */,
-  2 /* Group of ? */,
-  83 /* Group of ? */,
-  2963 /* Id of HashMapValues */,
-  9 /* Color of HashMapValues */,
-  2 /* Group of ? */,
-  83 /* Group of ? */,
-  2263 /* Id of HashMapNode */,
-  5 /* Color of HashMapNode */,
-  7 /* Group of ? */,
-  55 /* Group of ? */,
-  2267 /* Id of HashMapIterator */,
-  5 /* Color of HashMapIterator */,
+const char LOCATE_global___rta_analysis[] = "global/rta_analysis.nit";
+const int SFT_global___rta_analysis[12] = {
+  363 /* Id of RtaContext */,
+  6 /* Color of RtaContext */,
   2 /* Group of ? */,
-  52 /* Group of ? */,
-  3559 /* Id of HashSet */,
-  10 /* Color of HashSet */,
-  48 /* Group of ? */,
-  2255 /* Id of HashSetNode */,
-  5 /* Color of HashSetNode */,
   55 /* Group of ? */,
-  2259 /* Id of HashSetIterator */,
-  5 /* Color of HashSetIterator */,
+  63 /* Id of RtaBuilder */,
+  4 /* Color of RtaBuilder */,
   2 /* Group of ? */,
-  52 /* Group of ? */,
-};
-const char *LOCATE_standard___hash = "./../lib/standard//hash.nit";
-const int SFT_standard___hash[1] = {
-  40 /* Group of ? */,
-};
-const char *LOCATE_standard___time = "./../lib/standard//time.nit";
-const int SFT_standard___time[1] = {
-  17 /* Group of ? */,
+  50 /* Group of ? */,
+  359 /* Id of RtaVisitor */,
+  5 /* Color of RtaVisitor */,
+  3 /* Group of ? */,
+  58 /* Group of ? */,
 };
-const char *LOCATE_standard___file = "./../lib/standard//file.nit";
-const int SFT_standard___file[33] = {
-  27 /* Group of ? */,
-  2283 /* Id of FStream */,
-  8 /* Color of FStream */,
+const char LOCATE_global___instantiated_type_analysis[] = "global/instantiated_type_analysis.nit";
+const int SFT_global___instantiated_type_analysis[8] = {
   2 /* Group of ? */,
   53 /* Group of ? */,
-  3223 /* Id of IFStream */,
-  9 /* Color of IFStream */,
-  6 /* Group of ? */,
-  73 /* Group of ? */,
-  2811 /* Id of OFStream */,
-  7 /* Color of OFStream */,
-  4 /* Group of ? */,
-  62 /* Group of ? */,
-  3539 /* Id of Stdin */,
-  10 /* Color of Stdin */,
-  78 /* Group of ? */,
-  3175 /* Id of Stdout */,
-  9 /* Color of Stdout */,
-  67 /* Group of ? */,
-  3179 /* Id of Stderr */,
-  9 /* Color of Stderr */,
-  67 /* Group of ? */,
-  126 /* Group of ? */,
+  191 /* Id of InstantiatedTypeAnalysis */,
+  5 /* Color of InstantiatedTypeAnalysis */,
+  53 /* Group of ? */,
+  3259 /* Id of DefaultInstantiatedTypeAnalysis */,
+  6 /* Color of DefaultInstantiatedTypeAnalysis */,
   55 /* Group of ? */,
-  -25 /* Id of FileStat */,
-  5 /* Color of FileStat */,
-  48 /* Group of ? */,
-  -21 /* Id of NativeFile */,
-  5 /* Color of NativeFile */,
-  48 /* Group of ? */,
-  119 /* Id of NativeFileCapable */,
-  4 /* Color of NativeFileCapable */,
-  47 /* Group of ? */,
 };
-const char *LOCATE_standard___stream = "./../lib/standard//stream.nit";
-const int SFT_standard___stream[31] = {
-  215 /* Id of IOS */,
-  5 /* Color of IOS */,
-  56 /* Group of ? */,
-  2227 /* Id of IStream */,
-  7 /* Color of IStream */,
-  62 /* Group of ? */,
-  2107 /* Id of OStream */,
-  6 /* Color of OStream */,
-  59 /* Group of ? */,
-  3015 /* Id of BufferedIStream */,
-  6 /* Color of BufferedIStream */,
-  4 /* Group of ? */,
-  69 /* Group of ? */,
-  2879 /* Id of IOStream */,
-  10 /* Color of IOStream */,
-  75 /* Group of ? */,
-  2287 /* Id of FDStream */,
-  4 /* Color of FDStream */,
+const char LOCATE_global___reachable_as_init_impl[] = "global/reachable_as_init_impl.nit";
+const int SFT_global___reachable_as_init_impl[12] = {
+  79 /* Id of ReachableAsInitBuilder */,
+  4 /* Color of ReachableAsInitBuilder */,
   2 /* Group of ? */,
-  47 /* Group of ? */,
-  2979 /* Id of FDIStream */,
-  9 /* Color of FDIStream */,
-  4 /* Group of ? */,
-  69 /* Group of ? */,
-  2975 /* Id of FDOStream */,
-  8 /* Color of FDOStream */,
+  50 /* Group of ? */,
+  2999 /* Id of ReachableAsInitAnalysisImpl */,
+  5 /* Color of ReachableAsInitAnalysisImpl */,
+  2 /* Group of ? */,
+  52 /* Group of ? */,
+  3015 /* Id of RAIVisitor */,
+  5 /* Color of RAIVisitor */,
   3 /* Group of ? */,
-  53 /* Group of ? */,
-  3231 /* Id of FDIOStream */,
-  11 /* Color of FDIOStream */,
-  71 /* Group of ? */,
+  58 /* Group of ? */,
 };
-const char *LOCATE_standard___string_search = "./../lib/standard//string_search.nit";
-const int SFT_standard___string_search[12] = {
-  103 /* Id of Pattern */,
-  4 /* Color of Pattern */,
-  47 /* Group of ? */,
-  2355 /* Id of BM_Pattern */,
-  5 /* Color of BM_Pattern */,
-  2 /* Group of ? */,
+const char LOCATE_global___reachable_as_init[] = "global/reachable_as_init.nit";
+const int SFT_global___reachable_as_init[8] = {
+  7 /* Group of ? */,
+  69 /* Group of ? */,
+  83 /* Id of ReachableAsInitAnalysis */,
+  4 /* Color of ReachableAsInitAnalysis */,
+  50 /* Group of ? */,
+  3255 /* Id of DefaultReachableAsInitAnalysis */,
+  5 /* Color of DefaultReachableAsInitAnalysis */,
   52 /* Group of ? */,
-  131 /* Id of Match */,
-  4 /* Color of Match */,
-  2 /* Group of ? */,
-  47 /* Group of ? */,
-  135 /* Group of ? */,
 };
-const char *LOCATE_standard___exec = "./../lib/standard//exec.nit";
-const int SFT_standard___exec[20] = {
-  95 /* Id of Process */,
-  4 /* Color of Process */,
-  2 /* Group of ? */,
-  47 /* Group of ? */,
-  2871 /* Id of IProcess */,
-  9 /* Color of IProcess */,
-  4 /* Group of ? */,
-  72 /* Group of ? */,
-  2807 /* Id of OProcess */,
-  8 /* Color of OProcess */,
-  3 /* Group of ? */,
-  69 /* Group of ? */,
-  3211 /* Id of IOProcess */,
-  11 /* Color of IOProcess */,
-  76 /* Group of ? */,
-  47 /* Group of ? */,
-  59 /* Group of ? */,
-  -17 /* Id of NativeProcess */,
-  5 /* Color of NativeProcess */,
-  48 /* Group of ? */,
-};
-const char *LOCATE_standard___math = "./../lib/standard//math.nit";
-const int SFT_standard___math[4] = {
-  86 /* Group of ? */,
-  59 /* Group of ? */,
-  74 /* Group of ? */,
-  41 /* Group of ? */,
-};
-const char *LOCATE_parser___tables = "./parser//tables.nit";
-const int SFT_parser___tables[3] = {
-  23 /* Id of TablesCapable */,
-  4 /* Color of TablesCapable */,
-  47 /* Group of ? */,
-};
-const char *LOCATE_mmloader = "./mmloader.nit";
-const int SFT_mmloader[11] = {
-  2123 /* Id of Message */,
-  6 /* Color of Message */,
-  2 /* Group of ? */,
-  63 /* Group of ? */,
-  327 /* Id of ToolContext */,
-  5 /* Color of ToolContext */,
-  16 /* Group of ? */,
-  78 /* Group of ? */,
-  127 /* Id of ModuleLoader */,
-  4 /* Color of ModuleLoader */,
-  47 /* Group of ? */,
-};
-const char *LOCATE_metamodel = "./metamodel//metamodel.nit";
-const char *LOCATE_metamodel___vararg = "./metamodel//vararg.nit";
-const int SFT_metamodel___vararg[2] = {
+const char LOCATE_global___reachable_from_init_method_analysis_impl[] = "global/reachable_from_init_method_analysis_impl.nit";
+const int SFT_global___reachable_from_init_method_analysis_impl[12] = {
+  87 /* Id of RFIMABuilder */,
+  4 /* Color of RFIMABuilder */,
   2 /* Group of ? */,
   50 /* Group of ? */,
-};
-const char *LOCATE_metamodel___genericity = "./metamodel//genericity.nit";
-const int SFT_metamodel___genericity[11] = {
-  4 /* Group of ? */,
-  52 /* Group of ? */,
-  59 /* Group of ? */,
-  2827 /* Id of MMTypeGeneric */,
-  6 /* Color of MMTypeGeneric */,
-  4 /* Group of ? */,
-  77 /* Group of ? */,
-  2831 /* Id of MMTypeFormalParameter */,
-  6 /* Color of MMTypeFormalParameter */,
-  5 /* Group of ? */,
-  79 /* Group of ? */,
-};
-const char *LOCATE_metamodel___type_formal = "./metamodel//type_formal.nit";
-const int SFT_metamodel___type_formal[5] = {
-  60 /* Group of ? */,
-  2151 /* Id of MMTypeFormal */,
-  5 /* Color of MMTypeFormal */,
+  3011 /* Id of RFIMAContext */,
+  5 /* Color of RFIMAContext */,
+  2 /* Group of ? */,
+  53 /* Group of ? */,
+  3007 /* Id of RFIMAVisitor */,
+  5 /* Color of RFIMAVisitor */,
   3 /* Group of ? */,
-  75 /* Group of ? */,
+  58 /* Group of ? */,
 };
-const char *LOCATE_metamodel___inheritance = "./metamodel//inheritance.nit";
-const int SFT_metamodel___inheritance[19] = {
-  47 /* Group of ? */,
+const char LOCATE_global___reachable_from_init_method_analysis[] = "global/reachable_from_init_method_analysis.nit";
+const int SFT_global___reachable_from_init_method_analysis[8] = {
+  13 /* Group of ? */,
+  85 /* Group of ? */,
+  75 /* Id of ReachableFromInitMethodAnalysis */,
+  4 /* Color of ReachableFromInitMethodAnalysis */,
   50 /* Group of ? */,
-  6 /* Group of ? */,
-  58 /* Group of ? */,
+  3251 /* Id of DefaultReachableFromInitMethodAnalysis */,
+  5 /* Color of DefaultReachableFromInitMethodAnalysis */,
+  53 /* Group of ? */,
+};
+const char LOCATE_global___dead_method_removal[] = "global/dead_method_removal.nit";
+const int SFT_global___dead_method_removal[3] = {
+  8 /* Group of ? */,
+  72 /* Group of ? */,
   50 /* Group of ? */,
-  47 /* Group of ? */,
-  2183 /* Id of MMImplicitLocalClass */,
-  5 /* Color of MMImplicitLocalClass */,
-  117 /* Group of ? */,
-  2171 /* Id of MMRefineAncestor */,
-  5 /* Color of MMRefineAncestor */,
-  4 /* Group of ? */,
-  57 /* Group of ? */,
-  2167 /* Id of MMSpecAncestor */,
-  5 /* Color of MMSpecAncestor */,
-  57 /* Group of ? */,
-  2187 /* Id of MMDefaultAncestor */,
-  5 /* Color of MMDefaultAncestor */,
-  57 /* Group of ? */,
 };
-const char *LOCATE_metamodel___static_type = "./metamodel//static_type.nit";
-const int SFT_metamodel___static_type[48] = {
-  9 /* Group of ? */,
-  74 /* Group of ? */,
-  2 /* Group of ? */,
-  51 /* Group of ? */,
-  151 /* Id of MMParam */,
-  4 /* Color of MMParam */,
-  2 /* Group of ? */,
-  47 /* Group of ? */,
-  147 /* Id of MMSignature */,
-  4 /* Color of MMSignature */,
-  3 /* Group of ? */,
-  56 /* Group of ? */,
-  2 /* Group of ? */,
-  48 /* Group of ? */,
-  191 /* Id of MMClosure */,
-  4 /* Color of MMClosure */,
-  2 /* Group of ? */,
-  47 /* Group of ? */,
-  195 /* Id of MMAncestor */,
-  4 /* Color of MMAncestor */,
-  2 /* Group of ? */,
-  48 /* Group of ? */,
-  143 /* Id of MMType */,
-  4 /* Color of MMType */,
-  2 /* Group of ? */,
-  61 /* Group of ? */,
-  2175 /* Id of MMNullableType */,
-  5 /* Color of MMNullableType */,
-  3 /* Group of ? */,
-  75 /* Group of ? */,
-  2155 /* Id of MMTypeClass */,
-  5 /* Color of MMTypeClass */,
-  3 /* Group of ? */,
-  75 /* Group of ? */,
-  2823 /* Id of MMTypeSimpleClass */,
-  6 /* Color of MMTypeSimpleClass */,
-  77 /* Group of ? */,
-  2147 /* Id of MMTypeNone */,
-  5 /* Color of MMTypeNone */,
-  3 /* Group of ? */,
-  75 /* Group of ? */,
-  2 /* Group of ? */,
-  54 /* Group of ? */,
-  167 /* Id of MMImportedCast */,
-  4 /* Color of MMImportedCast */,
+const char LOCATE_global___inline_get_and_set[] = "global/inline_get_and_set.nit";
+const int SFT_global___inline_get_and_set[6] = {
+  11 /* Group of ? */,
+  80 /* Group of ? */,
+  3163 /* Id of InlineGetSetVisitor */,
+  5 /* Color of InlineGetSetVisitor */,
   3 /* Group of ? */,
-  61 /* Group of ? */,
-  85 /* Group of ? */,
+  58 /* Group of ? */,
 };
-const char *LOCATE_metamodel___abstractmetamodel = "./metamodel//abstractmetamodel.nit";
-const int SFT_metamodel___abstractmetamodel[41] = {
-  187 /* Id of MMContext */,
-  4 /* Color of MMContext */,
-  2 /* Group of ? */,
-  48 /* Group of ? */,
-  183 /* Id of MMDirectory */,
-  4 /* Color of MMDirectory */,
-  2 /* Group of ? */,
-  47 /* Group of ? */,
-  155 /* Id of MMModule */,
-  4 /* Color of MMModule */,
+const char LOCATE_global___remove_out_of_init_get_test[] = "global/remove_out_of_init_get_test.nit";
+const int SFT_global___remove_out_of_init_get_test[10] = {
+  12 /* Group of ? */,
+  82 /* Group of ? */,
+  3155 /* Id of IssetCounter */,
+  5 /* Color of IssetCounter */,
   3 /* Group of ? */,
-  56 /* Group of ? */,
-  175 /* Id of MMGlobalClass */,
-  4 /* Color of MMGlobalClass */,
-  2 /* Group of ? */,
-  48 /* Group of ? */,
-  163 /* Id of MMLocalClass */,
-  4 /* Color of MMLocalClass */,
-  11 /* Group of ? */,
-  78 /* Group of ? */,
-  171 /* Id of MMGlobalProperty */,
-  4 /* Color of MMGlobalProperty */,
-  2 /* Group of ? */,
-  49 /* Group of ? */,
-  159 /* Id of MMLocalProperty */,
-  4 /* Color of MMLocalProperty */,
-  4 /* Group of ? */,
-  54 /* Group of ? */,
-  2195 /* Id of MMAttribute */,
-  5 /* Color of MMAttribute */,
-  70 /* Group of ? */,
-  179 /* Id of MMExplicitImport */,
-  4 /* Color of MMExplicitImport */,
+  58 /* Group of ? */,
+  3219 /* Id of GetterTestRemover */,
+  5 /* Color of GetterTestRemover */,
   3 /* Group of ? */,
-  51 /* Group of ? */,
-  2179 /* Id of MMMethod */,
-  5 /* Color of MMMethod */,
-  86 /* Group of ? */,
-  2191 /* Id of MMConcreteClass */,
-  5 /* Color of MMConcreteClass */,
-  121 /* Group of ? */,
-};
-const char *LOCATE_metamodel___partial_order = "./metamodel//partial_order.nit";
-const int SFT_metamodel___partial_order[8] = {
-  2079 /* Id of PartialOrder */,
-  7 /* Color of PartialOrder */,
-  2 /* Group of ? */,
-  75 /* Group of ? */,
-  107 /* Id of PartialOrderElement */,
-  4 /* Color of PartialOrderElement */,
-  2 /* Group of ? */,
-  47 /* Group of ? */,
-};
-const char *LOCATE_metamodel___virtualtype = "./metamodel//virtualtype.nit";
-const int SFT_metamodel___virtualtype[10] = {
-  48 /* Group of ? */,
-  2143 /* Id of MMTypeProperty */,
-  5 /* Color of MMTypeProperty */,
-  10 /* Group of ? */,
-  69 /* Group of ? */,
-  2819 /* Id of MMVirtualType */,
-  6 /* Color of MMVirtualType */,
-  5 /* Group of ? */,
-  79 /* Group of ? */,
-  105 /* Group of ? */,
+  58 /* Group of ? */,
 };
-const char *LOCATE_opts = "./../lib/opts.nit";
-const int SFT_opts[34] = {
-  115 /* Id of Option */,
-  4 /* Color of Option */,
-  2 /* Group of ? */,
-  47 /* Group of ? */,
-  2091 /* Id of OptionText */,
-  5 /* Color of OptionText */,
-  63 /* Group of ? */,
-  2103 /* Id of OptionBool */,
-  5 /* Color of OptionBool */,
-  63 /* Group of ? */,
-  2099 /* Id of OptionCount */,
-  5 /* Color of OptionCount */,
-  63 /* Group of ? */,
-  2095 /* Id of OptionParameter */,
-  5 /* Color of OptionParameter */,
-  63 /* Group of ? */,
-  2791 /* Id of OptionString */,
-  6 /* Color of OptionString */,
-  66 /* Group of ? */,
-  2799 /* Id of OptionEnum */,
-  6 /* Color of OptionEnum */,
-  7 /* Group of ? */,
-  66 /* Group of ? */,
-  2795 /* Id of OptionInt */,
-  6 /* Color of OptionInt */,
-  66 /* Group of ? */,
-  2803 /* Id of OptionArray */,
-  6 /* Color of OptionArray */,
-  7 /* Group of ? */,
-  66 /* Group of ? */,
-  111 /* Id of OptionContext */,
-  4 /* Color of OptionContext */,
-  2 /* Group of ? */,
-  47 /* Group of ? */,
+const char LOCATE_separate_options[] = "separate_options.nit";
+const int SFT_separate_options[3] = {
+  40 /* Group of ? */,
+  108 /* Group of ? */,
+  116 /* Group of ? */,
 };
-const char *LOCATE_primitive_info = "./primitive_info.nit";
-const int SFT_primitive_info[8] = {
-  2 /* Group of ? */,
+const char LOCATE_ffi[] = "ffi/ffi.nit";
+const int SFT_ffi[2] = {
+  117 /* Group of ? */,
   50 /* Group of ? */,
-  99 /* Id of PrimitiveInfo */,
-  4 /* Color of PrimitiveInfo */,
-  2 /* Group of ? */,
-  47 /* Group of ? */,
-  54 /* Group of ? */,
-  83 /* Group of ? */,
-};
-const char *LOCATE_syntax___icode_generation = "./syntax//icode_generation.nit";
-const int SFT_syntax___icode_generation[27] = {
-  2375 /* Id of A2IContext */,
-  5 /* Color of A2IContext */,
-  6 /* Group of ? */,
-  71 /* Group of ? */,
-  4 /* Group of ? */,
-  52 /* Group of ? */,
-  97 /* Group of ? */,
-  10 /* Group of ? */,
-  71 /* Group of ? */,
-  10 /* Group of ? */,
-  97 /* Group of ? */,
-  3143 /* Id of A2IVisitor */,
-  6 /* Color of A2IVisitor */,
-  7 /* Group of ? */,
-  81 /* Group of ? */,
-  64 /* Group of ? */,
-  97 /* Group of ? */,
-  91 /* Group of ? */,
-  80 /* Group of ? */,
-  98 /* Group of ? */,
-  98 /* Group of ? */,
-  76 /* Group of ? */,
-  11 /* Group of ? */,
-  82 /* Group of ? */,
-  90 /* Group of ? */,
-  7 /* Group of ? */,
-  72 /* Group of ? */,
 };
-const char *LOCATE_icode = "./icode//icode.nit";
-const char *LOCATE_icode___icode_tools = "./icode//icode_tools.nit";
-const int SFT_icode___icode_tools[12] = {
-  223 /* Id of ICodeVisitor */,
-  4 /* Color of ICodeVisitor */,
-  2 /* Group of ? */,
-  47 /* Group of ? */,
-  47 /* Group of ? */,
-  227 /* Id of ICodeDupContext */,
-  4 /* Color of ICodeDupContext */,
-  2 /* Group of ? */,
-  47 /* Group of ? */,
-  53 /* Group of ? */,
-  64 /* Group of ? */,
-  69 /* Group of ? */,
+const char LOCATE_ffi___c[] = "ffi/c.nit";
+const int SFT_ffi___c[3] = {
+  74 /* Group of ? */,
+  74 /* Group of ? */,
+  68 /* Group of ? */,
 };
-const char *LOCATE_icode___icode_builder = "./icode//icode_builder.nit";
-const int SFT_icode___icode_builder[5] = {
-  235 /* Id of ICodeBuilder */,
-  4 /* Color of ICodeBuilder */,
+const char LOCATE_ffi___ffi_base[] = "ffi/ffi_base.nit";
+const int SFT_ffi___ffi_base[14] = {
+  259 /* Id of FFIVisited */,
+  5 /* Color of FFIVisited */,
+  72 /* Group of ? */,
   2 /* Group of ? */,
-  48 /* Group of ? */,
-  48 /* Group of ? */,
-};
-const char *LOCATE_icode___icode_base = "./icode//icode_base.nit";
-const int SFT_icode___icode_base[148] = {
-  211 /* Id of IRegister */,
-  4 /* Color of IRegister */,
-  9 /* Group of ? */,
-  55 /* Group of ? */,
-  219 /* Id of IEscapeMark */,
-  4 /* Color of IEscapeMark */,
-  47 /* Group of ? */,
-  243 /* Id of IClosureDecl */,
-  4 /* Color of IClosureDecl */,
+  77 /* Group of ? */,
+  263 /* Id of ExternImportSet */,
+  4 /* Color of ExternImportSet */,
   2 /* Group of ? */,
-  48 /* Group of ? */,
-  207 /* Id of IRoutine */,
-  4 /* Color of IRoutine */,
-  4 /* Group of ? */,
-  55 /* Group of ? */,
-  2251 /* Id of IClosureDef */,
-  5 /* Color of IClosureDef */,
-  69 /* Group of ? */,
-  239 /* Id of ICode */,
-  4 /* Color of ICode */,
+  50 /* Group of ? */,
+  142 /* Group of ? */,
+  255 /* Id of FFIVisitor */,
+  4 /* Color of FFIVisitor */,
   2 /* Group of ? */,
-  55 /* Group of ? */,
-  2247 /* Id of ICode0 */,
-  5 /* Color of ICode0 */,
-  63 /* Group of ? */,
-  2243 /* Id of ICode1 */,
-  5 /* Color of ICode1 */,
-  4 /* Group of ? */,
-  63 /* Group of ? */,
-  2239 /* Id of ICode2 */,
-  5 /* Color of ICode2 */,
-  4 /* Group of ? */,
-  63 /* Group of ? */,
-  2235 /* Id of ICodeN */,
-  5 /* Color of ICodeN */,
-  4 /* Group of ? */,
-  64 /* Group of ? */,
-  2867 /* Id of ISeq */,
-  6 /* Color of ISeq */,
-  4 /* Group of ? */,
-  65 /* Group of ? */,
-  3219 /* Id of ILoop */,
-  7 /* Color of ILoop */,
-  70 /* Group of ? */,
-  2907 /* Id of IIf */,
-  6 /* Color of IIf */,
-  5 /* Group of ? */,
-  66 /* Group of ? */,
-  2919 /* Id of IEscape */,
-  6 /* Color of IEscape */,
-  4 /* Group of ? */,
-  64 /* Group of ? */,
-  2959 /* Id of IAbort */,
-  6 /* Color of IAbort */,
-  4 /* Group of ? */,
-  64 /* Group of ? */,
-  2955 /* Id of IAbsCall */,
-  6 /* Color of IAbsCall */,
-  6 /* Group of ? */,
-  70 /* Group of ? */,
-  3227 /* Id of ICall */,
-  7 /* Color of ICall */,
-  75 /* Group of ? */,
-  3203 /* Id of ISuper */,
-  7 /* Color of ISuper */,
-  75 /* Group of ? */,
-  3215 /* Id of INew */,
-  7 /* Color of INew */,
-  8 /* Group of ? */,
-  75 /* Group of ? */,
-  2951 /* Id of IAllocateInstance */,
-  6 /* Color of IAllocateInstance */,
-  4 /* Group of ? */,
-  64 /* Group of ? */,
-  3207 /* Id of IStaticCall */,
-  7 /* Color of IStaticCall */,
-  75 /* Group of ? */,
-  2927 /* Id of ICheckInstance */,
-  6 /* Color of ICheckInstance */,
-  5 /* Group of ? */,
-  66 /* Group of ? */,
-  2903 /* Id of IInitAttributes */,
-  6 /* Color of IInitAttributes */,
-  5 /* Group of ? */,
-  66 /* Group of ? */,
-  2923 /* Id of IClosCall */,
-  6 /* Color of IClosCall */,
-  6 /* Group of ? */,
-  70 /* Group of ? */,
-  2887 /* Id of INative */,
-  6 /* Color of INative */,
-  6 /* Group of ? */,
-  71 /* Group of ? */,
-  2899 /* Id of IIntValue */,
-  6 /* Color of IIntValue */,
-  4 /* Group of ? */,
-  64 /* Group of ? */,
-  2935 /* Id of IBoolValue */,
-  6 /* Color of IBoolValue */,
-  4 /* Group of ? */,
-  64 /* Group of ? */,
-  2863 /* Id of IStringValue */,
-  6 /* Color of IStringValue */,
-  4 /* Group of ? */,
-  64 /* Group of ? */,
-  2915 /* Id of IFloatValue */,
-  6 /* Color of IFloatValue */,
-  4 /* Group of ? */,
-  64 /* Group of ? */,
-  2931 /* Id of ICharValue */,
-  6 /* Color of ICharValue */,
-  4 /* Group of ? */,
-  64 /* Group of ? */,
-  2891 /* Id of IMove */,
-  6 /* Color of IMove */,
-  66 /* Group of ? */,
-  2943 /* Id of IAttrRead */,
-  6 /* Color of IAttrRead */,
-  5 /* Group of ? */,
-  66 /* Group of ? */,
-  2939 /* Id of IAttrWrite */,
-  6 /* Color of IAttrWrite */,
-  6 /* Group of ? */,
-  67 /* Group of ? */,
-  2947 /* Id of IAttrIsset */,
-  6 /* Color of IAttrIsset */,
-  5 /* Group of ? */,
-  66 /* Group of ? */,
-  2859 /* Id of ITypeCheck */,
-  6 /* Color of ITypeCheck */,
-  6 /* Group of ? */,
-  67 /* Group of ? */,
-  2895 /* Id of IIs */,
-  6 /* Color of IIs */,
-  67 /* Group of ? */,
-  2883 /* Id of INot */,
-  6 /* Color of INot */,
-  66 /* Group of ? */,
-  2875 /* Id of IOnce */,
-  6 /* Color of IOnce */,
-  4 /* Group of ? */,
-  64 /* Group of ? */,
-  2911 /* Id of IHasClos */,
-  6 /* Color of IHasClos */,
-  4 /* Group of ? */,
-  64 /* Group of ? */,
-  69 /* Group of ? */,
-  92 /* Group of ? */,
+  51 /* Group of ? */,
 };
-const char *LOCATE_syntax___typing = "./syntax//typing.nit";
-const int SFT_syntax___typing[55] = {
-  98 /* Group of ? */,
-  2379 /* Id of TypingVisitor */,
-  6 /* Color of TypingVisitor */,
-  7 /* Group of ? */,
-  81 /* Group of ? */,
-  65 /* Group of ? */,
-  84 /* Group of ? */,
-  7 /* Group of ? */,
-  98 /* Group of ? */,
-  93 /* Group of ? */,
-  94 /* Group of ? */,
-  100 /* Group of ? */,
-  99 /* Group of ? */,
-  13 /* Group of ? */,
-  83 /* Group of ? */,
-  11 /* Group of ? */,
-  7 /* Group of ? */,
-  77 /* Group of ? */,
-  11 /* Group of ? */,
-  3523 /* Id of AAbsControl */,
-  8 /* Color of AAbsControl */,
-  11 /* Group of ? */,
-  82 /* Group of ? */,
-  12 /* Group of ? */,
-  86 /* Group of ? */,
-  11 /* Group of ? */,
-  13 /* Group of ? */,
-  85 /* Group of ? */,
-  72 /* Group of ? */,
-  11 /* Group of ? */,
-  11 /* Group of ? */,
-  82 /* Group of ? */,
-  18 /* Group of ? */,
-  72 /* Group of ? */,
-  77 /* Group of ? */,
-  16 /* Group of ? */,
-  90 /* Group of ? */,
-  11 /* Group of ? */,
-  91 /* Group of ? */,
-  16 /* Group of ? */,
-  97 /* Group of ? */,
-  67 /* Group of ? */,
-  103 /* Group of ? */,
-  6 /* Group of ? */,
-  115 /* Group of ? */,
-  115 /* Group of ? */,
-  111 /* Group of ? */,
-  13 /* Group of ? */,
-  72 /* Group of ? */,
-  8 /* Group of ? */,
-  73 /* Group of ? */,
-  3259 /* Id of ATypeCheckExpr */,
-  5 /* Color of ATypeCheckExpr */,
-  67 /* Group of ? */,
-  84 /* Group of ? */,
+const char LOCATE_native_interface[] = "native_interface/native_interface.nit";
+const int SFT_native_interface[1] = {
+  118 /* Group of ? */,
 };
-const char *LOCATE_syntax___scope = "./syntax//scope.nit";
-const int SFT_syntax___scope[23] = {
-  55 /* Id of ScopeContext */,
-  4 /* Color of ScopeContext */,
+const char LOCATE_native_interface___frontier[] = "native_interface/frontier.nit";
+const int SFT_native_interface___frontier[22] = {
+  119 /* Id of NiVariable */,
+  4 /* Color of NiVariable */,
+  50 /* Group of ? */,
+  2995 /* Id of ReceiverVariable */,
+  5 /* Color of ReceiverVariable */,
   2 /* Group of ? */,
-  47 /* Group of ? */,
-  59 /* Id of ScopeBlock */,
-  4 /* Color of ScopeBlock */,
+  60 /* Group of ? */,
+  371 /* Id of ReturnVariable */,
+  5 /* Color of ReturnVariable */,
   2 /* Group of ? */,
-  47 /* Group of ? */,
-  2291 /* Id of EscapableBlock */,
-  5 /* Color of EscapableBlock */,
-  8 /* Group of ? */,
   60 /* Group of ? */,
-  3019 /* Id of BreakOnlyEscapableBlock */,
-  6 /* Color of BreakOnlyEscapableBlock */,
-  67 /* Group of ? */,
-  2983 /* Id of EscapableClosure */,
-  6 /* Color of EscapableClosure */,
-  10 /* Group of ? */,
-  67 /* Group of ? */,
-  3439 /* Id of AEscapeExpr */,
-  8 /* Color of AEscapeExpr */,
-  11 /* Group of ? */,
-  82 /* Group of ? */,
-};
-const char *LOCATE_syntax___flow = "./syntax//flow.nit";
-const int SFT_syntax___flow[20] = {
-  263 /* Id of FlowContext */,
-  4 /* Color of FlowContext */,
+  119 /* Group of ? */,
+  102 /* Group of ? */,
   2 /* Group of ? */,
-  47 /* Group of ? */,
-  363 /* Id of RootFlowContext */,
-  5 /* Color of RootFlowContext */,
-  62 /* Group of ? */,
-  343 /* Id of SubFlowContext */,
-  5 /* Color of SubFlowContext */,
-  7 /* Group of ? */,
-  62 /* Group of ? */,
-  3011 /* Id of CastFlowContext */,
-  6 /* Color of CastFlowContext */,
-  8 /* Group of ? */,
-  65 /* Group of ? */,
-  2127 /* Id of MergeFlowContext */,
-  5 /* Color of MergeFlowContext */,
-  7 /* Group of ? */,
-  62 /* Group of ? */,
-  47 /* Group of ? */,
-};
-const char *LOCATE_nit_version = "./nit_version.nit";
-const int SFT_nit_version[1] = {
-  16 /* Group of ? */,
-};
-const char *LOCATE_separate_options = "./separate_options.nit";
-const int SFT_separate_options[3] = {
-  6 /* Group of ? */,
-  56 /* Group of ? */,
-  85 /* Group of ? */,
-};
-const char *LOCATE_native_interface = "./native_interface//native_interface.nit";
-const int SFT_native_interface[1] = {
-  86 /* Group of ? */,
-};
-const char *LOCATE_native_interface___frontier = "./native_interface//frontier.nit";
-const int SFT_native_interface___frontier[12] = {
-  87 /* Group of ? */,
-  94 /* Group of ? */,
-  107 /* Group of ? */,
-  47 /* Group of ? */,
-  259 /* Id of FrontierVisitor */,
+  50 /* Group of ? */,
+  247 /* Id of FrontierVisitor */,
   4 /* Color of FrontierVisitor */,
   2 /* Group of ? */,
-  47 /* Group of ? */,
-  118 /* Group of ? */,
-  47 /* Group of ? */,
-  47 /* Group of ? */,
-  47 /* Group of ? */,
+  50 /* Group of ? */,
+  50 /* Group of ? */,
+  50 /* Group of ? */,
+  50 /* Group of ? */,
 };
-const char *LOCATE_native_interface___ni_tools = "./native_interface//ni_tools.nit";
+const char LOCATE_native_interface___ni_tools[] = "native_interface/ni_tools.nit";
 const int SFT_native_interface___ni_tools[4] = {
-  255 /* Id of FunctionCompiler */,
+  243 /* Id of FunctionCompiler */,
   4 /* Color of FunctionCompiler */,
   2 /* Group of ? */,
-  47 /* Group of ? */,
+  50 /* Group of ? */,
 };
-const char *LOCATE_compiling = "./compiling//compiling.nit";
+const char LOCATE_compiling[] = "compiling/compiling.nit";
 const int SFT_compiling[3] = {
-  2 /* Group of ? */,
-  47 /* Group of ? */,
-  78 /* Group of ? */,
+  14 /* Group of ? */,
+  89 /* Group of ? */,
+  109 /* Group of ? */,
 };
-const char *LOCATE_compiling___icode_generator = "./compiling//icode_generator.nit";
+const char LOCATE_compiling___icode_generator[] = "compiling/icode_generator.nit";
 const int SFT_compiling___icode_generator[7] = {
-  52 /* Group of ? */,
-  2279 /* Id of FileICodeDumper */,
+  94 /* Group of ? */,
+  3223 /* Id of FileICodeDumper */,
   5 /* Color of FileICodeDumper */,
   10 /* Group of ? */,
-  61 /* Group of ? */,
-  108 /* Group of ? */,
-  82 /* Group of ? */,
+  64 /* Group of ? */,
+  143 /* Group of ? */,
+  99 /* Group of ? */,
 };
-const char *LOCATE_compiling___compiling_base = "./compiling//compiling_base.nit";
+const char LOCATE_compiling___compiling_base[] = "compiling/compiling_base.nit";
 const int SFT_compiling___compiling_base[18] = {
-  40 /* Group of ? */,
-  112 /* Group of ? */,
+  44 /* Group of ? */,
+  118 /* Group of ? */,
   291 /* Id of CProgram */,
   4 /* Color of CProgram */,
   2 /* Group of ? */,
-  47 /* Group of ? */,
+  50 /* Group of ? */,
   271 /* Id of CompilerVisitor */,
   4 /* Color of CompilerVisitor */,
   2 /* Group of ? */,
-  47 /* Group of ? */,
-  62 /* Group of ? */,
+  50 /* Group of ? */,
+  65 /* Group of ? */,
   10 /* Group of ? */,
-  68 /* Group of ? */,
-  20 /* Group of ? */,
-  84 /* Group of ? */,
-  109 /* Group of ? */,
+  71 /* Group of ? */,
+  22 /* Group of ? */,
+  115 /* Group of ? */,
+  144 /* Group of ? */,
   9 /* Group of ? */,
-  67 /* Group of ? */,
+  70 /* Group of ? */,
 };
-const char *LOCATE_utils = "./utils.nit";
+const char LOCATE_utils[] = "utils.nit";
 const int SFT_utils[1] = {
-  45 /* Group of ? */,
-};
-const char *LOCATE_program = "./program.nit";
-const int SFT_program[8] = {
-  38 /* Group of ? */,
-  108 /* Group of ? */,
-  91 /* Id of Program */,
-  4 /* Color of Program */,
-  4 /* Group of ? */,
-  62 /* Group of ? */,
-  22 /* Group of ? */,
-  110 /* Group of ? */,
+  48 /* Group of ? */,
 };
-const char *LOCATE_compiling___compiling_writer = "./compiling//compiling_writer.nit";
-const int SFT_compiling___compiling_writer[16] = {
+const char LOCATE_compiling_writer[] = "compiling_writer.nit";
+const int SFT_compiling_writer[16] = {
   11 /* Id of Writer */,
   4 /* Color of Writer */,
   2 /* Group of ? */,
-  47 /* Group of ? */,
+  50 /* Group of ? */,
   7 /* Id of WriterNode */,
   4 /* Color of WriterNode */,
   2 /* Group of ? */,
-  47 /* Group of ? */,
-  319 /* Id of WriterCoreNode */,
+  50 /* Group of ? */,
+  323 /* Id of WriterCoreNode */,
   5 /* Color of WriterCoreNode */,
   3 /* Group of ? */,
-  50 /* Group of ? */,
-  315 /* Id of WriterStrings */,
+  53 /* Group of ? */,
+  319 /* Id of WriterStrings */,
   5 /* Color of WriterStrings */,
   3 /* Group of ? */,
-  50 /* Group of ? */,
-};
-const char *LOCATE_analysis = "./analysis//analysis.nit";
-const int SFT_analysis[4] = {
-  10 /* Group of ? */,
-  66 /* Group of ? */,
   53 /* Group of ? */,
-  50 /* Group of ? */,
 };
-const char *LOCATE_analysis___icode_dump = "./analysis//icode_dump.nit";
+const char LOCATE_analysis[] = "analysis/analysis.nit";
+const int SFT_analysis[1] = {
+  65 /* Group of ? */,
+};
+const char LOCATE_analysis___icode_dump[] = "analysis/icode_dump.nit";
 const int SFT_analysis___icode_dump[8] = {
-  51 /* Group of ? */,
-  47 /* Group of ? */,
-  231 /* Id of ICodeDumper */,
+  66 /* Group of ? */,
+  50 /* Group of ? */,
+  219 /* Id of ICodeDumper */,
   4 /* Color of ICodeDumper */,
   2 /* Group of ? */,
-  47 /* Group of ? */,
-  51 /* Group of ? */,
-  63 /* Group of ? */,
+  50 /* Group of ? */,
+  54 /* Group of ? */,
+  66 /* Group of ? */,
 };
-const char *LOCATE_analysis___allocate_iregister_slots = "./analysis//allocate_iregister_slots.nit";
+const char LOCATE_analysis___allocate_iregister_slots[] = "analysis/allocate_iregister_slots.nit";
 const int SFT_analysis___allocate_iregister_slots[12] = {
-  2231 /* Id of IRegisterSlotAllocationVisitor */,
+  3175 /* Id of IRegisterSlotAllocationVisitor */,
   5 /* Color of IRegisterSlotAllocationVisitor */,
   3 /* Group of ? */,
-  55 /* Group of ? */,
+  58 /* Group of ? */,
   47 /* Id of SlotGroup */,
   4 /* Color of SlotGroup */,
   2 /* Group of ? */,
-  47 /* Group of ? */,
-  2 /* Group of ? */,
-  52 /* Group of ? */,
+  50 /* Group of ? */,
+  9 /* Group of ? */,
+  67 /* Group of ? */,
   2 /* Group of ? */,
-  47 /* Group of ? */,
+  50 /* Group of ? */,
 };
-const char *LOCATE_analysis___inline_methods = "./analysis//inline_methods.nit";
+const char LOCATE_analysis___inline_methods[] = "analysis/inline_methods.nit";
 const int SFT_analysis___inline_methods[6] = {
-  2215 /* Id of InlineMethodVisitor */,
+  3159 /* Id of InlineMethodVisitor */,
   5 /* Color of InlineMethodVisitor */,
   3 /* Group of ? */,
-  55 /* Group of ? */,
-  77 /* Group of ? */,
-  66 /* Group of ? */,
-};
-const char *LOCATE_analysis___cha_analysis = "./analysis//cha_analysis.nit";
-const int SFT_analysis___cha_analysis[12] = {
-  2347 /* Id of ChaContext */,
-  5 /* Color of ChaContext */,
-  2 /* Group of ? */,
-  51 /* Group of ? */,
-  287 /* Id of ChaBuilder */,
-  4 /* Color of ChaBuilder */,
-  2 /* Group of ? */,
-  47 /* Group of ? */,
-  2343 /* Id of ChaVisitor */,
-  5 /* Color of ChaVisitor */,
-  3 /* Group of ? */,
-  55 /* Group of ? */,
-};
-const char *LOCATE_analysis___reachable_method_analysis = "./analysis//reachable_method_analysis.nit";
-const int SFT_analysis___reachable_method_analysis[8] = {
-  11 /* Group of ? */,
-  81 /* Group of ? */,
-  71 /* Id of ReachableMethodAnalysis */,
-  4 /* Color of ReachableMethodAnalysis */,
-  47 /* Group of ? */,
-  2299 /* Id of DefaultReachableMethodAnalysis */,
-  5 /* Color of DefaultReachableMethodAnalysis */,
-  51 /* Group of ? */,
-};
-const char *LOCATE_analysis___rta_analysis = "./analysis//rta_analysis.nit";
-const int SFT_analysis___rta_analysis[12] = {
-  359 /* Id of RtaContext */,
-  6 /* Color of RtaContext */,
-  2 /* Group of ? */,
-  54 /* Group of ? */,
-  63 /* Id of RtaBuilder */,
-  4 /* Color of RtaBuilder */,
-  2 /* Group of ? */,
-  47 /* Group of ? */,
-  355 /* Id of RtaVisitor */,
-  5 /* Color of RtaVisitor */,
-  3 /* Group of ? */,
-  55 /* Group of ? */,
-};
-const char *LOCATE_analysis___instantiated_type_analysis = "./analysis//instantiated_type_analysis.nit";
-const int SFT_analysis___instantiated_type_analysis[8] = {
-  3 /* Group of ? */,
   58 /* Group of ? */,
-  203 /* Id of InstantiatedTypeAnalysis */,
-  5 /* Color of InstantiatedTypeAnalysis */,
-  51 /* Group of ? */,
-  2311 /* Id of DefaultInstantiatedTypeAnalysis */,
-  6 /* Color of DefaultInstantiatedTypeAnalysis */,
-  54 /* Group of ? */,
-};
-const char *LOCATE_analysis___reachable_as_init_impl = "./analysis//reachable_as_init_impl.nit";
-const int SFT_analysis___reachable_as_init_impl[12] = {
-  79 /* Id of ReachableAsInitBuilder */,
-  4 /* Color of ReachableAsInitBuilder */,
-  2 /* Group of ? */,
-  47 /* Group of ? */,
-  2055 /* Id of ReachableAsInitAnalysisImpl */,
-  5 /* Color of ReachableAsInitAnalysisImpl */,
-  2 /* Group of ? */,
-  50 /* Group of ? */,
-  2071 /* Id of RAIVisitor */,
-  5 /* Color of RAIVisitor */,
-  3 /* Group of ? */,
-  55 /* Group of ? */,
-};
-const char *LOCATE_analysis___reachable_as_init = "./analysis//reachable_as_init.nit";
-const int SFT_analysis___reachable_as_init[8] = {
-  8 /* Group of ? */,
-  74 /* Group of ? */,
-  83 /* Id of ReachableAsInitAnalysis */,
-  4 /* Color of ReachableAsInitAnalysis */,
-  47 /* Group of ? */,
-  2307 /* Id of DefaultReachableAsInitAnalysis */,
-  5 /* Color of DefaultReachableAsInitAnalysis */,
-  50 /* Group of ? */,
-};
-const char *LOCATE_analysis___reachable_from_init_method_analysis_impl = "./analysis//reachable_from_init_method_analysis_impl.nit";
-const int SFT_analysis___reachable_from_init_method_analysis_impl[12] = {
-  87 /* Id of RFIMABuilder */,
-  4 /* Color of RFIMABuilder */,
-  2 /* Group of ? */,
-  47 /* Group of ? */,
-  2067 /* Id of RFIMAContext */,
-  5 /* Color of RFIMAContext */,
-  2 /* Group of ? */,
-  51 /* Group of ? */,
-  2063 /* Id of RFIMAVisitor */,
-  5 /* Color of RFIMAVisitor */,
-  3 /* Group of ? */,
-  55 /* Group of ? */,
-};
-const char *LOCATE_analysis___reachable_from_init_method_analysis = "./analysis//reachable_from_init_method_analysis.nit";
-const int SFT_analysis___reachable_from_init_method_analysis[8] = {
-  14 /* Group of ? */,
-  90 /* Group of ? */,
-  75 /* Id of ReachableFromInitMethodAnalysis */,
-  4 /* Color of ReachableFromInitMethodAnalysis */,
-  47 /* Group of ? */,
-  2303 /* Id of DefaultReachableFromInitMethodAnalysis */,
-  5 /* Color of DefaultReachableFromInitMethodAnalysis */,
-  51 /* Group of ? */,
-};
-const char *LOCATE_analysis___dead_method_removal = "./analysis//dead_method_removal.nit";
-const int SFT_analysis___dead_method_removal[3] = {
-  9 /* Group of ? */,
-  77 /* Group of ? */,
-  67 /* Group of ? */,
-};
-const char *LOCATE_analysis___inline_get_and_set = "./analysis//inline_get_and_set.nit";
-const int SFT_analysis___inline_get_and_set[6] = {
-  12 /* Group of ? */,
-  85 /* Group of ? */,
-  2219 /* Id of InlineGetSetVisitor */,
-  5 /* Color of InlineGetSetVisitor */,
-  3 /* Group of ? */,
-  55 /* Group of ? */,
-};
-const char *LOCATE_analysis___remove_out_of_init_get_test = "./analysis//remove_out_of_init_get_test.nit";
-const int SFT_analysis___remove_out_of_init_get_test[10] = {
-  13 /* Group of ? */,
-  87 /* Group of ? */,
-  2211 /* Id of IssetCounter */,
-  5 /* Color of IssetCounter */,
-  3 /* Group of ? */,
-  55 /* Group of ? */,
-  2275 /* Id of GetterTestRemover */,
-  5 /* Color of GetterTestRemover */,
-  3 /* Group of ? */,
-  55 /* Group of ? */,
+  80 /* Group of ? */,
+  70 /* Group of ? */,
 };
-const char *LOCATE_compiling___compiling_global = "./compiling//compiling_global.nit";
+const char LOCATE_compiling___compiling_global[] = "compiling/compiling_global.nit";
 const int SFT_compiling___compiling_global[8] = {
-  94 /* Group of ? */,
-  79 /* Group of ? */,
-  47 /* Group of ? */,
+  95 /* Group of ? */,
+  110 /* Group of ? */,
   50 /* Group of ? */,
-  55 /* Group of ? */,
+  52 /* Group of ? */,
   57 /* Group of ? */,
-  115 /* Group of ? */,
-  93 /* Group of ? */,
+  59 /* Group of ? */,
+  150 /* Group of ? */,
+  101 /* Group of ? */,
 };
-const char *LOCATE_compiling___table_computation = "./compiling//table_computation.nit";
+const char LOCATE_compiling___table_computation[] = "compiling/table_computation.nit";
 const int SFT_compiling___table_computation[85] = {
   279 /* Id of ColorContext */,
   4 /* Color of ColorContext */,
   2 /* Group of ? */,
-  47 /* Group of ? */,
-  335 /* Id of TableInformation */,
+  50 /* Group of ? */,
+  339 /* Id of TableInformation */,
   5 /* Color of TableInformation */,
   3 /* Group of ? */,
-  52 /* Group of ? */,
-  2331 /* Id of CompiledClass */,
+  55 /* Group of ? */,
+  3279 /* Id of CompiledClass */,
   5 /* Color of CompiledClass */,
   3 /* Group of ? */,
-  52 /* Group of ? */,
-  25 /* Group of ? */,
-  117 /* Group of ? */,
+  55 /* Group of ? */,
+  28 /* Group of ? */,
+  152 /* Group of ? */,
   15 /* Group of ? */,
-  96 /* Group of ? */,
-  19 /* Group of ? */,
-  82 /* Group of ? */,
-  303 /* Id of AbsTableElt */,
+  97 /* Group of ? */,
+  21 /* Group of ? */,
+  113 /* Group of ? */,
+  311 /* Id of AbsTableElt */,
   4 /* Color of AbsTableElt */,
-  48 /* Group of ? */,
-  339 /* Id of TableElt */,
-  5 /* Color of TableElt */,
   51 /* Group of ? */,
-  2115 /* Id of ModuleTableElt */,
+  343 /* Id of TableElt */,
+  5 /* Color of TableElt */,
+  53 /* Group of ? */,
+  3059 /* Id of ModuleTableElt */,
   6 /* Color of ModuleTableElt */,
-  56 /* Group of ? */,
-  2815 /* Id of ModuleTableEltGroup */,
+  58 /* Group of ? */,
+  3495 /* Id of ModuleTableEltGroup */,
   7 /* Color of ModuleTableEltGroup */,
   2 /* Group of ? */,
-  57 /* Group of ? */,
-  2387 /* Id of TableEltProp */,
+  59 /* Group of ? */,
+  3347 /* Id of TableEltProp */,
   6 /* Color of TableEltProp */,
   2 /* Group of ? */,
-  55 /* Group of ? */,
-  3159 /* Id of TableEltMeth */,
+  57 /* Group of ? */,
+  3875 /* Id of TableEltMeth */,
   7 /* Color of TableEltMeth */,
-  58 /* Group of ? */,
-  3151 /* Id of TableEltVTClassColor */,
+  60 /* Group of ? */,
+  3867 /* Id of TableEltVTClassColor */,
   7 /* Color of TableEltVTClassColor */,
-  58 /* Group of ? */,
-  3147 /* Id of TableEltVTClassId */,
+  60 /* Group of ? */,
+  3863 /* Id of TableEltVTClassId */,
   7 /* Color of TableEltVTClassId */,
-  58 /* Group of ? */,
-  3155 /* Id of TableEltSuper */,
+  60 /* Group of ? */,
+  3871 /* Id of TableEltSuper */,
   7 /* Color of TableEltSuper */,
-  58 /* Group of ? */,
-  3171 /* Id of TableEltAttr */,
+  60 /* Group of ? */,
+  3887 /* Id of TableEltAttr */,
   7 /* Color of TableEltAttr */,
-  58 /* Group of ? */,
-  2367 /* Id of AbsTableEltClass */,
+  60 /* Group of ? */,
+  3315 /* Id of AbsTableEltClass */,
   7 /* Color of AbsTableEltClass */,
   2 /* Group of ? */,
-  58 /* Group of ? */,
-  2415 /* Id of TableEltClass */,
+  60 /* Group of ? */,
+  3375 /* Id of TableEltClass */,
   8 /* Color of TableEltClass */,
-  61 /* Group of ? */,
-  2411 /* Id of TableEltClassId */,
+  63 /* Group of ? */,
+  3371 /* Id of TableEltClassId */,
   5 /* Color of TableEltClassId */,
-  50 /* Group of ? */,
-  3163 /* Id of TableEltClassInitTable */,
+  52 /* Group of ? */,
+  3879 /* Id of TableEltClassInitTable */,
   9 /* Color of TableEltClassInitTable */,
-  62 /* Group of ? */,
-  3167 /* Id of TableEltClassColor */,
+  64 /* Group of ? */,
+  3883 /* Id of TableEltClassColor */,
   9 /* Color of TableEltClassColor */,
-  62 /* Group of ? */,
-  2395 /* Id of TableEltComposite */,
+  64 /* Group of ? */,
+  3355 /* Id of TableEltComposite */,
   6 /* Color of TableEltComposite */,
   2 /* Group of ? */,
-  55 /* Group of ? */,
-  2403 /* Id of TableEltClassSelfId */,
+  57 /* Group of ? */,
+  3363 /* Id of TableEltClassSelfId */,
   6 /* Color of TableEltClassSelfId */,
-  55 /* Group of ? */,
-  2399 /* Id of TableEltClassSelfName */,
+  57 /* Group of ? */,
+  3359 /* Id of TableEltClassSelfName */,
   6 /* Color of TableEltClassSelfName */,
-  55 /* Group of ? */,
-  2407 /* Id of TableEltClassObjectSize */,
+  57 /* Group of ? */,
+  3367 /* Id of TableEltClassObjectSize */,
   6 /* Color of TableEltClassObjectSize */,
-  55 /* Group of ? */,
-  2391 /* Id of TableEltObjectId */,
+  57 /* Group of ? */,
+  3351 /* Id of TableEltObjectId */,
   6 /* Color of TableEltObjectId */,
-  55 /* Group of ? */,
-  2383 /* Id of TableEltVftPointer */,
+  57 /* Group of ? */,
+  3343 /* Id of TableEltVftPointer */,
   6 /* Color of TableEltVftPointer */,
-  55 /* Group of ? */,
+  57 /* Group of ? */,
 };
-const char *LOCATE_compiling___compiling_icode = "./compiling//compiling_icode.nit";
+const char LOCATE_compiling___compiling_icode[] = "compiling/compiling_icode.nit";
 const int SFT_compiling___compiling_icode[9] = {
-  247 /* Id of I2CCompilerVisitor */,
+  235 /* Id of I2CCompilerVisitor */,
   4 /* Color of I2CCompilerVisitor */,
   2 /* Group of ? */,
-  47 /* Group of ? */,
-  47 /* Group of ? */,
-  47 /* Group of ? */,
-  69 /* Group of ? */,
-  69 /* Group of ? */,
-  68 /* Group of ? */,
+  50 /* Group of ? */,
+  62 /* Group of ? */,
+  50 /* Group of ? */,
+  72 /* Group of ? */,
+  72 /* Group of ? */,
+  71 /* Group of ? */,
 };
-const char *LOCATE_native_interface___ni_metamodel = "./native_interface//ni_metamodel.nit";
+const char LOCATE_native_interface___ni_metamodel[] = "native_interface/ni_metamodel.nit";
 const int SFT_native_interface___ni_metamodel[4] = {
+  55 /* Group of ? */,
+  86 /* Group of ? */,
+  2 /* Group of ? */,
+  54 /* Group of ? */,
+};
+const char LOCATE_c_tools[] = "c_tools.nit";
+const int SFT_c_tools[8] = {
+  299 /* Id of CCompilationUnit */,
+  4 /* Color of CCompilationUnit */,
+  2 /* Group of ? */,
   50 /* Group of ? */,
-  69 /* Group of ? */,
+  295 /* Id of CFunction */,
+  4 /* Color of CFunction */,
   2 /* Group of ? */,
-  51 /* Group of ? */,
+  50 /* Group of ? */,
 };
-const char *LOCATE_nitc = "./nitc.nit";
-const int SFT_nitc[4] = {
-  3191 /* Id of NitCompiler */,
+const char LOCATE_nitc[] = "nitc.nit";
+const int SFT_nitc[5] = {
+  4203 /* Id of NitCompiler */,
   7 /* Color of NitCompiler */,
-  52 /* Group of ? */,
+  56 /* Group of ? */,
+  148 /* Group of ? */,
   140 /* Group of ? */,
 };
-const classtable_elt_t VFT_nitc___NitCompiler[159] = {
-  {(bigint) 3191 /* 0: Identity */},
-  {(bigint) 68 /* 1: Object size (-1 if a NativeArray)*/},
+const classtable_elt_t VFT_nitc___NitCompiler[160] = {
+  {(bigint) 4203 /* 0: Identity */},
+  {(bigint) 65 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "NitCompiler" /* 2: Class Name */},
   {(bigint) 3 /* 3: NitCompiler < Object: superclass typecheck marker */},
-  {(bigint) 187 /* 4: NitCompiler < MMContext: superclass typecheck marker */},
-  {(bigint) 327 /* 5: NitCompiler < ToolContext: superclass typecheck marker */},
-  {(bigint) 3035 /* 6: NitCompiler < AbstractCompiler: superclass typecheck marker */},
-  {(bigint) 3191 /* 7: NitCompiler < NitCompiler: superclass typecheck marker */},
+  {(bigint) 175 /* 4: NitCompiler < MMContext: superclass typecheck marker */},
+  {(bigint) 331 /* 5: NitCompiler < ToolContext: superclass typecheck marker */},
+  {(bigint) 3723 /* 6: NitCompiler < AbstractCompiler: superclass typecheck marker */},
+  {(bigint) 4203 /* 7: NitCompiler < NitCompiler: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -14952,7 +13948,7 @@ const classtable_elt_t VFT_nitc___NitCompiler[159] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 18: NitCompiler < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: NitCompiler < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -14968,6 +13964,8 @@ const classtable_elt_t VFT_nitc___NitCompiler[159] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -14982,7 +13980,7 @@ const classtable_elt_t VFT_nitc___NitCompiler[159] = {
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
   {(bigint) syntax___mmbuilder___ToolContext___handle_property_conflict},
-  {(bigint) 2 /* 48: NitCompiler < MMContext: superclass init_table position */},
+  {(bigint) 2 /* 51: NitCompiler < MMContext: superclass init_table position */},
   {(bigint) metamodel___abstractmetamodel___MMContext___init},
   {(bigint) metamodel___abstractmetamodel___MMContext___module_hierarchy},
   {(bigint) metamodel___abstractmetamodel___MMContext___class_hierarchy},
@@ -14990,62 +13988,65 @@ const classtable_elt_t VFT_nitc___NitCompiler[159] = {
   {(bigint) metamodel___abstractmetamodel___MMContext___add_module},
   {(bigint) metamodel___abstractmetamodel___MMContext___add_global_class},
   {(bigint) metamodel___abstractmetamodel___MMContext___add_local_class},
-  {(bigint) separate_options___ToolContext___separate_options},
-  {(bigint) separate_options___ToolContext___separate_options__eq},
-  {(bigint) separate_options___ToolContext___opt_cc_lib_paths},
-  {(bigint) separate_options___ToolContext___opt_cc_lib_paths__eq},
-  {(bigint) separate_options___ToolContext___opt_cc_libs},
-  {(bigint) separate_options___ToolContext___opt_cc_libs__eq},
-  {(bigint) separate_options___ToolContext___opt_cc_include_paths},
-  {(bigint) separate_options___ToolContext___opt_cc_include_paths__eq},
-  {(bigint) mmloader___ToolContext___init},
-  {(bigint) separate_options___ToolContext___integrate_separate_options},
-  {(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) global___ToolContext___global_callgraph},
+  {(bigint) global___ToolContext___global_callgraph__eq},
+  {(bigint) global___ToolContext___opt_global},
+  {(bigint) global___ToolContext___opt_global_no_STF_opt},
+  {(bigint) global___ToolContext___opt_global_no_DMR_opt},
+  {(bigint) global___ToolContext___opt_global_no_inline_get_set},
+  {(bigint) global___ToolContext___opt_global_no_out_of_init_get_test_opt},
+  {(bigint) global___ToolContext___opt_global_no_RFIMA},
+  {(bigint) global___ToolContext___opt_global_callgraph},
+  {(bigint) separate_options___ToolContext___init},
   {(bigint) syntax___ToolContext___keep_ast},
   {(bigint) syntax___ToolContext___keep_ast__eq},
-  {(bigint) 1 /* 78: 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___opt_stop_on_first_error},
-  {(bigint) mmloader___ToolContext___opt_no_color},
-  {(bigint) mmloader___ToolContext___verbose_level},
-  {(bigint) separate_options___ToolContext___init},
-  {(bigint) nitc___NitCompiler___process_options},
+  {(bigint) toolcontext___ToolContext___init},
+  {(bigint) toolcontext___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) 1 /* 82: NitCompiler < ToolContext: superclass init_table position */},
+  {(bigint) toolcontext___ToolContext___error_count},
+  {(bigint) toolcontext___ToolContext___warning_count},
+  {(bigint) toolcontext___ToolContext___log_directory},
+  {(bigint) toolcontext___ToolContext___check_errors},
+  {(bigint) toolcontext___ToolContext___error},
+  {(bigint) toolcontext___ToolContext___fatal_error},
+  {(bigint) toolcontext___ToolContext___warning},
+  {(bigint) toolcontext___ToolContext___info},
+  {(bigint) toolcontext___ToolContext___option_context},
+  {(bigint) toolcontext___ToolContext___opt_warn},
+  {(bigint) toolcontext___ToolContext___opt_quiet},
+  {(bigint) toolcontext___ToolContext___opt_log},
+  {(bigint) toolcontext___ToolContext___opt_log_dir},
+  {(bigint) toolcontext___ToolContext___opt_help},
+  {(bigint) toolcontext___ToolContext___opt_version},
+  {(bigint) toolcontext___ToolContext___opt_verbose},
+  {(bigint) toolcontext___ToolContext___opt_stop_on_first_error},
+  {(bigint) toolcontext___ToolContext___opt_no_color},
+  {(bigint) toolcontext___ToolContext___verbose_level},
+  {(bigint) nitc___ToolContext___init},
+  {(bigint) nitc___NitCompiler___process_options},
   {(bigint) program___ToolContext___global},
   {(bigint) program___ToolContext___global__eq},
   {(bigint) program___ToolContext___use_SFT_optimization__eq},
   {(bigint) program___ToolContext___use_SFT_optimization},
+  {(bigint) separate_options___ToolContext___separate_options},
+  {(bigint) separate_options___ToolContext___separate_options__eq},
+  {(bigint) separate_options___ToolContext___opt_cc_lib_paths},
+  {(bigint) separate_options___ToolContext___opt_cc_lib_paths__eq},
+  {(bigint) separate_options___ToolContext___opt_cc_libs},
+  {(bigint) separate_options___ToolContext___opt_cc_libs__eq},
+  {(bigint) separate_options___ToolContext___opt_cc_include_paths},
+  {(bigint) separate_options___ToolContext___opt_cc_include_paths__eq},
+  {(bigint) mmloader___ToolContext___init},
+  {(bigint) separate_options___ToolContext___integrate_separate_options},
   {(bigint) compiling___compiling_base___ToolContext___compdir},
   {(bigint) compiling___compiling_base___ToolContext___compdir__eq},
   {(bigint) compiling___compiling_base___ToolContext___clibdir},
@@ -15068,31 +14069,26 @@ const classtable_elt_t VFT_nitc___NitCompiler[159] = {
   {(bigint) compiling___compiling_base___ToolContext___cc_include_paths__eq},
   {(bigint) compiling___compiling_base___ToolContext___ext_prefix},
   {(bigint) compiling___compiling_base___ToolContext___ext_prefix__eq},
-  {(bigint) 0 /* 134: NitCompiler < AbstractCompiler: superclass init_table position */},
+  {(bigint) global___ToolContext___init},
+  {(bigint) mmloader___ToolContext___process_options},
+  {(bigint) 0 /* 142: 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 /* 140: NitCompiler < NitCompiler: superclass init_table position */},
+  {(bigint) 4 /* 148: 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_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},
+  {(bigint) global___AbstractCompiler___process_options},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -15100,68 +14096,66 @@ const classtable_elt_t VFT_nitc___NitCompiler[159] = {
 /* 3: Attribute NitCompiler::_class_hierarchy */
 /* 4: Attribute NitCompiler::_global_classes */
 /* 5: Attribute NitCompiler::_modules */
-/* 6: Attribute NitCompiler::@separate_options */
-/* 7: Attribute NitCompiler::@opt_cc_lib_paths */
-/* 8: Attribute NitCompiler::@opt_cc_libs */
-/* 9: Attribute NitCompiler::@opt_cc_include_paths */
-/* 10: Attribute NitCompiler::_global_callgraph */
-/* 11: Attribute NitCompiler::_no_dead_method_removal */
-/* 12: Attribute NitCompiler::_no_inline_get_set */
-/* 13: Attribute NitCompiler::_no_callgraph_from_init */
-/* 14: Attribute NitCompiler::_no_out_of_init_get_test_removal */
-/* 15: Attribute NitCompiler::_keep_ast */
-/* 16: Attribute NitCompiler::_error_count */
-/* 17: Attribute NitCompiler::_warning_count */
-/* 18: Attribute NitCompiler::_log_directory */
-/* 19: Attribute NitCompiler::_messages */
-/* 20: Attribute NitCompiler::_message_sorter */
-/* 21: Attribute NitCompiler::_paths */
-/* 22: Attribute NitCompiler::_loaders */
-/* 23: Attribute NitCompiler::_option_context */
-/* 24: Attribute NitCompiler::_opt_warn */
-/* 25: Attribute NitCompiler::_opt_path */
-/* 26: Attribute NitCompiler::_opt_log */
-/* 27: Attribute NitCompiler::_opt_log_dir */
-/* 28: Attribute NitCompiler::_opt_only_metamodel */
-/* 29: Attribute NitCompiler::_opt_only_parse */
-/* 30: Attribute NitCompiler::_opt_help */
-/* 31: Attribute NitCompiler::_opt_version */
-/* 32: Attribute NitCompiler::_opt_verbose */
-/* 33: Attribute NitCompiler::_opt_stop_on_first_error */
-/* 34: Attribute NitCompiler::_opt_no_color */
-/* 35: Attribute NitCompiler::_verbose_level */
-/* 36: Attribute NitCompiler::_processing_modules */
-/* 37: Attribute NitCompiler::_path_dirs */
+/* 6: Attribute NitCompiler::_global_callgraph */
+/* 7: Attribute NitCompiler::_opt_global */
+/* 8: Attribute NitCompiler::_opt_global_no_STF_opt */
+/* 9: Attribute NitCompiler::_opt_global_no_DMR_opt */
+/* 10: Attribute NitCompiler::_opt_global_no_inline_get_set */
+/* 11: Attribute NitCompiler::_opt_global_no_out_of_init_get_test_opt */
+/* 12: Attribute NitCompiler::_opt_global_no_RFIMA */
+/* 13: Attribute NitCompiler::_opt_global_callgraph */
+/* 14: Attribute NitCompiler::_keep_ast */
+/* 15: Attribute NitCompiler::_paths */
+/* 16: Attribute NitCompiler::_loaders */
+/* 17: Attribute NitCompiler::_opt_path */
+/* 18: Attribute NitCompiler::_opt_only_metamodel */
+/* 19: Attribute NitCompiler::_opt_only_parse */
+/* 20: Attribute NitCompiler::_processing_modules */
+/* 21: Attribute NitCompiler::_path_dirs */
+/* 22: Attribute NitCompiler::_error_count */
+/* 23: Attribute NitCompiler::_warning_count */
+/* 24: Attribute NitCompiler::_log_directory */
+/* 25: Attribute NitCompiler::_messages */
+/* 26: Attribute NitCompiler::_message_sorter */
+/* 27: Attribute NitCompiler::_option_context */
+/* 28: Attribute NitCompiler::_opt_warn */
+/* 29: Attribute NitCompiler::_opt_quiet */
+/* 30: Attribute NitCompiler::_opt_log */
+/* 31: Attribute NitCompiler::_opt_log_dir */
+/* 32: Attribute NitCompiler::_opt_help */
+/* 33: Attribute NitCompiler::_opt_version */
+/* 34: Attribute NitCompiler::_opt_verbose */
+/* 35: Attribute NitCompiler::_opt_stop_on_first_error */
+/* 36: Attribute NitCompiler::_opt_no_color */
+/* 37: Attribute NitCompiler::_verbose_level */
 /* 38: Attribute NitCompiler::_global */
 /* 39: Attribute NitCompiler::_use_SFT_optimization */
-/* 40: Attribute NitCompiler::_compdir */
-/* 41: Attribute NitCompiler::_clibdir */
-/* 42: Attribute NitCompiler::_bindir */
-/* 43: Attribute NitCompiler::_output_file */
-/* 44: Attribute NitCompiler::_boost */
-/* 45: Attribute NitCompiler::_no_cc */
-/* 46: Attribute NitCompiler::_cc_link */
-/* 47: Attribute NitCompiler::_cc_libs */
-/* 48: Attribute NitCompiler::_cc_lib_paths */
-/* 49: Attribute NitCompiler::_cc_include_paths */
-/* 50: Attribute NitCompiler::_ext_prefix */
-/* 51: Attribute NitCompiler::_tool_name */
-/* 52: Attribute NitCompiler::_opt_output */
-/* 53: Attribute NitCompiler::_opt_boost */
-/* 54: Attribute NitCompiler::_opt_no_cc */
-/* 55: Attribute NitCompiler::_opt_cc_no_link */
-/* 56: Attribute NitCompiler::_opt_global */
-/* 57: Attribute NitCompiler::_opt_global_no_STF_opt */
-/* 58: Attribute NitCompiler::_opt_global_no_DMR_opt */
-/* 59: Attribute NitCompiler::_opt_global_no_inline_get_set */
-/* 60: Attribute NitCompiler::_opt_global_no_out_of_init_get_test_opt */
-/* 61: Attribute NitCompiler::_opt_global_no_RFIMA */
-/* 62: Attribute NitCompiler::_opt_global_callgraph */
-/* 63: Attribute NitCompiler::_opt_clibdir */
-/* 64: Attribute NitCompiler::_opt_bindir */
-/* 65: Attribute NitCompiler::_opt_compdir */
-/* 66: Attribute NitCompiler::_opt_extension_prefix */
-/* 67: Attribute NitCompiler::_opt_output_format */
+/* 40: Attribute NitCompiler::@separate_options */
+/* 41: Attribute NitCompiler::@opt_cc_lib_paths */
+/* 42: Attribute NitCompiler::@opt_cc_libs */
+/* 43: Attribute NitCompiler::@opt_cc_include_paths */
+/* 44: Attribute NitCompiler::_compdir */
+/* 45: Attribute NitCompiler::_clibdir */
+/* 46: Attribute NitCompiler::_bindir */
+/* 47: Attribute NitCompiler::_output_file */
+/* 48: Attribute NitCompiler::_boost */
+/* 49: Attribute NitCompiler::_no_cc */
+/* 50: Attribute NitCompiler::_cc_link */
+/* 51: Attribute NitCompiler::_cc_libs */
+/* 52: Attribute NitCompiler::_cc_lib_paths */
+/* 53: Attribute NitCompiler::_cc_include_paths */
+/* 54: Attribute NitCompiler::_ext_prefix */
+/* 55: Attribute NitCompiler::_tool_name */
+/* 56: Attribute NitCompiler::_opt_output */
+/* 57: Attribute NitCompiler::_opt_boost */
+/* 58: Attribute NitCompiler::_opt_no_cc */
+/* 59: Attribute NitCompiler::_opt_cc_no_link */
+/* 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 */
+static const char LOCATE_INIT_ATTRIBUTES__nitc___NitCompiler[] = "init var of NitCompiler";
 void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
@@ -15244,238 +14238,262 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   static val_t once_value_75; /* Once value */
   static val_t once_value_76; /* Once value */
   static val_t once_value_77; /* Once value */
+  static val_t once_value_78; /* Once value */
+  static val_t once_value_79; /* Once value */
+  static val_t once_value_80; /* 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__nitc___NitCompiler;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
   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:31 */
+  /* metamodel/abstractmetamodel.nit:31 */
+  fra.me.REG[1] = NEW_PartialOrder_metamodel___partial_order___PartialOrder___init();
+  ATTR_metamodel___abstractmetamodel___MMContext____module_hierarchy(fra.me.REG[0]) = fra.me.REG[1];
+  /* metamodel/abstractmetamodel.nit:35 */
+  fra.me.REG[1] = NEW_PartialOrder_metamodel___partial_order___PartialOrder___init();
+  ATTR_metamodel___abstractmetamodel___MMContext____class_hierarchy(fra.me.REG[0]) = fra.me.REG[1];
+  /* metamodel/abstractmetamodel.nit:38 */
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
+  ATTR_metamodel___abstractmetamodel___MMContext____global_classes(fra.me.REG[0]) = fra.me.REG[1];
+  /* metamodel/abstractmetamodel.nit:41 */
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
+  ATTR_metamodel___abstractmetamodel___MMContext____modules(fra.me.REG[0]) = fra.me.REG[1];
+  /* toolcontext.nit:73 */
+  REGB0 = TAG_Int(0);
+  ATTR_toolcontext___ToolContext____error_count(fra.me.REG[0]) = REGB0;
+  /* toolcontext.nit:76 */
+  REGB0 = TAG_Int(0);
+  ATTR_toolcontext___ToolContext____warning_count(fra.me.REG[0]) = REGB0;
+  /* toolcontext.nit:79 */
   if (!once_value_1) {
-    fra.me.REG[1] = BOX_NativeString("Output file");
-    REGB0 = TAG_Int(11);
+    fra.me.REG[1] = BOX_NativeString("logs");
+    REGB0 = TAG_Int(4);
     fra.me.REG[1] = NEW_String_standard___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_standard___collection___array___Array___with_capacity(REGB0);
+  ATTR_toolcontext___ToolContext____log_directory(fra.me.REG[0]) = fra.me.REG[1];
+  /* toolcontext.nit:82 */
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
+  ATTR_toolcontext___ToolContext____messages(fra.me.REG[0]) = fra.me.REG[1];
+  /* toolcontext.nit:83 */
+  fra.me.REG[1] = NEW_ComparableSorter_standard___collection___sorter___ComparableSorter___init();
+  ATTR_toolcontext___ToolContext____message_sorter(fra.me.REG[0]) = fra.me.REG[1];
+  /* toolcontext.nit:137 */
+  fra.me.REG[1] = NEW_OptionContext_opts___OptionContext___init();
+  ATTR_toolcontext___ToolContext____option_context(fra.me.REG[0]) = fra.me.REG[1];
+  /* toolcontext.nit:140 */
   if (!once_value_2) {
-    fra.me.REG[3] = BOX_NativeString("-o");
-    REGB0 = TAG_Int(2);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
-    once_value_2 = fra.me.REG[3];
+    fra.me.REG[1] = BOX_NativeString("Show warnings");
+    REGB0 = TAG_Int(13);
+    fra.me.REG[1] = NEW_String_standard___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[3] = once_value_2;
-  fra.me.REG[3] = fra.me.REG[3];
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  } 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_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_3) {
-    fra.me.REG[3] = BOX_NativeString("--output");
-    REGB0 = TAG_Int(8);
+    fra.me.REG[3] = BOX_NativeString("-W");
+    REGB0 = TAG_Int(2);
     fra.me.REG[3] = NEW_String_standard___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_standard___collection___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:32 */
   if (!once_value_4) {
-    fra.me.REG[2] = BOX_NativeString("Optimize compilation");
+    fra.me.REG[3] = BOX_NativeString("--warn");
+    REGB0 = TAG_Int(6);
+    fra.me.REG[3] = NEW_String_standard___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_standard___collection___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_toolcontext___ToolContext____opt_warn(fra.me.REG[0]) = fra.me.REG[2];
+  /* toolcontext.nit:143 */
+  if (!once_value_5) {
+    fra.me.REG[2] = BOX_NativeString("Do not show warnings");
     REGB0 = TAG_Int(20);
     fra.me.REG[2] = NEW_String_standard___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;
+    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_standard___collection___array___Array___with_capacity(REGB0);
-  if (!once_value_5) {
-    fra.me.REG[3] = BOX_NativeString("-O");
+  if (!once_value_6) {
+    fra.me.REG[3] = BOX_NativeString("-q");
     REGB0 = TAG_Int(2);
     fra.me.REG[3] = NEW_String_standard___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;
+    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_standard___collection___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");
+  if (!once_value_7) {
+    fra.me.REG[3] = BOX_NativeString("--quiet");
     REGB0 = TAG_Int(7);
     fra.me.REG[3] = NEW_String_standard___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;
+    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_standard___collection___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:33 */
-  if (!once_value_7) {
-    fra.me.REG[1] = BOX_NativeString("Do not invoke C compiler");
-    REGB0 = TAG_Int(24);
+  ATTR_toolcontext___ToolContext____opt_quiet(fra.me.REG[0]) = fra.me.REG[1];
+  /* toolcontext.nit:146 */
+  if (!once_value_8) {
+    fra.me.REG[1] = BOX_NativeString("Generate various log files");
+    REGB0 = TAG_Int(26);
     fra.me.REG[1] = NEW_String_standard___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;
+    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_standard___collection___array___Array___with_capacity(REGB0);
-  if (!once_value_8) {
-    fra.me.REG[3] = BOX_NativeString("--no-cc");
-    REGB0 = TAG_Int(7);
+  if (!once_value_9) {
+    fra.me.REG[3] = BOX_NativeString("--log");
+    REGB0 = TAG_Int(5);
     fra.me.REG[3] = NEW_String_standard___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;
+    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_standard___collection___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:34 */
-  if (!once_value_9) {
-    fra.me.REG[2] = BOX_NativeString("Do not invoke C linker");
-    REGB0 = TAG_Int(22);
+  ATTR_toolcontext___ToolContext____opt_log(fra.me.REG[0]) = fra.me.REG[2];
+  /* toolcontext.nit:149 */
+  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_standard___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;
+    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_standard___collection___array___Array___with_capacity(REGB0);
-  if (!once_value_10) {
-    fra.me.REG[3] = BOX_NativeString("--cc-no-link");
-    REGB0 = TAG_Int(12);
+  if (!once_value_11) {
+    fra.me.REG[3] = BOX_NativeString("--log-dir");
+    REGB0 = TAG_Int(9);
     fra.me.REG[3] = NEW_String_standard___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;
+    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_standard___collection___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:35 */
-  if (!once_value_11) {
-    fra.me.REG[1] = BOX_NativeString("Use global compilation");
-    REGB0 = TAG_Int(22);
+  fra.me.REG[1] = NEW_OptionString_opts___OptionString___init(fra.me.REG[2], fra.me.REG[1]);
+  ATTR_toolcontext___ToolContext____opt_log_dir(fra.me.REG[0]) = fra.me.REG[1];
+  /* toolcontext.nit:152 */
+  if (!once_value_12) {
+    fra.me.REG[1] = BOX_NativeString("Show Help (This screen)");
+    REGB0 = TAG_Int(23);
     fra.me.REG[1] = NEW_String_standard___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;
+    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);
+  REGB0 = TAG_Int(2);
   fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
-  if (!once_value_12) {
-    fra.me.REG[3] = BOX_NativeString("--global");
-    REGB0 = TAG_Int(8);
+  if (!once_value_13) {
+    fra.me.REG[3] = BOX_NativeString("-h");
+    REGB0 = TAG_Int(2);
     fra.me.REG[3] = NEW_String_standard___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;
+    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_standard___collection___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(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./nitc.nit:36 */
-  if (!once_value_13) {
-    fra.me.REG[2] = BOX_NativeString("Do not use SFT optimization");
-    REGB0 = TAG_Int(27);
-    fra.me.REG[2] = NEW_String_standard___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_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_14) {
-    fra.me.REG[3] = BOX_NativeString("--no-global-SFT-optimization");
-    REGB0 = TAG_Int(28);
+    fra.me.REG[3] = BOX_NativeString("-?");
+    REGB0 = TAG_Int(2);
     fra.me.REG[3] = NEW_String_standard___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_standard___collection___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_STF_opt(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./nitc.nit:37 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   if (!once_value_15) {
-    fra.me.REG[1] = BOX_NativeString("Do not use dead method removal optimization");
-    REGB0 = TAG_Int(43);
-    fra.me.REG[1] = NEW_String_standard___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_standard___collection___array___Array___with_capacity(REGB0);
-  if (!once_value_16) {
-    fra.me.REG[3] = BOX_NativeString("--no-global-DMR-optimization");
-    REGB0 = TAG_Int(28);
+    fra.me.REG[3] = BOX_NativeString("--help");
+    REGB0 = TAG_Int(6);
     fra.me.REG[3] = NEW_String_standard___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;
+    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_standard___collection___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_DMR_opt(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./nitc.nit:38 */
-  if (!once_value_17) {
-    fra.me.REG[2] = BOX_NativeString("Do not automatically inline getters/setters");
-    REGB0 = TAG_Int(43);
+  ATTR_toolcontext___ToolContext____opt_help(fra.me.REG[0]) = fra.me.REG[2];
+  /* toolcontext.nit:155 */
+  if (!once_value_16) {
+    fra.me.REG[2] = BOX_NativeString("Show version and exit");
+    REGB0 = TAG_Int(21);
     fra.me.REG[2] = NEW_String_standard___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;
+    once_value_16 = fra.me.REG[2];
+    register_static_object(&once_value_16);
+  } else fra.me.REG[2] = once_value_16;
   fra.me.REG[2] = fra.me.REG[2];
   REGB0 = TAG_Int(0);
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
-  if (!once_value_18) {
-    fra.me.REG[3] = BOX_NativeString("--no-global-get-set-inlining");
-    REGB0 = TAG_Int(28);
+  if (!once_value_17) {
+    fra.me.REG[3] = BOX_NativeString("--version");
+    REGB0 = TAG_Int(9);
     fra.me.REG[3] = NEW_String_standard___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;
+    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_standard___collection___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_inline_get_set(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./nitc.nit:39 */
-  if (!once_value_19) {
-    fra.me.REG[1] = BOX_NativeString("Do not remove get tests outside object initialization");
-    REGB0 = TAG_Int(53);
+  ATTR_toolcontext___ToolContext____opt_version(fra.me.REG[0]) = fra.me.REG[1];
+  /* toolcontext.nit:158 */
+  if (!once_value_18) {
+    fra.me.REG[1] = BOX_NativeString("Verbose");
+    REGB0 = TAG_Int(7);
     fra.me.REG[1] = NEW_String_standard___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;
+    once_value_18 = fra.me.REG[1];
+    register_static_object(&once_value_18);
+  } else fra.me.REG[1] = once_value_18;
   fra.me.REG[1] = fra.me.REG[1];
-  REGB0 = TAG_Int(0);
+  REGB0 = TAG_Int(1);
   fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  if (!once_value_19) {
+    fra.me.REG[3] = BOX_NativeString("-v");
+    REGB0 = TAG_Int(2);
+    fra.me.REG[3] = NEW_String_standard___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_standard___collection___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("--no-global-OOIT-optimization");
-    REGB0 = TAG_Int(29);
+    fra.me.REG[3] = BOX_NativeString("--verbose");
+    REGB0 = TAG_Int(9);
     fra.me.REG[3] = NEW_String_standard___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_standard___collection___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_out_of_init_get_test_opt(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./nitc.nit:40 */
+  fra.me.REG[2] = NEW_OptionCount_opts___OptionCount___init(fra.me.REG[1], fra.me.REG[2]);
+  ATTR_toolcontext___ToolContext____opt_verbose(fra.me.REG[0]) = fra.me.REG[2];
+  /* toolcontext.nit:161 */
   if (!once_value_21) {
-    fra.me.REG[2] = BOX_NativeString("Do not use a specialized algorithm to find reachable methods from initializers");
-    REGB0 = TAG_Int(78);
+    fra.me.REG[2] = BOX_NativeString("Stop on first error");
+    REGB0 = TAG_Int(19);
     fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
     once_value_21 = fra.me.REG[2];
     register_static_object(&once_value_21);
@@ -15484,8 +14502,8 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   REGB0 = TAG_Int(0);
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_22) {
-    fra.me.REG[3] = BOX_NativeString("--no-global-RFIM-analysis");
-    REGB0 = TAG_Int(25);
+    fra.me.REG[3] = BOX_NativeString("--stop-on-first-error");
+    REGB0 = TAG_Int(21);
     fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
     once_value_22 = fra.me.REG[3];
     register_static_object(&once_value_22);
@@ -15493,1049 +14511,32717 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   fra.me.REG[3] = fra.me.REG[3];
   CALL_standard___collection___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_RFIMA(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./nitc.nit:41 */
-  REGB0 = TAG_Int(3);
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  ATTR_toolcontext___ToolContext____opt_stop_on_first_error(fra.me.REG[0]) = fra.me.REG[1];
+  /* toolcontext.nit:164 */
   if (!once_value_23) {
-    fra.me.REG[2] = BOX_NativeString("none");
-    REGB0 = TAG_Int(4);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
-    once_value_23 = fra.me.REG[2];
+    fra.me.REG[1] = BOX_NativeString("Do not use color to display errors and warnings");
+    REGB0 = TAG_Int(47);
+    fra.me.REG[1] = NEW_String_standard___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[2] = once_value_23;
-  fra.me.REG[2] = fra.me.REG[2];
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  } 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_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_24) {
-    fra.me.REG[2] = BOX_NativeString("cha");
-    REGB0 = TAG_Int(3);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
-    once_value_24 = fra.me.REG[2];
+    fra.me.REG[3] = BOX_NativeString("--no-color");
+    REGB0 = TAG_Int(10);
+    fra.me.REG[3] = NEW_String_standard___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[2] = once_value_24;
-  fra.me.REG[2] = fra.me.REG[2];
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  } else fra.me.REG[3] = once_value_24;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_standard___collection___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_toolcontext___ToolContext____opt_no_color(fra.me.REG[0]) = fra.me.REG[2];
+  /* toolcontext.nit:167 */
+  REGB0 = TAG_Int(0);
+  ATTR_toolcontext___ToolContext____verbose_level(fra.me.REG[0]) = REGB0;
+  /* mmloader.nit:30 */
+  fra.me.REG[2] = NEW_Array_standard___collection___array___Array___init();
+  ATTR_mmloader___ToolContext____paths(fra.me.REG[0]) = fra.me.REG[2];
+  /* mmloader.nit:33 */
+  fra.me.REG[2] = NEW_Array_standard___collection___array___Array___init();
+  ATTR_mmloader___ToolContext____loaders(fra.me.REG[0]) = fra.me.REG[2];
+  /* mmloader.nit:36 */
   if (!once_value_25) {
-    fra.me.REG[2] = BOX_NativeString("rta");
-    REGB0 = TAG_Int(3);
+    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_standard___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];
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  REGB0 = TAG_Int(1);
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_26) {
-    fra.me.REG[2] = BOX_NativeString("The algorithm to use to build the callgraph");
-    REGB0 = TAG_Int(43);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
-    once_value_26 = fra.me.REG[2];
+    fra.me.REG[3] = BOX_NativeString("-I");
+    REGB0 = TAG_Int(2);
+    fra.me.REG[3] = NEW_String_standard___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[2] = once_value_26;
-  fra.me.REG[2] = fra.me.REG[2];
-  REGB0 = TAG_Int(2);
-  REGB1 = TAG_Int(0);
-  fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
+  } else fra.me.REG[3] = once_value_26;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   if (!once_value_27) {
-    fra.me.REG[4] = BOX_NativeString("--global-callgraph");
-    REGB1 = TAG_Int(18);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
-    once_value_27 = fra.me.REG[4];
+    fra.me.REG[3] = BOX_NativeString("--path");
+    REGB0 = TAG_Int(6);
+    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_27 = fra.me.REG[3];
     register_static_object(&once_value_27);
-  } else fra.me.REG[4] = once_value_27;
-  fra.me.REG[4] = fra.me.REG[4];
-  CALL_standard___collection___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[1], fra.me.REG[2], REGB0, fra.me.REG[3]);
-  ATTR_nitc___NitCompiler____opt_global_callgraph(fra.me.REG[0]) = fra.me.REG[3];
-  /* ./nitc.nit:42 */
+  } else fra.me.REG[3] = once_value_27;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_standard___collection___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:39 */
   if (!once_value_28) {
-    fra.me.REG[3] = BOX_NativeString("NIT C library directory");
-    REGB0 = TAG_Int(23);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
-    once_value_28 = fra.me.REG[3];
+    fra.me.REG[1] = BOX_NativeString("Stop after meta-model processing");
+    REGB0 = TAG_Int(32);
+    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_28 = fra.me.REG[1];
     register_static_object(&once_value_28);
-  } else fra.me.REG[3] = once_value_28;
-  fra.me.REG[3] = fra.me.REG[3];
+  } else fra.me.REG[1] = once_value_28;
+  fra.me.REG[1] = fra.me.REG[1];
   REGB0 = TAG_Int(0);
   fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_29) {
-    fra.me.REG[1] = BOX_NativeString("--clibdir");
-    REGB0 = TAG_Int(9);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
-    once_value_29 = fra.me.REG[1];
+    fra.me.REG[3] = BOX_NativeString("--only-metamodel");
+    REGB0 = TAG_Int(16);
+    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_29 = fra.me.REG[3];
     register_static_object(&once_value_29);
-  } else fra.me.REG[1] = once_value_29;
-  fra.me.REG[1] = fra.me.REG[1];
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
-  fra.me.REG[2] = NEW_OptionString_opts___OptionString___init(fra.me.REG[3], fra.me.REG[2]);
-  ATTR_nitc___NitCompiler____opt_clibdir(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./nitc.nit:43 */
+  } else fra.me.REG[3] = once_value_29;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_standard___collection___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:42 */
   if (!once_value_30) {
-    fra.me.REG[2] = BOX_NativeString("NIT tools directory");
-    REGB0 = TAG_Int(19);
+    fra.me.REG[2] = BOX_NativeString("Only proceed to parse step of loaders");
+    REGB0 = TAG_Int(37);
     fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
     once_value_30 = fra.me.REG[2];
     register_static_object(&once_value_30);
   } else fra.me.REG[2] = once_value_30;
   fra.me.REG[2] = fra.me.REG[2];
   REGB0 = TAG_Int(0);
-  fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_31) {
-    fra.me.REG[1] = BOX_NativeString("--bindir");
-    REGB0 = TAG_Int(8);
-    fra.me.REG[1] = NEW_String_standard___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_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-  fra.me.REG[3] = NEW_OptionString_opts___OptionString___init(fra.me.REG[2], fra.me.REG[3]);
-  ATTR_nitc___NitCompiler____opt_bindir(fra.me.REG[0]) = fra.me.REG[3];
-  /* ./nitc.nit:44 */
-  if (!once_value_32) {
-    fra.me.REG[3] = BOX_NativeString("Intermediate compilation directory");
-    REGB0 = TAG_Int(34);
+    fra.me.REG[3] = BOX_NativeString("--only-parse");
+    REGB0 = TAG_Int(12);
     fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
-    once_value_32 = fra.me.REG[3];
-    register_static_object(&once_value_32);
-  } else fra.me.REG[3] = once_value_32;
+    once_value_31 = fra.me.REG[3];
+    register_static_object(&once_value_31);
+  } else fra.me.REG[3] = once_value_31;
   fra.me.REG[3] = fra.me.REG[3];
-  REGB0 = TAG_Int(0);
-  fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
-  if (!once_value_33) {
-    fra.me.REG[1] = BOX_NativeString("--compdir");
-    REGB0 = TAG_Int(9);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
-    once_value_33 = fra.me.REG[1];
+  CALL_standard___collection___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:115 */
+  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
+  ATTR_mmloader___ToolContext____processing_modules(fra.me.REG[0]) = fra.me.REG[1];
+  /* mmloader.nit:182 */
+  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
+  ATTR_mmloader___ToolContext____path_dirs(fra.me.REG[0]) = fra.me.REG[1];
+  /* program.nit:26 */
+  REGB0 = TAG_Bool(0);
+  ATTR_program___ToolContext____global(fra.me.REG[0]) = REGB0;
+  /* program.nit:27 */
+  REGB0 = TAG_Bool(1);
+  ATTR_program___ToolContext____use_SFT_optimization(fra.me.REG[0]) = REGB0;
+  /* compiling/compiling_base.nit:27 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_compiling___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___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___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___compiling_base___ToolContext____output_file(fra.me.REG[0]) = fra.me.REG[1];
+  /* compiling/compiling_base.nit:31 */
+  REGB0 = TAG_Bool(0);
+  ATTR_compiling___compiling_base___ToolContext____boost(fra.me.REG[0]) = REGB0;
+  /* compiling/compiling_base.nit:32 */
+  REGB0 = TAG_Bool(0);
+  ATTR_compiling___compiling_base___ToolContext____no_cc(fra.me.REG[0]) = REGB0;
+  /* compiling/compiling_base.nit:33 */
+  REGB0 = TAG_Bool(0);
+  ATTR_compiling___compiling_base___ToolContext____cc_link(fra.me.REG[0]) = REGB0;
+  /* compiling/compiling_base.nit:34 */
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
+  ATTR_compiling___compiling_base___ToolContext____cc_libs(fra.me.REG[0]) = fra.me.REG[1];
+  /* compiling/compiling_base.nit:35 */
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
+  ATTR_compiling___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_standard___collection___array___Array___init();
+  ATTR_compiling___compiling_base___ToolContext____cc_include_paths(fra.me.REG[0]) = fra.me.REG[1];
+  /* compiling/compiling_base.nit:37 */
+  if (!once_value_32) {
+    fra.me.REG[1] = BOX_NativeString("");
+    REGB0 = TAG_Int(0);
+    fra.me.REG[1] = NEW_String_standard___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];
+  ATTR_compiling___compiling_base___ToolContext____ext_prefix(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/syntax.nit:100 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___ToolContext____keep_ast(fra.me.REG[0]) = REGB0;
+  /* separate_options.nit:29 */
+  fra.me.REG[1] = NEW_OptionContext_opts___OptionContext___init();
+  ATTR_separate_options___ToolContext_____atseparate_options(fra.me.REG[0]) = fra.me.REG[1];
+  /* separate_options.nit:30 */
+  if (!once_value_33) {
+    fra.me.REG[1] = BOX_NativeString("Path to libraries for C compiler");
+    REGB0 = TAG_Int(32);
+    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_33 = fra.me.REG[1];
     register_static_object(&once_value_33);
   } else fra.me.REG[1] = once_value_33;
   fra.me.REG[1] = fra.me.REG[1];
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
-  fra.me.REG[2] = NEW_OptionString_opts___OptionString___init(fra.me.REG[3], fra.me.REG[2]);
-  ATTR_nitc___NitCompiler____opt_compdir(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./nitc.nit:45 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_34) {
-    fra.me.REG[2] = BOX_NativeString("Append prefix to file extension");
-    REGB0 = TAG_Int(31);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
-    once_value_34 = fra.me.REG[2];
+    fra.me.REG[3] = BOX_NativeString("--cc-lib-path");
+    REGB0 = TAG_Int(13);
+    fra.me.REG[3] = NEW_String_standard___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[2] = once_value_34;
-  fra.me.REG[2] = fra.me.REG[2];
-  REGB0 = TAG_Int(1);
-  fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  } else fra.me.REG[3] = once_value_34;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_standard___collection___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_separate_options___ToolContext_____atopt_cc_lib_paths(fra.me.REG[0]) = fra.me.REG[2];
+  /* separate_options.nit:31 */
   if (!once_value_35) {
-    fra.me.REG[1] = BOX_NativeString("-p");
-    REGB0 = TAG_Int(2);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
-    once_value_35 = fra.me.REG[1];
+    fra.me.REG[2] = BOX_NativeString("Name of library to use for C compiler");
+    REGB0 = TAG_Int(37);
+    fra.me.REG[2] = NEW_String_standard___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[1] = once_value_35;
-  fra.me.REG[1] = fra.me.REG[1];
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+  } else fra.me.REG[2] = once_value_35;
+  fra.me.REG[2] = fra.me.REG[2];
+  REGB0 = TAG_Int(0);
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_36) {
-    fra.me.REG[1] = BOX_NativeString("--extension-prefix");
-    REGB0 = TAG_Int(18);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
-    once_value_36 = fra.me.REG[1];
+    fra.me.REG[3] = BOX_NativeString("--cc-lib-name");
+    REGB0 = TAG_Int(13);
+    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_36 = fra.me.REG[3];
     register_static_object(&once_value_36);
-  } else fra.me.REG[1] = once_value_36;
-  fra.me.REG[1] = fra.me.REG[1];
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-  fra.me.REG[3] = NEW_OptionString_opts___OptionString___init(fra.me.REG[2], fra.me.REG[3]);
-  ATTR_nitc___NitCompiler____opt_extension_prefix(fra.me.REG[0]) = fra.me.REG[3];
-  /* ./nitc.nit:46 */
-  REGB0 = TAG_Int(3);
-  fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  } else fra.me.REG[3] = once_value_36;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_standard___collection___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_separate_options___ToolContext_____atopt_cc_libs(fra.me.REG[0]) = fra.me.REG[1];
+  /* separate_options.nit:32 */
   if (!once_value_37) {
-    fra.me.REG[2] = BOX_NativeString("none");
-    REGB0 = TAG_Int(4);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
-    once_value_37 = fra.me.REG[2];
+    fra.me.REG[1] = BOX_NativeString("Path to .h files for C compiler");
+    REGB0 = TAG_Int(31);
+    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_37 = fra.me.REG[1];
     register_static_object(&once_value_37);
-  } else fra.me.REG[2] = once_value_37;
-  fra.me.REG[2] = fra.me.REG[2];
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
+  } else fra.me.REG[1] = once_value_37;
+  fra.me.REG[1] = fra.me.REG[1];
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_38) {
-    fra.me.REG[2] = BOX_NativeString("C");
-    REGB0 = TAG_Int(1);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
-    once_value_38 = fra.me.REG[2];
+    fra.me.REG[3] = BOX_NativeString("--cc-header-path");
+    REGB0 = TAG_Int(16);
+    fra.me.REG[3] = NEW_String_standard___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[2] = once_value_38;
-  fra.me.REG[2] = fra.me.REG[2];
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
+  } else fra.me.REG[3] = once_value_38;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_standard___collection___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_separate_options___ToolContext_____atopt_cc_include_paths(fra.me.REG[0]) = fra.me.REG[2];
+  /* global/global.nit:44 */
   if (!once_value_39) {
-    fra.me.REG[2] = BOX_NativeString("icode");
-    REGB0 = TAG_Int(5);
+    fra.me.REG[2] = BOX_NativeString("rta");
+    REGB0 = TAG_Int(3);
     fra.me.REG[2] = NEW_String_standard___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_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
+  ATTR_global___ToolContext____global_callgraph(fra.me.REG[0]) = fra.me.REG[2];
+  /* global/global.nit:46 */
   if (!once_value_40) {
-    fra.me.REG[2] = BOX_NativeString("The type of code we want to be generated");
-    REGB0 = TAG_Int(40);
+    fra.me.REG[2] = BOX_NativeString("Use global compilation");
+    REGB0 = TAG_Int(22);
     fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
     once_value_40 = fra.me.REG[2];
     register_static_object(&once_value_40);
   } else fra.me.REG[2] = once_value_40;
   fra.me.REG[2] = fra.me.REG[2];
-  REGB0 = TAG_Int(1);
-  REGB1 = TAG_Int(0);
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
+  REGB0 = TAG_Int(0);
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_41) {
-    fra.me.REG[4] = BOX_NativeString("--output-format");
-    REGB1 = TAG_Int(15);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
-    once_value_41 = fra.me.REG[4];
+    fra.me.REG[3] = BOX_NativeString("--global");
+    REGB0 = TAG_Int(8);
+    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_41 = fra.me.REG[3];
     register_static_object(&once_value_41);
-  } else fra.me.REG[4] = once_value_41;
-  fra.me.REG[4] = fra.me.REG[4];
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-  fra.me.REG[1] = NEW_OptionEnum_opts___OptionEnum___init(fra.me.REG[3], fra.me.REG[2], REGB0, fra.me.REG[1]);
-  ATTR_nitc___NitCompiler____opt_output_format(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//syntax.nit:98 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___ToolContext____keep_ast(fra.me.REG[0]) = REGB0;
-  /* ./mmloader.nit:98 */
-  REGB0 = TAG_Int(0);
-  ATTR_mmloader___ToolContext____error_count(fra.me.REG[0]) = REGB0;
-  /* ./mmloader.nit:101 */
-  REGB0 = TAG_Int(0);
-  ATTR_mmloader___ToolContext____warning_count(fra.me.REG[0]) = REGB0;
-  /* ./mmloader.nit:104 */
+  } else fra.me.REG[3] = once_value_41;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_standard___collection___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_global___ToolContext____opt_global(fra.me.REG[0]) = fra.me.REG[1];
+  /* global/global.nit:47 */
   if (!once_value_42) {
-    fra.me.REG[1] = BOX_NativeString("logs");
-    REGB0 = TAG_Int(4);
+    fra.me.REG[1] = BOX_NativeString("Do not use SFT optimization");
+    REGB0 = TAG_Int(27);
     fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
     once_value_42 = fra.me.REG[1];
     register_static_object(&once_value_42);
   } else fra.me.REG[1] = once_value_42;
   fra.me.REG[1] = fra.me.REG[1];
-  ATTR_mmloader___ToolContext____log_directory(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./mmloader.nit:107 */
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-  ATTR_mmloader___ToolContext____messages(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./mmloader.nit:108 */
-  fra.me.REG[1] = NEW_ComparableSorter_standard___collection___sorter___ComparableSorter___init();
-  ATTR_mmloader___ToolContext____message_sorter(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./mmloader.nit:166 */
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-  ATTR_mmloader___ToolContext____paths(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./mmloader.nit:169 */
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-  ATTR_mmloader___ToolContext____loaders(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./mmloader.nit:172 */
-  fra.me.REG[1] = NEW_OptionContext_opts___OptionContext___init();
-  ATTR_mmloader___ToolContext____option_context(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./mmloader.nit:175 */
-  if (!once_value_43) {
-    fra.me.REG[1] = BOX_NativeString("Show warnings");
-    REGB0 = TAG_Int(13);
-    fra.me.REG[1] = NEW_String_standard___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];
-  REGB0 = TAG_Int(1);
+  REGB0 = TAG_Int(0);
   fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
-  if (!once_value_44) {
-    fra.me.REG[3] = BOX_NativeString("-W");
-    REGB0 = TAG_Int(2);
+  if (!once_value_43) {
+    fra.me.REG[3] = BOX_NativeString("--no-global-SFT-optimization");
+    REGB0 = TAG_Int(28);
     fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
-    once_value_44 = fra.me.REG[3];
-    register_static_object(&once_value_44);
-  } else fra.me.REG[3] = once_value_44;
+    once_value_43 = fra.me.REG[3];
+    register_static_object(&once_value_43);
+  } else fra.me.REG[3] = once_value_43;
   fra.me.REG[3] = fra.me.REG[3];
   CALL_standard___collection___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_global___ToolContext____opt_global_no_STF_opt(fra.me.REG[0]) = fra.me.REG[2];
+  /* global/global.nit:48 */
+  if (!once_value_44) {
+    fra.me.REG[2] = BOX_NativeString("Do not use dead method removal optimization");
+    REGB0 = TAG_Int(43);
+    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    once_value_44 = fra.me.REG[2];
+    register_static_object(&once_value_44);
+  } else fra.me.REG[2] = once_value_44;
+  fra.me.REG[2] = fra.me.REG[2];
+  REGB0 = TAG_Int(0);
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_45) {
-    fra.me.REG[3] = BOX_NativeString("--warn");
-    REGB0 = TAG_Int(6);
+    fra.me.REG[3] = BOX_NativeString("--no-global-DMR-optimization");
+    REGB0 = TAG_Int(28);
     fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
     once_value_45 = fra.me.REG[3];
     register_static_object(&once_value_45);
   } else fra.me.REG[3] = once_value_45;
   fra.me.REG[3] = fra.me.REG[3];
-  CALL_standard___collection___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:178 */
+  CALL_standard___collection___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_global___ToolContext____opt_global_no_DMR_opt(fra.me.REG[0]) = fra.me.REG[1];
+  /* global/global.nit:49 */
   if (!once_value_46) {
-    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_standard___string___String___with_native(fra.me.REG[2], REGB0);
-    once_value_46 = fra.me.REG[2];
+    fra.me.REG[1] = BOX_NativeString("Do not automatically inline getters/setters");
+    REGB0 = TAG_Int(43);
+    fra.me.REG[1] = NEW_String_standard___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[2] = once_value_46;
-  fra.me.REG[2] = fra.me.REG[2];
-  REGB0 = TAG_Int(1);
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  } else fra.me.REG[1] = once_value_46;
+  fra.me.REG[1] = fra.me.REG[1];
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_47) {
-    fra.me.REG[3] = BOX_NativeString("-I");
-    REGB0 = TAG_Int(2);
+    fra.me.REG[3] = BOX_NativeString("--no-global-get-set-inlining");
+    REGB0 = TAG_Int(28);
     fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
     once_value_47 = fra.me.REG[3];
     register_static_object(&once_value_47);
   } else fra.me.REG[3] = once_value_47;
   fra.me.REG[3] = fra.me.REG[3];
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  CALL_standard___collection___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_global___ToolContext____opt_global_no_inline_get_set(fra.me.REG[0]) = fra.me.REG[2];
+  /* global/global.nit:50 */
   if (!once_value_48) {
-    fra.me.REG[3] = BOX_NativeString("--path");
-    REGB0 = TAG_Int(6);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
-    once_value_48 = fra.me.REG[3];
+    fra.me.REG[2] = BOX_NativeString("Do not remove get tests outside object initialization");
+    REGB0 = TAG_Int(53);
+    fra.me.REG[2] = NEW_String_standard___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[3] = once_value_48;
+  } else fra.me.REG[2] = once_value_48;
+  fra.me.REG[2] = fra.me.REG[2];
+  REGB0 = TAG_Int(0);
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  if (!once_value_49) {
+    fra.me.REG[3] = BOX_NativeString("--no-global-OOIT-optimization");
+    REGB0 = TAG_Int(29);
+    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_49 = fra.me.REG[3];
+    register_static_object(&once_value_49);
+  } else fra.me.REG[3] = once_value_49;
   fra.me.REG[3] = fra.me.REG[3];
   CALL_standard___collection___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:181 */
-  if (!once_value_49) {
-    fra.me.REG[1] = BOX_NativeString("Generate various log files");
-    REGB0 = TAG_Int(26);
+  fra.me.REG[1] = NEW_OptionBool_opts___OptionBool___init(fra.me.REG[2], fra.me.REG[1]);
+  ATTR_global___ToolContext____opt_global_no_out_of_init_get_test_opt(fra.me.REG[0]) = fra.me.REG[1];
+  /* global/global.nit:51 */
+  if (!once_value_50) {
+    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_standard___string___String___with_native(fra.me.REG[1], REGB0);
-    once_value_49 = fra.me.REG[1];
-    register_static_object(&once_value_49);
-  } else fra.me.REG[1] = once_value_49;
+    once_value_50 = fra.me.REG[1];
+    register_static_object(&once_value_50);
+  } else fra.me.REG[1] = once_value_50;
   fra.me.REG[1] = fra.me.REG[1];
   REGB0 = TAG_Int(0);
   fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
-  if (!once_value_50) {
-    fra.me.REG[3] = BOX_NativeString("--log");
-    REGB0 = TAG_Int(5);
+  if (!once_value_51) {
+    fra.me.REG[3] = BOX_NativeString("--no-global-RFIM-analysis");
+    REGB0 = TAG_Int(25);
     fra.me.REG[3] = NEW_String_standard___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;
+    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_standard___collection___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:184 */
-  if (!once_value_51) {
-    fra.me.REG[2] = BOX_NativeString("Directory where to generate log files");
-    REGB0 = TAG_Int(37);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
-    once_value_51 = fra.me.REG[2];
-    register_static_object(&once_value_51);
-  } else fra.me.REG[2] = once_value_51;
-  fra.me.REG[2] = fra.me.REG[2];
-  REGB0 = TAG_Int(0);
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  ATTR_global___ToolContext____opt_global_no_RFIMA(fra.me.REG[0]) = fra.me.REG[2];
+  /* global/global.nit:52 */
+  REGB0 = TAG_Int(3);
+  fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_52) {
-    fra.me.REG[3] = BOX_NativeString("--log-dir");
-    REGB0 = TAG_Int(9);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
-    once_value_52 = fra.me.REG[3];
+    fra.me.REG[1] = BOX_NativeString("none");
+    REGB0 = TAG_Int(4);
+    fra.me.REG[1] = NEW_String_standard___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[3] = once_value_52;
-  fra.me.REG[3] = fra.me.REG[3];
-  CALL_standard___collection___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:187 */
+  } else fra.me.REG[1] = once_value_52;
+  fra.me.REG[1] = fra.me.REG[1];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
   if (!once_value_53) {
-    fra.me.REG[1] = BOX_NativeString("Stop after meta-model processing");
-    REGB0 = TAG_Int(32);
+    fra.me.REG[1] = BOX_NativeString("cha");
+    REGB0 = TAG_Int(3);
     fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
     once_value_53 = fra.me.REG[1];
     register_static_object(&once_value_53);
   } else fra.me.REG[1] = once_value_53;
   fra.me.REG[1] = fra.me.REG[1];
-  REGB0 = TAG_Int(0);
-  fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
   if (!once_value_54) {
-    fra.me.REG[3] = BOX_NativeString("--only-metamodel");
-    REGB0 = TAG_Int(16);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
-    once_value_54 = fra.me.REG[3];
+    fra.me.REG[1] = BOX_NativeString("rta");
+    REGB0 = TAG_Int(3);
+    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_54 = fra.me.REG[1];
     register_static_object(&once_value_54);
-  } else fra.me.REG[3] = once_value_54;
-  fra.me.REG[3] = fra.me.REG[3];
-  CALL_standard___collection___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:190 */
+  } else fra.me.REG[1] = once_value_54;
+  fra.me.REG[1] = fra.me.REG[1];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
   if (!once_value_55) {
-    fra.me.REG[2] = BOX_NativeString("Only proceed to parse step of loaders");
-    REGB0 = TAG_Int(37);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
-    once_value_55 = fra.me.REG[2];
+    fra.me.REG[1] = BOX_NativeString("The algorithm to use to build the callgraph");
+    REGB0 = TAG_Int(43);
+    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_55 = fra.me.REG[1];
     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_standard___collection___array___Array___with_capacity(REGB0);
+  } else fra.me.REG[1] = once_value_55;
+  fra.me.REG[1] = fra.me.REG[1];
+  REGB0 = TAG_Int(2);
+  REGB1 = TAG_Int(0);
+  fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
   if (!once_value_56) {
-    fra.me.REG[3] = BOX_NativeString("--only-parse");
-    REGB0 = TAG_Int(12);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
-    once_value_56 = fra.me.REG[3];
+    fra.me.REG[4] = BOX_NativeString("--global-callgraph");
+    REGB1 = TAG_Int(18);
+    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+    once_value_56 = fra.me.REG[4];
     register_static_object(&once_value_56);
-  } else fra.me.REG[3] = once_value_56;
-  fra.me.REG[3] = fra.me.REG[3];
-  CALL_standard___collection___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:193 */
+  } else fra.me.REG[4] = once_value_56;
+  fra.me.REG[4] = fra.me.REG[4];
+  CALL_standard___collection___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_global___ToolContext____opt_global_callgraph(fra.me.REG[0]) = fra.me.REG[3];
+  /* nitc.nit:33 */
   if (!once_value_57) {
-    fra.me.REG[1] = BOX_NativeString("Show Help (This screen)");
-    REGB0 = TAG_Int(23);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
-    once_value_57 = fra.me.REG[1];
+    fra.me.REG[3] = BOX_NativeString("Output file");
+    REGB0 = TAG_Int(11);
+    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_57 = fra.me.REG[3];
     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(2);
-  fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  } else fra.me.REG[3] = once_value_57;
+  fra.me.REG[3] = fra.me.REG[3];
+  REGB0 = TAG_Int(1);
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_58) {
-    fra.me.REG[3] = BOX_NativeString("-h");
+    fra.me.REG[2] = BOX_NativeString("-o");
     REGB0 = TAG_Int(2);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
-    once_value_58 = fra.me.REG[3];
+    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    once_value_58 = fra.me.REG[2];
     register_static_object(&once_value_58);
-  } else fra.me.REG[3] = once_value_58;
-  fra.me.REG[3] = fra.me.REG[3];
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  } else fra.me.REG[2] = once_value_58;
+  fra.me.REG[2] = fra.me.REG[2];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   if (!once_value_59) {
-    fra.me.REG[3] = BOX_NativeString("-?");
-    REGB0 = TAG_Int(2);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
-    once_value_59 = fra.me.REG[3];
+    fra.me.REG[2] = BOX_NativeString("--output");
+    REGB0 = TAG_Int(8);
+    fra.me.REG[2] = NEW_String_standard___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[3] = once_value_59;
-  fra.me.REG[3] = fra.me.REG[3];
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  } else fra.me.REG[2] = once_value_59;
+  fra.me.REG[2] = fra.me.REG[2];
+  CALL_standard___collection___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_output(fra.me.REG[0]) = fra.me.REG[1];
+  /* nitc.nit:34 */
   if (!once_value_60) {
-    fra.me.REG[3] = BOX_NativeString("--help");
-    REGB0 = TAG_Int(6);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
-    once_value_60 = fra.me.REG[3];
+    fra.me.REG[1] = BOX_NativeString("Optimize compilation");
+    REGB0 = TAG_Int(20);
+    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_60 = fra.me.REG[1];
     register_static_object(&once_value_60);
-  } else fra.me.REG[3] = once_value_60;
-  fra.me.REG[3] = fra.me.REG[3];
-  CALL_standard___collection___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:196 */
+  } else fra.me.REG[1] = once_value_60;
+  fra.me.REG[1] = fra.me.REG[1];
+  REGB0 = TAG_Int(1);
+  fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_61) {
-    fra.me.REG[2] = BOX_NativeString("Show version and exit");
-    REGB0 = TAG_Int(21);
+    fra.me.REG[2] = BOX_NativeString("-O");
+    REGB0 = TAG_Int(2);
     fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
     once_value_61 = fra.me.REG[2];
     register_static_object(&once_value_61);
   } else fra.me.REG[2] = once_value_61;
   fra.me.REG[2] = fra.me.REG[2];
-  REGB0 = TAG_Int(0);
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
   if (!once_value_62) {
-    fra.me.REG[3] = BOX_NativeString("--version");
-    REGB0 = TAG_Int(9);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
-    once_value_62 = fra.me.REG[3];
+    fra.me.REG[2] = BOX_NativeString("--boost");
+    REGB0 = TAG_Int(7);
+    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    once_value_62 = fra.me.REG[2];
     register_static_object(&once_value_62);
-  } else fra.me.REG[3] = once_value_62;
-  fra.me.REG[3] = fra.me.REG[3];
-  CALL_standard___collection___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:199 */
+  } else fra.me.REG[2] = once_value_62;
+  fra.me.REG[2] = fra.me.REG[2];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
+  fra.me.REG[3] = NEW_OptionBool_opts___OptionBool___init(fra.me.REG[1], fra.me.REG[3]);
+  ATTR_nitc___NitCompiler____opt_boost(fra.me.REG[0]) = fra.me.REG[3];
+  /* nitc.nit:35 */
   if (!once_value_63) {
-    fra.me.REG[1] = BOX_NativeString("Verbose");
-    REGB0 = TAG_Int(7);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
-    once_value_63 = fra.me.REG[1];
+    fra.me.REG[3] = BOX_NativeString("Do not invoke C compiler");
+    REGB0 = TAG_Int(24);
+    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_63 = fra.me.REG[3];
     register_static_object(&once_value_63);
-  } else fra.me.REG[1] = once_value_63;
-  fra.me.REG[1] = fra.me.REG[1];
-  REGB0 = TAG_Int(1);
-  fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  } else fra.me.REG[3] = once_value_63;
+  fra.me.REG[3] = fra.me.REG[3];
+  REGB0 = TAG_Int(0);
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_64) {
-    fra.me.REG[3] = BOX_NativeString("-v");
-    REGB0 = TAG_Int(2);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
-    once_value_64 = fra.me.REG[3];
+    fra.me.REG[2] = BOX_NativeString("--no-cc");
+    REGB0 = TAG_Int(7);
+    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    once_value_64 = fra.me.REG[2];
     register_static_object(&once_value_64);
-  } else fra.me.REG[3] = once_value_64;
-  fra.me.REG[3] = fra.me.REG[3];
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  } else fra.me.REG[2] = once_value_64;
+  fra.me.REG[2] = fra.me.REG[2];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  fra.me.REG[1] = NEW_OptionBool_opts___OptionBool___init(fra.me.REG[3], fra.me.REG[1]);
+  ATTR_nitc___NitCompiler____opt_no_cc(fra.me.REG[0]) = fra.me.REG[1];
+  /* nitc.nit:36 */
   if (!once_value_65) {
-    fra.me.REG[3] = BOX_NativeString("--verbose");
-    REGB0 = TAG_Int(9);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
-    once_value_65 = fra.me.REG[3];
+    fra.me.REG[1] = BOX_NativeString("Do not invoke C linker");
+    REGB0 = TAG_Int(22);
+    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_65 = fra.me.REG[1];
     register_static_object(&once_value_65);
-  } else fra.me.REG[3] = once_value_65;
-  fra.me.REG[3] = fra.me.REG[3];
-  CALL_standard___collection___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:202 */
+  } else fra.me.REG[1] = once_value_65;
+  fra.me.REG[1] = fra.me.REG[1];
+  REGB0 = TAG_Int(0);
+  fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_66) {
-    fra.me.REG[2] = BOX_NativeString("Stop on first error");
-    REGB0 = TAG_Int(19);
+    fra.me.REG[2] = BOX_NativeString("--cc-no-link");
+    REGB0 = TAG_Int(12);
     fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
     once_value_66 = fra.me.REG[2];
     register_static_object(&once_value_66);
   } else fra.me.REG[2] = once_value_66;
   fra.me.REG[2] = fra.me.REG[2];
-  REGB0 = TAG_Int(0);
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
+  fra.me.REG[3] = NEW_OptionBool_opts___OptionBool___init(fra.me.REG[1], fra.me.REG[3]);
+  ATTR_nitc___NitCompiler____opt_cc_no_link(fra.me.REG[0]) = fra.me.REG[3];
+  /* nitc.nit:37 */
   if (!once_value_67) {
-    fra.me.REG[3] = BOX_NativeString("--stop-on-first-error");
-    REGB0 = TAG_Int(21);
+    fra.me.REG[3] = BOX_NativeString("NIT C library directory");
+    REGB0 = TAG_Int(23);
     fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
     once_value_67 = fra.me.REG[3];
     register_static_object(&once_value_67);
   } else fra.me.REG[3] = once_value_67;
   fra.me.REG[3] = fra.me.REG[3];
-  CALL_standard___collection___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_stop_on_first_error(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./mmloader.nit:205 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_68) {
-    fra.me.REG[1] = BOX_NativeString("Do not use color to display errors and warnings");
-    REGB0 = TAG_Int(47);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
-    once_value_68 = fra.me.REG[1];
+    fra.me.REG[2] = BOX_NativeString("--clibdir");
+    REGB0 = TAG_Int(9);
+    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    once_value_68 = fra.me.REG[2];
     register_static_object(&once_value_68);
-  } else fra.me.REG[1] = once_value_68;
-  fra.me.REG[1] = fra.me.REG[1];
-  REGB0 = TAG_Int(0);
-  fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  } else fra.me.REG[2] = once_value_68;
+  fra.me.REG[2] = fra.me.REG[2];
+  CALL_standard___collection___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:38 */
   if (!once_value_69) {
-    fra.me.REG[3] = BOX_NativeString("--no-color");
-    REGB0 = TAG_Int(10);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
-    once_value_69 = fra.me.REG[3];
+    fra.me.REG[1] = BOX_NativeString("NIT tools directory");
+    REGB0 = TAG_Int(19);
+    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_69 = fra.me.REG[1];
     register_static_object(&once_value_69);
-  } else fra.me.REG[3] = once_value_69;
-  fra.me.REG[3] = fra.me.REG[3];
-  CALL_standard___collection___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_no_color(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./mmloader.nit:208 */
+  } else fra.me.REG[1] = once_value_69;
+  fra.me.REG[1] = fra.me.REG[1];
   REGB0 = TAG_Int(0);
-  ATTR_mmloader___ToolContext____verbose_level(fra.me.REG[0]) = REGB0;
-  /* ./mmloader.nit:291 */
-  fra.me.REG[2] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
-  ATTR_mmloader___ToolContext____processing_modules(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./mmloader.nit:358 */
-  fra.me.REG[2] = NEW_HashMap_standard___collection___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_metamodel___partial_order___PartialOrder___init();
-  ATTR_metamodel___abstractmetamodel___MMContext____module_hierarchy(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./metamodel//abstractmetamodel.nit:34 */
-  fra.me.REG[2] = NEW_PartialOrder_metamodel___partial_order___PartialOrder___init();
-  ATTR_metamodel___abstractmetamodel___MMContext____class_hierarchy(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./metamodel//abstractmetamodel.nit:37 */
-  fra.me.REG[2] = NEW_Array_standard___collection___array___Array___init();
-  ATTR_metamodel___abstractmetamodel___MMContext____global_classes(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./metamodel//abstractmetamodel.nit:40 */
-  fra.me.REG[2] = NEW_Array_standard___collection___array___Array___init();
-  ATTR_metamodel___abstractmetamodel___MMContext____modules(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./separate_options.nit:11 */
-  fra.me.REG[2] = NEW_OptionContext_opts___OptionContext___init();
-  ATTR_separate_options___ToolContext_____atseparate_options(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./separate_options.nit:12 */
+  fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_70) {
-    fra.me.REG[2] = BOX_NativeString("Path to libraries for C compiler");
-    REGB0 = TAG_Int(32);
+    fra.me.REG[2] = BOX_NativeString("--bindir");
+    REGB0 = TAG_Int(8);
     fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
     once_value_70 = fra.me.REG[2];
     register_static_object(&once_value_70);
   } else fra.me.REG[2] = once_value_70;
   fra.me.REG[2] = fra.me.REG[2];
-  REGB0 = TAG_Int(0);
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  CALL_standard___collection___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:39 */
   if (!once_value_71) {
-    fra.me.REG[3] = BOX_NativeString("--cc-lib-path");
-    REGB0 = TAG_Int(13);
+    fra.me.REG[3] = BOX_NativeString("Intermediate compilation directory");
+    REGB0 = TAG_Int(34);
     fra.me.REG[3] = NEW_String_standard___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_standard___collection___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_separate_options___ToolContext_____atopt_cc_lib_paths(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./separate_options.nit:13 */
+  REGB0 = TAG_Int(0);
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_72) {
-    fra.me.REG[1] = BOX_NativeString("Name of library to use for C compiler");
-    REGB0 = TAG_Int(37);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
-    once_value_72 = fra.me.REG[1];
+    fra.me.REG[2] = BOX_NativeString("--compdir");
+    REGB0 = TAG_Int(9);
+    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    once_value_72 = fra.me.REG[2];
     register_static_object(&once_value_72);
-  } else fra.me.REG[1] = once_value_72;
-  fra.me.REG[1] = fra.me.REG[1];
-  REGB0 = TAG_Int(0);
-  fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  } else fra.me.REG[2] = once_value_72;
+  fra.me.REG[2] = fra.me.REG[2];
+  CALL_standard___collection___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:40 */
   if (!once_value_73) {
-    fra.me.REG[3] = BOX_NativeString("--cc-lib-name");
-    REGB0 = TAG_Int(13);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
-    once_value_73 = fra.me.REG[3];
+    fra.me.REG[1] = BOX_NativeString("Append prefix to file extension");
+    REGB0 = TAG_Int(31);
+    fra.me.REG[1] = NEW_String_standard___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[3] = once_value_73;
-  fra.me.REG[3] = fra.me.REG[3];
-  CALL_standard___collection___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_separate_options___ToolContext_____atopt_cc_libs(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./separate_options.nit:14 */
+  } else fra.me.REG[1] = once_value_73;
+  fra.me.REG[1] = fra.me.REG[1];
+  REGB0 = TAG_Int(1);
+  fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_74) {
-    fra.me.REG[2] = BOX_NativeString("Path to .h files for C compiler");
-    REGB0 = TAG_Int(31);
+    fra.me.REG[2] = BOX_NativeString("-p");
+    REGB0 = TAG_Int(2);
     fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
     once_value_74 = fra.me.REG[2];
     register_static_object(&once_value_74);
   } else fra.me.REG[2] = once_value_74;
   fra.me.REG[2] = fra.me.REG[2];
-  REGB0 = TAG_Int(0);
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
   if (!once_value_75) {
-    fra.me.REG[3] = BOX_NativeString("--cc-header-path");
-    REGB0 = TAG_Int(16);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
-    once_value_75 = fra.me.REG[3];
+    fra.me.REG[2] = BOX_NativeString("--extension-prefix");
+    REGB0 = TAG_Int(18);
+    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    once_value_75 = fra.me.REG[2];
     register_static_object(&once_value_75);
-  } else fra.me.REG[3] = once_value_75;
-  fra.me.REG[3] = fra.me.REG[3];
-  CALL_standard___collection___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_separate_options___ToolContext_____atopt_cc_include_paths(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./analysis//analysis.nit:48 */
+  } else fra.me.REG[2] = once_value_75;
+  fra.me.REG[2] = fra.me.REG[2];
+  CALL_standard___collection___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:41 */
+  REGB0 = TAG_Int(3);
+  fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_76) {
-    fra.me.REG[1] = BOX_NativeString("rta");
-    REGB0 = TAG_Int(3);
+    fra.me.REG[1] = BOX_NativeString("none");
+    REGB0 = TAG_Int(4);
     fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
     once_value_76 = fra.me.REG[1];
     register_static_object(&once_value_76);
   } else fra.me.REG[1] = once_value_76;
   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___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___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___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___compiling_base___ToolContext____output_file(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./compiling//compiling_base.nit:31 */
-  REGB0 = TAG_Bool(false);
-  ATTR_compiling___compiling_base___ToolContext____boost(fra.me.REG[0]) = REGB0;
-  /* ./compiling//compiling_base.nit:32 */
-  REGB0 = TAG_Bool(false);
-  ATTR_compiling___compiling_base___ToolContext____no_cc(fra.me.REG[0]) = REGB0;
-  /* ./compiling//compiling_base.nit:33 */
-  REGB0 = TAG_Bool(false);
-  ATTR_compiling___compiling_base___ToolContext____cc_link(fra.me.REG[0]) = REGB0;
-  /* ./compiling//compiling_base.nit:34 */
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-  ATTR_compiling___compiling_base___ToolContext____cc_libs(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./compiling//compiling_base.nit:35 */
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-  ATTR_compiling___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_standard___collection___array___Array___init();
-  ATTR_compiling___compiling_base___ToolContext____cc_include_paths(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./compiling//compiling_base.nit:37 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
   if (!once_value_77) {
-    fra.me.REG[1] = BOX_NativeString("");
-    REGB0 = TAG_Int(0);
+    fra.me.REG[1] = BOX_NativeString("C");
+    REGB0 = TAG_Int(1);
     fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
     once_value_77 = fra.me.REG[1];
     register_static_object(&once_value_77);
   } else fra.me.REG[1] = once_value_77;
   fra.me.REG[1] = fra.me.REG[1];
-  ATTR_compiling___compiling_base___ToolContext____ext_prefix(fra.me.REG[0]) = fra.me.REG[1];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+  if (!once_value_78) {
+    fra.me.REG[1] = BOX_NativeString("icode");
+    REGB0 = TAG_Int(5);
+    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_78 = fra.me.REG[1];
+    register_static_object(&once_value_78);
+  } else fra.me.REG[1] = once_value_78;
+  fra.me.REG[1] = fra.me.REG[1];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+  if (!once_value_79) {
+    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_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_79 = fra.me.REG[1];
+    register_static_object(&once_value_79);
+  } else fra.me.REG[1] = once_value_79;
+  fra.me.REG[1] = fra.me.REG[1];
+  REGB0 = TAG_Int(1);
+  REGB1 = TAG_Int(0);
+  fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
+  if (!once_value_80) {
+    fra.me.REG[4] = BOX_NativeString("--output-format");
+    REGB1 = TAG_Int(15);
+    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+    once_value_80 = fra.me.REG[4];
+    register_static_object(&once_value_80);
+  } else fra.me.REG[4] = once_value_80;
+  fra.me.REG[4] = fra.me.REG[4];
+  CALL_standard___collection___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];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_nitc___NitCompiler(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 65);
+  obj->vft = (classtable_elt_t*)VFT_nitc___NitCompiler;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_nitc___NitCompiler[] = "check new NitCompiler";
+void CHECKNEW_nitc___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_nitc___NitCompiler;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  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_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____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____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_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____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_toolcontext___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_toolcontext___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_toolcontext___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_toolcontext___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_toolcontext___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_toolcontext___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_toolcontext___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_toolcontext___ToolContext____opt_quiet(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_opt_quiet", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_toolcontext___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_toolcontext___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_toolcontext___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_toolcontext___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_toolcontext___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_toolcontext___ToolContext____opt_stop_on_first_error(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_opt_stop_on_first_error", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_toolcontext___ToolContext____opt_no_color(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_opt_no_color", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_toolcontext___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_global___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_global___ToolContext____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_global___ToolContext____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_global___ToolContext____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_global___ToolContext____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_global___ToolContext____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_global___ToolContext____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_global___ToolContext____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_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_separate_options___ToolContext_____atseparate_options(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@separate_options", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_separate_options___ToolContext_____atopt_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_separate_options___ToolContext_____atopt_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_separate_options___ToolContext_____atopt_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_compiling___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___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___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___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___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___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___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;
+}
+static const char LOCATE_NEW_NitCompiler_nitc___NitCompiler___init[] = "new NitCompiler nitc::NitCompiler::init";
+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};
+  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_NitCompiler_nitc___NitCompiler___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* nitc.nit:43 */
+  fra.me.REG[0] = NEW_nitc___NitCompiler();
+  INIT_ATTRIBUTES__nitc___NitCompiler(fra.me.REG[0]);
+  nitc___NitCompiler___init(fra.me.REG[0], init_table);
+  CHECKNEW_nitc___NitCompiler(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_toolcontext___ToolContext[141] = {
+  {(bigint) 331 /* 0: Identity */},
+  {(bigint) 55 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ToolContext" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ToolContext < Object: superclass typecheck marker */},
+  {(bigint) 175 /* 4: ToolContext < MMContext: superclass typecheck marker */},
+  {(bigint) 331 /* 5: ToolContext < ToolContext: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: ToolContext < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ToolContext___handle_property_conflict},
+  {(bigint) 0 /* 51: ToolContext < MMContext: superclass init_table position */},
+  {(bigint) metamodel___abstractmetamodel___MMContext___init},
+  {(bigint) metamodel___abstractmetamodel___MMContext___module_hierarchy},
+  {(bigint) metamodel___abstractmetamodel___MMContext___class_hierarchy},
+  {(bigint) metamodel___abstractmetamodel___MMContext___modules},
+  {(bigint) metamodel___abstractmetamodel___MMContext___add_module},
+  {(bigint) metamodel___abstractmetamodel___MMContext___add_global_class},
+  {(bigint) metamodel___abstractmetamodel___MMContext___add_local_class},
+  {(bigint) global___ToolContext___global_callgraph},
+  {(bigint) global___ToolContext___global_callgraph__eq},
+  {(bigint) global___ToolContext___opt_global},
+  {(bigint) global___ToolContext___opt_global_no_STF_opt},
+  {(bigint) global___ToolContext___opt_global_no_DMR_opt},
+  {(bigint) global___ToolContext___opt_global_no_inline_get_set},
+  {(bigint) global___ToolContext___opt_global_no_out_of_init_get_test_opt},
+  {(bigint) global___ToolContext___opt_global_no_RFIMA},
+  {(bigint) global___ToolContext___opt_global_callgraph},
+  {(bigint) separate_options___ToolContext___init},
+  {(bigint) syntax___ToolContext___keep_ast},
+  {(bigint) syntax___ToolContext___keep_ast__eq},
+  {(bigint) mmloader___ToolContext___paths},
+  {(bigint) mmloader___ToolContext___opt_path},
+  {(bigint) mmloader___ToolContext___opt_only_metamodel},
+  {(bigint) mmloader___ToolContext___opt_only_parse},
+  {(bigint) toolcontext___ToolContext___init},
+  {(bigint) toolcontext___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) 2 /* 82: ToolContext < ToolContext: superclass init_table position */},
+  {(bigint) toolcontext___ToolContext___error_count},
+  {(bigint) toolcontext___ToolContext___warning_count},
+  {(bigint) toolcontext___ToolContext___log_directory},
+  {(bigint) toolcontext___ToolContext___check_errors},
+  {(bigint) toolcontext___ToolContext___error},
+  {(bigint) toolcontext___ToolContext___fatal_error},
+  {(bigint) toolcontext___ToolContext___warning},
+  {(bigint) toolcontext___ToolContext___info},
+  {(bigint) toolcontext___ToolContext___option_context},
+  {(bigint) toolcontext___ToolContext___opt_warn},
+  {(bigint) toolcontext___ToolContext___opt_quiet},
+  {(bigint) toolcontext___ToolContext___opt_log},
+  {(bigint) toolcontext___ToolContext___opt_log_dir},
+  {(bigint) toolcontext___ToolContext___opt_help},
+  {(bigint) toolcontext___ToolContext___opt_version},
+  {(bigint) toolcontext___ToolContext___opt_verbose},
+  {(bigint) toolcontext___ToolContext___opt_stop_on_first_error},
+  {(bigint) toolcontext___ToolContext___opt_no_color},
+  {(bigint) toolcontext___ToolContext___verbose_level},
+  {(bigint) nitc___ToolContext___init},
+  {(bigint) mmloader___ToolContext___process_options},
+  {(bigint) program___ToolContext___global},
+  {(bigint) program___ToolContext___global__eq},
+  {(bigint) program___ToolContext___use_SFT_optimization__eq},
+  {(bigint) program___ToolContext___use_SFT_optimization},
+  {(bigint) separate_options___ToolContext___separate_options},
+  {(bigint) separate_options___ToolContext___separate_options__eq},
+  {(bigint) separate_options___ToolContext___opt_cc_lib_paths},
+  {(bigint) separate_options___ToolContext___opt_cc_lib_paths__eq},
+  {(bigint) separate_options___ToolContext___opt_cc_libs},
+  {(bigint) separate_options___ToolContext___opt_cc_libs__eq},
+  {(bigint) separate_options___ToolContext___opt_cc_include_paths},
+  {(bigint) separate_options___ToolContext___opt_cc_include_paths__eq},
+  {(bigint) mmloader___ToolContext___init},
+  {(bigint) separate_options___ToolContext___integrate_separate_options},
+  {(bigint) compiling___compiling_base___ToolContext___compdir},
+  {(bigint) compiling___compiling_base___ToolContext___compdir__eq},
+  {(bigint) compiling___compiling_base___ToolContext___clibdir},
+  {(bigint) compiling___compiling_base___ToolContext___clibdir__eq},
+  {(bigint) compiling___compiling_base___ToolContext___bindir},
+  {(bigint) compiling___compiling_base___ToolContext___bindir__eq},
+  {(bigint) compiling___compiling_base___ToolContext___output_file},
+  {(bigint) compiling___compiling_base___ToolContext___output_file__eq},
+  {(bigint) compiling___compiling_base___ToolContext___boost},
+  {(bigint) compiling___compiling_base___ToolContext___boost__eq},
+  {(bigint) compiling___compiling_base___ToolContext___no_cc},
+  {(bigint) compiling___compiling_base___ToolContext___no_cc__eq},
+  {(bigint) compiling___compiling_base___ToolContext___cc_link},
+  {(bigint) compiling___compiling_base___ToolContext___cc_link__eq},
+  {(bigint) compiling___compiling_base___ToolContext___cc_libs},
+  {(bigint) compiling___compiling_base___ToolContext___cc_libs__eq},
+  {(bigint) compiling___compiling_base___ToolContext___cc_lib_paths},
+  {(bigint) compiling___compiling_base___ToolContext___cc_lib_paths__eq},
+  {(bigint) compiling___compiling_base___ToolContext___cc_include_paths},
+  {(bigint) compiling___compiling_base___ToolContext___cc_include_paths__eq},
+  {(bigint) compiling___compiling_base___ToolContext___ext_prefix},
+  {(bigint) compiling___compiling_base___ToolContext___ext_prefix__eq},
+  {(bigint) global___ToolContext___init},
+};
+/* 0: Pointer to the classtable */
+/* 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::_opt_global */
+/* 8: Attribute ToolContext::_opt_global_no_STF_opt */
+/* 9: Attribute ToolContext::_opt_global_no_DMR_opt */
+/* 10: Attribute ToolContext::_opt_global_no_inline_get_set */
+/* 11: Attribute ToolContext::_opt_global_no_out_of_init_get_test_opt */
+/* 12: Attribute ToolContext::_opt_global_no_RFIMA */
+/* 13: Attribute ToolContext::_opt_global_callgraph */
+/* 14: Attribute ToolContext::_keep_ast */
+/* 15: Attribute ToolContext::_paths */
+/* 16: Attribute ToolContext::_loaders */
+/* 17: Attribute ToolContext::_opt_path */
+/* 18: Attribute ToolContext::_opt_only_metamodel */
+/* 19: Attribute ToolContext::_opt_only_parse */
+/* 20: Attribute ToolContext::_processing_modules */
+/* 21: Attribute ToolContext::_path_dirs */
+/* 22: Attribute ToolContext::_error_count */
+/* 23: Attribute ToolContext::_warning_count */
+/* 24: Attribute ToolContext::_log_directory */
+/* 25: Attribute ToolContext::_messages */
+/* 26: Attribute ToolContext::_message_sorter */
+/* 27: Attribute ToolContext::_option_context */
+/* 28: Attribute ToolContext::_opt_warn */
+/* 29: Attribute ToolContext::_opt_quiet */
+/* 30: Attribute ToolContext::_opt_log */
+/* 31: Attribute ToolContext::_opt_log_dir */
+/* 32: Attribute ToolContext::_opt_help */
+/* 33: Attribute ToolContext::_opt_version */
+/* 34: Attribute ToolContext::_opt_verbose */
+/* 35: Attribute ToolContext::_opt_stop_on_first_error */
+/* 36: Attribute ToolContext::_opt_no_color */
+/* 37: Attribute ToolContext::_verbose_level */
+/* 38: Attribute ToolContext::_global */
+/* 39: Attribute ToolContext::_use_SFT_optimization */
+/* 40: Attribute ToolContext::@separate_options */
+/* 41: Attribute ToolContext::@opt_cc_lib_paths */
+/* 42: Attribute ToolContext::@opt_cc_libs */
+/* 43: Attribute ToolContext::@opt_cc_include_paths */
+/* 44: Attribute ToolContext::_compdir */
+/* 45: Attribute ToolContext::_clibdir */
+/* 46: Attribute ToolContext::_bindir */
+/* 47: Attribute ToolContext::_output_file */
+/* 48: Attribute ToolContext::_boost */
+/* 49: Attribute ToolContext::_no_cc */
+/* 50: Attribute ToolContext::_cc_link */
+/* 51: Attribute ToolContext::_cc_libs */
+/* 52: Attribute ToolContext::_cc_lib_paths */
+/* 53: Attribute ToolContext::_cc_include_paths */
+/* 54: Attribute ToolContext::_ext_prefix */
+static const char LOCATE_INIT_ATTRIBUTES__toolcontext___ToolContext[] = "init var of ToolContext";
+void INIT_ATTRIBUTES__toolcontext___ToolContext(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 */
+  fra.me.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___ToolContext;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  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;
+  /* metamodel/abstractmetamodel.nit:31 */
+  fra.me.REG[1] = NEW_PartialOrder_metamodel___partial_order___PartialOrder___init();
+  ATTR_metamodel___abstractmetamodel___MMContext____module_hierarchy(fra.me.REG[0]) = fra.me.REG[1];
+  /* metamodel/abstractmetamodel.nit:35 */
+  fra.me.REG[1] = NEW_PartialOrder_metamodel___partial_order___PartialOrder___init();
+  ATTR_metamodel___abstractmetamodel___MMContext____class_hierarchy(fra.me.REG[0]) = fra.me.REG[1];
+  /* metamodel/abstractmetamodel.nit:38 */
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
+  ATTR_metamodel___abstractmetamodel___MMContext____global_classes(fra.me.REG[0]) = fra.me.REG[1];
+  /* metamodel/abstractmetamodel.nit:41 */
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
+  ATTR_metamodel___abstractmetamodel___MMContext____modules(fra.me.REG[0]) = fra.me.REG[1];
+  /* toolcontext.nit:73 */
+  REGB0 = TAG_Int(0);
+  ATTR_toolcontext___ToolContext____error_count(fra.me.REG[0]) = REGB0;
+  /* toolcontext.nit:76 */
+  REGB0 = TAG_Int(0);
+  ATTR_toolcontext___ToolContext____warning_count(fra.me.REG[0]) = REGB0;
+  /* toolcontext.nit:79 */
+  if (!once_value_1) {
+    fra.me.REG[1] = BOX_NativeString("logs");
+    REGB0 = TAG_Int(4);
+    fra.me.REG[1] = NEW_String_standard___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_toolcontext___ToolContext____log_directory(fra.me.REG[0]) = fra.me.REG[1];
+  /* toolcontext.nit:82 */
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
+  ATTR_toolcontext___ToolContext____messages(fra.me.REG[0]) = fra.me.REG[1];
+  /* toolcontext.nit:83 */
+  fra.me.REG[1] = NEW_ComparableSorter_standard___collection___sorter___ComparableSorter___init();
+  ATTR_toolcontext___ToolContext____message_sorter(fra.me.REG[0]) = fra.me.REG[1];
+  /* toolcontext.nit:137 */
+  fra.me.REG[1] = NEW_OptionContext_opts___OptionContext___init();
+  ATTR_toolcontext___ToolContext____option_context(fra.me.REG[0]) = fra.me.REG[1];
+  /* toolcontext.nit:140 */
+  if (!once_value_2) {
+    fra.me.REG[1] = BOX_NativeString("Show warnings");
+    REGB0 = TAG_Int(13);
+    fra.me.REG[1] = NEW_String_standard___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_standard___collection___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_standard___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_standard___collection___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_standard___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_standard___collection___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_toolcontext___ToolContext____opt_warn(fra.me.REG[0]) = fra.me.REG[2];
+  /* toolcontext.nit:143 */
+  if (!once_value_5) {
+    fra.me.REG[2] = BOX_NativeString("Do not show warnings");
+    REGB0 = TAG_Int(20);
+    fra.me.REG[2] = NEW_String_standard___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_standard___collection___array___Array___with_capacity(REGB0);
+  if (!once_value_6) {
+    fra.me.REG[3] = BOX_NativeString("-q");
+    REGB0 = TAG_Int(2);
+    fra.me.REG[3] = NEW_String_standard___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_standard___collection___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("--quiet");
+    REGB0 = TAG_Int(7);
+    fra.me.REG[3] = NEW_String_standard___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_standard___collection___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_toolcontext___ToolContext____opt_quiet(fra.me.REG[0]) = fra.me.REG[1];
+  /* toolcontext.nit:146 */
+  if (!once_value_8) {
+    fra.me.REG[1] = BOX_NativeString("Generate various log files");
+    REGB0 = TAG_Int(26);
+    fra.me.REG[1] = NEW_String_standard___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_standard___collection___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_standard___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_standard___collection___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_toolcontext___ToolContext____opt_log(fra.me.REG[0]) = fra.me.REG[2];
+  /* toolcontext.nit:149 */
+  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_standard___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_standard___collection___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_standard___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_standard___collection___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_toolcontext___ToolContext____opt_log_dir(fra.me.REG[0]) = fra.me.REG[1];
+  /* toolcontext.nit:152 */
+  if (!once_value_12) {
+    fra.me.REG[1] = BOX_NativeString("Show Help (This screen)");
+    REGB0 = TAG_Int(23);
+    fra.me.REG[1] = NEW_String_standard___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(2);
+  fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  if (!once_value_13) {
+    fra.me.REG[3] = BOX_NativeString("-h");
+    REGB0 = TAG_Int(2);
+    fra.me.REG[3] = NEW_String_standard___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_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  if (!once_value_14) {
+    fra.me.REG[3] = BOX_NativeString("-?");
+    REGB0 = TAG_Int(2);
+    fra.me.REG[3] = NEW_String_standard___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_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  if (!once_value_15) {
+    fra.me.REG[3] = BOX_NativeString("--help");
+    REGB0 = TAG_Int(6);
+    fra.me.REG[3] = NEW_String_standard___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_standard___collection___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_toolcontext___ToolContext____opt_help(fra.me.REG[0]) = fra.me.REG[2];
+  /* toolcontext.nit:155 */
+  if (!once_value_16) {
+    fra.me.REG[2] = BOX_NativeString("Show version and exit");
+    REGB0 = TAG_Int(21);
+    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    once_value_16 = fra.me.REG[2];
+    register_static_object(&once_value_16);
+  } else fra.me.REG[2] = once_value_16;
+  fra.me.REG[2] = fra.me.REG[2];
+  REGB0 = TAG_Int(0);
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  if (!once_value_17) {
+    fra.me.REG[3] = BOX_NativeString("--version");
+    REGB0 = TAG_Int(9);
+    fra.me.REG[3] = NEW_String_standard___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_standard___collection___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_toolcontext___ToolContext____opt_version(fra.me.REG[0]) = fra.me.REG[1];
+  /* toolcontext.nit:158 */
+  if (!once_value_18) {
+    fra.me.REG[1] = BOX_NativeString("Verbose");
+    REGB0 = TAG_Int(7);
+    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_18 = fra.me.REG[1];
+    register_static_object(&once_value_18);
+  } else fra.me.REG[1] = once_value_18;
+  fra.me.REG[1] = fra.me.REG[1];
+  REGB0 = TAG_Int(1);
+  fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  if (!once_value_19) {
+    fra.me.REG[3] = BOX_NativeString("-v");
+    REGB0 = TAG_Int(2);
+    fra.me.REG[3] = NEW_String_standard___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_standard___collection___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("--verbose");
+    REGB0 = TAG_Int(9);
+    fra.me.REG[3] = NEW_String_standard___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_standard___collection___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_toolcontext___ToolContext____opt_verbose(fra.me.REG[0]) = fra.me.REG[2];
+  /* toolcontext.nit:161 */
+  if (!once_value_21) {
+    fra.me.REG[2] = BOX_NativeString("Stop on first error");
+    REGB0 = TAG_Int(19);
+    fra.me.REG[2] = NEW_String_standard___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_standard___collection___array___Array___with_capacity(REGB0);
+  if (!once_value_22) {
+    fra.me.REG[3] = BOX_NativeString("--stop-on-first-error");
+    REGB0 = TAG_Int(21);
+    fra.me.REG[3] = NEW_String_standard___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_standard___collection___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_toolcontext___ToolContext____opt_stop_on_first_error(fra.me.REG[0]) = fra.me.REG[1];
+  /* toolcontext.nit:164 */
+  if (!once_value_23) {
+    fra.me.REG[1] = BOX_NativeString("Do not use color to display errors and warnings");
+    REGB0 = TAG_Int(47);
+    fra.me.REG[1] = NEW_String_standard___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_standard___collection___array___Array___with_capacity(REGB0);
+  if (!once_value_24) {
+    fra.me.REG[3] = BOX_NativeString("--no-color");
+    REGB0 = TAG_Int(10);
+    fra.me.REG[3] = NEW_String_standard___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_standard___collection___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_toolcontext___ToolContext____opt_no_color(fra.me.REG[0]) = fra.me.REG[2];
+  /* toolcontext.nit:167 */
+  REGB0 = TAG_Int(0);
+  ATTR_toolcontext___ToolContext____verbose_level(fra.me.REG[0]) = REGB0;
+  /* mmloader.nit:30 */
+  fra.me.REG[2] = NEW_Array_standard___collection___array___Array___init();
+  ATTR_mmloader___ToolContext____paths(fra.me.REG[0]) = fra.me.REG[2];
+  /* mmloader.nit:33 */
+  fra.me.REG[2] = NEW_Array_standard___collection___array___Array___init();
+  ATTR_mmloader___ToolContext____loaders(fra.me.REG[0]) = fra.me.REG[2];
+  /* mmloader.nit:36 */
+  if (!once_value_25) {
+    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_standard___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(1);
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  if (!once_value_26) {
+    fra.me.REG[3] = BOX_NativeString("-I");
+    REGB0 = TAG_Int(2);
+    fra.me.REG[3] = NEW_String_standard___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_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  if (!once_value_27) {
+    fra.me.REG[3] = BOX_NativeString("--path");
+    REGB0 = TAG_Int(6);
+    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_27 = fra.me.REG[3];
+    register_static_object(&once_value_27);
+  } else fra.me.REG[3] = once_value_27;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_standard___collection___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:39 */
+  if (!once_value_28) {
+    fra.me.REG[1] = BOX_NativeString("Stop after meta-model processing");
+    REGB0 = TAG_Int(32);
+    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_28 = fra.me.REG[1];
+    register_static_object(&once_value_28);
+  } else fra.me.REG[1] = once_value_28;
+  fra.me.REG[1] = fra.me.REG[1];
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  if (!once_value_29) {
+    fra.me.REG[3] = BOX_NativeString("--only-metamodel");
+    REGB0 = TAG_Int(16);
+    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_29 = fra.me.REG[3];
+    register_static_object(&once_value_29);
+  } else fra.me.REG[3] = once_value_29;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_standard___collection___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:42 */
+  if (!once_value_30) {
+    fra.me.REG[2] = BOX_NativeString("Only proceed to parse step of loaders");
+    REGB0 = TAG_Int(37);
+    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    once_value_30 = fra.me.REG[2];
+    register_static_object(&once_value_30);
+  } else fra.me.REG[2] = once_value_30;
+  fra.me.REG[2] = fra.me.REG[2];
+  REGB0 = TAG_Int(0);
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  if (!once_value_31) {
+    fra.me.REG[3] = BOX_NativeString("--only-parse");
+    REGB0 = TAG_Int(12);
+    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_31 = fra.me.REG[3];
+    register_static_object(&once_value_31);
+  } else fra.me.REG[3] = once_value_31;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_standard___collection___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:115 */
+  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
+  ATTR_mmloader___ToolContext____processing_modules(fra.me.REG[0]) = fra.me.REG[1];
+  /* mmloader.nit:182 */
+  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
+  ATTR_mmloader___ToolContext____path_dirs(fra.me.REG[0]) = fra.me.REG[1];
+  /* program.nit:26 */
+  REGB0 = TAG_Bool(0);
+  ATTR_program___ToolContext____global(fra.me.REG[0]) = REGB0;
+  /* program.nit:27 */
+  REGB0 = TAG_Bool(1);
+  ATTR_program___ToolContext____use_SFT_optimization(fra.me.REG[0]) = REGB0;
+  /* compiling/compiling_base.nit:27 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_compiling___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___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___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___compiling_base___ToolContext____output_file(fra.me.REG[0]) = fra.me.REG[1];
+  /* compiling/compiling_base.nit:31 */
+  REGB0 = TAG_Bool(0);
+  ATTR_compiling___compiling_base___ToolContext____boost(fra.me.REG[0]) = REGB0;
+  /* compiling/compiling_base.nit:32 */
+  REGB0 = TAG_Bool(0);
+  ATTR_compiling___compiling_base___ToolContext____no_cc(fra.me.REG[0]) = REGB0;
+  /* compiling/compiling_base.nit:33 */
+  REGB0 = TAG_Bool(0);
+  ATTR_compiling___compiling_base___ToolContext____cc_link(fra.me.REG[0]) = REGB0;
+  /* compiling/compiling_base.nit:34 */
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
+  ATTR_compiling___compiling_base___ToolContext____cc_libs(fra.me.REG[0]) = fra.me.REG[1];
+  /* compiling/compiling_base.nit:35 */
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
+  ATTR_compiling___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_standard___collection___array___Array___init();
+  ATTR_compiling___compiling_base___ToolContext____cc_include_paths(fra.me.REG[0]) = fra.me.REG[1];
+  /* compiling/compiling_base.nit:37 */
+  if (!once_value_32) {
+    fra.me.REG[1] = BOX_NativeString("");
+    REGB0 = TAG_Int(0);
+    fra.me.REG[1] = NEW_String_standard___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];
+  ATTR_compiling___compiling_base___ToolContext____ext_prefix(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/syntax.nit:100 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___ToolContext____keep_ast(fra.me.REG[0]) = REGB0;
+  /* separate_options.nit:29 */
+  fra.me.REG[1] = NEW_OptionContext_opts___OptionContext___init();
+  ATTR_separate_options___ToolContext_____atseparate_options(fra.me.REG[0]) = fra.me.REG[1];
+  /* separate_options.nit:30 */
+  if (!once_value_33) {
+    fra.me.REG[1] = BOX_NativeString("Path to libraries for C compiler");
+    REGB0 = TAG_Int(32);
+    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_33 = fra.me.REG[1];
+    register_static_object(&once_value_33);
+  } else fra.me.REG[1] = once_value_33;
+  fra.me.REG[1] = fra.me.REG[1];
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  if (!once_value_34) {
+    fra.me.REG[3] = BOX_NativeString("--cc-lib-path");
+    REGB0 = TAG_Int(13);
+    fra.me.REG[3] = NEW_String_standard___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];
+  CALL_standard___collection___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_separate_options___ToolContext_____atopt_cc_lib_paths(fra.me.REG[0]) = fra.me.REG[2];
+  /* separate_options.nit:31 */
+  if (!once_value_35) {
+    fra.me.REG[2] = BOX_NativeString("Name of library to use for C compiler");
+    REGB0 = TAG_Int(37);
+    fra.me.REG[2] = NEW_String_standard___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];
+  REGB0 = TAG_Int(0);
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  if (!once_value_36) {
+    fra.me.REG[3] = BOX_NativeString("--cc-lib-name");
+    REGB0 = TAG_Int(13);
+    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_36 = fra.me.REG[3];
+    register_static_object(&once_value_36);
+  } else fra.me.REG[3] = once_value_36;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_standard___collection___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_separate_options___ToolContext_____atopt_cc_libs(fra.me.REG[0]) = fra.me.REG[1];
+  /* separate_options.nit:32 */
+  if (!once_value_37) {
+    fra.me.REG[1] = BOX_NativeString("Path to .h files for C compiler");
+    REGB0 = TAG_Int(31);
+    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_37 = fra.me.REG[1];
+    register_static_object(&once_value_37);
+  } else fra.me.REG[1] = once_value_37;
+  fra.me.REG[1] = fra.me.REG[1];
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  if (!once_value_38) {
+    fra.me.REG[3] = BOX_NativeString("--cc-header-path");
+    REGB0 = TAG_Int(16);
+    fra.me.REG[3] = NEW_String_standard___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];
+  CALL_standard___collection___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_separate_options___ToolContext_____atopt_cc_include_paths(fra.me.REG[0]) = fra.me.REG[2];
+  /* global/global.nit:44 */
+  if (!once_value_39) {
+    fra.me.REG[2] = BOX_NativeString("rta");
+    REGB0 = TAG_Int(3);
+    fra.me.REG[2] = NEW_String_standard___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];
+  ATTR_global___ToolContext____global_callgraph(fra.me.REG[0]) = fra.me.REG[2];
+  /* global/global.nit:46 */
+  if (!once_value_40) {
+    fra.me.REG[2] = BOX_NativeString("Use global compilation");
+    REGB0 = TAG_Int(22);
+    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    once_value_40 = fra.me.REG[2];
+    register_static_object(&once_value_40);
+  } else fra.me.REG[2] = once_value_40;
+  fra.me.REG[2] = fra.me.REG[2];
+  REGB0 = TAG_Int(0);
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  if (!once_value_41) {
+    fra.me.REG[3] = BOX_NativeString("--global");
+    REGB0 = TAG_Int(8);
+    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_41 = fra.me.REG[3];
+    register_static_object(&once_value_41);
+  } else fra.me.REG[3] = once_value_41;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_standard___collection___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_global___ToolContext____opt_global(fra.me.REG[0]) = fra.me.REG[1];
+  /* global/global.nit:47 */
+  if (!once_value_42) {
+    fra.me.REG[1] = BOX_NativeString("Do not use SFT optimization");
+    REGB0 = TAG_Int(27);
+    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_42 = fra.me.REG[1];
+    register_static_object(&once_value_42);
+  } else fra.me.REG[1] = once_value_42;
+  fra.me.REG[1] = fra.me.REG[1];
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  if (!once_value_43) {
+    fra.me.REG[3] = BOX_NativeString("--no-global-SFT-optimization");
+    REGB0 = TAG_Int(28);
+    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_43 = fra.me.REG[3];
+    register_static_object(&once_value_43);
+  } else fra.me.REG[3] = once_value_43;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_standard___collection___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_global___ToolContext____opt_global_no_STF_opt(fra.me.REG[0]) = fra.me.REG[2];
+  /* global/global.nit:48 */
+  if (!once_value_44) {
+    fra.me.REG[2] = BOX_NativeString("Do not use dead method removal optimization");
+    REGB0 = TAG_Int(43);
+    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    once_value_44 = fra.me.REG[2];
+    register_static_object(&once_value_44);
+  } else fra.me.REG[2] = once_value_44;
+  fra.me.REG[2] = fra.me.REG[2];
+  REGB0 = TAG_Int(0);
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  if (!once_value_45) {
+    fra.me.REG[3] = BOX_NativeString("--no-global-DMR-optimization");
+    REGB0 = TAG_Int(28);
+    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_45 = fra.me.REG[3];
+    register_static_object(&once_value_45);
+  } else fra.me.REG[3] = once_value_45;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_standard___collection___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_global___ToolContext____opt_global_no_DMR_opt(fra.me.REG[0]) = fra.me.REG[1];
+  /* global/global.nit:49 */
+  if (!once_value_46) {
+    fra.me.REG[1] = BOX_NativeString("Do not automatically inline getters/setters");
+    REGB0 = TAG_Int(43);
+    fra.me.REG[1] = NEW_String_standard___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(0);
+  fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  if (!once_value_47) {
+    fra.me.REG[3] = BOX_NativeString("--no-global-get-set-inlining");
+    REGB0 = TAG_Int(28);
+    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_47 = fra.me.REG[3];
+    register_static_object(&once_value_47);
+  } else fra.me.REG[3] = once_value_47;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_standard___collection___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_global___ToolContext____opt_global_no_inline_get_set(fra.me.REG[0]) = fra.me.REG[2];
+  /* global/global.nit:50 */
+  if (!once_value_48) {
+    fra.me.REG[2] = BOX_NativeString("Do not remove get tests outside object initialization");
+    REGB0 = TAG_Int(53);
+    fra.me.REG[2] = NEW_String_standard___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];
+  REGB0 = TAG_Int(0);
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  if (!once_value_49) {
+    fra.me.REG[3] = BOX_NativeString("--no-global-OOIT-optimization");
+    REGB0 = TAG_Int(29);
+    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_49 = fra.me.REG[3];
+    register_static_object(&once_value_49);
+  } else fra.me.REG[3] = once_value_49;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_standard___collection___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_global___ToolContext____opt_global_no_out_of_init_get_test_opt(fra.me.REG[0]) = fra.me.REG[1];
+  /* global/global.nit:51 */
+  if (!once_value_50) {
+    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_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_50 = fra.me.REG[1];
+    register_static_object(&once_value_50);
+  } else fra.me.REG[1] = once_value_50;
+  fra.me.REG[1] = fra.me.REG[1];
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  if (!once_value_51) {
+    fra.me.REG[3] = BOX_NativeString("--no-global-RFIM-analysis");
+    REGB0 = TAG_Int(25);
+    fra.me.REG[3] = NEW_String_standard___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_standard___collection___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_global___ToolContext____opt_global_no_RFIMA(fra.me.REG[0]) = fra.me.REG[2];
+  /* global/global.nit:52 */
+  REGB0 = TAG_Int(3);
+  fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  if (!once_value_52) {
+    fra.me.REG[1] = BOX_NativeString("none");
+    REGB0 = TAG_Int(4);
+    fra.me.REG[1] = NEW_String_standard___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];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
+  if (!once_value_53) {
+    fra.me.REG[1] = BOX_NativeString("cha");
+    REGB0 = TAG_Int(3);
+    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_53 = fra.me.REG[1];
+    register_static_object(&once_value_53);
+  } else fra.me.REG[1] = once_value_53;
+  fra.me.REG[1] = fra.me.REG[1];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
+  if (!once_value_54) {
+    fra.me.REG[1] = BOX_NativeString("rta");
+    REGB0 = TAG_Int(3);
+    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_54 = fra.me.REG[1];
+    register_static_object(&once_value_54);
+  } else fra.me.REG[1] = once_value_54;
+  fra.me.REG[1] = fra.me.REG[1];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
+  if (!once_value_55) {
+    fra.me.REG[1] = BOX_NativeString("The algorithm to use to build the callgraph");
+    REGB0 = TAG_Int(43);
+    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_55 = fra.me.REG[1];
+    register_static_object(&once_value_55);
+  } else fra.me.REG[1] = once_value_55;
+  fra.me.REG[1] = fra.me.REG[1];
+  REGB0 = TAG_Int(2);
+  REGB1 = TAG_Int(0);
+  fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
+  if (!once_value_56) {
+    fra.me.REG[4] = BOX_NativeString("--global-callgraph");
+    REGB1 = TAG_Int(18);
+    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+    once_value_56 = fra.me.REG[4];
+    register_static_object(&once_value_56);
+  } else fra.me.REG[4] = once_value_56;
+  fra.me.REG[4] = fra.me.REG[4];
+  CALL_standard___collection___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_global___ToolContext____opt_global_callgraph(fra.me.REG[0]) = fra.me.REG[3];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_toolcontext___ToolContext(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 55);
+  obj->vft = (classtable_elt_t*)VFT_toolcontext___ToolContext;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_toolcontext___ToolContext[] = "check new ToolContext";
+void CHECKNEW_toolcontext___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___ToolContext;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_global___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_global___ToolContext____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_global___ToolContext____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_global___ToolContext____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_global___ToolContext____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_global___ToolContext____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_global___ToolContext____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_global___ToolContext____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_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____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____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_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____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_toolcontext___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_toolcontext___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_toolcontext___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_toolcontext___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_toolcontext___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_toolcontext___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_toolcontext___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_toolcontext___ToolContext____opt_quiet(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_opt_quiet", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_toolcontext___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_toolcontext___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_toolcontext___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_toolcontext___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_toolcontext___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_toolcontext___ToolContext____opt_stop_on_first_error(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_opt_stop_on_first_error", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_toolcontext___ToolContext____opt_no_color(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_opt_no_color", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_toolcontext___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_separate_options___ToolContext_____atseparate_options(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@separate_options", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_separate_options___ToolContext_____atopt_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_separate_options___ToolContext_____atopt_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_separate_options___ToolContext_____atopt_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_compiling___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___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___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___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___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___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___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;
+}
+static const char LOCATE_NEW_ToolContext_toolcontext___ToolContext___init[] = "new ToolContext nitc::ToolContext::(toolcontext::ToolContext::init)";
+val_t NEW_ToolContext_toolcontext___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 = 122;
+  fra.me.meth = LOCATE_NEW_ToolContext_toolcontext___ToolContext___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* nitc.nit:122 */
+  fra.me.REG[0] = NEW_toolcontext___ToolContext();
+  INIT_ATTRIBUTES__toolcontext___ToolContext(fra.me.REG[0]);
+  nitc___ToolContext___init(fra.me.REG[0], init_table);
+  CHECKNEW_toolcontext___ToolContext(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_standard___kernel___Sys[60] = {
+  {(bigint) 27 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "Sys" /* 2: Class Name */},
+  {(bigint) 3 /* 3: Sys < Object: superclass typecheck marker */},
+  {(bigint) 27 /* 4: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 0 /* 19: Sys < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Sys___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) standard___time___Sys___nanosleep},
+  {(bigint) 1 /* 51: Sys < Sys: superclass init_table position */},
+  {(bigint) nitc___Sys___main},
+  {(bigint) standard___kernel___Sys___init},
+  {(bigint) standard___exec___Sys___system},
+  {(bigint) standard___string___Sys___program_name},
+  {(bigint) standard___string___Sys___init_args},
+  {(bigint) standard___string___Sys___native_argc},
+  {(bigint) standard___string___Sys___native_argv},
+  {(bigint) standard___gc___Sys___force_garbage_collection},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute Sys::_args_cache */
+static const char LOCATE_INIT_ATTRIBUTES__standard___kernel___Sys[] = "init var of Sys";
+void INIT_ATTRIBUTES__standard___kernel___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__standard___kernel___Sys;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_standard___kernel___Sys(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_standard___kernel___Sys;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_standard___kernel___Sys[] = "check new Sys";
+void CHECKNEW_standard___kernel___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_standard___kernel___Sys;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_Sys_standard___kernel___Sys___init[] = "new Sys kernel::Sys::init";
+val_t NEW_Sys_standard___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_standard___kernel___Sys___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = NEW_standard___kernel___Sys();
+  INIT_ATTRIBUTES__standard___kernel___Sys(fra.me.REG[0]);
+  standard___kernel___Sys___init(fra.me.REG[0], init_table);
+  CHECKNEW_standard___kernel___Sys(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_standard___kernel___Bool[51] = {
+  {(bigint) -13 /* 0: Identity */},
+  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "Bool" /* 2: Class Name */},
+  {(bigint) 3 /* 3: Bool < Object: superclass typecheck marker */},
+  {(bigint) -13 /* 4: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 0 /* 19: Bool < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Bool___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Bool_____eqeq},
+  {(bigint) standard___kernel___Bool_____neq},
+  {(bigint) standard___kernel___Bool___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Bool___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Bool___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 50: Bool < Bool: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+const classtable_elt_t VFT_standard___kernel___Float[75] = {
+  {(bigint) -9 /* 0: Identity */},
+  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "Float" /* 2: Class Name */},
+  {(bigint) 3 /* 3: Float < Object: superclass typecheck marker */},
+  {(bigint) -9 /* 4: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 0 /* 19: Float < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Float___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Float___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Float___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) standard___string___Float___to_precision},
+  {(bigint) standard___string___Float___to_precision_native},
+  {(bigint) 1 /* 52: Float < Float: superclass init_table position */},
+  {(bigint) standard___kernel___Float_____leq},
+  {(bigint) standard___kernel___Float_____l},
+  {(bigint) standard___kernel___Float_____geq},
+  {(bigint) standard___kernel___Float_____g},
+  {(bigint) standard___kernel___Float_____plus},
+  {(bigint) standard___kernel___Float___unary__minus},
+  {(bigint) standard___kernel___Float_____minus},
+  {(bigint) standard___kernel___Float_____star},
+  {(bigint) standard___kernel___Float_____slash},
+  {(bigint) standard___kernel___Float___to_i},
+  {(bigint) standard___math___Float___sqrt},
+  {(bigint) standard___math___Float___cos},
+  {(bigint) standard___math___Float___sin},
+  {(bigint) standard___math___Float___tan},
+  {(bigint) standard___math___Float___acos},
+  {(bigint) standard___math___Float___asin},
+  {(bigint) standard___math___Float___atan},
+  {(bigint) standard___math___Float___pow},
+  {(bigint) standard___math___Float___log},
+  {(bigint) standard___math___Float___exp},
+  {(bigint) standard___math___Float___rand},
+  {(bigint) standard___math___Float___hypot_with},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+val_t BOX_Float(float val) {
+  struct TBOX_Float *box = (struct TBOX_Float*)alloc(sizeof(struct TBOX_Float));
+  box->vft = VFT_standard___kernel___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_standard___kernel___Int[95] = {
+  {(bigint) -29 /* 0: Identity */},
+  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "Int" /* 2: Class Name */},
+  {(bigint) 3 /* 3: Int < Object: superclass typecheck marker */},
+  {(bigint) 3243 /* 4: Int < Discrete: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {(bigint) 275 /* 6: Int < Comparable: superclass typecheck marker */},
+  {(bigint) -29 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: Int < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Int___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Int_____eqeq},
+  {(bigint) standard___kernel___Int_____neq},
+  {(bigint) standard___kernel___Int___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Int___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Int___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(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 :( */,
+  {(bigint) 1 /* 57: Int < Comparable: superclass init_table position */},
+  {(bigint) -29 /* 58: VT Int::OTHER : id of Int */},
+  {(bigint) 7 /* 59: VT Int::OTHER : color of Int */},
+  {(bigint) standard___kernel___Int_____l},
+  {(bigint) standard___kernel___Int_____leq},
+  {(bigint) standard___kernel___Int_____geq},
+  {(bigint) standard___kernel___Int_____g},
+  {(bigint) standard___kernel___Int_____leqg},
+  {(bigint) standard___kernel___Int___is_between},
+  {(bigint) standard___kernel___Int___max},
+  {(bigint) standard___kernel___Int___min},
+  {(bigint) 0 /* 68: Int < Discrete: superclass init_table position */},
+  {(bigint) standard___kernel___Int___succ},
+  {(bigint) standard___kernel___Int___prec},
+  {(bigint) standard___kernel___Int_____plus},
+  {(bigint) standard___kernel___Int_____minus},
+  {(bigint) standard___kernel___Int___distance},
+  {(bigint) standard___string___Int___fill_buffer},
+  {(bigint) standard___string___Int___to_hex},
+  {(bigint) standard___string___Int___to_base},
+  {(bigint) 3 /* 77: Int < Int: superclass init_table position */},
+  {(bigint) standard___kernel___Int___unary__minus},
+  {(bigint) standard___kernel___Int_____star},
+  {(bigint) standard___kernel___Int_____slash},
+  {(bigint) standard___kernel___Int_____percent},
+  {(bigint) standard___kernel___Int___lshift},
+  {(bigint) standard___kernel___Int___rshift},
+  {(bigint) standard___kernel___Int___to_f},
+  {(bigint) standard___kernel___Int___ascii},
+  {(bigint) standard___kernel___Int___digit_count},
+  {(bigint) standard___kernel___Int___to_c},
+  {(bigint) standard___kernel___Int___enumerate_to},
+  {(bigint) standard___kernel___Int___enumerate_before},
+  {(bigint) standard___kernel___Int___abs},
+  {(bigint) standard___math___Int___rand},
+  {(bigint) standard___math___Int___bin_and},
+  {(bigint) standard___math___Int___bin_or},
+  {(bigint) standard___math___Int___bin_xor},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+const classtable_elt_t VFT_standard___kernel___Char[86] = {
+  {(bigint) -33 /* 0: Identity */},
+  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "Char" /* 2: Class Name */},
+  {(bigint) 3 /* 3: Char < Object: superclass typecheck marker */},
+  {(bigint) 3243 /* 4: Char < Discrete: superclass typecheck marker */},
+  {(bigint) 103 /* 5: Char < Pattern: superclass typecheck marker */},
+  {(bigint) 275 /* 6: Char < Comparable: superclass typecheck marker */},
+  {(bigint) -33 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: Char < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Char___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Char_____eqeq},
+  {(bigint) standard___kernel___Char_____neq},
+  {(bigint) standard___kernel___Char___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Char___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Char___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 0 /* 52: Char < Pattern: superclass init_table position */},
+  {(bigint) standard___string_search___Char___search_index_in},
+  {(bigint) standard___string_search___Char___search_in},
+  {(bigint) standard___string_search___Pattern___search_all_in},
+  {(bigint) standard___string_search___Pattern___split_in},
+  {(bigint) 3 /* 57: Char < Comparable: superclass init_table position */},
+  {(bigint) -33 /* 58: VT Char::OTHER : id of Char */},
+  {(bigint) 7 /* 59: VT Char::OTHER : color of Char */},
+  {(bigint) standard___kernel___Char_____l},
+  {(bigint) standard___kernel___Char_____leq},
+  {(bigint) standard___kernel___Char_____geq},
+  {(bigint) standard___kernel___Char_____g},
+  {(bigint) standard___kernel___Comparable_____leqg},
+  {(bigint) standard___kernel___Comparable___is_between},
+  {(bigint) standard___kernel___Comparable___max},
+  {(bigint) standard___kernel___Comparable___min},
+  {(bigint) 2 /* 68: Char < Discrete: superclass init_table position */},
+  {(bigint) standard___kernel___Char___succ},
+  {(bigint) standard___kernel___Char___prec},
+  {(bigint) standard___kernel___Char_____plus},
+  {(bigint) standard___kernel___Char_____minus},
+  {(bigint) standard___kernel___Char___distance},
+  {(bigint) standard___string___Char___is_numeric},
+  {(bigint) standard___string___Char___is_alpha},
+  {(bigint) standard___string___Char___is_alphanumeric},
+  {(bigint) 4 /* 77: Char < Char: superclass init_table position */},
+  {(bigint) standard___kernel___Char___to_i},
+  {(bigint) standard___kernel___Char___ascii},
+  {(bigint) standard___kernel___Char___to_lower},
+  {(bigint) standard___kernel___Char___to_upper},
+  {(bigint) standard___kernel___Char___is_digit},
+  {(bigint) standard___kernel___Char___is_lower},
+  {(bigint) standard___kernel___Char___is_upper},
+  {(bigint) standard___kernel___Char___is_letter},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+const classtable_elt_t VFT_standard___kernel___Pointer[51] = {
+  {(bigint) -1 /* 0: Identity */},
+  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "Pointer" /* 2: Class Name */},
+  {(bigint) 3 /* 3: Pointer < Object: superclass typecheck marker */},
+  {(bigint) -1 /* 4: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 0 /* 19: Pointer < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 50: Pointer < Pointer: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+val_t BOX_Pointer(void * val) {
+  struct TBOX_Pointer *box = (struct TBOX_Pointer*)alloc(sizeof(struct TBOX_Pointer));
+  box->vft = VFT_standard___kernel___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_standard___collection___abstract_collection___Container[84] = {
+  {(bigint) 3267 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "Container" /* 2: Class Name */},
+  {(bigint) 3 /* 3: Container < Object: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 283 /* 7: Container < Collection: superclass typecheck marker */},
+  {(bigint) 3267 /* 8: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: Container < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Collection___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(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 :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) standard___string___Collection___join},
+  {(bigint) standard___collection___array___Collection___to_a},
+  {(bigint) 0 /* 70: Container < Collection: superclass init_table position */},
+  {(bigint) standard___collection___abstract_collection___Container___iterator},
+  {(bigint) standard___collection___abstract_collection___Collection___iterate},
+  {(bigint) standard___collection___abstract_collection___Container___is_empty},
+  {(bigint) standard___collection___abstract_collection___Container___length},
+  {(bigint) standard___collection___abstract_collection___Container___has},
+  {(bigint) standard___collection___abstract_collection___Container___has_only},
+  {(bigint) standard___collection___abstract_collection___Container___count},
+  {(bigint) standard___collection___abstract_collection___Container___first},
+  {(bigint) standard___math___Collection___rand},
+  {(bigint) 2 /* 80: Container < Container: superclass init_table position */},
+  {(bigint) standard___collection___abstract_collection___Container___init},
+  {(bigint) standard___collection___abstract_collection___Container___item},
+  {(bigint) standard___collection___abstract_collection___Container___item__eq},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute Container::_item */
+static const char LOCATE_INIT_ATTRIBUTES__standard___collection___abstract_collection___Container[] = "init var of Container";
+void INIT_ATTRIBUTES__standard___collection___abstract_collection___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__standard___collection___abstract_collection___Container;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_standard___collection___abstract_collection___Container(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_standard___collection___abstract_collection___Container;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_standard___collection___abstract_collection___Container[] = "check new Container";
+void CHECKNEW_standard___collection___abstract_collection___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_standard___collection___abstract_collection___Container;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_Container_standard___collection___abstract_collection___Container___init[] = "new Container abstract_collection::Container::init";
+val_t NEW_Container_standard___collection___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_standard___collection___abstract_collection___Container___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  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_standard___collection___abstract_collection___Container();
+  INIT_ATTRIBUTES__standard___collection___abstract_collection___Container(fra.me.REG[1]);
+  standard___collection___abstract_collection___Container___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_standard___collection___abstract_collection___Container(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_standard___collection___abstract_collection___ContainerIterator[57] = {
+  {(bigint) 3271 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ContainerIterator" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ContainerIterator < Object: superclass typecheck marker */},
+  {(bigint) 187 /* 4: ContainerIterator < Iterator: superclass typecheck marker */},
+  {(bigint) 3271 /* 5: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: ContainerIterator < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) standard___collection___array___Iterator___to_a},
+  {(bigint) 0 /* 51: ContainerIterator < Iterator: superclass init_table position */},
+  {(bigint) standard___collection___abstract_collection___ContainerIterator___item},
+  {(bigint) standard___collection___abstract_collection___ContainerIterator___next},
+  {(bigint) standard___collection___abstract_collection___ContainerIterator___is_ok},
+  {(bigint) 2 /* 55: ContainerIterator < ContainerIterator: superclass init_table position */},
+  {(bigint) standard___collection___abstract_collection___ContainerIterator___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ContainerIterator::_is_ok */
+/* 3: Attribute ContainerIterator::_container */
+static const char LOCATE_INIT_ATTRIBUTES__standard___collection___abstract_collection___ContainerIterator[] = "init var of ContainerIterator";
+void INIT_ATTRIBUTES__standard___collection___abstract_collection___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__standard___collection___abstract_collection___ContainerIterator;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/collection/abstract_collection.nit:174 */
+  REGB0 = TAG_Bool(1);
+  ATTR_standard___collection___abstract_collection___ContainerIterator____is_ok(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_standard___collection___abstract_collection___ContainerIterator(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_standard___collection___abstract_collection___ContainerIterator;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_standard___collection___abstract_collection___ContainerIterator[] = "check new ContainerIterator";
+void CHECKNEW_standard___collection___abstract_collection___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_standard___collection___abstract_collection___ContainerIterator;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_standard___collection___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_standard___collection___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;
+}
+static const char LOCATE_NEW_ContainerIterator_standard___collection___abstract_collection___ContainerIterator___init[] = "new ContainerIterator abstract_collection::ContainerIterator::init";
+val_t NEW_ContainerIterator_standard___collection___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_standard___collection___abstract_collection___ContainerIterator___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  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_standard___collection___abstract_collection___ContainerIterator();
+  INIT_ATTRIBUTES__standard___collection___abstract_collection___ContainerIterator(fra.me.REG[1]);
+  standard___collection___abstract_collection___ContainerIterator___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_standard___collection___abstract_collection___ContainerIterator(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_standard___collection___abstract_collection___MapKeysIterator[59] = {
+  {(bigint) 3083 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "MapKeysIterator" /* 2: Class Name */},
+  {(bigint) 3 /* 3: MapKeysIterator < Object: superclass typecheck marker */},
+  {(bigint) 187 /* 4: MapKeysIterator < Iterator: superclass typecheck marker */},
+  {(bigint) 3083 /* 5: MapKeysIterator < MapKeysIterator: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: MapKeysIterator < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) standard___collection___array___Iterator___to_a},
+  {(bigint) 0 /* 51: MapKeysIterator < Iterator: superclass init_table position */},
+  {(bigint) standard___collection___abstract_collection___MapKeysIterator___item},
+  {(bigint) standard___collection___abstract_collection___MapKeysIterator___next},
+  {(bigint) standard___collection___abstract_collection___MapKeysIterator___is_ok},
+  {(bigint) 2 /* 55: MapKeysIterator < MapKeysIterator: superclass init_table position */},
+  {(bigint) standard___collection___abstract_collection___MapKeysIterator___iterator},
+  {(bigint) standard___collection___abstract_collection___MapKeysIterator___iterator__eq},
+  {(bigint) standard___collection___abstract_collection___MapKeysIterator___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute MapKeysIterator::@iterator */
+static const char LOCATE_INIT_ATTRIBUTES__standard___collection___abstract_collection___MapKeysIterator[] = "init var of MapKeysIterator";
+void INIT_ATTRIBUTES__standard___collection___abstract_collection___MapKeysIterator(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__standard___collection___abstract_collection___MapKeysIterator;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_standard___collection___abstract_collection___MapKeysIterator(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_standard___collection___abstract_collection___MapKeysIterator;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_standard___collection___abstract_collection___MapKeysIterator[] = "check new MapKeysIterator";
+void CHECKNEW_standard___collection___abstract_collection___MapKeysIterator(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_standard___collection___abstract_collection___MapKeysIterator;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_standard___collection___abstract_collection___MapKeysIterator_____atiterator(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@iterator", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_MapKeysIterator_standard___collection___abstract_collection___MapKeysIterator___init[] = "new MapKeysIterator abstract_collection::MapKeysIterator::init";
+val_t NEW_MapKeysIterator_standard___collection___abstract_collection___MapKeysIterator___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 = 0;
+  fra.me.meth = LOCATE_NEW_MapKeysIterator_standard___collection___abstract_collection___MapKeysIterator___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_standard___collection___abstract_collection___MapKeysIterator();
+  INIT_ATTRIBUTES__standard___collection___abstract_collection___MapKeysIterator(fra.me.REG[1]);
+  standard___collection___abstract_collection___MapKeysIterator___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_standard___collection___abstract_collection___MapKeysIterator(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_standard___collection___abstract_collection___MapValuesIterator[59] = {
+  {(bigint) 3075 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "MapValuesIterator" /* 2: Class Name */},
+  {(bigint) 3 /* 3: MapValuesIterator < Object: superclass typecheck marker */},
+  {(bigint) 187 /* 4: MapValuesIterator < Iterator: superclass typecheck marker */},
+  {(bigint) 3075 /* 5: MapValuesIterator < MapValuesIterator: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: MapValuesIterator < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) standard___collection___array___Iterator___to_a},
+  {(bigint) 0 /* 51: MapValuesIterator < Iterator: superclass init_table position */},
+  {(bigint) standard___collection___abstract_collection___MapValuesIterator___item},
+  {(bigint) standard___collection___abstract_collection___MapValuesIterator___next},
+  {(bigint) standard___collection___abstract_collection___MapValuesIterator___is_ok},
+  {(bigint) 2 /* 55: MapValuesIterator < MapValuesIterator: superclass init_table position */},
+  {(bigint) standard___collection___abstract_collection___MapValuesIterator___iterator},
+  {(bigint) standard___collection___abstract_collection___MapValuesIterator___iterator__eq},
+  {(bigint) standard___collection___abstract_collection___MapValuesIterator___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute MapValuesIterator::@iterator */
+static const char LOCATE_INIT_ATTRIBUTES__standard___collection___abstract_collection___MapValuesIterator[] = "init var of MapValuesIterator";
+void INIT_ATTRIBUTES__standard___collection___abstract_collection___MapValuesIterator(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__standard___collection___abstract_collection___MapValuesIterator;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_standard___collection___abstract_collection___MapValuesIterator(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_standard___collection___abstract_collection___MapValuesIterator;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_standard___collection___abstract_collection___MapValuesIterator[] = "check new MapValuesIterator";
+void CHECKNEW_standard___collection___abstract_collection___MapValuesIterator(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_standard___collection___abstract_collection___MapValuesIterator;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_standard___collection___abstract_collection___MapValuesIterator_____atiterator(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@iterator", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_MapValuesIterator_standard___collection___abstract_collection___MapValuesIterator___init[] = "new MapValuesIterator abstract_collection::MapValuesIterator::init";
+val_t NEW_MapValuesIterator_standard___collection___abstract_collection___MapValuesIterator___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 = 0;
+  fra.me.meth = LOCATE_NEW_MapValuesIterator_standard___collection___abstract_collection___MapValuesIterator___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_standard___collection___abstract_collection___MapValuesIterator();
+  INIT_ATTRIBUTES__standard___collection___abstract_collection___MapValuesIterator(fra.me.REG[1]);
+  standard___collection___abstract_collection___MapValuesIterator___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_standard___collection___abstract_collection___MapValuesIterator(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_standard___collection___abstract_collection___CoupleMapIterator[57] = {
+  {(bigint) 3263 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "CoupleMapIterator" /* 2: Class Name */},
+  {(bigint) 3 /* 3: CoupleMapIterator < Object: superclass typecheck marker */},
+  {(bigint) 139 /* 4: CoupleMapIterator < MapIterator: superclass typecheck marker */},
+  {(bigint) 3263 /* 5: 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) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: CoupleMapIterator < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 50: CoupleMapIterator < MapIterator: superclass init_table position */},
+  {(bigint) standard___collection___abstract_collection___CoupleMapIterator___item},
+  {(bigint) standard___collection___abstract_collection___CoupleMapIterator___key},
+  {(bigint) standard___collection___abstract_collection___CoupleMapIterator___next},
+  {(bigint) standard___collection___abstract_collection___CoupleMapIterator___is_ok},
+  {(bigint) 2 /* 55: CoupleMapIterator < CoupleMapIterator: superclass init_table position */},
+  {(bigint) standard___collection___abstract_collection___CoupleMapIterator___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute CoupleMapIterator::_iter */
+static const char LOCATE_INIT_ATTRIBUTES__standard___collection___abstract_collection___CoupleMapIterator[] = "init var of CoupleMapIterator";
+void INIT_ATTRIBUTES__standard___collection___abstract_collection___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__standard___collection___abstract_collection___CoupleMapIterator;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_standard___collection___abstract_collection___CoupleMapIterator(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_standard___collection___abstract_collection___CoupleMapIterator;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_standard___collection___abstract_collection___CoupleMapIterator[] = "check new CoupleMapIterator";
+void CHECKNEW_standard___collection___abstract_collection___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_standard___collection___abstract_collection___CoupleMapIterator;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_standard___collection___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;
+}
+static const char LOCATE_NEW_CoupleMapIterator_standard___collection___abstract_collection___CoupleMapIterator___init[] = "new CoupleMapIterator abstract_collection::CoupleMapIterator::init";
+val_t NEW_CoupleMapIterator_standard___collection___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[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 504;
+  fra.me.meth = LOCATE_NEW_CoupleMapIterator_standard___collection___abstract_collection___CoupleMapIterator___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/collection/abstract_collection.nit:504 */
+  fra.me.REG[1] = NEW_standard___collection___abstract_collection___CoupleMapIterator();
+  INIT_ATTRIBUTES__standard___collection___abstract_collection___CoupleMapIterator(fra.me.REG[1]);
+  standard___collection___abstract_collection___CoupleMapIterator___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_standard___collection___abstract_collection___CoupleMapIterator(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_standard___collection___abstract_collection___Couple[56] = {
+  {(bigint) 267 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "Couple" /* 2: Class Name */},
+  {(bigint) 3 /* 3: Couple < Object: superclass typecheck marker */},
+  {(bigint) 267 /* 4: 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) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 0 /* 19: Couple < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 50: Couple < Couple: superclass init_table position */},
+  {(bigint) standard___collection___abstract_collection___Couple___first},
+  {(bigint) standard___collection___abstract_collection___Couple___first__eq},
+  {(bigint) standard___collection___abstract_collection___Couple___second},
+  {(bigint) standard___collection___abstract_collection___Couple___second__eq},
+  {(bigint) standard___collection___abstract_collection___Couple___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute Couple::_first */
+/* 3: Attribute Couple::_second */
+static const char LOCATE_INIT_ATTRIBUTES__standard___collection___abstract_collection___Couple[] = "init var of Couple";
+void INIT_ATTRIBUTES__standard___collection___abstract_collection___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__standard___collection___abstract_collection___Couple;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_standard___collection___abstract_collection___Couple(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_standard___collection___abstract_collection___Couple;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_standard___collection___abstract_collection___Couple[] = "check new Couple";
+void CHECKNEW_standard___collection___abstract_collection___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_standard___collection___abstract_collection___Couple;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_Couple_standard___collection___abstract_collection___Couple___init[] = "new Couple abstract_collection::Couple::init";
+val_t NEW_Couple_standard___collection___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 = 518;
+  fra.me.meth = LOCATE_NEW_Couple_standard___collection___abstract_collection___Couple___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  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:518 */
+  fra.me.REG[2] = NEW_standard___collection___abstract_collection___Couple();
+  INIT_ATTRIBUTES__standard___collection___abstract_collection___Couple(fra.me.REG[2]);
+  standard___collection___abstract_collection___Couple___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_standard___collection___abstract_collection___Couple(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_standard___collection___range___Range[85] = {
+  {(bigint) 3003 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "Range" /* 2: Class Name */},
+  {(bigint) 3 /* 3: Range < Object: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 283 /* 7: Range < Collection: superclass typecheck marker */},
+  {(bigint) 3003 /* 8: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: Range < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Collection___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(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 :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) standard___string___Collection___join},
+  {(bigint) standard___collection___array___Collection___to_a},
+  {(bigint) 0 /* 70: Range < Collection: superclass init_table position */},
+  {(bigint) standard___collection___range___Range___iterator},
+  {(bigint) standard___collection___range___Range___iterate},
+  {(bigint) standard___collection___range___Range___is_empty},
+  {(bigint) standard___collection___range___Range___length},
+  {(bigint) standard___collection___range___Range___has},
+  {(bigint) standard___collection___range___Range___has_only},
+  {(bigint) standard___collection___range___Range___count},
+  {(bigint) standard___collection___range___Range___first},
+  {(bigint) standard___math___Collection___rand},
+  {(bigint) 2 /* 80: Range < Range: superclass init_table position */},
+  {(bigint) standard___collection___range___Range___last},
+  {(bigint) standard___collection___range___Range___after},
+  {(bigint) standard___collection___range___Range___init},
+  {(bigint) standard___collection___range___Range___without_last},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute Range::_first */
+/* 3: Attribute Range::_last */
+/* 4: Attribute Range::_after */
+static const char LOCATE_INIT_ATTRIBUTES__standard___collection___range___Range[] = "init var of Range";
+void INIT_ATTRIBUTES__standard___collection___range___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__standard___collection___range___Range;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_standard___collection___range___Range(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_standard___collection___range___Range;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_standard___collection___range___Range[] = "check new Range";
+void CHECKNEW_standard___collection___range___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_standard___collection___range___Range;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_standard___collection___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_standard___collection___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_standard___collection___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;
+}
+static const char LOCATE_NEW_Range_standard___collection___range___Range___init[] = "new Range range::Range::init";
+val_t NEW_Range_standard___collection___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_standard___collection___range___Range___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  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_standard___collection___range___Range();
+  INIT_ATTRIBUTES__standard___collection___range___Range(fra.me.REG[2]);
+  standard___collection___range___Range___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_standard___collection___range___Range(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+static const char LOCATE_NEW_Range_standard___collection___range___Range___without_last[] = "new Range range::Range::without_last";
+val_t NEW_Range_standard___collection___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_standard___collection___range___Range___without_last;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  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_standard___collection___range___Range();
+  INIT_ATTRIBUTES__standard___collection___range___Range(fra.me.REG[2]);
+  standard___collection___range___Range___without_last(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_standard___collection___range___Range(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_standard___collection___range___IteratorRange[57] = {
+  {(bigint) 3151 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "IteratorRange" /* 2: Class Name */},
+  {(bigint) 3 /* 3: IteratorRange < Object: superclass typecheck marker */},
+  {(bigint) 187 /* 4: IteratorRange < Iterator: superclass typecheck marker */},
+  {(bigint) 3151 /* 5: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: IteratorRange < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) standard___collection___array___Iterator___to_a},
+  {(bigint) 0 /* 51: IteratorRange < Iterator: superclass init_table position */},
+  {(bigint) standard___collection___range___IteratorRange___item},
+  {(bigint) standard___collection___range___IteratorRange___next},
+  {(bigint) standard___collection___range___IteratorRange___is_ok},
+  {(bigint) 2 /* 55: IteratorRange < IteratorRange: superclass init_table position */},
+  {(bigint) standard___collection___range___IteratorRange___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute IteratorRange::_range */
+/* 3: Attribute IteratorRange::_item */
+static const char LOCATE_INIT_ATTRIBUTES__standard___collection___range___IteratorRange[] = "init var of IteratorRange";
+void INIT_ATTRIBUTES__standard___collection___range___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__standard___collection___range___IteratorRange;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_standard___collection___range___IteratorRange(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_standard___collection___range___IteratorRange;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_standard___collection___range___IteratorRange[] = "check new IteratorRange";
+void CHECKNEW_standard___collection___range___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_standard___collection___range___IteratorRange;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_standard___collection___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_standard___collection___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;
+}
+static const char LOCATE_NEW_IteratorRange_standard___collection___range___IteratorRange___init[] = "new IteratorRange range::IteratorRange::init";
+val_t NEW_IteratorRange_standard___collection___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_standard___collection___range___IteratorRange___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  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_standard___collection___range___IteratorRange();
+  INIT_ATTRIBUTES__standard___collection___range___IteratorRange(fra.me.REG[1]);
+  standard___collection___range___IteratorRange___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_standard___collection___range___IteratorRange(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_standard___collection___list___List[120] = {
+  {(bigint) 4623 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "List" /* 2: Class Name */},
+  {(bigint) 3 /* 3: List < Object: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 283 /* 7: List < Collection: superclass typecheck marker */},
+  {(bigint) 355 /* 8: List < SequenceRead: superclass typecheck marker */},
+  {(bigint) 375 /* 9: List < RemovableCollection: superclass typecheck marker */},
+  {(bigint) 3459 /* 10: List < SimpleCollection: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {(bigint) 4199 /* 12: List < Sequence: superclass typecheck marker */},
+  {(bigint) 4623 /* 13: List < List: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 5 /* 19: List < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Collection___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 3 /* 52: List < RemovableCollection: superclass init_table position */},
+  {(bigint) standard___collection___list___List___clear},
+  {(bigint) standard___collection___list___List___remove},
+  {(bigint) standard___collection___abstract_collection___RemovableCollection___remove_all},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) standard___string___Collection___join},
+  {(bigint) standard___collection___array___Collection___to_a},
+  {(bigint) 4 /* 70: List < Collection: superclass init_table position */},
+  {(bigint) standard___collection___list___List___iterator},
+  {(bigint) standard___collection___abstract_collection___Collection___iterate},
+  {(bigint) standard___collection___list___List___is_empty},
+  {(bigint) standard___collection___list___List___length},
+  {(bigint) standard___collection___list___List___has},
+  {(bigint) standard___collection___list___List___has_only},
+  {(bigint) standard___collection___list___List___count},
+  {(bigint) standard___collection___list___List___first},
+  {(bigint) standard___math___Collection___rand},
+  {(bigint) 1 /* 80: List < SequenceRead: superclass init_table position */},
+  {(bigint) standard___collection___list___List_____bra},
+  {(bigint) standard___collection___list___List___last},
+  {(bigint) standard___collection___abstract_collection___SequenceRead___index_of},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 2 /* 90: List < SimpleCollection: superclass init_table position */},
+  {(bigint) standard___collection___abstract_collection___Sequence___add},
+  {(bigint) standard___collection___abstract_collection___SimpleCollection___add_all},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) standard___collection___Sequence___subarray},
+  {(bigint) 0 /* 101: List < Sequence: superclass init_table position */},
+  {(bigint) standard___collection___list___List___first__eq},
+  {(bigint) standard___collection___list___List___last__eq},
+  {(bigint) standard___collection___list___List___push},
+  {(bigint) standard___collection___abstract_collection___Sequence___append},
+  {(bigint) standard___collection___list___List___pop},
+  {(bigint) standard___collection___list___List___unshift},
+  {(bigint) standard___collection___list___List___shift},
+  {(bigint) standard___collection___list___List_____braeq},
+  {(bigint) standard___collection___list___List___remove_at},
+  {(bigint) 6 /* 111: List < List: superclass init_table position */},
+  {(bigint) standard___collection___list___List___slice},
+  {(bigint) standard___collection___list___List___link},
+  {(bigint) standard___collection___list___List___init},
+  {(bigint) standard___collection___list___List___from},
+  {(bigint) standard___collection___list___List___get_node},
+  {(bigint) standard___collection___list___List___search_node_after},
+  {(bigint) standard___collection___list___List___remove_node},
+  {(bigint) standard___collection___list___List___insert_before},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute List::_head */
+/* 3: Attribute List::_tail */
+static const char LOCATE_INIT_ATTRIBUTES__standard___collection___list___List[] = "init var of List";
+void INIT_ATTRIBUTES__standard___collection___list___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__standard___collection___list___List;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_standard___collection___list___List(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_standard___collection___list___List;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_standard___collection___list___List[] = "check new List";
+void CHECKNEW_standard___collection___list___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_standard___collection___list___List;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_List_standard___collection___list___List___init[] = "new List list::List::init";
+val_t NEW_List_standard___collection___list___List___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 = 185;
+  fra.me.meth = LOCATE_NEW_List_standard___collection___list___List___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* ../lib/standard/collection/list.nit:185 */
+  fra.me.REG[0] = NEW_standard___collection___list___List();
+  INIT_ATTRIBUTES__standard___collection___list___List(fra.me.REG[0]);
+  standard___collection___list___List___init(fra.me.REG[0], init_table);
+  CHECKNEW_standard___collection___list___List(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_List_standard___collection___list___List___from[] = "new List list::List::from";
+val_t NEW_List_standard___collection___list___List___from(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 = 188;
+  fra.me.meth = LOCATE_NEW_List_standard___collection___list___List___from;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/collection/list.nit:188 */
+  fra.me.REG[1] = NEW_standard___collection___list___List();
+  INIT_ATTRIBUTES__standard___collection___list___List(fra.me.REG[1]);
+  standard___collection___list___List___from(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_standard___collection___list___List(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_standard___collection___list___ListIterator[62] = {
+  {(bigint) 3543 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ListIterator" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ListIterator < Object: superclass typecheck marker */},
+  {(bigint) 187 /* 4: ListIterator < Iterator: superclass typecheck marker */},
+  {(bigint) 3167 /* 5: ListIterator < IndexedIterator: superclass typecheck marker */},
+  {(bigint) 3543 /* 6: 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) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: ListIterator < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) standard___collection___array___Iterator___to_a},
+  {(bigint) 1 /* 51: ListIterator < Iterator: superclass init_table position */},
+  {(bigint) standard___collection___list___ListIterator___item},
+  {(bigint) standard___collection___list___ListIterator___next},
+  {(bigint) standard___collection___list___ListIterator___is_ok},
+  {(bigint) 0 /* 55: ListIterator < IndexedIterator: superclass init_table position */},
+  {(bigint) standard___collection___list___ListIterator___index},
+  {(bigint) 3 /* 57: ListIterator < ListIterator: superclass init_table position */},
+  {(bigint) standard___collection___list___ListIterator___item__eq},
+  {(bigint) standard___collection___list___ListIterator___init},
+  {(bigint) standard___collection___list___ListIterator___delete},
+  {(bigint) standard___collection___list___ListIterator___insert_before},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ListIterator::_list */
+/* 3: Attribute ListIterator::_node */
+/* 4: Attribute ListIterator::_index */
+static const char LOCATE_INIT_ATTRIBUTES__standard___collection___list___ListIterator[] = "init var of ListIterator";
+void INIT_ATTRIBUTES__standard___collection___list___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__standard___collection___list___ListIterator;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_standard___collection___list___ListIterator(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_standard___collection___list___ListIterator;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_standard___collection___list___ListIterator[] = "check new ListIterator";
+void CHECKNEW_standard___collection___list___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_standard___collection___list___ListIterator;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_standard___collection___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_standard___collection___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;
+}
+static const char LOCATE_NEW_ListIterator_standard___collection___list___ListIterator___init[] = "new ListIterator list::ListIterator::init";
+val_t NEW_ListIterator_standard___collection___list___ListIterator___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 = 268;
+  fra.me.meth = LOCATE_NEW_ListIterator_standard___collection___list___ListIterator___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/collection/list.nit:268 */
+  fra.me.REG[1] = NEW_standard___collection___list___ListIterator();
+  INIT_ATTRIBUTES__standard___collection___list___ListIterator(fra.me.REG[1]);
+  standard___collection___list___ListIterator___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_standard___collection___list___ListIterator(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_standard___collection___list___ListNode[90] = {
+  {(bigint) 3539 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ListNode" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ListNode < Object: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 283 /* 7: ListNode < Collection: superclass typecheck marker */},
+  {(bigint) 3267 /* 8: ListNode < Container: superclass typecheck marker */},
+  {(bigint) 3539 /* 9: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: ListNode < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Collection___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(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 :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) standard___string___Collection___join},
+  {(bigint) standard___collection___array___Collection___to_a},
+  {(bigint) 0 /* 70: ListNode < Collection: superclass init_table position */},
+  {(bigint) standard___collection___abstract_collection___Container___iterator},
+  {(bigint) standard___collection___abstract_collection___Collection___iterate},
+  {(bigint) standard___collection___abstract_collection___Container___is_empty},
+  {(bigint) standard___collection___abstract_collection___Container___length},
+  {(bigint) standard___collection___abstract_collection___Container___has},
+  {(bigint) standard___collection___abstract_collection___Container___has_only},
+  {(bigint) standard___collection___abstract_collection___Container___count},
+  {(bigint) standard___collection___abstract_collection___Container___first},
+  {(bigint) standard___math___Collection___rand},
+  {(bigint) 2 /* 80: ListNode < Container: superclass init_table position */},
+  {(bigint) standard___collection___abstract_collection___Container___init},
+  {(bigint) standard___collection___abstract_collection___Container___item},
+  {(bigint) standard___collection___abstract_collection___Container___item__eq},
+  {(bigint) 3 /* 84: ListNode < ListNode: superclass init_table position */},
+  {(bigint) standard___collection___list___ListNode___init},
+  {(bigint) standard___collection___list___ListNode___next},
+  {(bigint) standard___collection___list___ListNode___next__eq},
+  {(bigint) standard___collection___list___ListNode___prev},
+  {(bigint) standard___collection___list___ListNode___prev__eq},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ListNode::_item */
+/* 3: Attribute ListNode::_next */
+/* 4: Attribute ListNode::_prev */
+static const char LOCATE_INIT_ATTRIBUTES__standard___collection___list___ListNode[] = "init var of ListNode";
+void INIT_ATTRIBUTES__standard___collection___list___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__standard___collection___list___ListNode;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_standard___collection___list___ListNode(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_standard___collection___list___ListNode;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_standard___collection___list___ListNode[] = "check new ListNode";
+void CHECKNEW_standard___collection___list___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_standard___collection___list___ListNode;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_ListNode_standard___collection___list___ListNode___init[] = "new ListNode list::ListNode::init";
+val_t NEW_ListNode_standard___collection___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 = 301;
+  fra.me.meth = LOCATE_NEW_ListNode_standard___collection___list___ListNode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/collection/list.nit:301 */
+  fra.me.REG[1] = NEW_standard___collection___list___ListNode();
+  INIT_ATTRIBUTES__standard___collection___list___ListNode(fra.me.REG[1]);
+  standard___collection___list___ListNode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_standard___collection___list___ListNode(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_standard___collection___array___Array[121] = {
+  {(bigint) 4827 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "Array" /* 2: Class Name */},
+  {(bigint) 3 /* 3: Array < Object: superclass typecheck marker */},
+  {(bigint) 4827 /* 4: Array < Array: superclass typecheck marker */},
+  {(bigint) 303 /* 5: Array < ArrayCapable: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {(bigint) 283 /* 7: Array < Collection: superclass typecheck marker */},
+  {(bigint) 355 /* 8: Array < SequenceRead: superclass typecheck marker */},
+  {(bigint) 375 /* 9: Array < RemovableCollection: superclass typecheck marker */},
+  {(bigint) 3459 /* 10: Array < SimpleCollection: superclass typecheck marker */},
+  {(bigint) 3727 /* 11: Array < AbstractArrayRead: superclass typecheck marker */},
+  {(bigint) 4199 /* 12: Array < Sequence: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {(bigint) 4635 /* 14: Array < AbstractArray: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 7 /* 19: Array < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___collection___array___AbstractArrayRead_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___collection___array___AbstractArrayRead___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Array___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 5 /* 52: Array < RemovableCollection: superclass init_table position */},
+  {(bigint) standard___collection___array___AbstractArray___clear},
+  {(bigint) standard___collection___array___AbstractArray___remove},
+  {(bigint) standard___collection___array___AbstractArray___remove_all},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 8 /* 59: Array < ArrayCapable: superclass init_table position */},
+  {(bigint) standard___collection___array___ArrayCapable___calloc_array},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) standard___string___Collection___join},
+  {(bigint) standard___collection___array___Collection___to_a},
+  {(bigint) 6 /* 70: Array < Collection: superclass init_table position */},
+  {(bigint) standard___collection___array___AbstractArrayRead___iterator},
+  {(bigint) standard___collection___array___Array___iterate},
+  {(bigint) standard___collection___array___AbstractArrayRead___is_empty},
+  {(bigint) standard___collection___array___AbstractArrayRead___length},
+  {(bigint) standard___collection___array___AbstractArrayRead___has},
+  {(bigint) standard___collection___array___AbstractArrayRead___has_only},
+  {(bigint) standard___collection___array___AbstractArrayRead___count},
+  {(bigint) standard___collection___abstract_collection___SequenceRead___first},
+  {(bigint) standard___math___Collection___rand},
+  {(bigint) 3 /* 80: Array < SequenceRead: superclass init_table position */},
+  {(bigint) standard___collection___array___Array_____bra},
+  {(bigint) standard___collection___abstract_collection___SequenceRead___last},
+  {(bigint) standard___collection___array___AbstractArrayRead___index_of},
+  {(bigint) 0 /* 84: Array < AbstractArray: superclass init_table position */},
+  {(bigint) standard___collection___array___Array___enlarge},
+  {(bigint) standard___collection___array___AbstractArray___insert},
+  {(bigint) standard___collection___array___AbstractArray___swap_at},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 4 /* 90: Array < SimpleCollection: superclass init_table position */},
+  {(bigint) standard___collection___array___Array___add},
+  {(bigint) standard___collection___abstract_collection___SimpleCollection___add_all},
+  {(bigint) 1 /* 93: Array < AbstractArrayRead: superclass init_table position */},
+  {(bigint) standard___collection___array___AbstractArrayRead___last_index_of},
+  {(bigint) standard___collection___array___AbstractArrayRead___index_of_from},
+  {(bigint) standard___collection___array___AbstractArrayRead___last_index_of_from},
+  {(bigint) standard___collection___array___AbstractArrayRead___reversed},
+  {(bigint) standard___collection___array___AbstractArrayRead___copy_to},
+  {(bigint) standard___collection___array___AbstractArrayRead___init},
+  {(bigint) standard___collection___Sequence___subarray},
+  {(bigint) 2 /* 101: Array < Sequence: superclass init_table position */},
+  {(bigint) standard___collection___abstract_collection___Sequence___first__eq},
+  {(bigint) standard___collection___abstract_collection___Sequence___last__eq},
+  {(bigint) standard___collection___array___AbstractArray___push},
+  {(bigint) standard___collection___abstract_collection___Sequence___append},
+  {(bigint) standard___collection___array___AbstractArray___pop},
+  {(bigint) standard___collection___array___AbstractArray___unshift},
+  {(bigint) standard___collection___array___AbstractArray___shift},
+  {(bigint) standard___collection___array___Array_____braeq},
+  {(bigint) standard___collection___array___AbstractArray___remove_at},
+  {(bigint) 9 /* 111: Array < Array: superclass init_table position */},
+  {(bigint) standard___collection___array___Array___init},
+  {(bigint) standard___collection___array___Array___from},
+  {(bigint) standard___collection___array___Array___with_items},
+  {(bigint) standard___collection___array___Array___with_capacity},
+  {(bigint) standard___collection___array___Array___filled_with},
+  {(bigint) standard___collection___array___Array___with_native},
+  {(bigint) standard___collection___array___Array___intern_items},
+  {(bigint) standard___collection___array___Array___sort},
+  {(bigint) standard___collection___array___Array___sub_sort},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute Array::_length */
+/* 3: Attribute Array::_items */
+/* 4: Attribute Array::_capacity */
+static const char LOCATE_INIT_ATTRIBUTES__standard___collection___array___Array[] = "init var of Array";
+void INIT_ATTRIBUTES__standard___collection___array___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__standard___collection___array___Array;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/collection/array.nit:24 */
+  REGB0 = TAG_Int(0);
+  ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]) = REGB0;
+  /* ../lib/standard/collection/array.nit:370 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_standard___collection___array___Array____items(fra.me.REG[0]) = fra.me.REG[1];
+  /* ../lib/standard/collection/array.nit:378 */
+  REGB0 = TAG_Int(0);
+  ATTR_standard___collection___array___Array____capacity(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_standard___collection___array___Array(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_standard___collection___array___Array;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_standard___collection___array___Array[] = "check new Array";
+void CHECKNEW_standard___collection___array___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_standard___collection___array___Array;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____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_standard___collection___array___Array____capacity(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_Array_standard___collection___array___Array___with_capacity[] = "new Array array::Array::with_capacity";
+val_t NEW_Array_standard___collection___array___Array___with_capacity(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  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 = 338;
+  fra.me.meth = LOCATE_NEW_Array_standard___collection___array___Array___with_capacity;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ../lib/standard/collection/array.nit:338 */
+  fra.me.REG[0] = NEW_standard___collection___array___Array();
+  INIT_ATTRIBUTES__standard___collection___array___Array(fra.me.REG[0]);
+  standard___collection___array___Array___with_capacity(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_standard___collection___array___Array(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_Array_standard___collection___array___Array___init[] = "new Array array::Array::init";
+val_t NEW_Array_standard___collection___array___Array___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 = 317;
+  fra.me.meth = LOCATE_NEW_Array_standard___collection___array___Array___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* ../lib/standard/collection/array.nit:317 */
+  fra.me.REG[0] = NEW_standard___collection___array___Array();
+  INIT_ATTRIBUTES__standard___collection___array___Array(fra.me.REG[0]);
+  standard___collection___array___Array___init(fra.me.REG[0], init_table);
+  CHECKNEW_standard___collection___array___Array(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_Array_standard___collection___array___Array___filled_with[] = "new Array array::Array::filled_with";
+val_t NEW_Array_standard___collection___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[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 = 347;
+  fra.me.meth = LOCATE_NEW_Array_standard___collection___array___Array___filled_with;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ../lib/standard/collection/array.nit:347 */
+  fra.me.REG[1] = NEW_standard___collection___array___Array();
+  INIT_ATTRIBUTES__standard___collection___array___Array(fra.me.REG[1]);
+  standard___collection___array___Array___filled_with(fra.me.REG[1], fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_standard___collection___array___Array(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_Array_standard___collection___array___Array___with_items[] = "new Array array::Array::with_items";
+val_t NEW_Array_standard___collection___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[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 = 330;
+  fra.me.meth = LOCATE_NEW_Array_standard___collection___array___Array___with_items;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/collection/array.nit:330 */
+  fra.me.REG[1] = NEW_standard___collection___array___Array();
+  INIT_ATTRIBUTES__standard___collection___array___Array(fra.me.REG[1]);
+  standard___collection___array___Array___with_items(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_standard___collection___array___Array(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_Array_standard___collection___array___Array___from[] = "new Array array::Array::from";
+val_t NEW_Array_standard___collection___array___Array___from(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 = 324;
+  fra.me.meth = LOCATE_NEW_Array_standard___collection___array___Array___from;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/collection/array.nit:324 */
+  fra.me.REG[1] = NEW_standard___collection___array___Array();
+  INIT_ATTRIBUTES__standard___collection___array___Array(fra.me.REG[1]);
+  standard___collection___array___Array___from(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_standard___collection___array___Array(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_Array_standard___collection___array___Array___with_native[] = "new Array array::Array::with_native";
+val_t NEW_Array_standard___collection___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[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 = 361;
+  fra.me.meth = LOCATE_NEW_Array_standard___collection___array___Array___with_native;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ../lib/standard/collection/array.nit:361 */
+  fra.me.REG[1] = NEW_standard___collection___array___Array();
+  INIT_ATTRIBUTES__standard___collection___array___Array(fra.me.REG[1]);
+  standard___collection___array___Array___with_native(fra.me.REG[1], fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_standard___collection___array___Array(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_standard___collection___array___ArrayIterator[59] = {
+  {(bigint) 3719 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ArrayIterator" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ArrayIterator < Object: superclass typecheck marker */},
+  {(bigint) 187 /* 4: ArrayIterator < Iterator: superclass typecheck marker */},
+  {(bigint) 3167 /* 5: ArrayIterator < IndexedIterator: superclass typecheck marker */},
+  {(bigint) 3719 /* 6: 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) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: ArrayIterator < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) standard___collection___array___Iterator___to_a},
+  {(bigint) 1 /* 51: ArrayIterator < Iterator: superclass init_table position */},
+  {(bigint) standard___collection___array___ArrayIterator___item},
+  {(bigint) standard___collection___array___ArrayIterator___next},
+  {(bigint) standard___collection___array___ArrayIterator___is_ok},
+  {(bigint) 0 /* 55: ArrayIterator < IndexedIterator: superclass init_table position */},
+  {(bigint) standard___collection___array___ArrayIterator___index},
+  {(bigint) 3 /* 57: ArrayIterator < ArrayIterator: superclass init_table position */},
+  {(bigint) standard___collection___array___ArrayIterator___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ArrayIterator::_index */
+/* 3: Attribute ArrayIterator::_array */
+static const char LOCATE_INIT_ATTRIBUTES__standard___collection___array___ArrayIterator[] = "init var of ArrayIterator";
+void INIT_ATTRIBUTES__standard___collection___array___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__standard___collection___array___ArrayIterator;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/collection/array.nit:451 */
+  REGB0 = TAG_Int(0);
+  ATTR_standard___collection___array___ArrayIterator____index(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_standard___collection___array___ArrayIterator(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_standard___collection___array___ArrayIterator;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_standard___collection___array___ArrayIterator[] = "check new ArrayIterator";
+void CHECKNEW_standard___collection___array___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_standard___collection___array___ArrayIterator;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_standard___collection___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_standard___collection___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;
+}
+static const char LOCATE_NEW_ArrayIterator_standard___collection___array___ArrayIterator___init[] = "new ArrayIterator array::ArrayIterator::init";
+val_t NEW_ArrayIterator_standard___collection___array___ArrayIterator___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 = 445;
+  fra.me.meth = LOCATE_NEW_ArrayIterator_standard___collection___array___ArrayIterator___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/collection/array.nit:445 */
+  fra.me.REG[1] = NEW_standard___collection___array___ArrayIterator();
+  INIT_ATTRIBUTES__standard___collection___array___ArrayIterator(fra.me.REG[1]);
+  standard___collection___array___ArrayIterator___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_standard___collection___array___ArrayIterator(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_standard___collection___array___ArraySet[98] = {
+  {(bigint) 4631 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ArraySet" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ArraySet < Object: superclass typecheck marker */},
+  {(bigint) 4195 /* 4: ArraySet < Set: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 283 /* 7: ArraySet < Collection: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {(bigint) 375 /* 9: ArraySet < RemovableCollection: superclass typecheck marker */},
+  {(bigint) 3459 /* 10: ArraySet < SimpleCollection: superclass typecheck marker */},
+  {(bigint) 4631 /* 11: ArraySet < ArraySet: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 4 /* 19: ArraySet < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Collection___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 50: ArraySet < Set: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {(bigint) 2 /* 52: ArraySet < RemovableCollection: superclass init_table position */},
+  {(bigint) standard___collection___array___ArraySet___clear},
+  {(bigint) standard___collection___array___ArraySet___remove},
+  {(bigint) standard___collection___array___ArraySet___remove_all},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) standard___string___Collection___join},
+  {(bigint) standard___collection___array___Collection___to_a},
+  {(bigint) 3 /* 70: ArraySet < Collection: superclass init_table position */},
+  {(bigint) standard___collection___array___ArraySet___iterator},
+  {(bigint) standard___collection___abstract_collection___Collection___iterate},
+  {(bigint) standard___collection___array___ArraySet___is_empty},
+  {(bigint) standard___collection___array___ArraySet___length},
+  {(bigint) standard___collection___array___ArraySet___has},
+  {(bigint) standard___collection___abstract_collection___Set___has_only},
+  {(bigint) standard___collection___abstract_collection___Set___count},
+  {(bigint) standard___collection___array___ArraySet___first},
+  {(bigint) standard___math___Collection___rand},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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 /* 90: ArraySet < SimpleCollection: superclass init_table position */},
+  {(bigint) standard___collection___array___ArraySet___add},
+  {(bigint) standard___collection___abstract_collection___SimpleCollection___add_all},
+  {(bigint) 5 /* 93: ArraySet < ArraySet: superclass init_table position */},
+  {(bigint) standard___collection___array___ArraySet___enlarge},
+  {(bigint) standard___collection___array___ArraySet___remove_at},
+  {(bigint) standard___collection___array___ArraySet___init},
+  {(bigint) standard___collection___array___ArraySet___with_capacity},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ArraySet::_array */
+static const char LOCATE_INIT_ATTRIBUTES__standard___collection___array___ArraySet[] = "init var of ArraySet";
+void INIT_ATTRIBUTES__standard___collection___array___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__standard___collection___array___ArraySet;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_standard___collection___array___ArraySet(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_standard___collection___array___ArraySet;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_standard___collection___array___ArraySet[] = "check new ArraySet";
+void CHECKNEW_standard___collection___array___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_standard___collection___array___ArraySet;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_standard___collection___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;
+}
+static const char LOCATE_NEW_ArraySet_standard___collection___array___ArraySet___init[] = "new ArraySet array::ArraySet::init";
+val_t NEW_ArraySet_standard___collection___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 = 499;
+  fra.me.meth = LOCATE_NEW_ArraySet_standard___collection___array___ArraySet___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* ../lib/standard/collection/array.nit:499 */
+  fra.me.REG[0] = NEW_standard___collection___array___ArraySet();
+  INIT_ATTRIBUTES__standard___collection___array___ArraySet(fra.me.REG[0]);
+  standard___collection___array___ArraySet___init(fra.me.REG[0], init_table);
+  CHECKNEW_standard___collection___array___ArraySet(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_ArraySet_standard___collection___array___ArraySet___with_capacity[] = "new ArraySet array::ArraySet::with_capacity";
+val_t NEW_ArraySet_standard___collection___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 = 502;
+  fra.me.meth = LOCATE_NEW_ArraySet_standard___collection___array___ArraySet___with_capacity;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ../lib/standard/collection/array.nit:502 */
+  fra.me.REG[0] = NEW_standard___collection___array___ArraySet();
+  INIT_ATTRIBUTES__standard___collection___array___ArraySet(fra.me.REG[0]);
+  standard___collection___array___ArraySet___with_capacity(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_standard___collection___array___ArraySet(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_standard___collection___array___ArraySetIterator[57] = {
+  {(bigint) 3311 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ArraySetIterator" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ArraySetIterator < Object: superclass typecheck marker */},
+  {(bigint) 187 /* 4: ArraySetIterator < Iterator: superclass typecheck marker */},
+  {(bigint) 3311 /* 5: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: ArraySetIterator < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) standard___collection___array___Iterator___to_a},
+  {(bigint) 0 /* 51: ArraySetIterator < Iterator: superclass init_table position */},
+  {(bigint) standard___collection___array___ArraySetIterator___item},
+  {(bigint) standard___collection___array___ArraySetIterator___next},
+  {(bigint) standard___collection___array___ArraySetIterator___is_ok},
+  {(bigint) 2 /* 55: ArraySetIterator < ArraySetIterator: superclass init_table position */},
+  {(bigint) standard___collection___array___ArraySetIterator___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ArraySetIterator::_iter */
+static const char LOCATE_INIT_ATTRIBUTES__standard___collection___array___ArraySetIterator[] = "init var of ArraySetIterator";
+void INIT_ATTRIBUTES__standard___collection___array___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__standard___collection___array___ArraySetIterator;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_standard___collection___array___ArraySetIterator(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_standard___collection___array___ArraySetIterator;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_standard___collection___array___ArraySetIterator[] = "check new ArraySetIterator";
+void CHECKNEW_standard___collection___array___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_standard___collection___array___ArraySetIterator;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_standard___collection___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;
+}
+static const char LOCATE_NEW_ArraySetIterator_standard___collection___array___ArraySetIterator___init[] = "new ArraySetIterator array::ArraySetIterator::init";
+val_t NEW_ArraySetIterator_standard___collection___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 = 516;
+  fra.me.meth = LOCATE_NEW_ArraySetIterator_standard___collection___array___ArraySetIterator___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/collection/array.nit:516 */
+  fra.me.REG[1] = NEW_standard___collection___array___ArraySetIterator();
+  INIT_ATTRIBUTES__standard___collection___array___ArraySetIterator(fra.me.REG[1]);
+  standard___collection___array___ArraySetIterator___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_standard___collection___array___ArraySetIterator(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_standard___collection___array___ArrayMap[75] = {
+  {(bigint) 4251 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ArrayMap" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ArrayMap < Object: superclass typecheck marker */},
+  {(bigint) 135 /* 4: ArrayMap < MapRead: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {(bigint) 3079 /* 6: ArrayMap < Map: superclass typecheck marker */},
+  {(bigint) 3679 /* 7: ArrayMap < CoupleMap: superclass typecheck marker */},
+  {(bigint) 4251 /* 8: ArrayMap < ArrayMap: superclass typecheck marker */},
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: ArrayMap < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 2 /* 50: ArrayMap < MapRead: superclass init_table position */},
+  {(bigint) standard___collection___array___ArrayMap_____bra},
+  {(bigint) standard___collection___abstract_collection___MapRead___has_key},
+  {(bigint) standard___collection___array___ArrayMap___iterator},
+  {(bigint) standard___collection___abstract_collection___MapRead___iterate},
+  {(bigint) standard___collection___array___ArrayMap___values},
+  {(bigint) standard___collection___array___ArrayMap___keys},
+  {(bigint) standard___collection___array___ArrayMap___is_empty},
+  {(bigint) standard___collection___array___ArrayMap___length},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) standard___string___Map___join},
+  {(bigint) 1 /* 62: ArrayMap < Map: superclass init_table position */},
+  {(bigint) standard___collection___array___ArrayMap_____braeq},
+  {(bigint) standard___collection___abstract_collection___Map___recover_with},
+  {(bigint) standard___collection___array___ArrayMap___clear},
+  {(bigint) 0 /* 66: ArrayMap < CoupleMap: superclass init_table position */},
+  {(bigint) standard___collection___array___ArrayMap___couple_at},
+  {(bigint) 4 /* 68: ArrayMap < ArrayMap: superclass init_table position */},
+  {(bigint) standard___collection___array___ArrayMap___keys__eq},
+  {(bigint) standard___collection___array___ArrayMap___values__eq},
+  {(bigint) standard___collection___array___ArrayMap___enlarge},
+  {(bigint) standard___collection___array___ArrayMap___remove_at_index},
+  {(bigint) standard___collection___array___ArrayMap___index},
+  {(bigint) standard___collection___array___ArrayMap___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ArrayMap::@keys */
+/* 3: Attribute ArrayMap::@values */
+/* 4: Attribute ArrayMap::_items */
+/* 5: Attribute ArrayMap::_last_index */
+static const char LOCATE_INIT_ATTRIBUTES__standard___collection___array___ArrayMap[] = "init var of ArrayMap";
+void INIT_ATTRIBUTES__standard___collection___array___ArrayMap(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__standard___collection___array___ArrayMap;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/collection/array.nit:548 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = NEW_ArrayMapKeys_standard___collection___array___ArrayMapKeys___init(fra.me.REG[1]);
+  ATTR_standard___collection___array___ArrayMap_____atkeys(fra.me.REG[0]) = fra.me.REG[1];
+  /* ../lib/standard/collection/array.nit:549 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = NEW_ArrayMapValues_standard___collection___array___ArrayMapValues___init(fra.me.REG[1]);
+  ATTR_standard___collection___array___ArrayMap_____atvalues(fra.me.REG[0]) = fra.me.REG[1];
+  /* ../lib/standard/collection/array.nit:584 */
+  REGB0 = TAG_Int(0);
+  ATTR_standard___collection___array___ArrayMap____last_index(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_standard___collection___array___ArrayMap(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_standard___collection___array___ArrayMap;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_standard___collection___array___ArrayMap[] = "check new ArrayMap";
+void CHECKNEW_standard___collection___array___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_standard___collection___array___ArrayMap;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMap_____atkeys(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@keys", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMap_____atvalues(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@values", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_standard___collection___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_standard___collection___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;
+}
+static const char LOCATE_NEW_ArrayMap_standard___collection___array___ArrayMap___init[] = "new ArrayMap array::ArrayMap::init";
+val_t NEW_ArrayMap_standard___collection___array___ArrayMap___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 = 604;
+  fra.me.meth = LOCATE_NEW_ArrayMap_standard___collection___array___ArrayMap___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* ../lib/standard/collection/array.nit:604 */
+  fra.me.REG[0] = NEW_standard___collection___array___ArrayMap();
+  INIT_ATTRIBUTES__standard___collection___array___ArrayMap(fra.me.REG[0]);
+  standard___collection___array___ArrayMap___init(fra.me.REG[0], init_table);
+  CHECKNEW_standard___collection___array___ArrayMap(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_standard___collection___array___ArrayMapKeys[84] = {
+  {(bigint) 3715 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ArrayMapKeys" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ArrayMapKeys < Object: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 283 /* 7: ArrayMapKeys < Collection: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {(bigint) 375 /* 9: ArrayMapKeys < RemovableCollection: superclass typecheck marker */},
+  {(bigint) 3715 /* 10: ArrayMapKeys < ArrayMapKeys: superclass typecheck marker */},
+  {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) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: ArrayMapKeys < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Collection___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 0 /* 52: ArrayMapKeys < RemovableCollection: superclass init_table position */},
+  {(bigint) standard___collection___array___ArrayMapKeys___clear},
+  {(bigint) standard___collection___array___ArrayMapKeys___remove},
+  {(bigint) standard___collection___array___ArrayMapKeys___remove_all},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) standard___string___Collection___join},
+  {(bigint) standard___collection___array___Collection___to_a},
+  {(bigint) 1 /* 70: ArrayMapKeys < Collection: superclass init_table position */},
+  {(bigint) standard___collection___array___ArrayMapKeys___iterator},
+  {(bigint) standard___collection___abstract_collection___Collection___iterate},
+  {(bigint) standard___collection___array___ArrayMapKeys___is_empty},
+  {(bigint) standard___collection___array___ArrayMapKeys___length},
+  {(bigint) standard___collection___array___ArrayMapKeys___has},
+  {(bigint) standard___collection___array___ArrayMapKeys___has_only},
+  {(bigint) standard___collection___array___ArrayMapKeys___count},
+  {(bigint) standard___collection___array___ArrayMapKeys___first},
+  {(bigint) standard___math___Collection___rand},
+  {(bigint) 3 /* 80: ArrayMapKeys < ArrayMapKeys: superclass init_table position */},
+  {(bigint) standard___collection___array___ArrayMapKeys___map},
+  {(bigint) standard___collection___array___ArrayMapKeys___map__eq},
+  {(bigint) standard___collection___array___ArrayMapKeys___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ArrayMapKeys::@map */
+static const char LOCATE_INIT_ATTRIBUTES__standard___collection___array___ArrayMapKeys[] = "init var of ArrayMapKeys";
+void INIT_ATTRIBUTES__standard___collection___array___ArrayMapKeys(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__standard___collection___array___ArrayMapKeys;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_standard___collection___array___ArrayMapKeys(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_standard___collection___array___ArrayMapKeys;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_standard___collection___array___ArrayMapKeys[] = "check new ArrayMapKeys";
+void CHECKNEW_standard___collection___array___ArrayMapKeys(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_standard___collection___array___ArrayMapKeys;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMapKeys_____atmap(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;
+}
+static const char LOCATE_NEW_ArrayMapKeys_standard___collection___array___ArrayMapKeys___init[] = "new ArrayMapKeys array::ArrayMapKeys::init";
+val_t NEW_ArrayMapKeys_standard___collection___array___ArrayMapKeys___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_ArrayMapKeys_standard___collection___array___ArrayMapKeys___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_standard___collection___array___ArrayMapKeys();
+  INIT_ATTRIBUTES__standard___collection___array___ArrayMapKeys(fra.me.REG[1]);
+  standard___collection___array___ArrayMapKeys___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_standard___collection___array___ArrayMapKeys(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_standard___collection___array___ArrayMapValues[84] = {
+  {(bigint) 3711 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ArrayMapValues" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ArrayMapValues < Object: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 283 /* 7: ArrayMapValues < Collection: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {(bigint) 375 /* 9: ArrayMapValues < RemovableCollection: superclass typecheck marker */},
+  {(bigint) 3711 /* 10: ArrayMapValues < ArrayMapValues: superclass typecheck marker */},
+  {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) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: ArrayMapValues < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Collection___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 0 /* 52: ArrayMapValues < RemovableCollection: superclass init_table position */},
+  {(bigint) standard___collection___array___ArrayMapValues___clear},
+  {(bigint) standard___collection___array___ArrayMapValues___remove},
+  {(bigint) standard___collection___array___ArrayMapValues___remove_all},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) standard___string___Collection___join},
+  {(bigint) standard___collection___array___Collection___to_a},
+  {(bigint) 1 /* 70: ArrayMapValues < Collection: superclass init_table position */},
+  {(bigint) standard___collection___array___ArrayMapValues___iterator},
+  {(bigint) standard___collection___abstract_collection___Collection___iterate},
+  {(bigint) standard___collection___array___ArrayMapValues___is_empty},
+  {(bigint) standard___collection___array___ArrayMapValues___length},
+  {(bigint) standard___collection___array___ArrayMapValues___has},
+  {(bigint) standard___collection___array___ArrayMapValues___has_only},
+  {(bigint) standard___collection___array___ArrayMapValues___count},
+  {(bigint) standard___collection___array___ArrayMapValues___first},
+  {(bigint) standard___math___Collection___rand},
+  {(bigint) 3 /* 80: ArrayMapValues < ArrayMapValues: superclass init_table position */},
+  {(bigint) standard___collection___array___ArrayMapValues___map},
+  {(bigint) standard___collection___array___ArrayMapValues___map__eq},
+  {(bigint) standard___collection___array___ArrayMapValues___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ArrayMapValues::@map */
+static const char LOCATE_INIT_ATTRIBUTES__standard___collection___array___ArrayMapValues[] = "init var of ArrayMapValues";
+void INIT_ATTRIBUTES__standard___collection___array___ArrayMapValues(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__standard___collection___array___ArrayMapValues;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_standard___collection___array___ArrayMapValues(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_standard___collection___array___ArrayMapValues;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_standard___collection___array___ArrayMapValues[] = "check new ArrayMapValues";
+void CHECKNEW_standard___collection___array___ArrayMapValues(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_standard___collection___array___ArrayMapValues;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMapValues_____atmap(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;
+}
+static const char LOCATE_NEW_ArrayMapValues_standard___collection___array___ArrayMapValues___init[] = "new ArrayMapValues array::ArrayMapValues::init";
+val_t NEW_ArrayMapValues_standard___collection___array___ArrayMapValues___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_ArrayMapValues_standard___collection___array___ArrayMapValues___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_standard___collection___array___ArrayMapValues();
+  INIT_ATTRIBUTES__standard___collection___array___ArrayMapValues(fra.me.REG[1]);
+  standard___collection___array___ArrayMapValues___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_standard___collection___array___ArrayMapValues(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_standard___collection___array___NativeArray[54] = {
+  {(bigint) 123 /* 0: Identity */},
+  {(bigint) -1 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "NativeArray" /* 2: Class Name */},
+  {(bigint) 3 /* 3: NativeArray < Object: superclass typecheck marker */},
+  {(bigint) 123 /* 4: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 0 /* 19: NativeArray < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 50: NativeArray < NativeArray: superclass init_table position */},
+  {(bigint) standard___collection___array___NativeArray_____bra},
+  {(bigint) standard___collection___array___NativeArray_____braeq},
+  {(bigint) standard___collection___array___NativeArray___copy_to},
+};
+/* 0: Pointer to the classtable */
+/* 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_standard___collection___array___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_standard___collection___sorter___ComparableSorter[58] = {
+  {(bigint) 3283 /* 0: Identity */},
+  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ComparableSorter" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ComparableSorter < Object: superclass typecheck marker */},
+  {(bigint) 307 /* 4: ComparableSorter < AbstractSorter: superclass typecheck marker */},
+  {(bigint) 3283 /* 5: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: ComparableSorter < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 50: ComparableSorter < AbstractSorter: superclass init_table position */},
+  {(bigint) standard___collection___sorter___ComparableSorter___compare},
+  {(bigint) standard___collection___sorter___AbstractSorter___sort},
+  {(bigint) standard___collection___sorter___AbstractSorter___sub_sort},
+  {(bigint) standard___collection___sorter___AbstractSorter___quick_sort},
+  {(bigint) standard___collection___sorter___AbstractSorter___bubble_sort},
+  {(bigint) 2 /* 56: ComparableSorter < ComparableSorter: superclass init_table position */},
+  {(bigint) standard___collection___sorter___ComparableSorter___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+static const char LOCATE_INIT_ATTRIBUTES__standard___collection___sorter___ComparableSorter[] = "init var of ComparableSorter";
+void INIT_ATTRIBUTES__standard___collection___sorter___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__standard___collection___sorter___ComparableSorter;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_standard___collection___sorter___ComparableSorter(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 2);
+  obj->vft = (classtable_elt_t*)VFT_standard___collection___sorter___ComparableSorter;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_standard___collection___sorter___ComparableSorter[] = "check new ComparableSorter";
+void CHECKNEW_standard___collection___sorter___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_standard___collection___sorter___ComparableSorter;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_ComparableSorter_standard___collection___sorter___ComparableSorter___init[] = "new ComparableSorter sorter::ComparableSorter::init";
+val_t NEW_ComparableSorter_standard___collection___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 = 97;
+  fra.me.meth = LOCATE_NEW_ComparableSorter_standard___collection___sorter___ComparableSorter___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* ../lib/standard/collection/sorter.nit:97 */
+  fra.me.REG[0] = NEW_standard___collection___sorter___ComparableSorter();
+  INIT_ATTRIBUTES__standard___collection___sorter___ComparableSorter(fra.me.REG[0]);
+  standard___collection___sorter___ComparableSorter___init(fra.me.REG[0], init_table);
+  CHECKNEW_standard___collection___sorter___ComparableSorter(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_standard___collection___hash_collection___HashMap[90] = {
+  {(bigint) 3651 /* 0: Identity */},
+  {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "HashMap" /* 2: Class Name */},
+  {(bigint) 3 /* 3: HashMap < Object: superclass typecheck marker */},
+  {(bigint) 135 /* 4: HashMap < MapRead: superclass typecheck marker */},
+  {(bigint) 303 /* 5: HashMap < ArrayCapable: superclass typecheck marker */},
+  {(bigint) 3079 /* 6: HashMap < Map: superclass typecheck marker */},
+  {(bigint) 3651 /* 7: HashMap < HashMap: superclass typecheck marker */},
+  {(bigint) 3215 /* 8: HashMap < HashCollection: superclass typecheck marker */},
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: HashMap < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 50: HashMap < MapRead: superclass init_table position */},
+  {(bigint) standard___collection___hash_collection___HashMap_____bra},
+  {(bigint) standard___collection___abstract_collection___MapRead___has_key},
+  {(bigint) standard___collection___hash_collection___HashMap___iterator},
+  {(bigint) standard___collection___hash_collection___HashMap___iterate},
+  {(bigint) standard___collection___hash_collection___HashMap___values},
+  {(bigint) standard___collection___hash_collection___HashMap___keys},
+  {(bigint) standard___collection___hash_collection___HashMap___is_empty},
+  {(bigint) standard___collection___hash_collection___HashMap___length},
+  {(bigint) 4 /* 59: HashMap < ArrayCapable: superclass init_table position */},
+  {(bigint) standard___collection___array___ArrayCapable___calloc_array},
+  {(bigint) standard___string___Map___join},
+  {(bigint) 0 /* 62: HashMap < Map: superclass init_table position */},
+  {(bigint) standard___collection___hash_collection___HashMap_____braeq},
+  {(bigint) standard___collection___abstract_collection___Map___recover_with},
+  {(bigint) standard___collection___hash_collection___HashMap___clear},
+  {(bigint) 5 /* 66: HashMap < HashMap: superclass init_table position */},
+  {(bigint) standard___collection___hash_collection___HashMap___init},
+  {(bigint) standard___collection___hash_collection___HashMap___keys__eq},
+  {(bigint) standard___collection___hash_collection___HashMap___values__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 :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 3 /* 80: HashMap < HashCollection: superclass init_table position */},
+  {(bigint) standard___collection___hash_collection___HashCollection___first_item},
+  {(bigint) standard___collection___hash_collection___HashCollection___index_at},
+  {(bigint) standard___collection___hash_collection___HashCollection___node_at},
+  {(bigint) standard___collection___hash_collection___HashCollection___node_at_idx},
+  {(bigint) standard___collection___hash_collection___HashCollection___store},
+  {(bigint) standard___collection___hash_collection___HashCollection___remove_node},
+  {(bigint) standard___collection___hash_collection___HashCollection___raz},
+  {(bigint) standard___collection___hash_collection___HashCollection___enlarge},
+  {(bigint) standard___collection___hash_collection___HashCollection___init},
+};
+/* 0: Pointer to the classtable */
+/* 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 */
+/* 9: Attribute HashMap::@keys */
+/* 10: Attribute HashMap::@values */
+static const char LOCATE_INIT_ATTRIBUTES__standard___collection___hash_collection___HashMap[] = "init var of HashMap";
+void INIT_ATTRIBUTES__standard___collection___hash_collection___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__standard___collection___hash_collection___HashMap;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  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_standard___collection___hash_collection___HashCollection____array(fra.me.REG[0]) = fra.me.REG[1];
+  /* ../lib/standard/collection/hash_collection.nit:24 */
+  REGB0 = TAG_Int(0);
+  ATTR_standard___collection___hash_collection___HashCollection____capacity(fra.me.REG[0]) = REGB0;
+  /* ../lib/standard/collection/hash_collection.nit:25 */
+  REGB0 = TAG_Int(0);
+  ATTR_standard___collection___hash_collection___HashCollection____length(fra.me.REG[0]) = REGB0;
+  /* ../lib/standard/collection/hash_collection.nit:27 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_standard___collection___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_standard___collection___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_standard___collection___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_standard___collection___hash_collection___HashCollection____last_accessed_node(fra.me.REG[0]) = fra.me.REG[1];
+  /* ../lib/standard/collection/hash_collection.nit:255 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = NEW_HashMapKeys_standard___collection___hash_collection___HashMapKeys___init(fra.me.REG[1]);
+  ATTR_standard___collection___hash_collection___HashMap_____atkeys(fra.me.REG[0]) = fra.me.REG[1];
+  /* ../lib/standard/collection/hash_collection.nit:256 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = NEW_HashMapValues_standard___collection___hash_collection___HashMapValues___init(fra.me.REG[1]);
+  ATTR_standard___collection___hash_collection___HashMap_____atvalues(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_standard___collection___hash_collection___HashMap(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 11);
+  obj->vft = (classtable_elt_t*)VFT_standard___collection___hash_collection___HashMap;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_standard___collection___hash_collection___HashMap[] = "check new HashMap";
+void CHECKNEW_standard___collection___hash_collection___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_standard___collection___hash_collection___HashMap;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_standard___collection___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_standard___collection___hash_collection___HashCollection____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_standard___collection___hash_collection___HashMap_____atkeys(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@keys", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_standard___collection___hash_collection___HashMap_____atvalues(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@values", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_HashMap_standard___collection___hash_collection___HashMap___init[] = "new HashMap hash_collection::HashMap::init";
+val_t NEW_HashMap_standard___collection___hash_collection___HashMap___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 = 248;
+  fra.me.meth = LOCATE_NEW_HashMap_standard___collection___hash_collection___HashMap___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* ../lib/standard/collection/hash_collection.nit:248 */
+  fra.me.REG[0] = NEW_standard___collection___hash_collection___HashMap();
+  INIT_ATTRIBUTES__standard___collection___hash_collection___HashMap(fra.me.REG[0]);
+  standard___collection___hash_collection___HashMap___init(fra.me.REG[0], init_table);
+  CHECKNEW_standard___collection___hash_collection___HashMap(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_standard___collection___hash_collection___HashMapKeys[84] = {
+  {(bigint) 3659 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "HashMapKeys" /* 2: Class Name */},
+  {(bigint) 3 /* 3: HashMapKeys < Object: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 283 /* 7: HashMapKeys < Collection: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {(bigint) 375 /* 9: HashMapKeys < RemovableCollection: superclass typecheck marker */},
+  {(bigint) 3659 /* 10: HashMapKeys < HashMapKeys: superclass typecheck marker */},
+  {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) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: HashMapKeys < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Collection___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 0 /* 52: HashMapKeys < RemovableCollection: superclass init_table position */},
+  {(bigint) standard___collection___hash_collection___HashMapKeys___clear},
+  {(bigint) standard___collection___hash_collection___HashMapKeys___remove},
+  {(bigint) standard___collection___hash_collection___HashMapKeys___remove_all},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) standard___string___Collection___join},
+  {(bigint) standard___collection___array___Collection___to_a},
+  {(bigint) 1 /* 70: HashMapKeys < Collection: superclass init_table position */},
+  {(bigint) standard___collection___hash_collection___HashMapKeys___iterator},
+  {(bigint) standard___collection___abstract_collection___Collection___iterate},
+  {(bigint) standard___collection___hash_collection___HashMapKeys___is_empty},
+  {(bigint) standard___collection___hash_collection___HashMapKeys___length},
+  {(bigint) standard___collection___hash_collection___HashMapKeys___has},
+  {(bigint) standard___collection___hash_collection___HashMapKeys___has_only},
+  {(bigint) standard___collection___hash_collection___HashMapKeys___count},
+  {(bigint) standard___collection___hash_collection___HashMapKeys___first},
+  {(bigint) standard___math___Collection___rand},
+  {(bigint) 3 /* 80: HashMapKeys < HashMapKeys: superclass init_table position */},
+  {(bigint) standard___collection___hash_collection___HashMapKeys___map},
+  {(bigint) standard___collection___hash_collection___HashMapKeys___map__eq},
+  {(bigint) standard___collection___hash_collection___HashMapKeys___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute HashMapKeys::@map */
+static const char LOCATE_INIT_ATTRIBUTES__standard___collection___hash_collection___HashMapKeys[] = "init var of HashMapKeys";
+void INIT_ATTRIBUTES__standard___collection___hash_collection___HashMapKeys(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__standard___collection___hash_collection___HashMapKeys;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_standard___collection___hash_collection___HashMapKeys(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_standard___collection___hash_collection___HashMapKeys;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_standard___collection___hash_collection___HashMapKeys[] = "check new HashMapKeys";
+void CHECKNEW_standard___collection___hash_collection___HashMapKeys(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_standard___collection___hash_collection___HashMapKeys;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_standard___collection___hash_collection___HashMapKeys_____atmap(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;
+}
+static const char LOCATE_NEW_HashMapKeys_standard___collection___hash_collection___HashMapKeys___init[] = "new HashMapKeys hash_collection::HashMapKeys::init";
+val_t NEW_HashMapKeys_standard___collection___hash_collection___HashMapKeys___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_HashMapKeys_standard___collection___hash_collection___HashMapKeys___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_standard___collection___hash_collection___HashMapKeys();
+  INIT_ATTRIBUTES__standard___collection___hash_collection___HashMapKeys(fra.me.REG[1]);
+  standard___collection___hash_collection___HashMapKeys___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_standard___collection___hash_collection___HashMapKeys(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_standard___collection___hash_collection___HashMapValues[84] = {
+  {(bigint) 3655 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "HashMapValues" /* 2: Class Name */},
+  {(bigint) 3 /* 3: HashMapValues < Object: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 283 /* 7: HashMapValues < Collection: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {(bigint) 375 /* 9: HashMapValues < RemovableCollection: superclass typecheck marker */},
+  {(bigint) 3655 /* 10: HashMapValues < HashMapValues: superclass typecheck marker */},
+  {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) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: HashMapValues < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Collection___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 0 /* 52: HashMapValues < RemovableCollection: superclass init_table position */},
+  {(bigint) standard___collection___hash_collection___HashMapValues___clear},
+  {(bigint) standard___collection___hash_collection___HashMapValues___remove},
+  {(bigint) standard___collection___hash_collection___HashMapValues___remove_all},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) standard___string___Collection___join},
+  {(bigint) standard___collection___array___Collection___to_a},
+  {(bigint) 1 /* 70: HashMapValues < Collection: superclass init_table position */},
+  {(bigint) standard___collection___hash_collection___HashMapValues___iterator},
+  {(bigint) standard___collection___abstract_collection___Collection___iterate},
+  {(bigint) standard___collection___hash_collection___HashMapValues___is_empty},
+  {(bigint) standard___collection___hash_collection___HashMapValues___length},
+  {(bigint) standard___collection___hash_collection___HashMapValues___has},
+  {(bigint) standard___collection___hash_collection___HashMapValues___has_only},
+  {(bigint) standard___collection___hash_collection___HashMapValues___count},
+  {(bigint) standard___collection___hash_collection___HashMapValues___first},
+  {(bigint) standard___math___Collection___rand},
+  {(bigint) 3 /* 80: HashMapValues < HashMapValues: superclass init_table position */},
+  {(bigint) standard___collection___hash_collection___HashMapValues___map},
+  {(bigint) standard___collection___hash_collection___HashMapValues___map__eq},
+  {(bigint) standard___collection___hash_collection___HashMapValues___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute HashMapValues::@map */
+static const char LOCATE_INIT_ATTRIBUTES__standard___collection___hash_collection___HashMapValues[] = "init var of HashMapValues";
+void INIT_ATTRIBUTES__standard___collection___hash_collection___HashMapValues(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__standard___collection___hash_collection___HashMapValues;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_standard___collection___hash_collection___HashMapValues(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_standard___collection___hash_collection___HashMapValues;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_standard___collection___hash_collection___HashMapValues[] = "check new HashMapValues";
+void CHECKNEW_standard___collection___hash_collection___HashMapValues(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_standard___collection___hash_collection___HashMapValues;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_standard___collection___hash_collection___HashMapValues_____atmap(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;
+}
+static const char LOCATE_NEW_HashMapValues_standard___collection___hash_collection___HashMapValues___init[] = "new HashMapValues hash_collection::HashMapValues::init";
+val_t NEW_HashMapValues_standard___collection___hash_collection___HashMapValues___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_HashMapValues_standard___collection___hash_collection___HashMapValues___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_standard___collection___hash_collection___HashMapValues();
+  INIT_ATTRIBUTES__standard___collection___hash_collection___HashMapValues(fra.me.REG[1]);
+  standard___collection___hash_collection___HashMapValues___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_standard___collection___hash_collection___HashMapValues(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_standard___collection___hash_collection___HashMapNode[60] = {
+  {(bigint) 3207 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "HashMapNode" /* 2: Class Name */},
+  {(bigint) 3 /* 3: HashMapNode < Object: superclass typecheck marker */},
+  {(bigint) 239 /* 4: HashMapNode < HashNode: superclass typecheck marker */},
+  {(bigint) 3207 /* 5: 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) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: HashMapNode < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 50: HashMapNode < HashNode: superclass init_table position */},
+  {(bigint) 3207 /* 51: VT HashMapNode::N : id of HashMapNode */},
+  {(bigint) 5 /* 52: VT HashMapNode::N : color of HashMapNode */},
+  {(bigint) standard___collection___hash_collection___HashNode___next_item},
+  {(bigint) standard___collection___hash_collection___HashNode___next_item__eq},
+  {(bigint) standard___collection___hash_collection___HashNode___prev_item},
+  {(bigint) standard___collection___hash_collection___HashNode___prev_item__eq},
+  {(bigint) standard___collection___hash_collection___HashNode___init},
+  {(bigint) 2 /* 58: HashMapNode < HashMapNode: superclass init_table position */},
+  {(bigint) standard___collection___hash_collection___HashMapNode___init},
+};
+/* 0: Pointer to the classtable */
+/* 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 */
+static const char LOCATE_INIT_ATTRIBUTES__standard___collection___hash_collection___HashMapNode[] = "init var of HashMapNode";
+void INIT_ATTRIBUTES__standard___collection___hash_collection___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__standard___collection___hash_collection___HashMapNode;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/collection/hash_collection.nit:192 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_standard___collection___hash_collection___HashNode____next_item(fra.me.REG[0]) = fra.me.REG[1];
+  /* ../lib/standard/collection/hash_collection.nit:193 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_standard___collection___hash_collection___HashNode____prev_item(fra.me.REG[0]) = fra.me.REG[1];
+  /* ../lib/standard/collection/hash_collection.nit:194 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_standard___collection___hash_collection___HashNode____prev_in_bucklet(fra.me.REG[0]) = fra.me.REG[1];
+  /* ../lib/standard/collection/hash_collection.nit:195 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_standard___collection___hash_collection___HashNode____next_in_bucklet(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_standard___collection___hash_collection___HashMapNode(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_standard___collection___hash_collection___HashMapNode;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_standard___collection___hash_collection___HashMapNode[] = "check new HashMapNode";
+void CHECKNEW_standard___collection___hash_collection___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_standard___collection___hash_collection___HashMapNode;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_standard___collection___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;
+}
+static const char LOCATE_NEW_HashMapNode_standard___collection___hash_collection___HashMapNode___init[] = "new HashMapNode hash_collection::HashMapNode::init";
+val_t NEW_HashMapNode_standard___collection___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 = 356;
+  fra.me.meth = LOCATE_NEW_HashMapNode_standard___collection___hash_collection___HashMapNode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  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:356 */
+  fra.me.REG[2] = NEW_standard___collection___hash_collection___HashMapNode();
+  INIT_ATTRIBUTES__standard___collection___hash_collection___HashMapNode(fra.me.REG[2]);
+  standard___collection___hash_collection___HashMapNode___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_standard___collection___hash_collection___HashMapNode(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_standard___collection___hash_collection___HashMapIterator[57] = {
+  {(bigint) 3211 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "HashMapIterator" /* 2: Class Name */},
+  {(bigint) 3 /* 3: HashMapIterator < Object: superclass typecheck marker */},
+  {(bigint) 139 /* 4: HashMapIterator < MapIterator: superclass typecheck marker */},
+  {(bigint) 3211 /* 5: 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) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: HashMapIterator < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 50: HashMapIterator < MapIterator: superclass init_table position */},
+  {(bigint) standard___collection___hash_collection___HashMapIterator___item},
+  {(bigint) standard___collection___hash_collection___HashMapIterator___key},
+  {(bigint) standard___collection___hash_collection___HashMapIterator___next},
+  {(bigint) standard___collection___hash_collection___HashMapIterator___is_ok},
+  {(bigint) 2 /* 55: HashMapIterator < HashMapIterator: superclass init_table position */},
+  {(bigint) standard___collection___hash_collection___HashMapIterator___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute HashMapIterator::_map */
+/* 3: Attribute HashMapIterator::_node */
+static const char LOCATE_INIT_ATTRIBUTES__standard___collection___hash_collection___HashMapIterator[] = "init var of HashMapIterator";
+void INIT_ATTRIBUTES__standard___collection___hash_collection___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__standard___collection___hash_collection___HashMapIterator;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_standard___collection___hash_collection___HashMapIterator(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_standard___collection___hash_collection___HashMapIterator;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_standard___collection___hash_collection___HashMapIterator[] = "check new HashMapIterator";
+void CHECKNEW_standard___collection___hash_collection___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_standard___collection___hash_collection___HashMapIterator;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_standard___collection___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;
+}
+static const char LOCATE_NEW_HashMapIterator_standard___collection___hash_collection___HashMapIterator___init[] = "new HashMapIterator hash_collection::HashMapIterator::init";
+val_t NEW_HashMapIterator_standard___collection___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[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 397;
+  fra.me.meth = LOCATE_NEW_HashMapIterator_standard___collection___hash_collection___HashMapIterator___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/collection/hash_collection.nit:397 */
+  fra.me.REG[1] = NEW_standard___collection___hash_collection___HashMapIterator();
+  INIT_ATTRIBUTES__standard___collection___hash_collection___HashMapIterator(fra.me.REG[1]);
+  standard___collection___hash_collection___HashMapIterator___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_standard___collection___hash_collection___HashMapIterator(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_standard___collection___hash_collection___HashSet[93] = {
+  {(bigint) 4627 /* 0: Identity */},
+  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "HashSet" /* 2: Class Name */},
+  {(bigint) 3 /* 3: HashSet < Object: superclass typecheck marker */},
+  {(bigint) 4195 /* 4: HashSet < Set: superclass typecheck marker */},
+  {(bigint) 303 /* 5: HashSet < ArrayCapable: superclass typecheck marker */},
+  {(bigint) 4627 /* 6: HashSet < HashSet: superclass typecheck marker */},
+  {(bigint) 283 /* 7: HashSet < Collection: superclass typecheck marker */},
+  {(bigint) 3215 /* 8: HashSet < HashCollection: superclass typecheck marker */},
+  {(bigint) 375 /* 9: HashSet < RemovableCollection: superclass typecheck marker */},
+  {(bigint) 3459 /* 10: HashSet < SimpleCollection: superclass typecheck marker */},
+  {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) standard___time___Object___get_time},
+  {(bigint) 4 /* 19: HashSet < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Collection___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 50: HashSet < Set: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {(bigint) 2 /* 52: HashSet < RemovableCollection: superclass init_table position */},
+  {(bigint) standard___collection___hash_collection___HashSet___clear},
+  {(bigint) standard___collection___hash_collection___HashSet___remove},
+  {(bigint) standard___collection___abstract_collection___Set___remove_all},
+  {(bigint) 7 /* 56: HashSet < HashSet: superclass init_table position */},
+  {(bigint) standard___collection___hash_collection___HashSet___init},
+  {(bigint) standard___collection___hash_collection___HashSet___from},
+  {(bigint) 6 /* 59: HashSet < ArrayCapable: superclass init_table position */},
+  {(bigint) standard___collection___array___ArrayCapable___calloc_array},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) standard___string___Collection___join},
+  {(bigint) standard___collection___array___Collection___to_a},
+  {(bigint) 3 /* 70: HashSet < Collection: superclass init_table position */},
+  {(bigint) standard___collection___hash_collection___HashSet___iterator},
+  {(bigint) standard___collection___abstract_collection___Collection___iterate},
+  {(bigint) standard___collection___hash_collection___HashSet___is_empty},
+  {(bigint) standard___collection___hash_collection___HashSet___length},
+  {(bigint) standard___collection___hash_collection___HashSet___has},
+  {(bigint) standard___collection___abstract_collection___Set___has_only},
+  {(bigint) standard___collection___abstract_collection___Set___count},
+  {(bigint) standard___collection___hash_collection___HashSet___first},
+  {(bigint) standard___math___Collection___rand},
+  {(bigint) 5 /* 80: HashSet < HashCollection: superclass init_table position */},
+  {(bigint) standard___collection___hash_collection___HashCollection___first_item},
+  {(bigint) standard___collection___hash_collection___HashCollection___index_at},
+  {(bigint) standard___collection___hash_collection___HashCollection___node_at},
+  {(bigint) standard___collection___hash_collection___HashCollection___node_at_idx},
+  {(bigint) standard___collection___hash_collection___HashCollection___store},
+  {(bigint) standard___collection___hash_collection___HashCollection___remove_node},
+  {(bigint) standard___collection___hash_collection___HashCollection___raz},
+  {(bigint) standard___collection___hash_collection___HashCollection___enlarge},
+  {(bigint) standard___collection___hash_collection___HashCollection___init},
+  {(bigint) 1 /* 90: HashSet < SimpleCollection: superclass init_table position */},
+  {(bigint) standard___collection___hash_collection___HashSet___add},
+  {(bigint) standard___collection___abstract_collection___SimpleCollection___add_all},
+};
+/* 0: Pointer to the classtable */
+/* 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 */
+static const char LOCATE_INIT_ATTRIBUTES__standard___collection___hash_collection___HashSet[] = "init var of HashSet";
+void INIT_ATTRIBUTES__standard___collection___hash_collection___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__standard___collection___hash_collection___HashSet;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  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_standard___collection___hash_collection___HashCollection____array(fra.me.REG[0]) = fra.me.REG[1];
+  /* ../lib/standard/collection/hash_collection.nit:24 */
+  REGB0 = TAG_Int(0);
+  ATTR_standard___collection___hash_collection___HashCollection____capacity(fra.me.REG[0]) = REGB0;
+  /* ../lib/standard/collection/hash_collection.nit:25 */
+  REGB0 = TAG_Int(0);
+  ATTR_standard___collection___hash_collection___HashCollection____length(fra.me.REG[0]) = REGB0;
+  /* ../lib/standard/collection/hash_collection.nit:27 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_standard___collection___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_standard___collection___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_standard___collection___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_standard___collection___hash_collection___HashCollection____last_accessed_node(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_standard___collection___hash_collection___HashSet(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 9);
+  obj->vft = (classtable_elt_t*)VFT_standard___collection___hash_collection___HashSet;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_standard___collection___hash_collection___HashSet[] = "check new HashSet";
+void CHECKNEW_standard___collection___hash_collection___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_standard___collection___hash_collection___HashSet;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_standard___collection___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_standard___collection___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;
+}
+static const char LOCATE_NEW_HashSet_standard___collection___hash_collection___HashSet___init[] = "new HashSet hash_collection::HashSet::init";
+val_t NEW_HashSet_standard___collection___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 = 442;
+  fra.me.meth = LOCATE_NEW_HashSet_standard___collection___hash_collection___HashSet___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* ../lib/standard/collection/hash_collection.nit:442 */
+  fra.me.REG[0] = NEW_standard___collection___hash_collection___HashSet();
+  INIT_ATTRIBUTES__standard___collection___hash_collection___HashSet(fra.me.REG[0]);
+  standard___collection___hash_collection___HashSet___init(fra.me.REG[0], init_table);
+  CHECKNEW_standard___collection___hash_collection___HashSet(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_HashSet_standard___collection___hash_collection___HashSet___from[] = "new HashSet hash_collection::HashSet::from";
+val_t NEW_HashSet_standard___collection___hash_collection___HashSet___from(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 = 449;
+  fra.me.meth = LOCATE_NEW_HashSet_standard___collection___hash_collection___HashSet___from;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/collection/hash_collection.nit:449 */
+  fra.me.REG[1] = NEW_standard___collection___hash_collection___HashSet();
+  INIT_ATTRIBUTES__standard___collection___hash_collection___HashSet(fra.me.REG[1]);
+  standard___collection___hash_collection___HashSet___from(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_standard___collection___hash_collection___HashSet(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_standard___collection___hash_collection___HashSetNode[60] = {
+  {(bigint) 3199 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "HashSetNode" /* 2: Class Name */},
+  {(bigint) 3 /* 3: HashSetNode < Object: superclass typecheck marker */},
+  {(bigint) 239 /* 4: HashSetNode < HashNode: superclass typecheck marker */},
+  {(bigint) 3199 /* 5: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: HashSetNode < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 50: HashSetNode < HashNode: superclass init_table position */},
+  {(bigint) 3199 /* 51: VT HashSetNode::N : id of HashSetNode */},
+  {(bigint) 5 /* 52: VT HashSetNode::N : color of HashSetNode */},
+  {(bigint) standard___collection___hash_collection___HashNode___next_item},
+  {(bigint) standard___collection___hash_collection___HashNode___next_item__eq},
+  {(bigint) standard___collection___hash_collection___HashNode___prev_item},
+  {(bigint) standard___collection___hash_collection___HashNode___prev_item__eq},
+  {(bigint) standard___collection___hash_collection___HashNode___init},
+  {(bigint) 2 /* 58: HashSetNode < HashSetNode: superclass init_table position */},
+  {(bigint) standard___collection___hash_collection___HashSetNode___init},
+};
+/* 0: Pointer to the classtable */
+/* 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 */
+static const char LOCATE_INIT_ATTRIBUTES__standard___collection___hash_collection___HashSetNode[] = "init var of HashSetNode";
+void INIT_ATTRIBUTES__standard___collection___hash_collection___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__standard___collection___hash_collection___HashSetNode;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/collection/hash_collection.nit:192 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_standard___collection___hash_collection___HashNode____next_item(fra.me.REG[0]) = fra.me.REG[1];
+  /* ../lib/standard/collection/hash_collection.nit:193 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_standard___collection___hash_collection___HashNode____prev_item(fra.me.REG[0]) = fra.me.REG[1];
+  /* ../lib/standard/collection/hash_collection.nit:194 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_standard___collection___hash_collection___HashNode____prev_in_bucklet(fra.me.REG[0]) = fra.me.REG[1];
+  /* ../lib/standard/collection/hash_collection.nit:195 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_standard___collection___hash_collection___HashNode____next_in_bucklet(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_standard___collection___hash_collection___HashSetNode(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_standard___collection___hash_collection___HashSetNode;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_standard___collection___hash_collection___HashSetNode[] = "check new HashSetNode";
+void CHECKNEW_standard___collection___hash_collection___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_standard___collection___hash_collection___HashSetNode;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_standard___collection___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;
+}
+static const char LOCATE_NEW_HashSetNode_standard___collection___hash_collection___HashSetNode___init[] = "new HashSetNode hash_collection::HashSetNode::init";
+val_t NEW_HashSetNode_standard___collection___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 = 460;
+  fra.me.meth = LOCATE_NEW_HashSetNode_standard___collection___hash_collection___HashSetNode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/collection/hash_collection.nit:460 */
+  fra.me.REG[1] = NEW_standard___collection___hash_collection___HashSetNode();
+  INIT_ATTRIBUTES__standard___collection___hash_collection___HashSetNode(fra.me.REG[1]);
+  standard___collection___hash_collection___HashSetNode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_standard___collection___hash_collection___HashSetNode(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_standard___collection___hash_collection___HashSetIterator[57] = {
+  {(bigint) 3203 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "HashSetIterator" /* 2: Class Name */},
+  {(bigint) 3 /* 3: HashSetIterator < Object: superclass typecheck marker */},
+  {(bigint) 187 /* 4: HashSetIterator < Iterator: superclass typecheck marker */},
+  {(bigint) 3203 /* 5: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: HashSetIterator < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) standard___collection___array___Iterator___to_a},
+  {(bigint) 0 /* 51: HashSetIterator < Iterator: superclass init_table position */},
+  {(bigint) standard___collection___hash_collection___HashSetIterator___item},
+  {(bigint) standard___collection___hash_collection___HashSetIterator___next},
+  {(bigint) standard___collection___hash_collection___HashSetIterator___is_ok},
+  {(bigint) 2 /* 55: HashSetIterator < HashSetIterator: superclass init_table position */},
+  {(bigint) standard___collection___hash_collection___HashSetIterator___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute HashSetIterator::_set */
+/* 3: Attribute HashSetIterator::_node */
+static const char LOCATE_INIT_ATTRIBUTES__standard___collection___hash_collection___HashSetIterator[] = "init var of HashSetIterator";
+void INIT_ATTRIBUTES__standard___collection___hash_collection___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__standard___collection___hash_collection___HashSetIterator;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_standard___collection___hash_collection___HashSetIterator(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_standard___collection___hash_collection___HashSetIterator;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_standard___collection___hash_collection___HashSetIterator[] = "check new HashSetIterator";
+void CHECKNEW_standard___collection___hash_collection___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_standard___collection___hash_collection___HashSetIterator;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_standard___collection___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;
+}
+static const char LOCATE_NEW_HashSetIterator_standard___collection___hash_collection___HashSetIterator___init[] = "new HashSetIterator hash_collection::HashSetIterator::init";
+val_t NEW_HashSetIterator_standard___collection___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 = 488;
+  fra.me.meth = LOCATE_NEW_HashSetIterator_standard___collection___hash_collection___HashSetIterator___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/collection/hash_collection.nit:488 */
+  fra.me.REG[1] = NEW_standard___collection___hash_collection___HashSetIterator();
+  INIT_ATTRIBUTES__standard___collection___hash_collection___HashSetIterator(fra.me.REG[1]);
+  standard___collection___hash_collection___HashSetIterator___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_standard___collection___hash_collection___HashSetIterator(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_standard___string___String[157] = {
+  {(bigint) 4603 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "String" /* 2: Class Name */},
+  {(bigint) 3 /* 3: String < Object: superclass typecheck marker */},
+  {(bigint) 35 /* 4: String < StringCapable: superclass typecheck marker */},
+  {(bigint) 103 /* 5: String < Pattern: superclass typecheck marker */},
+  {(bigint) 275 /* 6: String < Comparable: superclass typecheck marker */},
+  {(bigint) 283 /* 7: String < Collection: superclass typecheck marker */},
+  {(bigint) 355 /* 8: String < SequenceRead: superclass typecheck marker */},
+  {(bigint) 4603 /* 9: String < String: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {(bigint) 3727 /* 11: String < AbstractArrayRead: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {(bigint) 4255 /* 13: String < AbstractString: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: String < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___string___String_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___string___String___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___String___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___string___String___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 6 /* 50: String < StringCapable: superclass init_table position */},
+  {(bigint) standard___string___StringCapable___calloc_string},
+  {(bigint) 7 /* 52: String < Pattern: superclass init_table position */},
+  {(bigint) standard___string_search___String___search_index_in},
+  {(bigint) standard___string_search___String___search_in},
+  {(bigint) standard___string_search___Pattern___search_all_in},
+  {(bigint) standard___string_search___Pattern___split_in},
+  {(bigint) 0 /* 57: String < Comparable: superclass init_table position */},
+  {(bigint) 4603 /* 58: VT String::OTHER : id of String */},
+  {(bigint) 9 /* 59: VT String::OTHER : color of String */},
+  {(bigint) standard___string___String_____l},
+  {(bigint) standard___kernel___Comparable_____leq},
+  {(bigint) standard___kernel___Comparable_____geq},
+  {(bigint) standard___kernel___Comparable_____g},
+  {(bigint) standard___kernel___Comparable_____leqg},
+  {(bigint) standard___kernel___Comparable___is_between},
+  {(bigint) standard___kernel___Comparable___max},
+  {(bigint) standard___kernel___Comparable___min},
+  {(bigint) standard___string___Collection___join},
+  {(bigint) standard___collection___array___Collection___to_a},
+  {(bigint) 5 /* 70: String < Collection: superclass init_table position */},
+  {(bigint) standard___collection___array___AbstractArrayRead___iterator},
+  {(bigint) standard___collection___abstract_collection___Collection___iterate},
+  {(bigint) standard___collection___array___AbstractArrayRead___is_empty},
+  {(bigint) standard___collection___array___AbstractArrayRead___length},
+  {(bigint) standard___collection___array___AbstractArrayRead___has},
+  {(bigint) standard___collection___array___AbstractArrayRead___has_only},
+  {(bigint) standard___collection___array___AbstractArrayRead___count},
+  {(bigint) standard___collection___abstract_collection___SequenceRead___first},
+  {(bigint) standard___math___Collection___rand},
+  {(bigint) 4 /* 80: String < SequenceRead: superclass init_table position */},
+  {(bigint) standard___string___String_____bra},
+  {(bigint) standard___collection___abstract_collection___SequenceRead___last},
+  {(bigint) standard___collection___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 :( */,
+  {(bigint) 3 /* 93: String < AbstractArrayRead: superclass init_table position */},
+  {(bigint) standard___collection___array___AbstractArrayRead___last_index_of},
+  {(bigint) standard___collection___array___AbstractArrayRead___index_of_from},
+  {(bigint) standard___collection___array___AbstractArrayRead___last_index_of_from},
+  {(bigint) standard___collection___array___AbstractArrayRead___reversed},
+  {(bigint) standard___collection___array___AbstractArrayRead___copy_to},
+  {(bigint) standard___collection___array___AbstractArrayRead___init},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 2 /* 111: String < AbstractString: superclass init_table position */},
+  {(bigint) standard___string___AbstractString___items},
+  {(bigint) standard___string___String___substring},
+  {(bigint) standard___string___String___substring_from},
+  {(bigint) standard___string___String___has_substring},
+  {(bigint) standard___string___AbstractString___has_prefix},
+  {(bigint) standard___string___AbstractString___has_suffix},
+  {(bigint) standard___string___AbstractString___to_i},
+  {(bigint) standard___string___AbstractString___to_f},
+  {(bigint) standard___string___AbstractString___to_hex},
+  {(bigint) standard___string___AbstractString___a_to},
+  {(bigint) standard___string___AbstractString___is_numeric},
+  {(bigint) standard___string___String___to_upper},
+  {(bigint) standard___string___String___to_lower},
+  {(bigint) standard___string___String___trim},
+  {(bigint) symbol___String___to_symbol},
+  {(bigint) standard___environ___String___environ},
+  {(bigint) standard___environ___String___setenv},
+  {(bigint) 8 /* 129: String < String: superclass init_table position */},
+  {(bigint) standard___string___String___index_from},
+  {(bigint) standard___string___String___index_to},
+  {(bigint) standard___string___String___from_substring},
+  {(bigint) standard___string___String___with_native},
+  {(bigint) standard___string___String___from_cstring},
+  {(bigint) standard___string___String___copy_from_native},
+  {(bigint) standard___string___String___to_cstring},
+  {(bigint) standard___string___String_____plus},
+  {(bigint) standard___string___String_____star},
+  {(bigint) standard___file___String___file_exists},
+  {(bigint) standard___file___String___file_stat},
+  {(bigint) standard___file___String___file_delete},
+  {(bigint) standard___file___String___strip_extension},
+  {(bigint) standard___file___String___basename},
+  {(bigint) standard___file___String___dirname},
+  {(bigint) standard___file___String___simplify_path},
+  {(bigint) standard___file___String___join_path},
+  {(bigint) standard___file___String___mkdir},
+  {(bigint) standard___file___String___file_extension},
+  {(bigint) standard___file___String___files},
+  {(bigint) standard___string_search___String___search},
+  {(bigint) standard___string_search___String___search_from},
+  {(bigint) standard___string_search___String___search_all},
+  {(bigint) standard___string_search___String___split},
+  {(bigint) standard___string_search___String___split_with},
+  {(bigint) standard___string_search___String___replace},
+  {(bigint) standard___string_search___String___html_escape},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute String::_length */
+/* 3: Attribute String::_items */
+/* 4: Attribute String::_index_from */
+/* 5: Attribute String::_index_to */
+static const char LOCATE_INIT_ATTRIBUTES__standard___string___String[] = "init var of String";
+void INIT_ATTRIBUTES__standard___string___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__standard___string___String;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/collection/array.nit:24 */
+  REGB0 = TAG_Int(0);
+  ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_standard___string___String(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_standard___string___String;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_standard___string___String[] = "check new String";
+void CHECKNEW_standard___string___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_standard___string___String;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____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_standard___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_standard___string___String____index_from(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_index_from", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_standard___string___String____index_to(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_index_to", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_String_standard___string___String___with_native[] = "new String string::String::with_native";
+val_t NEW_String_standard___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 = 401;
+  fra.me.meth = LOCATE_NEW_String_standard___string___String___with_native;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ../lib/standard/string.nit:401 */
+  fra.me.REG[1] = NEW_standard___string___String();
+  INIT_ATTRIBUTES__standard___string___String(fra.me.REG[1]);
+  standard___string___String___with_native(fra.me.REG[1], fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_standard___string___String(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_String_standard___string___String___from_cstring[] = "new String string::String::from_cstring";
+val_t NEW_String_standard___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 = 411;
+  fra.me.meth = LOCATE_NEW_String_standard___string___String___from_cstring;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/string.nit:411 */
+  fra.me.REG[1] = NEW_standard___string___String();
+  INIT_ATTRIBUTES__standard___string___String(fra.me.REG[1]);
+  standard___string___String___from_cstring(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_standard___string___String(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_String_standard___string___String___from_substring[] = "new String string::String::from_substring";
+val_t NEW_String_standard___string___String___from_substring(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[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 = 387;
+  fra.me.meth = LOCATE_NEW_String_standard___string___String___from_substring;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  REGB0 = p0;
+  REGB1 = p1;
+  fra.me.REG[0] = p2;
+  /* ../lib/standard/string.nit:387 */
+  fra.me.REG[1] = NEW_standard___string___String();
+  INIT_ATTRIBUTES__standard___string___String(fra.me.REG[1]);
+  standard___string___String___from_substring(fra.me.REG[1], REGB0, REGB1, fra.me.REG[0], init_table);
+  CHECKNEW_standard___string___String(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_String_standard___string___String___copy_from_native[] = "new String string::String::copy_from_native";
+val_t NEW_String_standard___string___String___copy_from_native(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 = 417;
+  fra.me.meth = LOCATE_NEW_String_standard___string___String___copy_from_native;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/string.nit:417 */
+  fra.me.REG[1] = NEW_standard___string___String();
+  INIT_ATTRIBUTES__standard___string___String(fra.me.REG[1]);
+  standard___string___String___copy_from_native(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_standard___string___String(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_standard___string___Buffer[132] = {
+  {(bigint) 4823 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "Buffer" /* 2: Class Name */},
+  {(bigint) 3 /* 3: Buffer < Object: superclass typecheck marker */},
+  {(bigint) 35 /* 4: Buffer < StringCapable: superclass typecheck marker */},
+  {(bigint) 4823 /* 5: Buffer < Buffer: superclass typecheck marker */},
+  {(bigint) 275 /* 6: Buffer < Comparable: superclass typecheck marker */},
+  {(bigint) 283 /* 7: Buffer < Collection: superclass typecheck marker */},
+  {(bigint) 355 /* 8: Buffer < SequenceRead: superclass typecheck marker */},
+  {(bigint) 375 /* 9: Buffer < RemovableCollection: superclass typecheck marker */},
+  {(bigint) 3459 /* 10: Buffer < SimpleCollection: superclass typecheck marker */},
+  {(bigint) 3727 /* 11: Buffer < AbstractArrayRead: superclass typecheck marker */},
+  {(bigint) 4199 /* 12: Buffer < Sequence: superclass typecheck marker */},
+  {(bigint) 4255 /* 13: Buffer < AbstractString: superclass typecheck marker */},
+  {(bigint) 4635 /* 14: Buffer < AbstractArray: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 4 /* 19: Buffer < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___string___Buffer_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___string___AbstractString___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Buffer___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 6 /* 50: Buffer < StringCapable: superclass init_table position */},
+  {(bigint) standard___string___StringCapable___calloc_string},
+  {(bigint) 10 /* 52: Buffer < RemovableCollection: superclass init_table position */},
+  {(bigint) standard___collection___array___AbstractArray___clear},
+  {(bigint) standard___collection___array___AbstractArray___remove},
+  {(bigint) standard___collection___array___AbstractArray___remove_all},
+  {0} /* Class Hole :( */,
+  {(bigint) 5 /* 57: Buffer < Comparable: superclass init_table position */},
+  {(bigint) 4603 /* 58: VT Buffer::OTHER : id of String */},
+  {(bigint) 9 /* 59: VT Buffer::OTHER : color of String */},
+  {(bigint) standard___string___Buffer_____l},
+  {(bigint) standard___kernel___Comparable_____leq},
+  {(bigint) standard___kernel___Comparable_____geq},
+  {(bigint) standard___kernel___Comparable_____g},
+  {(bigint) standard___kernel___Comparable_____leqg},
+  {(bigint) standard___kernel___Comparable___is_between},
+  {(bigint) standard___kernel___Comparable___max},
+  {(bigint) standard___kernel___Comparable___min},
+  {(bigint) standard___string___Collection___join},
+  {(bigint) standard___collection___array___Collection___to_a},
+  {(bigint) 3 /* 70: Buffer < Collection: superclass init_table position */},
+  {(bigint) standard___collection___array___AbstractArrayRead___iterator},
+  {(bigint) standard___collection___abstract_collection___Collection___iterate},
+  {(bigint) standard___collection___array___AbstractArrayRead___is_empty},
+  {(bigint) standard___collection___array___AbstractArrayRead___length},
+  {(bigint) standard___collection___array___AbstractArrayRead___has},
+  {(bigint) standard___collection___array___AbstractArrayRead___has_only},
+  {(bigint) standard___collection___array___AbstractArrayRead___count},
+  {(bigint) standard___collection___abstract_collection___SequenceRead___first},
+  {(bigint) standard___math___Collection___rand},
+  {(bigint) 2 /* 80: Buffer < SequenceRead: superclass init_table position */},
+  {(bigint) standard___string___AbstractString_____bra},
+  {(bigint) standard___collection___abstract_collection___SequenceRead___last},
+  {(bigint) standard___collection___array___AbstractArrayRead___index_of},
+  {(bigint) 7 /* 84: Buffer < AbstractArray: superclass init_table position */},
+  {(bigint) standard___string___Buffer___enlarge},
+  {(bigint) standard___collection___array___AbstractArray___insert},
+  {(bigint) standard___collection___array___AbstractArray___swap_at},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 9 /* 90: Buffer < SimpleCollection: superclass init_table position */},
+  {(bigint) standard___string___Buffer___add},
+  {(bigint) standard___collection___abstract_collection___SimpleCollection___add_all},
+  {(bigint) 1 /* 93: Buffer < AbstractArrayRead: superclass init_table position */},
+  {(bigint) standard___collection___array___AbstractArrayRead___last_index_of},
+  {(bigint) standard___collection___array___AbstractArrayRead___index_of_from},
+  {(bigint) standard___collection___array___AbstractArrayRead___last_index_of_from},
+  {(bigint) standard___collection___array___AbstractArrayRead___reversed},
+  {(bigint) standard___collection___array___AbstractArrayRead___copy_to},
+  {(bigint) standard___collection___array___AbstractArrayRead___init},
+  {(bigint) standard___collection___Sequence___subarray},
+  {(bigint) 8 /* 101: Buffer < Sequence: superclass init_table position */},
+  {(bigint) standard___collection___abstract_collection___Sequence___first__eq},
+  {(bigint) standard___collection___abstract_collection___Sequence___last__eq},
+  {(bigint) standard___collection___array___AbstractArray___push},
+  {(bigint) standard___string___Buffer___append},
+  {(bigint) standard___collection___array___AbstractArray___pop},
+  {(bigint) standard___collection___array___AbstractArray___unshift},
+  {(bigint) standard___collection___array___AbstractArray___shift},
+  {(bigint) standard___string___Buffer_____braeq},
+  {(bigint) standard___collection___array___AbstractArray___remove_at},
+  {(bigint) 0 /* 111: Buffer < AbstractString: superclass init_table position */},
+  {(bigint) standard___string___AbstractString___items},
+  {(bigint) standard___string___AbstractString___substring},
+  {(bigint) standard___string___AbstractString___substring_from},
+  {(bigint) standard___string___AbstractString___has_substring},
+  {(bigint) standard___string___AbstractString___has_prefix},
+  {(bigint) standard___string___AbstractString___has_suffix},
+  {(bigint) standard___string___AbstractString___to_i},
+  {(bigint) standard___string___AbstractString___to_f},
+  {(bigint) standard___string___AbstractString___to_hex},
+  {(bigint) standard___string___AbstractString___a_to},
+  {(bigint) standard___string___AbstractString___is_numeric},
+  {(bigint) standard___string___AbstractString___to_upper},
+  {(bigint) standard___string___AbstractString___to_lower},
+  {(bigint) standard___string___AbstractString___trim},
+  {(bigint) 11 /* 126: Buffer < Buffer: superclass init_table position */},
+  {(bigint) standard___collection___abstract_collection___Sequence___append},
+  {(bigint) standard___string___Buffer___init},
+  {(bigint) standard___string___Buffer___from},
+  {(bigint) standard___string___Buffer___with_capacity},
+  {(bigint) standard___string___Buffer___capacity},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute Buffer::_length */
+/* 3: Attribute Buffer::_items */
+/* 4: Attribute Buffer::_capacity */
+static const char LOCATE_INIT_ATTRIBUTES__standard___string___Buffer[] = "init var of Buffer";
+void INIT_ATTRIBUTES__standard___string___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__standard___string___Buffer;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/collection/array.nit:24 */
+  REGB0 = TAG_Int(0);
+  ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_standard___string___Buffer(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_standard___string___Buffer;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_standard___string___Buffer[] = "check new Buffer";
+void CHECKNEW_standard___string___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_standard___string___Buffer;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____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_standard___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_standard___string___Buffer____capacity(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_Buffer_standard___string___Buffer___init[] = "new Buffer string::Buffer::init";
+val_t NEW_Buffer_standard___string___Buffer___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 = 652;
+  fra.me.meth = LOCATE_NEW_Buffer_standard___string___Buffer___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* ../lib/standard/string.nit:652 */
+  fra.me.REG[0] = NEW_standard___string___Buffer();
+  INIT_ATTRIBUTES__standard___string___Buffer(fra.me.REG[0]);
+  standard___string___Buffer___init(fra.me.REG[0], init_table);
+  CHECKNEW_standard___string___Buffer(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_Buffer_standard___string___Buffer___from[] = "new Buffer string::Buffer::from";
+val_t NEW_Buffer_standard___string___Buffer___from(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 = 658;
+  fra.me.meth = LOCATE_NEW_Buffer_standard___string___Buffer___from;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/string.nit:658 */
+  fra.me.REG[1] = NEW_standard___string___Buffer();
+  INIT_ATTRIBUTES__standard___string___Buffer(fra.me.REG[1]);
+  standard___string___Buffer___from(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_standard___string___Buffer(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_Buffer_standard___string___Buffer___with_capacity[] = "new Buffer string::Buffer::with_capacity";
+val_t NEW_Buffer_standard___string___Buffer___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 = 666;
+  fra.me.meth = LOCATE_NEW_Buffer_standard___string___Buffer___with_capacity;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ../lib/standard/string.nit:666 */
+  fra.me.REG[0] = NEW_standard___string___Buffer();
+  INIT_ATTRIBUTES__standard___string___Buffer(fra.me.REG[0]);
+  standard___string___Buffer___with_capacity(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_standard___string___Buffer(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_standard___string___NativeString[65] = {
+  {(bigint) -5 /* 0: Identity */},
+  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "NativeString" /* 2: Class Name */},
+  {(bigint) 3 /* 3: NativeString < Object: superclass typecheck marker */},
+  {(bigint) -5 /* 4: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 0 /* 19: NativeString < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) standard___environ___NativeString___get_environ},
+  {(bigint) standard___environ___NativeString___setenv},
+  {(bigint) 1 /* 52: NativeString < NativeString: superclass init_table position */},
+  {(bigint) standard___string___NativeString_____bra},
+  {(bigint) standard___string___NativeString_____braeq},
+  {(bigint) standard___string___NativeString___copy_to},
+  {(bigint) standard___string___NativeString___cstring_length},
+  {(bigint) standard___string___NativeString___atoi},
+  {(bigint) standard___string___NativeString___atof},
+  {(bigint) standard___string___NativeString___init},
+  {(bigint) standard___file___NativeString___file_exists},
+  {(bigint) standard___file___NativeString___file_stat},
+  {(bigint) standard___file___NativeString___file_mkdir},
+  {(bigint) standard___file___NativeString___file_delete},
+  {(bigint) standard___exec___NativeString___system},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+val_t BOX_NativeString(char * val) {
+  struct TBOX_NativeString *box = (struct TBOX_NativeString*)alloc(sizeof(struct TBOX_NativeString));
+  box->vft = VFT_standard___string___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_standard___stream___FDIStream[79] = {
+  {(bigint) 3667 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "FDIStream" /* 2: Class Name */},
+  {(bigint) 3 /* 3: FDIStream < Object: superclass typecheck marker */},
+  {(bigint) 3231 /* 4: FDIStream < FDStream: superclass typecheck marker */},
+  {(bigint) 203 /* 5: FDIStream < IOS: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {(bigint) 3171 /* 7: FDIStream < IStream: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {(bigint) 3667 /* 9: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: FDIStream < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 50: FDIStream < FDStream: superclass init_table position */},
+  {(bigint) standard___stream___FDStream___fd},
+  {(bigint) standard___stream___FDStream___fd__eq},
+  {(bigint) standard___stream___FDStream___native_close},
+  {(bigint) standard___stream___FDStream___native_read_char},
+  {(bigint) standard___stream___FDStream___native_read},
+  {(bigint) standard___stream___FDStream___native_write},
+  {(bigint) standard___stream___FDStream___native_write_char},
+  {(bigint) standard___stream___FDStream___init},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 1 /* 61: FDIStream < IOS: superclass init_table position */},
+  {(bigint) standard___stream___FDStream___close},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 3 /* 66: FDIStream < IStream: superclass init_table position */},
+  {(bigint) standard___stream___FDIStream___read_char},
+  {(bigint) standard___stream___IStream___read},
+  {(bigint) standard___stream___IStream___read_line},
+  {(bigint) standard___stream___IStream___read_all},
+  {(bigint) standard___stream___IStream___append_line_to},
+  {(bigint) standard___stream___FDIStream___eof},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 4 /* 76: FDIStream < FDIStream: superclass init_table position */},
+  {(bigint) standard___stream___FDIStream___eof__eq},
+  {(bigint) standard___stream___FDIStream___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute FDIStream::@fd */
+/* Instance Hole :( */
+/* 4: Attribute FDIStream::@eof */
+static const char LOCATE_INIT_ATTRIBUTES__standard___stream___FDIStream[] = "init var of FDIStream";
+void INIT_ATTRIBUTES__standard___stream___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__standard___stream___FDIStream;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/stream.nit:232 */
+  REGB0 = TAG_Bool(0);
+  ATTR_standard___stream___FDIStream_____ateof(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_standard___stream___FDIStream(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_standard___stream___FDIStream;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_standard___stream___FDIStream[] = "check new FDIStream";
+void CHECKNEW_standard___stream___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_standard___stream___FDIStream;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_standard___stream___FDStream_____atfd(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@fd", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_standard___stream___FDIStream_____ateof(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@eof", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_FDIStream_standard___stream___FDIStream___init[] = "new FDIStream stream::FDIStream::init";
+val_t NEW_FDIStream_standard___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 = 241;
+  fra.me.meth = LOCATE_NEW_FDIStream_standard___stream___FDIStream___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ../lib/standard/stream.nit:241 */
+  fra.me.REG[0] = NEW_standard___stream___FDIStream();
+  INIT_ATTRIBUTES__standard___stream___FDIStream(fra.me.REG[0]);
+  standard___stream___FDIStream___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_standard___stream___FDIStream(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_standard___stream___FDOStream[76] = {
+  {(bigint) 3663 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "FDOStream" /* 2: Class Name */},
+  {(bigint) 3 /* 3: FDOStream < Object: superclass typecheck marker */},
+  {(bigint) 3231 /* 4: FDOStream < FDStream: superclass typecheck marker */},
+  {(bigint) 203 /* 5: FDOStream < IOS: superclass typecheck marker */},
+  {(bigint) 3051 /* 6: FDOStream < OStream: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {(bigint) 3663 /* 8: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: FDOStream < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 50: FDOStream < FDStream: superclass init_table position */},
+  {(bigint) standard___stream___FDStream___fd},
+  {(bigint) standard___stream___FDStream___fd__eq},
+  {(bigint) standard___stream___FDStream___native_close},
+  {(bigint) standard___stream___FDStream___native_read_char},
+  {(bigint) standard___stream___FDStream___native_read},
+  {(bigint) standard___stream___FDStream___native_write},
+  {(bigint) standard___stream___FDStream___native_write_char},
+  {(bigint) standard___stream___FDStream___init},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 1 /* 61: FDOStream < IOS: superclass init_table position */},
+  {(bigint) standard___stream___FDStream___close},
+  {(bigint) 3 /* 63: FDOStream < OStream: superclass init_table position */},
+  {(bigint) standard___stream___FDOStream___write},
+  {(bigint) standard___stream___FDOStream___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 /* 73: FDOStream < FDOStream: superclass init_table position */},
+  {(bigint) standard___stream___FDOStream___is_writable__eq},
+  {(bigint) standard___stream___FDOStream___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute FDOStream::@fd */
+/* 3: Attribute FDOStream::@is_writable */
+static const char LOCATE_INIT_ATTRIBUTES__standard___stream___FDOStream[] = "init var of FDOStream";
+void INIT_ATTRIBUTES__standard___stream___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__standard___stream___FDOStream;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_standard___stream___FDOStream(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_standard___stream___FDOStream;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_standard___stream___FDOStream[] = "check new FDOStream";
+void CHECKNEW_standard___stream___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_standard___stream___FDOStream;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_standard___stream___FDStream_____atfd(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@fd", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_standard___stream___FDOStream_____atis_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;
+}
+static const char LOCATE_NEW_FDOStream_standard___stream___FDOStream___init[] = "new FDOStream stream::FDOStream::init";
+val_t NEW_FDOStream_standard___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 = 255;
+  fra.me.meth = LOCATE_NEW_FDOStream_standard___stream___FDOStream___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ../lib/standard/stream.nit:255 */
+  fra.me.REG[0] = NEW_standard___stream___FDOStream();
+  INIT_ATTRIBUTES__standard___stream___FDOStream(fra.me.REG[0]);
+  standard___stream___FDOStream___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_standard___stream___FDOStream(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_standard___stream___FDIOStream[84] = {
+  {(bigint) 4247 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "FDIOStream" /* 2: Class Name */},
+  {(bigint) 3 /* 3: FDIOStream < Object: superclass typecheck marker */},
+  {(bigint) 3231 /* 4: FDIOStream < FDStream: superclass typecheck marker */},
+  {(bigint) 203 /* 5: FDIOStream < IOS: superclass typecheck marker */},
+  {(bigint) 3051 /* 6: FDIOStream < OStream: superclass typecheck marker */},
+  {(bigint) 3171 /* 7: FDIOStream < IStream: superclass typecheck marker */},
+  {(bigint) 3663 /* 8: FDIOStream < FDOStream: superclass typecheck marker */},
+  {(bigint) 3667 /* 9: FDIOStream < FDIStream: superclass typecheck marker */},
+  {(bigint) 3567 /* 10: FDIOStream < IOStream: superclass typecheck marker */},
+  {(bigint) 4247 /* 11: FDIOStream < FDIOStream: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: FDIOStream < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 50: FDIOStream < FDStream: superclass init_table position */},
+  {(bigint) standard___stream___FDStream___fd},
+  {(bigint) standard___stream___FDStream___fd__eq},
+  {(bigint) standard___stream___FDStream___native_close},
+  {(bigint) standard___stream___FDStream___native_read_char},
+  {(bigint) standard___stream___FDStream___native_read},
+  {(bigint) standard___stream___FDStream___native_write},
+  {(bigint) standard___stream___FDStream___native_write_char},
+  {(bigint) standard___stream___FDStream___init},
+  {(bigint) 8 /* 59: FDIOStream < FDIOStream: superclass init_table position */},
+  {(bigint) standard___stream___FDIOStream___init},
+  {(bigint) 1 /* 61: FDIOStream < IOS: superclass init_table position */},
+  {(bigint) standard___stream___FDStream___close},
+  {(bigint) 5 /* 63: FDIOStream < OStream: superclass init_table position */},
+  {(bigint) standard___stream___FDOStream___write},
+  {(bigint) standard___stream___FDOStream___is_writable},
+  {(bigint) 3 /* 66: FDIOStream < IStream: superclass init_table position */},
+  {(bigint) standard___stream___FDIStream___read_char},
+  {(bigint) standard___stream___IStream___read},
+  {(bigint) standard___stream___IStream___read_line},
+  {(bigint) standard___stream___IStream___read_all},
+  {(bigint) standard___stream___IStream___append_line_to},
+  {(bigint) standard___stream___FDIStream___eof},
+  {(bigint) 6 /* 73: FDIOStream < FDOStream: superclass init_table position */},
+  {(bigint) standard___stream___FDOStream___is_writable__eq},
+  {(bigint) standard___stream___FDOStream___init},
+  {(bigint) 4 /* 76: FDIOStream < FDIStream: superclass init_table position */},
+  {(bigint) standard___stream___FDIStream___eof__eq},
+  {(bigint) standard___stream___FDIStream___init},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 7 /* 83: FDIOStream < IOStream: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute FDIOStream::@fd */
+/* 3: Attribute FDIOStream::@is_writable */
+/* 4: Attribute FDIOStream::@eof */
+static const char LOCATE_INIT_ATTRIBUTES__standard___stream___FDIOStream[] = "init var of FDIOStream";
+void INIT_ATTRIBUTES__standard___stream___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__standard___stream___FDIOStream;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/stream.nit:232 */
+  REGB0 = TAG_Bool(0);
+  ATTR_standard___stream___FDIStream_____ateof(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_standard___stream___FDIOStream(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_standard___stream___FDIOStream;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_standard___stream___FDIOStream[] = "check new FDIOStream";
+void CHECKNEW_standard___stream___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_standard___stream___FDIOStream;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_standard___stream___FDStream_____atfd(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@fd", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_standard___stream___FDOStream_____atis_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_standard___stream___FDIStream_____ateof(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@eof", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_FDIOStream_standard___stream___FDIOStream___init[] = "new FDIOStream stream::FDIOStream::init";
+val_t NEW_FDIOStream_standard___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 = 265;
+  fra.me.meth = LOCATE_NEW_FDIOStream_standard___stream___FDIOStream___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ../lib/standard/stream.nit:265 */
+  fra.me.REG[0] = NEW_standard___stream___FDIOStream();
+  INIT_ATTRIBUTES__standard___stream___FDIOStream(fra.me.REG[0]);
+  standard___stream___FDIOStream___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_standard___stream___FDIOStream(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_standard___string_search___BM_Pattern[63] = {
+  {(bigint) 3303 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "BM_Pattern" /* 2: Class Name */},
+  {(bigint) 3 /* 3: BM_Pattern < Object: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {(bigint) 103 /* 5: BM_Pattern < Pattern: superclass typecheck marker */},
+  {(bigint) 3303 /* 6: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: BM_Pattern < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string_search___BM_Pattern___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 0 /* 52: BM_Pattern < Pattern: superclass init_table position */},
+  {(bigint) standard___string_search___BM_Pattern___search_index_in},
+  {(bigint) standard___string_search___BM_Pattern___search_in},
+  {(bigint) standard___string_search___Pattern___search_all_in},
+  {(bigint) standard___string_search___Pattern___split_in},
+  {(bigint) 2 /* 57: BM_Pattern < BM_Pattern: superclass init_table position */},
+  {(bigint) standard___string_search___BM_Pattern___init},
+  {(bigint) standard___string_search___BM_Pattern___bc},
+  {(bigint) standard___string_search___BM_Pattern___compute_bc},
+  {(bigint) standard___string_search___BM_Pattern___suffixes},
+  {(bigint) standard___string_search___BM_Pattern___compute_gs},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute BM_Pattern::_motif */
+/* 3: Attribute BM_Pattern::_length */
+/* 4: Attribute BM_Pattern::_gs */
+/* 5: Attribute BM_Pattern::_bc_table */
+static const char LOCATE_INIT_ATTRIBUTES__standard___string_search___BM_Pattern[] = "init var of BM_Pattern";
+void INIT_ATTRIBUTES__standard___string_search___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__standard___string_search___BM_Pattern;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_standard___string_search___BM_Pattern(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_standard___string_search___BM_Pattern;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_standard___string_search___BM_Pattern[] = "check new BM_Pattern";
+void CHECKNEW_standard___string_search___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_standard___string_search___BM_Pattern;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_standard___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_standard___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_standard___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_standard___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;
+}
+static const char LOCATE_NEW_BM_Pattern_standard___string_search___BM_Pattern___init[] = "new BM_Pattern string_search::BM_Pattern::init";
+val_t NEW_BM_Pattern_standard___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_standard___string_search___BM_Pattern___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  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_standard___string_search___BM_Pattern();
+  INIT_ATTRIBUTES__standard___string_search___BM_Pattern(fra.me.REG[1]);
+  standard___string_search___BM_Pattern___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_standard___string_search___BM_Pattern(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_standard___string_search___Match[56] = {
+  {(bigint) 131 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "Match" /* 2: Class Name */},
+  {(bigint) 3 /* 3: Match < Object: superclass typecheck marker */},
+  {(bigint) 131 /* 4: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 0 /* 19: Match < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string_search___Match___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 50: Match < Match: superclass init_table position */},
+  {(bigint) standard___string_search___Match___string},
+  {(bigint) standard___string_search___Match___from},
+  {(bigint) standard___string_search___Match___length},
+  {(bigint) standard___string_search___Match___after},
+  {(bigint) standard___string_search___Match___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute Match::_string */
+/* 3: Attribute Match::_from */
+/* 4: Attribute Match::_length */
+static const char LOCATE_INIT_ATTRIBUTES__standard___string_search___Match[] = "init var of Match";
+void INIT_ATTRIBUTES__standard___string_search___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__standard___string_search___Match;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_standard___string_search___Match(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_standard___string_search___Match;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_standard___string_search___Match[] = "check new Match";
+void CHECKNEW_standard___string_search___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_standard___string_search___Match;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_standard___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_standard___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_standard___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;
+}
+static const char LOCATE_NEW_Match_standard___string_search___Match___init[] = "new Match string_search::Match::init";
+val_t NEW_Match_standard___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_standard___string_search___Match___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  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_standard___string_search___Match();
+  INIT_ATTRIBUTES__standard___string_search___Match(fra.me.REG[1]);
+  standard___string_search___Match___init(fra.me.REG[1], fra.me.REG[0], REGB0, REGB1, init_table);
+  CHECKNEW_standard___string_search___Match(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_standard___file___IFStream[78] = {
+  {(bigint) 4239 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "IFStream" /* 2: Class Name */},
+  {(bigint) 3 /* 3: IFStream < Object: superclass typecheck marker */},
+  {(bigint) 3227 /* 4: IFStream < FStream: superclass typecheck marker */},
+  {(bigint) 203 /* 5: IFStream < IOS: superclass typecheck marker */},
+  {(bigint) 3703 /* 6: IFStream < BufferedIStream: superclass typecheck marker */},
+  {(bigint) 3171 /* 7: IFStream < IStream: superclass typecheck marker */},
+  {(bigint) 4239 /* 8: 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) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: IFStream < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 50: IFStream < FStream: superclass init_table position */},
+  {(bigint) standard___file___FStream___path},
+  {(bigint) standard___file___FStream___file_stat},
+  {(bigint) standard___file___FStream___init},
+  {(bigint) 3 /* 54: IFStream < BufferedIStream: superclass init_table position */},
+  {(bigint) standard___file___IFStream___fill_buffer},
+  {(bigint) standard___file___IFStream___end_reached},
+  {(bigint) standard___stream___BufferedIStream___prepare_buffer},
+  {(bigint) standard___stream___BufferedIStream___init},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 1 /* 61: IFStream < IOS: superclass init_table position */},
+  {(bigint) standard___file___IFStream___close},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 4 /* 66: IFStream < IStream: superclass init_table position */},
+  {(bigint) standard___stream___BufferedIStream___read_char},
+  {(bigint) standard___stream___BufferedIStream___read},
+  {(bigint) standard___stream___IStream___read_line},
+  {(bigint) standard___stream___BufferedIStream___read_all},
+  {(bigint) standard___stream___BufferedIStream___append_line_to},
+  {(bigint) standard___stream___BufferedIStream___eof},
+  {(bigint) 5 /* 73: IFStream < IFStream: superclass init_table position */},
+  {(bigint) standard___file___IFStream___reopen},
+  {(bigint) standard___file___IFStream___open},
+  {(bigint) standard___file___IFStream___init},
+  {(bigint) standard___file___IFStream___without_file},
+};
+/* 0: Pointer to the classtable */
+/* 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 */
+static const char LOCATE_INIT_ATTRIBUTES__standard___file___IFStream[] = "init var of IFStream";
+void INIT_ATTRIBUTES__standard___file___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__standard___file___IFStream;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  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_standard___stream___BufferedIStream____buffer(fra.me.REG[0]) = fra.me.REG[1];
+  /* ../lib/standard/stream.nit:190 */
+  REGB0 = TAG_Int(0);
+  ATTR_standard___stream___BufferedIStream____buffer_pos(fra.me.REG[0]) = REGB0;
+  /* ../lib/standard/file.nit:54 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_standard___file___FStream____path(fra.me.REG[0]) = fra.me.REG[1];
+  /* ../lib/standard/file.nit:57 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_standard___file___FStream____file(fra.me.REG[0]) = fra.me.REG[1];
+  /* ../lib/standard/file.nit:99 */
+  REGB0 = TAG_Bool(0);
+  ATTR_standard___file___IFStream____end_reached(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_standard___file___IFStream(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_standard___file___IFStream;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_standard___file___IFStream[] = "check new IFStream";
+void CHECKNEW_standard___file___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_standard___file___IFStream;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_standard___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);
+  }
+  REGB0 = TAG_Bool(ATTR_standard___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);
+  }
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_IFStream_standard___file___IFStream___open[] = "new IFStream file::IFStream::open";
+val_t NEW_IFStream_standard___file___IFStream___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 = 101;
+  fra.me.meth = LOCATE_NEW_IFStream_standard___file___IFStream___open;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  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_standard___file___IFStream();
+  INIT_ATTRIBUTES__standard___file___IFStream(fra.me.REG[1]);
+  standard___file___IFStream___open(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_standard___file___IFStream(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_IFStream_standard___file___IFStream___init[] = "new IFStream file::IFStream::init";
+val_t NEW_IFStream_standard___file___IFStream___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 = 110;
+  fra.me.meth = LOCATE_NEW_IFStream_standard___file___IFStream___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* ../lib/standard/file.nit:110 */
+  fra.me.REG[0] = NEW_standard___file___IFStream();
+  INIT_ATTRIBUTES__standard___file___IFStream(fra.me.REG[0]);
+  standard___file___IFStream___init(fra.me.REG[0], init_table);
+  CHECKNEW_standard___file___IFStream(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_IFStream_standard___file___IFStream___without_file[] = "new IFStream file::IFStream::without_file";
+val_t NEW_IFStream_standard___file___IFStream___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 = 111;
+  fra.me.meth = LOCATE_NEW_IFStream_standard___file___IFStream___without_file;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* ../lib/standard/file.nit:111 */
+  fra.me.REG[0] = NEW_standard___file___IFStream();
+  INIT_ATTRIBUTES__standard___file___IFStream(fra.me.REG[0]);
+  standard___file___IFStream___without_file(fra.me.REG[0], init_table);
+  CHECKNEW_standard___file___IFStream(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_standard___file___OFStream[66] = {
+  {(bigint) 3491 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "OFStream" /* 2: Class Name */},
+  {(bigint) 3 /* 3: OFStream < Object: superclass typecheck marker */},
+  {(bigint) 3227 /* 4: OFStream < FStream: superclass typecheck marker */},
+  {(bigint) 203 /* 5: OFStream < IOS: superclass typecheck marker */},
+  {(bigint) 3051 /* 6: OFStream < OStream: superclass typecheck marker */},
+  {(bigint) 3491 /* 7: OFStream < OFStream: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: OFStream < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 50: OFStream < FStream: superclass init_table position */},
+  {(bigint) standard___file___FStream___path},
+  {(bigint) standard___file___FStream___file_stat},
+  {(bigint) standard___file___FStream___init},
+  {(bigint) 4 /* 54: OFStream < OFStream: superclass init_table position */},
+  {(bigint) standard___file___OFStream___write_native},
+  {(bigint) standard___file___OFStream___open},
+  {(bigint) standard___file___OFStream___init},
+  {(bigint) standard___file___OFStream___without_file},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 1 /* 61: OFStream < IOS: superclass init_table position */},
+  {(bigint) standard___file___OFStream___close},
+  {(bigint) 3 /* 63: OFStream < OStream: superclass init_table position */},
+  {(bigint) standard___file___OFStream___write},
+  {(bigint) standard___file___OFStream___is_writable},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute OFStream::_path */
+/* 3: Attribute OFStream::_file */
+/* 4: Attribute OFStream::_writable */
+static const char LOCATE_INIT_ATTRIBUTES__standard___file___OFStream[] = "init var of OFStream";
+void INIT_ATTRIBUTES__standard___file___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__standard___file___OFStream;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/file.nit:54 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_standard___file___FStream____path(fra.me.REG[0]) = fra.me.REG[1];
+  /* ../lib/standard/file.nit:57 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_standard___file___FStream____file(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_standard___file___OFStream(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_standard___file___OFStream;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_standard___file___OFStream[] = "check new OFStream";
+void CHECKNEW_standard___file___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_standard___file___OFStream;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_standard___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;
+}
+static const char LOCATE_NEW_OFStream_standard___file___OFStream___open[] = "new OFStream file::OFStream::open";
+val_t NEW_OFStream_standard___file___OFStream___open(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 = 147;
+  fra.me.meth = LOCATE_NEW_OFStream_standard___file___OFStream___open;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/file.nit:147 */
+  fra.me.REG[1] = NEW_standard___file___OFStream();
+  INIT_ATTRIBUTES__standard___file___OFStream(fra.me.REG[1]);
+  standard___file___OFStream___open(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_standard___file___OFStream(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_OFStream_standard___file___OFStream___init[] = "new OFStream file::OFStream::init";
+val_t NEW_OFStream_standard___file___OFStream___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 = 156;
+  fra.me.meth = LOCATE_NEW_OFStream_standard___file___OFStream___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* ../lib/standard/file.nit:156 */
+  fra.me.REG[0] = NEW_standard___file___OFStream();
+  INIT_ATTRIBUTES__standard___file___OFStream(fra.me.REG[0]);
+  standard___file___OFStream___init(fra.me.REG[0], init_table);
+  CHECKNEW_standard___file___OFStream(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_OFStream_standard___file___OFStream___without_file[] = "new OFStream file::OFStream::without_file";
+val_t NEW_OFStream_standard___file___OFStream___without_file(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 = 157;
+  fra.me.meth = LOCATE_NEW_OFStream_standard___file___OFStream___without_file;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* ../lib/standard/file.nit:157 */
+  fra.me.REG[0] = NEW_standard___file___OFStream();
+  INIT_ATTRIBUTES__standard___file___OFStream(fra.me.REG[0]);
+  standard___file___OFStream___without_file(fra.me.REG[0], init_table);
+  CHECKNEW_standard___file___OFStream(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_standard___file___Stdin[81] = {
+  {(bigint) 4607 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "Stdin" /* 2: Class Name */},
+  {(bigint) 3 /* 3: Stdin < Object: superclass typecheck marker */},
+  {(bigint) 3227 /* 4: Stdin < FStream: superclass typecheck marker */},
+  {(bigint) 203 /* 5: Stdin < IOS: superclass typecheck marker */},
+  {(bigint) 3703 /* 6: Stdin < BufferedIStream: superclass typecheck marker */},
+  {(bigint) 3171 /* 7: Stdin < IStream: superclass typecheck marker */},
+  {(bigint) 4239 /* 8: Stdin < IFStream: superclass typecheck marker */},
+  {(bigint) 4607 /* 9: 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) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: Stdin < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 50: Stdin < FStream: superclass init_table position */},
+  {(bigint) standard___file___FStream___path},
+  {(bigint) standard___file___FStream___file_stat},
+  {(bigint) standard___file___FStream___init},
+  {(bigint) 3 /* 54: Stdin < BufferedIStream: superclass init_table position */},
+  {(bigint) standard___file___IFStream___fill_buffer},
+  {(bigint) standard___file___IFStream___end_reached},
+  {(bigint) standard___stream___BufferedIStream___prepare_buffer},
+  {(bigint) standard___stream___BufferedIStream___init},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 1 /* 61: Stdin < IOS: superclass init_table position */},
+  {(bigint) standard___file___IFStream___close},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 4 /* 66: Stdin < IStream: superclass init_table position */},
+  {(bigint) standard___stream___BufferedIStream___read_char},
+  {(bigint) standard___stream___BufferedIStream___read},
+  {(bigint) standard___stream___IStream___read_line},
+  {(bigint) standard___stream___BufferedIStream___read_all},
+  {(bigint) standard___stream___BufferedIStream___append_line_to},
+  {(bigint) standard___stream___BufferedIStream___eof},
+  {(bigint) 5 /* 73: Stdin < IFStream: superclass init_table position */},
+  {(bigint) standard___file___IFStream___reopen},
+  {(bigint) standard___file___IFStream___open},
+  {(bigint) standard___file___IFStream___init},
+  {(bigint) standard___file___IFStream___without_file},
+  {(bigint) 6 /* 78: Stdin < Stdin: superclass init_table position */},
+  {(bigint) standard___file___Stdin___init},
+  {(bigint) standard___file___Stdin___poll_in},
+};
+/* 0: Pointer to the classtable */
+/* 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 */
+static const char LOCATE_INIT_ATTRIBUTES__standard___file___Stdin[] = "init var of Stdin";
+void INIT_ATTRIBUTES__standard___file___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__standard___file___Stdin;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  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_standard___stream___BufferedIStream____buffer(fra.me.REG[0]) = fra.me.REG[1];
+  /* ../lib/standard/stream.nit:190 */
+  REGB0 = TAG_Int(0);
+  ATTR_standard___stream___BufferedIStream____buffer_pos(fra.me.REG[0]) = REGB0;
+  /* ../lib/standard/file.nit:54 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_standard___file___FStream____path(fra.me.REG[0]) = fra.me.REG[1];
+  /* ../lib/standard/file.nit:57 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_standard___file___FStream____file(fra.me.REG[0]) = fra.me.REG[1];
+  /* ../lib/standard/file.nit:99 */
+  REGB0 = TAG_Bool(0);
+  ATTR_standard___file___IFStream____end_reached(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_standard___file___Stdin(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_standard___file___Stdin;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_standard___file___Stdin[] = "check new Stdin";
+void CHECKNEW_standard___file___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_standard___file___Stdin;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_standard___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);
+  }
+  REGB0 = TAG_Bool(ATTR_standard___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);
+  }
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_Stdin_standard___file___Stdin___init[] = "new Stdin file::Stdin::init";
+val_t NEW_Stdin_standard___file___Stdin___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 = 164;
+  fra.me.meth = LOCATE_NEW_Stdin_standard___file___Stdin___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* ../lib/standard/file.nit:164 */
+  fra.me.REG[0] = NEW_standard___file___Stdin();
+  INIT_ATTRIBUTES__standard___file___Stdin(fra.me.REG[0]);
+  standard___file___Stdin___init(fra.me.REG[0], init_table);
+  CHECKNEW_standard___file___Stdin(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_standard___file___Stdout[68] = {
+  {(bigint) 4187 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "Stdout" /* 2: Class Name */},
+  {(bigint) 3 /* 3: Stdout < Object: superclass typecheck marker */},
+  {(bigint) 3227 /* 4: Stdout < FStream: superclass typecheck marker */},
+  {(bigint) 203 /* 5: Stdout < IOS: superclass typecheck marker */},
+  {(bigint) 3051 /* 6: Stdout < OStream: superclass typecheck marker */},
+  {(bigint) 3491 /* 7: Stdout < OFStream: superclass typecheck marker */},
+  {(bigint) 4187 /* 8: 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) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: Stdout < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 50: Stdout < FStream: superclass init_table position */},
+  {(bigint) standard___file___FStream___path},
+  {(bigint) standard___file___FStream___file_stat},
+  {(bigint) standard___file___FStream___init},
+  {(bigint) 4 /* 54: Stdout < OFStream: superclass init_table position */},
+  {(bigint) standard___file___OFStream___write_native},
+  {(bigint) standard___file___OFStream___open},
+  {(bigint) standard___file___OFStream___init},
+  {(bigint) standard___file___OFStream___without_file},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 1 /* 61: Stdout < IOS: superclass init_table position */},
+  {(bigint) standard___file___OFStream___close},
+  {(bigint) 3 /* 63: Stdout < OStream: superclass init_table position */},
+  {(bigint) standard___file___OFStream___write},
+  {(bigint) standard___file___OFStream___is_writable},
+  {(bigint) 5 /* 66: Stdout < Stdout: superclass init_table position */},
+  {(bigint) standard___file___Stdout___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute Stdout::_path */
+/* 3: Attribute Stdout::_file */
+/* 4: Attribute Stdout::_writable */
+static const char LOCATE_INIT_ATTRIBUTES__standard___file___Stdout[] = "init var of Stdout";
+void INIT_ATTRIBUTES__standard___file___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__standard___file___Stdout;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/file.nit:54 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_standard___file___FStream____path(fra.me.REG[0]) = fra.me.REG[1];
+  /* ../lib/standard/file.nit:57 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_standard___file___FStream____file(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_standard___file___Stdout(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_standard___file___Stdout;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_standard___file___Stdout[] = "check new Stdout";
+void CHECKNEW_standard___file___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_standard___file___Stdout;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_standard___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;
+}
+static const char LOCATE_NEW_Stdout_standard___file___Stdout___init[] = "new Stdout file::Stdout::init";
+val_t NEW_Stdout_standard___file___Stdout___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 = 177;
+  fra.me.meth = LOCATE_NEW_Stdout_standard___file___Stdout___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* ../lib/standard/file.nit:177 */
+  fra.me.REG[0] = NEW_standard___file___Stdout();
+  INIT_ATTRIBUTES__standard___file___Stdout(fra.me.REG[0]);
+  standard___file___Stdout___init(fra.me.REG[0], init_table);
+  CHECKNEW_standard___file___Stdout(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_standard___file___Stderr[68] = {
+  {(bigint) 4191 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "Stderr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: Stderr < Object: superclass typecheck marker */},
+  {(bigint) 3227 /* 4: Stderr < FStream: superclass typecheck marker */},
+  {(bigint) 203 /* 5: Stderr < IOS: superclass typecheck marker */},
+  {(bigint) 3051 /* 6: Stderr < OStream: superclass typecheck marker */},
+  {(bigint) 3491 /* 7: Stderr < OFStream: superclass typecheck marker */},
+  {(bigint) 4191 /* 8: 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) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: Stderr < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 50: Stderr < FStream: superclass init_table position */},
+  {(bigint) standard___file___FStream___path},
+  {(bigint) standard___file___FStream___file_stat},
+  {(bigint) standard___file___FStream___init},
+  {(bigint) 4 /* 54: Stderr < OFStream: superclass init_table position */},
+  {(bigint) standard___file___OFStream___write_native},
+  {(bigint) standard___file___OFStream___open},
+  {(bigint) standard___file___OFStream___init},
+  {(bigint) standard___file___OFStream___without_file},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 1 /* 61: Stderr < IOS: superclass init_table position */},
+  {(bigint) standard___file___OFStream___close},
+  {(bigint) 3 /* 63: Stderr < OStream: superclass init_table position */},
+  {(bigint) standard___file___OFStream___write},
+  {(bigint) standard___file___OFStream___is_writable},
+  {(bigint) 5 /* 66: Stderr < Stderr: superclass init_table position */},
+  {(bigint) standard___file___Stderr___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute Stderr::_path */
+/* 3: Attribute Stderr::_file */
+/* 4: Attribute Stderr::_writable */
+static const char LOCATE_INIT_ATTRIBUTES__standard___file___Stderr[] = "init var of Stderr";
+void INIT_ATTRIBUTES__standard___file___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__standard___file___Stderr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/file.nit:54 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_standard___file___FStream____path(fra.me.REG[0]) = fra.me.REG[1];
+  /* ../lib/standard/file.nit:57 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_standard___file___FStream____file(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_standard___file___Stderr(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_standard___file___Stderr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_standard___file___Stderr[] = "check new Stderr";
+void CHECKNEW_standard___file___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_standard___file___Stderr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_standard___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;
+}
+static const char LOCATE_NEW_Stderr_standard___file___Stderr___init[] = "new Stderr file::Stderr::init";
+val_t NEW_Stderr_standard___file___Stderr___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 = 186;
+  fra.me.meth = LOCATE_NEW_Stderr_standard___file___Stderr___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* ../lib/standard/file.nit:186 */
+  fra.me.REG[0] = NEW_standard___file___Stderr();
+  INIT_ATTRIBUTES__standard___file___Stderr(fra.me.REG[0]);
+  standard___file___Stderr___init(fra.me.REG[0], init_table);
+  CHECKNEW_standard___file___Stderr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_standard___file___FileStat[57] = {
+  {(bigint) -25 /* 0: Identity */},
+  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "FileStat" /* 2: Class Name */},
+  {(bigint) 3 /* 3: FileStat < Object: superclass typecheck marker */},
+  {(bigint) -1 /* 4: FileStat < Pointer: superclass typecheck marker */},
+  {(bigint) -25 /* 5: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 0 /* 19: FileStat < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 50: FileStat < Pointer: superclass init_table position */},
+  {(bigint) 2 /* 51: FileStat < FileStat: superclass init_table position */},
+  {(bigint) standard___file___FileStat___mode},
+  {(bigint) standard___file___FileStat___atime},
+  {(bigint) standard___file___FileStat___ctime},
+  {(bigint) standard___file___FileStat___mtime},
+  {(bigint) standard___file___FileStat___size},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+val_t BOX_FileStat(void* val) {
+  struct TBOX_FileStat *box = (struct TBOX_FileStat*)alloc(sizeof(struct TBOX_FileStat));
+  box->vft = VFT_standard___file___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_standard___file___NativeFile[61] = {
+  {(bigint) -21 /* 0: Identity */},
+  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "NativeFile" /* 2: Class Name */},
+  {(bigint) 3 /* 3: NativeFile < Object: superclass typecheck marker */},
+  {(bigint) -1 /* 4: NativeFile < Pointer: superclass typecheck marker */},
+  {(bigint) -21 /* 5: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 0 /* 19: NativeFile < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 50: NativeFile < Pointer: superclass init_table position */},
+  {(bigint) 2 /* 51: NativeFile < NativeFile: superclass init_table position */},
+  {(bigint) standard___file___NativeFile___io_read},
+  {(bigint) standard___file___NativeFile___io_write},
+  {(bigint) standard___file___NativeFile___io_close},
+  {(bigint) standard___file___NativeFile___file_stat},
+  {(bigint) standard___file___NativeFile___io_open_read},
+  {(bigint) standard___file___NativeFile___io_open_write},
+  {(bigint) standard___file___NativeFile___native_stdin},
+  {(bigint) standard___file___NativeFile___native_stdout},
+  {(bigint) standard___file___NativeFile___native_stderr},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+val_t BOX_NativeFile(void* val) {
+  struct TBOX_NativeFile *box = (struct TBOX_NativeFile*)alloc(sizeof(struct TBOX_NativeFile));
+  box->vft = VFT_standard___file___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_standard___exec___Process[61] = {
+  {(bigint) 95 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "Process" /* 2: Class Name */},
+  {(bigint) 3 /* 3: Process < Object: superclass typecheck marker */},
+  {(bigint) 95 /* 4: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 0 /* 19: Process < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 50: Process < Process: superclass init_table position */},
+  {(bigint) standard___exec___Process___id},
+  {(bigint) standard___exec___Process___is_finished},
+  {(bigint) standard___exec___Process___wait},
+  {(bigint) standard___exec___Process___status},
+  {(bigint) standard___exec___Process___init},
+  {(bigint) standard___exec___Process___init_},
+  {(bigint) standard___exec___Process___execute},
+  {(bigint) standard___exec___Process___data},
+  {(bigint) standard___exec___Process___data__eq},
+  {(bigint) standard___exec___Process___basic_exec_execute},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute Process::@data */
+static const char LOCATE_INIT_ATTRIBUTES__standard___exec___Process[] = "init var of Process";
+void INIT_ATTRIBUTES__standard___exec___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__standard___exec___Process;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_standard___exec___Process(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_standard___exec___Process;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_standard___exec___Process[] = "check new Process";
+void CHECKNEW_standard___exec___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_standard___exec___Process;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_standard___exec___Process_____atdata(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;
+}
+static const char LOCATE_NEW_Process_standard___exec___Process___init[] = "new Process exec::Process::init";
+val_t NEW_Process_standard___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 = 42;
+  fra.me.meth = LOCATE_NEW_Process_standard___exec___Process___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  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:42 */
+  fra.me.REG[2] = NEW_standard___exec___Process();
+  INIT_ATTRIBUTES__standard___exec___Process(fra.me.REG[2]);
+  standard___exec___Process___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_standard___exec___Process(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+static const char LOCATE_NEW_Process_standard___exec___Process___init_[] = "new Process exec::Process::init_";
+val_t NEW_Process_standard___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 = 48;
+  fra.me.meth = LOCATE_NEW_Process_standard___exec___Process___init_;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/exec.nit:48 */
+  fra.me.REG[1] = NEW_standard___exec___Process();
+  INIT_ATTRIBUTES__standard___exec___Process(fra.me.REG[1]);
+  standard___exec___Process___init_(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_standard___exec___Process(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_Process_standard___exec___Process___execute[] = "new Process exec::Process::execute";
+val_t NEW_Process_standard___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 = 54;
+  fra.me.meth = LOCATE_NEW_Process_standard___exec___Process___execute;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  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:54 */
+  fra.me.REG[2] = NEW_standard___exec___Process();
+  INIT_ATTRIBUTES__standard___exec___Process(fra.me.REG[2]);
+  standard___exec___Process___execute(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], REGB0, init_table);
+  CHECKNEW_standard___exec___Process(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_standard___exec___IProcess[83] = {
+  {(bigint) 3559 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "IProcess" /* 2: Class Name */},
+  {(bigint) 3 /* 3: IProcess < Object: superclass typecheck marker */},
+  {(bigint) 95 /* 4: IProcess < Process: superclass typecheck marker */},
+  {(bigint) 203 /* 5: IProcess < IOS: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {(bigint) 3171 /* 7: IProcess < IStream: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {(bigint) 3559 /* 9: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 0 /* 19: IProcess < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 50: IProcess < Process: superclass init_table position */},
+  {(bigint) standard___exec___Process___id},
+  {(bigint) standard___exec___Process___is_finished},
+  {(bigint) standard___exec___Process___wait},
+  {(bigint) standard___exec___Process___status},
+  {(bigint) standard___exec___Process___init},
+  {(bigint) standard___exec___Process___init_},
+  {(bigint) standard___exec___Process___execute},
+  {(bigint) standard___exec___Process___data},
+  {(bigint) standard___exec___Process___data__eq},
+  {(bigint) standard___exec___Process___basic_exec_execute},
+  {(bigint) 3 /* 61: IProcess < IOS: superclass init_table position */},
+  {(bigint) standard___exec___IProcess___close},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 2 /* 66: IProcess < IStream: superclass init_table position */},
+  {(bigint) standard___exec___IProcess___read_char},
+  {(bigint) standard___stream___IStream___read},
+  {(bigint) standard___stream___IStream___read_line},
+  {(bigint) standard___stream___IStream___read_all},
+  {(bigint) standard___stream___IStream___append_line_to},
+  {(bigint) standard___exec___IProcess___eof},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 4 /* 78: IProcess < IProcess: superclass init_table position */},
+  {(bigint) standard___exec___IProcess___stream_in},
+  {(bigint) standard___exec___IProcess___stream_in__eq},
+  {(bigint) standard___exec___IProcess___init},
+  {(bigint) standard___exec___IProcess___init_},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute IProcess::@data */
+/* Instance Hole :( */
+/* 4: Attribute IProcess::@stream_in */
+static const char LOCATE_INIT_ATTRIBUTES__standard___exec___IProcess[] = "init var of IProcess";
+void INIT_ATTRIBUTES__standard___exec___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__standard___exec___IProcess;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_standard___exec___IProcess(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_standard___exec___IProcess;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_standard___exec___IProcess[] = "check new IProcess";
+void CHECKNEW_standard___exec___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_standard___exec___IProcess;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_standard___exec___Process_____atdata(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@data", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_standard___exec___IProcess_____atstream_in(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@stream_in", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_IProcess_standard___exec___IProcess___init[] = "new IProcess exec::IProcess::init";
+val_t NEW_IProcess_standard___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 = 86;
+  fra.me.meth = LOCATE_NEW_IProcess_standard___exec___IProcess___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  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:86 */
+  fra.me.REG[2] = NEW_standard___exec___IProcess();
+  INIT_ATTRIBUTES__standard___exec___IProcess(fra.me.REG[2]);
+  standard___exec___IProcess___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_standard___exec___IProcess(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+static const char LOCATE_NEW_IProcess_standard___exec___IProcess___init_[] = "new IProcess exec::IProcess::init_";
+val_t NEW_IProcess_standard___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 = 92;
+  fra.me.meth = LOCATE_NEW_IProcess_standard___exec___IProcess___init_;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/exec.nit:92 */
+  fra.me.REG[1] = NEW_standard___exec___IProcess();
+  INIT_ATTRIBUTES__standard___exec___IProcess(fra.me.REG[1]);
+  standard___exec___IProcess___init_(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_standard___exec___IProcess(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_standard___exec___OProcess[78] = {
+  {(bigint) 3487 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "OProcess" /* 2: Class Name */},
+  {(bigint) 3 /* 3: OProcess < Object: superclass typecheck marker */},
+  {(bigint) 95 /* 4: OProcess < Process: superclass typecheck marker */},
+  {(bigint) 203 /* 5: OProcess < IOS: superclass typecheck marker */},
+  {(bigint) 3051 /* 6: OProcess < OStream: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {(bigint) 3487 /* 8: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 0 /* 19: OProcess < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 50: OProcess < Process: superclass init_table position */},
+  {(bigint) standard___exec___Process___id},
+  {(bigint) standard___exec___Process___is_finished},
+  {(bigint) standard___exec___Process___wait},
+  {(bigint) standard___exec___Process___status},
+  {(bigint) standard___exec___Process___init},
+  {(bigint) standard___exec___Process___init_},
+  {(bigint) standard___exec___Process___execute},
+  {(bigint) standard___exec___Process___data},
+  {(bigint) standard___exec___Process___data__eq},
+  {(bigint) standard___exec___Process___basic_exec_execute},
+  {(bigint) 3 /* 61: OProcess < IOS: superclass init_table position */},
+  {(bigint) standard___exec___OProcess___close},
+  {(bigint) 2 /* 63: OProcess < OStream: superclass init_table position */},
+  {(bigint) standard___exec___OProcess___write},
+  {(bigint) standard___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 /* 73: OProcess < OProcess: superclass init_table position */},
+  {(bigint) standard___exec___OProcess___stream_out},
+  {(bigint) standard___exec___OProcess___stream_out__eq},
+  {(bigint) standard___exec___OProcess___init},
+  {(bigint) standard___exec___OProcess___init_},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute OProcess::@data */
+/* 3: Attribute OProcess::@stream_out */
+static const char LOCATE_INIT_ATTRIBUTES__standard___exec___OProcess[] = "init var of OProcess";
+void INIT_ATTRIBUTES__standard___exec___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__standard___exec___OProcess;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_standard___exec___OProcess(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_standard___exec___OProcess;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_standard___exec___OProcess[] = "check new OProcess";
+void CHECKNEW_standard___exec___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_standard___exec___OProcess;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_standard___exec___Process_____atdata(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@data", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_standard___exec___OProcess_____atstream_out(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@stream_out", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_OProcess_standard___exec___OProcess___init[] = "new OProcess exec::OProcess::init";
+val_t NEW_OProcess_standard___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 = 111;
+  fra.me.meth = LOCATE_NEW_OProcess_standard___exec___OProcess___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  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:111 */
+  fra.me.REG[2] = NEW_standard___exec___OProcess();
+  INIT_ATTRIBUTES__standard___exec___OProcess(fra.me.REG[2]);
+  standard___exec___OProcess___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_standard___exec___OProcess(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+static const char LOCATE_NEW_OProcess_standard___exec___OProcess___init_[] = "new OProcess exec::OProcess::init_";
+val_t NEW_OProcess_standard___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 = 117;
+  fra.me.meth = LOCATE_NEW_OProcess_standard___exec___OProcess___init_;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/exec.nit:117 */
+  fra.me.REG[1] = NEW_standard___exec___OProcess();
+  INIT_ATTRIBUTES__standard___exec___OProcess(fra.me.REG[1]);
+  standard___exec___OProcess___init_(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_standard___exec___OProcess(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_standard___exec___IOProcess[87] = {
+  {(bigint) 4227 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "IOProcess" /* 2: Class Name */},
+  {(bigint) 3 /* 3: IOProcess < Object: superclass typecheck marker */},
+  {(bigint) 95 /* 4: IOProcess < Process: superclass typecheck marker */},
+  {(bigint) 203 /* 5: IOProcess < IOS: superclass typecheck marker */},
+  {(bigint) 3051 /* 6: IOProcess < OStream: superclass typecheck marker */},
+  {(bigint) 3171 /* 7: IOProcess < IStream: superclass typecheck marker */},
+  {(bigint) 3487 /* 8: IOProcess < OProcess: superclass typecheck marker */},
+  {(bigint) 3559 /* 9: IOProcess < IProcess: superclass typecheck marker */},
+  {(bigint) 3567 /* 10: IOProcess < IOStream: superclass typecheck marker */},
+  {(bigint) 4227 /* 11: IOProcess < IOProcess: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 0 /* 19: IOProcess < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 50: IOProcess < Process: superclass init_table position */},
+  {(bigint) standard___exec___Process___id},
+  {(bigint) standard___exec___Process___is_finished},
+  {(bigint) standard___exec___Process___wait},
+  {(bigint) standard___exec___Process___status},
+  {(bigint) standard___exec___Process___init},
+  {(bigint) standard___exec___Process___init_},
+  {(bigint) standard___exec___Process___execute},
+  {(bigint) standard___exec___Process___data},
+  {(bigint) standard___exec___Process___data__eq},
+  {(bigint) standard___exec___Process___basic_exec_execute},
+  {(bigint) 3 /* 61: IOProcess < IOS: superclass init_table position */},
+  {(bigint) standard___exec___IOProcess___close},
+  {(bigint) 5 /* 63: IOProcess < OStream: superclass init_table position */},
+  {(bigint) standard___exec___OProcess___write},
+  {(bigint) standard___exec___OProcess___is_writable},
+  {(bigint) 2 /* 66: IOProcess < IStream: superclass init_table position */},
+  {(bigint) standard___exec___IProcess___read_char},
+  {(bigint) standard___stream___IStream___read},
+  {(bigint) standard___stream___IStream___read_line},
+  {(bigint) standard___stream___IStream___read_all},
+  {(bigint) standard___stream___IStream___append_line_to},
+  {(bigint) standard___exec___IProcess___eof},
+  {(bigint) 6 /* 73: IOProcess < OProcess: superclass init_table position */},
+  {(bigint) standard___exec___OProcess___stream_out},
+  {(bigint) standard___exec___OProcess___stream_out__eq},
+  {(bigint) standard___exec___OProcess___init},
+  {(bigint) standard___exec___OProcess___init_},
+  {(bigint) 4 /* 78: IOProcess < IProcess: superclass init_table position */},
+  {(bigint) standard___exec___IProcess___stream_in},
+  {(bigint) standard___exec___IProcess___stream_in__eq},
+  {(bigint) standard___exec___IProcess___init},
+  {(bigint) standard___exec___IProcess___init_},
+  {(bigint) 7 /* 83: IOProcess < IOStream: superclass init_table position */},
+  {(bigint) 8 /* 84: IOProcess < IOProcess: superclass init_table position */},
+  {(bigint) standard___exec___IOProcess___init},
+  {(bigint) standard___exec___IOProcess___init_},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute IOProcess::@data */
+/* 3: Attribute IOProcess::@stream_out */
+/* 4: Attribute IOProcess::@stream_in */
+static const char LOCATE_INIT_ATTRIBUTES__standard___exec___IOProcess[] = "init var of IOProcess";
+void INIT_ATTRIBUTES__standard___exec___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__standard___exec___IOProcess;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_standard___exec___IOProcess(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_standard___exec___IOProcess;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_standard___exec___IOProcess[] = "check new IOProcess";
+void CHECKNEW_standard___exec___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_standard___exec___IOProcess;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_standard___exec___Process_____atdata(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@data", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_standard___exec___OProcess_____atstream_out(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@stream_out", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_standard___exec___IProcess_____atstream_in(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@stream_in", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_IOProcess_standard___exec___IOProcess___init[] = "new IOProcess exec::IOProcess::init";
+val_t NEW_IOProcess_standard___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 = 136;
+  fra.me.meth = LOCATE_NEW_IOProcess_standard___exec___IOProcess___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  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:136 */
+  fra.me.REG[2] = NEW_standard___exec___IOProcess();
+  INIT_ATTRIBUTES__standard___exec___IOProcess(fra.me.REG[2]);
+  standard___exec___IOProcess___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_standard___exec___IOProcess(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+static const char LOCATE_NEW_IOProcess_standard___exec___IOProcess___init_[] = "new IOProcess exec::IOProcess::init_";
+val_t NEW_IOProcess_standard___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 = 143;
+  fra.me.meth = LOCATE_NEW_IOProcess_standard___exec___IOProcess___init_;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/standard/exec.nit:143 */
+  fra.me.REG[1] = NEW_standard___exec___IOProcess();
+  INIT_ATTRIBUTES__standard___exec___IOProcess(fra.me.REG[1]);
+  standard___exec___IOProcess___init_(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_standard___exec___IOProcess(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_standard___exec___NativeProcess[59] = {
+  {(bigint) -17 /* 0: Identity */},
+  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "NativeProcess" /* 2: Class Name */},
+  {(bigint) 3 /* 3: NativeProcess < Object: superclass typecheck marker */},
+  {(bigint) -1 /* 4: NativeProcess < Pointer: superclass typecheck marker */},
+  {(bigint) -17 /* 5: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 0 /* 19: NativeProcess < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 50: NativeProcess < Pointer: superclass init_table position */},
+  {(bigint) 2 /* 51: NativeProcess < NativeProcess: superclass init_table position */},
+  {(bigint) standard___exec___NativeProcess___id},
+  {(bigint) standard___exec___NativeProcess___is_finished},
+  {(bigint) standard___exec___NativeProcess___status},
+  {(bigint) standard___exec___NativeProcess___wait},
+  {(bigint) standard___exec___NativeProcess___in_fd},
+  {(bigint) standard___exec___NativeProcess___out_fd},
+  {(bigint) standard___exec___NativeProcess___err_fd},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+val_t BOX_NativeProcess(void* val) {
+  struct TBOX_NativeProcess *box = (struct TBOX_NativeProcess*)alloc(sizeof(struct TBOX_NativeProcess));
+  box->vft = VFT_standard___exec___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_metamodel___partial_order___PartialOrder[94] = {
+  {(bigint) 3023 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "PartialOrder" /* 2: Class Name */},
+  {(bigint) 3 /* 3: PartialOrder < Object: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 283 /* 7: PartialOrder < Collection: superclass typecheck marker */},
+  {(bigint) 3023 /* 8: PartialOrder < PartialOrder: superclass typecheck marker */},
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: PartialOrder < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Collection___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(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 :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) standard___string___Collection___join},
+  {(bigint) standard___collection___array___Collection___to_a},
+  {(bigint) 0 /* 70: PartialOrder < Collection: superclass init_table position */},
+  {(bigint) metamodel___partial_order___PartialOrder___iterator},
+  {(bigint) standard___collection___abstract_collection___Collection___iterate},
+  {(bigint) metamodel___partial_order___PartialOrder___is_empty},
+  {(bigint) metamodel___partial_order___PartialOrder___length},
+  {(bigint) metamodel___partial_order___PartialOrder___has},
+  {(bigint) metamodel___partial_order___PartialOrder___has_only},
+  {(bigint) metamodel___partial_order___PartialOrder___count},
+  {(bigint) metamodel___partial_order___PartialOrder___first},
+  {(bigint) standard___math___Collection___rand},
+  {(bigint) 2 /* 80: PartialOrder < PartialOrder: superclass init_table position */},
+  {(bigint) metamodel___partial_order___PartialOrder___roots},
+  {(bigint) metamodel___partial_order___PartialOrder_____bra},
+  {(bigint) metamodel___partial_order___PartialOrder___to_dot},
+  {(bigint) metamodel___partial_order___PartialOrder___to_dot_header},
+  {(bigint) metamodel___partial_order___PartialOrder___to_dot_node},
+  {(bigint) metamodel___partial_order___PartialOrder___to_dot_edge},
+  {(bigint) metamodel___partial_order___PartialOrder___select_smallests},
+  {(bigint) metamodel___partial_order___PartialOrder___add},
+  {(bigint) metamodel___partial_order___PartialOrder___has_all},
+  {(bigint) metamodel___partial_order___PartialOrder___new_poe},
+  {(bigint) metamodel___partial_order___PartialOrder___add_to_smallests},
+  {(bigint) metamodel___partial_order___PartialOrder___compute_smallers_for},
+  {(bigint) metamodel___partial_order___PartialOrder___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute PartialOrder::_elements */
+/* 3: Attribute PartialOrder::_elements_list */
+/* 4: Attribute PartialOrder::_roots */
+static const char LOCATE_INIT_ATTRIBUTES__metamodel___partial_order___PartialOrder[] = "init var of PartialOrder";
+void INIT_ATTRIBUTES__metamodel___partial_order___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__metamodel___partial_order___PartialOrder;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_metamodel___partial_order___PartialOrder(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_metamodel___partial_order___PartialOrder;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_metamodel___partial_order___PartialOrder[] = "check new PartialOrder";
+void CHECKNEW_metamodel___partial_order___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_metamodel___partial_order___PartialOrder;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_metamodel___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_metamodel___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_metamodel___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;
+}
+static const char LOCATE_NEW_PartialOrder_metamodel___partial_order___PartialOrder___init[] = "new PartialOrder partial_order::PartialOrder::init";
+val_t NEW_PartialOrder_metamodel___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_metamodel___partial_order___PartialOrder___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* metamodel/partial_order.nit:181 */
+  fra.me.REG[0] = NEW_metamodel___partial_order___PartialOrder();
+  INIT_ATTRIBUTES__metamodel___partial_order___PartialOrder(fra.me.REG[0]);
+  metamodel___partial_order___PartialOrder___init(fra.me.REG[0], init_table);
+  CHECKNEW_metamodel___partial_order___PartialOrder(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_metamodel___partial_order___PartialOrderElement[67] = {
+  {(bigint) 107 /* 0: Identity */},
+  {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "PartialOrderElement" /* 2: Class Name */},
+  {(bigint) 3 /* 3: PartialOrderElement < Object: superclass typecheck marker */},
+  {(bigint) 107 /* 4: PartialOrderElement < PartialOrderElement: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 0 /* 19: PartialOrderElement < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 50: PartialOrderElement < PartialOrderElement: superclass init_table position */},
+  {(bigint) metamodel___partial_order___PartialOrderElement___order},
+  {(bigint) metamodel___partial_order___PartialOrderElement___value},
+  {(bigint) metamodel___partial_order___PartialOrderElement___rank},
+  {(bigint) metamodel___partial_order___PartialOrderElement___direct_greaters},
+  {(bigint) metamodel___partial_order___PartialOrderElement___direct_smallers},
+  {(bigint) metamodel___partial_order___PartialOrderElement___greaters},
+  {(bigint) metamodel___partial_order___PartialOrderElement___greaters_and_self},
+  {(bigint) metamodel___partial_order___PartialOrderElement___smallers},
+  {(bigint) metamodel___partial_order___PartialOrderElement___linear_extension},
+  {(bigint) metamodel___partial_order___PartialOrderElement___reverse_linear_extension},
+  {(bigint) metamodel___partial_order___PartialOrderElement_____l},
+  {(bigint) metamodel___partial_order___PartialOrderElement_____leq},
+  {(bigint) metamodel___partial_order___PartialOrderElement_____g},
+  {(bigint) metamodel___partial_order___PartialOrderElement_____geq},
+  {(bigint) metamodel___partial_order___PartialOrderElement___register_direct_smallers},
+  {(bigint) metamodel___partial_order___PartialOrderElement___init},
+};
+/* 0: Pointer to the classtable */
+/* 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 */
+static const char LOCATE_INIT_ATTRIBUTES__metamodel___partial_order___PartialOrderElement[] = "init var of PartialOrderElement";
+void INIT_ATTRIBUTES__metamodel___partial_order___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__metamodel___partial_order___PartialOrderElement;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* metamodel/partial_order.nit:225 */
+  REGB0 = TAG_Int(0);
+  ATTR_metamodel___partial_order___PartialOrderElement____smallers_last_length(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_metamodel___partial_order___PartialOrderElement(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 13);
+  obj->vft = (classtable_elt_t*)VFT_metamodel___partial_order___PartialOrderElement;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_metamodel___partial_order___PartialOrderElement[] = "check new PartialOrderElement";
+void CHECKNEW_metamodel___partial_order___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_metamodel___partial_order___PartialOrderElement;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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;
+}
+static const char LOCATE_NEW_PartialOrderElement_metamodel___partial_order___PartialOrderElement___init[] = "new PartialOrderElement partial_order::PartialOrderElement::init";
+val_t NEW_PartialOrderElement_metamodel___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_metamodel___partial_order___PartialOrderElement___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  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_metamodel___partial_order___PartialOrderElement();
+  INIT_ATTRIBUTES__metamodel___partial_order___PartialOrderElement(fra.me.REG[3]);
+  metamodel___partial_order___PartialOrderElement___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_metamodel___partial_order___PartialOrderElement(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
+}
+const classtable_elt_t VFT_location___SourceFile[59] = {
+  {(bigint) 43 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "SourceFile" /* 2: Class Name */},
+  {(bigint) 3 /* 3: SourceFile < Object: superclass typecheck marker */},
+  {(bigint) 43 /* 4: SourceFile < SourceFile: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 0 /* 19: SourceFile < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 50: SourceFile < SourceFile: superclass init_table position */},
+  {(bigint) location___SourceFile___filename},
+  {(bigint) location___SourceFile___filename__eq},
+  {(bigint) location___SourceFile___string},
+  {(bigint) location___SourceFile___string__eq},
+  {(bigint) location___SourceFile___init},
+  {(bigint) location___SourceFile___from_string},
+  {(bigint) location___SourceFile___line_starts},
+  {(bigint) location___SourceFile___line_starts__eq},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute SourceFile::@filename */
+/* 3: Attribute SourceFile::@string */
+/* 4: Attribute SourceFile::@line_starts */
+static const char LOCATE_INIT_ATTRIBUTES__location___SourceFile[] = "init var of SourceFile";
+void INIT_ATTRIBUTES__location___SourceFile(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__location___SourceFile;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* location.nit:45 */
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
+  ATTR_location___SourceFile_____atline_starts(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_location___SourceFile(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_location___SourceFile;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_location___SourceFile[] = "check new SourceFile";
+void CHECKNEW_location___SourceFile(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.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___SourceFile;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_location___SourceFile_____atfilename(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@filename", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_location___SourceFile_____atstring(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@string", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_location___SourceFile_____atline_starts(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@line_starts", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_SourceFile_location___SourceFile___init[] = "new SourceFile location::SourceFile::init";
+val_t NEW_SourceFile_location___SourceFile___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 = 28;
+  fra.me.meth = LOCATE_NEW_SourceFile_location___SourceFile___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  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;
+  /* location.nit:28 */
+  fra.me.REG[2] = NEW_location___SourceFile();
+  INIT_ATTRIBUTES__location___SourceFile(fra.me.REG[2]);
+  location___SourceFile___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_location___SourceFile(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+static const char LOCATE_NEW_SourceFile_location___SourceFile___from_string[] = "new SourceFile location::SourceFile::from_string";
+val_t NEW_SourceFile_location___SourceFile___from_string(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 = 36;
+  fra.me.meth = LOCATE_NEW_SourceFile_location___SourceFile___from_string;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  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;
+  /* location.nit:36 */
+  fra.me.REG[2] = NEW_location___SourceFile();
+  INIT_ATTRIBUTES__location___SourceFile(fra.me.REG[2]);
+  location___SourceFile___from_string(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_location___SourceFile(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_location___Location[83] = {
+  {(bigint) 3143 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "Location" /* 2: Class Name */},
+  {(bigint) 3 /* 3: Location < Object: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 275 /* 6: Location < Comparable: superclass typecheck marker */},
+  {(bigint) 3143 /* 7: Location < Location: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: Location < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) location___Location_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) location___Location___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(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 :( */,
+  {(bigint) 0 /* 57: Location < Comparable: superclass init_table position */},
+  {(bigint) 3143 /* 58: VT Location::OTHER : id of Location */},
+  {(bigint) 7 /* 59: VT Location::OTHER : color of Location */},
+  {(bigint) location___Location_____l},
+  {(bigint) standard___kernel___Comparable_____leq},
+  {(bigint) standard___kernel___Comparable_____geq},
+  {(bigint) standard___kernel___Comparable_____g},
+  {(bigint) standard___kernel___Comparable_____leqg},
+  {(bigint) standard___kernel___Comparable___is_between},
+  {(bigint) standard___kernel___Comparable___max},
+  {(bigint) standard___kernel___Comparable___min},
+  {(bigint) ffi___c___Location___as_line_pragma},
+  {(bigint) 2 /* 69: 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___text},
+  {(bigint) location___Location___text_cache},
+  {(bigint) location___Location___text_cache__eq},
+  {(bigint) location___Location___with_file},
+  {(bigint) location___Location___located_in},
+  {(bigint) location___Location___relative_to},
+  {(bigint) location___Location___colored_line},
+};
+/* 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 */
+/* 7: Attribute Location::@text_cache */
+static const char LOCATE_INIT_ATTRIBUTES__location___Location[] = "init var of Location";
+void INIT_ATTRIBUTES__location___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___Location;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_location___Location(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_location___Location;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_location___Location[] = "check new Location";
+void CHECKNEW_location___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___Location;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  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;
+}
+static const char 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){
+  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 = 59;
+  fra.me.meth = LOCATE_NEW_Location_location___Location___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  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:59 */
+  fra.me.REG[1] = NEW_location___Location();
+  INIT_ATTRIBUTES__location___Location(fra.me.REG[1]);
+  location___Location___init(fra.me.REG[1], fra.me.REG[0], REGB0, REGB1, REGB2, REGB3, init_table);
+  CHECKNEW_location___Location(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_Location_location___Location___with_file[] = "new Location location::Location::with_file";
+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 = 82;
+  fra.me.meth = LOCATE_NEW_Location_location___Location___with_file;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* location.nit:82 */
+  fra.me.REG[1] = NEW_location___Location();
+  INIT_ATTRIBUTES__location___Location(fra.me.REG[1]);
+  location___Location___with_file(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_location___Location(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_symbol___Symbol[52] = {
+  {(bigint) 31 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "Symbol" /* 2: Class Name */},
+  {(bigint) 3 /* 3: Symbol < Object: superclass typecheck marker */},
+  {(bigint) 31 /* 4: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 0 /* 19: Symbol < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) symbol___Symbol___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 50: Symbol < Symbol: superclass init_table position */},
+  {(bigint) symbol___Symbol___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute Symbol::_string */
+static const char LOCATE_INIT_ATTRIBUTES__symbol___Symbol[] = "init var of Symbol";
+void INIT_ATTRIBUTES__symbol___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___Symbol;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_symbol___Symbol(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_symbol___Symbol;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_symbol___Symbol[] = "check new Symbol";
+void CHECKNEW_symbol___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___Symbol;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  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;
+}
+static const char LOCATE_NEW_Symbol_symbol___Symbol___init[] = "new Symbol symbol::Symbol::init";
+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 = 37;
+  fra.me.meth = LOCATE_NEW_Symbol_symbol___Symbol___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ../lib/symbol.nit:37 */
+  fra.me.REG[1] = NEW_symbol___Symbol();
+  INIT_ATTRIBUTES__symbol___Symbol(fra.me.REG[1]);
+  symbol___Symbol___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_symbol___Symbol(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_metamodel___abstractmetamodel___MMDirectory[60] = {
+  {(bigint) 171 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "MMDirectory" /* 2: Class Name */},
+  {(bigint) 3 /* 3: MMDirectory < Object: superclass typecheck marker */},
+  {(bigint) 171 /* 4: MMDirectory < MMDirectory: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 0 /* 19: MMDirectory < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 50: MMDirectory < MMDirectory: superclass init_table position */},
+  {(bigint) metamodel___abstractmetamodel___MMDirectory___name},
+  {(bigint) metamodel___abstractmetamodel___MMDirectory___path},
+  {(bigint) metamodel___abstractmetamodel___MMDirectory___parent},
+  {(bigint) metamodel___abstractmetamodel___MMDirectory___owner},
+  {(bigint) metamodel___abstractmetamodel___MMDirectory___owner__eq},
+  {(bigint) metamodel___abstractmetamodel___MMDirectory___modules},
+  {(bigint) metamodel___abstractmetamodel___MMDirectory___add_module},
+  {(bigint) metamodel___abstractmetamodel___MMDirectory___init},
+  {(bigint) metamodel___abstractmetamodel___MMDirectory___full_name_for},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute MMDirectory::_name */
+/* 3: Attribute MMDirectory::_path */
+/* 4: Attribute MMDirectory::_parent */
+/* 5: Attribute MMDirectory::_owner */
+/* 6: Attribute MMDirectory::_modules */
+static const char LOCATE_INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMDirectory[] = "init var of MMDirectory";
+void INIT_ATTRIBUTES__metamodel___abstractmetamodel___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__metamodel___abstractmetamodel___MMDirectory;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* metamodel/abstractmetamodel.nit:85 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_metamodel___abstractmetamodel___MMDirectory____owner(fra.me.REG[0]) = fra.me.REG[1];
+  /* metamodel/abstractmetamodel.nit:89 */
+  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
+  ATTR_metamodel___abstractmetamodel___MMDirectory____modules(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_metamodel___abstractmetamodel___MMDirectory(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_metamodel___abstractmetamodel___MMDirectory;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_metamodel___abstractmetamodel___MMDirectory[] = "check new MMDirectory";
+void CHECKNEW_metamodel___abstractmetamodel___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_metamodel___abstractmetamodel___MMDirectory;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_metamodel___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_metamodel___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_metamodel___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;
+}
+static const char LOCATE_NEW_MMDirectory_metamodel___abstractmetamodel___MMDirectory___init[] = "new MMDirectory abstractmetamodel::MMDirectory::init";
+val_t NEW_MMDirectory_metamodel___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 = 98;
+  fra.me.meth = LOCATE_NEW_MMDirectory_metamodel___abstractmetamodel___MMDirectory___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  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:98 */
+  fra.me.REG[3] = NEW_metamodel___abstractmetamodel___MMDirectory();
+  INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMDirectory(fra.me.REG[3]);
+  metamodel___abstractmetamodel___MMDirectory___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_metamodel___abstractmetamodel___MMDirectory(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
+}
+const classtable_elt_t VFT_metamodel___abstractmetamodel___MMGlobalClass[75] = {
+  {(bigint) 163 /* 0: Identity */},
+  {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "MMGlobalClass" /* 2: Class Name */},
+  {(bigint) 3 /* 3: MMGlobalClass < Object: superclass typecheck marker */},
+  {(bigint) 163 /* 4: MMGlobalClass < MMGlobalClass: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 0 /* 19: MMGlobalClass < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) metamodel___abstractmetamodel___MMGlobalClass___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___syntax_base___MMGlobalClass___check_visibility},
+  {(bigint) 1 /* 51: MMGlobalClass < MMGlobalClass: superclass init_table position */},
+  {(bigint) metamodel___abstractmetamodel___MMGlobalClass___intro},
+  {(bigint) metamodel___abstractmetamodel___MMGlobalClass___class_refinement_hierarchy},
+  {(bigint) metamodel___abstractmetamodel___MMGlobalClass___init},
+  {(bigint) metamodel___abstractmetamodel___MMGlobalClass___name},
+  {(bigint) metamodel___abstractmetamodel___MMGlobalClass___mmmodule},
+  {(bigint) metamodel___abstractmetamodel___MMGlobalClass___register_local_class},
+  {(bigint) metamodel___abstractmetamodel___MMGlobalClass___is_interface},
+  {(bigint) metamodel___abstractmetamodel___MMGlobalClass___is_interface__eq},
+  {(bigint) metamodel___abstractmetamodel___MMGlobalClass___is_abstract},
+  {(bigint) metamodel___abstractmetamodel___MMGlobalClass___is_abstract__eq},
+  {(bigint) metamodel___abstractmetamodel___MMGlobalClass___is_enum},
+  {(bigint) metamodel___abstractmetamodel___MMGlobalClass___is_enum__eq},
+  {(bigint) metamodel___abstractmetamodel___MMGlobalClass___is_extern},
+  {(bigint) metamodel___abstractmetamodel___MMGlobalClass___is_extern__eq},
+  {(bigint) metamodel___abstractmetamodel___MMGlobalClass___visibility_level},
+  {(bigint) metamodel___abstractmetamodel___MMGlobalClass___visibility_level__eq},
+  {(bigint) metamodel___abstractmetamodel___MMGlobalClass___is_mixin},
+  {(bigint) metamodel___abstractmetamodel___MMGlobalClass___mixin_of},
+  {(bigint) metamodel___abstractmetamodel___MMGlobalClass___mixin_of__eq},
+  {(bigint) compiling___compiling_base___MMGlobalClass___cname},
+  {(bigint) compiling___compiling_base___MMGlobalClass___id_id},
+  {(bigint) compiling___compiling_base___MMGlobalClass___color_id},
+  {(bigint) compiling___compiling_base___MMGlobalClass___init_table_pos_id},
+};
+/* 0: Pointer to the classtable */
+/* 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::_is_extern */
+/* 8: Attribute MMGlobalClass::_visibility_level */
+/* 9: Attribute MMGlobalClass::_mixin_of */
+/* 10: Attribute MMGlobalClass::_cname_cache */
+static const char LOCATE_INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMGlobalClass[] = "init var of MMGlobalClass";
+void INIT_ATTRIBUTES__metamodel___abstractmetamodel___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__metamodel___abstractmetamodel___MMGlobalClass;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* metamodel/abstractmetamodel.nit:267 */
+  fra.me.REG[1] = NEW_PartialOrder_metamodel___partial_order___PartialOrder___init();
+  ATTR_metamodel___abstractmetamodel___MMGlobalClass____class_refinement_hierarchy(fra.me.REG[0]) = fra.me.REG[1];
+  /* metamodel/abstractmetamodel.nit:306 */
+  REGB0 = TAG_Bool(0);
+  ATTR_metamodel___abstractmetamodel___MMGlobalClass____is_interface(fra.me.REG[0]) = REGB0;
+  /* metamodel/abstractmetamodel.nit:309 */
+  REGB0 = TAG_Bool(0);
+  ATTR_metamodel___abstractmetamodel___MMGlobalClass____is_abstract(fra.me.REG[0]) = REGB0;
+  /* metamodel/abstractmetamodel.nit:312 */
+  REGB0 = TAG_Bool(0);
+  ATTR_metamodel___abstractmetamodel___MMGlobalClass____is_enum(fra.me.REG[0]) = REGB0;
+  /* metamodel/abstractmetamodel.nit:315 */
+  REGB0 = TAG_Bool(0);
+  ATTR_metamodel___abstractmetamodel___MMGlobalClass____is_extern(fra.me.REG[0]) = REGB0;
+  /* metamodel/abstractmetamodel.nit:320 */
+  REGB0 = TAG_Int(1);
+  ATTR_metamodel___abstractmetamodel___MMGlobalClass____visibility_level(fra.me.REG[0]) = REGB0;
+  /* metamodel/abstractmetamodel.nit:329 */
+  fra.me.REG[1] = fra.me.REG[0];
+  ATTR_metamodel___abstractmetamodel___MMGlobalClass____mixin_of(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_metamodel___abstractmetamodel___MMGlobalClass(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 11);
+  obj->vft = (classtable_elt_t*)VFT_metamodel___abstractmetamodel___MMGlobalClass;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_metamodel___abstractmetamodel___MMGlobalClass[] = "check new MMGlobalClass";
+void CHECKNEW_metamodel___abstractmetamodel___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_metamodel___abstractmetamodel___MMGlobalClass;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___abstractmetamodel___MMGlobalClass____is_extern(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_extern", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_metamodel___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_metamodel___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;
+}
+static const char LOCATE_NEW_MMGlobalClass_metamodel___abstractmetamodel___MMGlobalClass___init[] = "new MMGlobalClass abstractmetamodel::MMGlobalClass::init";
+val_t NEW_MMGlobalClass_metamodel___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 = 269;
+  fra.me.meth = LOCATE_NEW_MMGlobalClass_metamodel___abstractmetamodel___MMGlobalClass___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* metamodel/abstractmetamodel.nit:269 */
+  fra.me.REG[1] = NEW_metamodel___abstractmetamodel___MMGlobalClass();
+  INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMGlobalClass(fra.me.REG[1]);
+  metamodel___abstractmetamodel___MMGlobalClass___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_metamodel___abstractmetamodel___MMGlobalClass(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_metamodel___abstractmetamodel___MMGlobalProperty[69] = {
+  {(bigint) 159 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "MMGlobalProperty" /* 2: Class Name */},
+  {(bigint) 3 /* 3: MMGlobalProperty < Object: superclass typecheck marker */},
+  {(bigint) 159 /* 4: MMGlobalProperty < MMGlobalProperty: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 0 /* 19: MMGlobalProperty < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) metamodel___abstractmetamodel___MMGlobalProperty___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___syntax_base___MMGlobalProperty___check_visibility},
+  {(bigint) metamodel___virtualtype___MMGlobalProperty___is_virtual_type},
+  {(bigint) 1 /* 52: MMGlobalProperty < MMGlobalProperty: superclass init_table position */},
+  {(bigint) metamodel___abstractmetamodel___MMGlobalProperty___intro},
+  {(bigint) metamodel___abstractmetamodel___MMGlobalProperty___local_class},
+  {(bigint) metamodel___abstractmetamodel___MMGlobalProperty___property_hierarchy},
+  {(bigint) metamodel___abstractmetamodel___MMGlobalProperty___init},
+  {(bigint) metamodel___abstractmetamodel___MMGlobalProperty___add_local_property},
+  {(bigint) metamodel___abstractmetamodel___MMGlobalProperty___is_attribute},
+  {(bigint) metamodel___abstractmetamodel___MMGlobalProperty___is_method},
+  {(bigint) metamodel___abstractmetamodel___MMGlobalProperty___is_init},
+  {(bigint) metamodel___abstractmetamodel___MMGlobalProperty___is_init__eq},
+  {(bigint) metamodel___abstractmetamodel___MMGlobalProperty___is_init_for},
+  {(bigint) metamodel___abstractmetamodel___MMGlobalProperty___visibility_level},
+  {(bigint) metamodel___abstractmetamodel___MMGlobalProperty___visibility_level__eq},
+  {(bigint) compiling___compiling_base___MMGlobalProperty___meth_call},
+  {(bigint) compiling___compiling_base___MMGlobalProperty___attr_access},
+  {(bigint) compiling___compiling_base___MMGlobalProperty___vt_class_color},
+  {(bigint) compiling___compiling_base___MMGlobalProperty___vt_class_id},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute MMGlobalProperty::_intro */
+/* 3: Attribute MMGlobalProperty::_property_hierarchy */
+/* 4: Attribute MMGlobalProperty::_is_init */
+/* 5: Attribute MMGlobalProperty::_visibility_level */
+static const char LOCATE_INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMGlobalProperty[] = "init var of MMGlobalProperty";
+void INIT_ATTRIBUTES__metamodel___abstractmetamodel___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__metamodel___abstractmetamodel___MMGlobalProperty;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* metamodel/abstractmetamodel.nit:558 */
+  fra.me.REG[1] = NEW_PartialOrder_metamodel___partial_order___PartialOrder___init();
+  ATTR_metamodel___abstractmetamodel___MMGlobalProperty____property_hierarchy(fra.me.REG[0]) = fra.me.REG[1];
+  /* metamodel/abstractmetamodel.nit:582 */
+  REGB0 = TAG_Bool(0);
+  ATTR_metamodel___abstractmetamodel___MMGlobalProperty____is_init(fra.me.REG[0]) = REGB0;
+  /* metamodel/abstractmetamodel.nit:597 */
+  REGB0 = TAG_Int(1);
+  ATTR_metamodel___abstractmetamodel___MMGlobalProperty____visibility_level(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_metamodel___abstractmetamodel___MMGlobalProperty(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_metamodel___abstractmetamodel___MMGlobalProperty;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_metamodel___abstractmetamodel___MMGlobalProperty[] = "check new MMGlobalProperty";
+void CHECKNEW_metamodel___abstractmetamodel___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_metamodel___abstractmetamodel___MMGlobalProperty;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_metamodel___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_metamodel___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_metamodel___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_metamodel___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;
+}
+static const char LOCATE_NEW_MMGlobalProperty_metamodel___abstractmetamodel___MMGlobalProperty___init[] = "new MMGlobalProperty abstractmetamodel::MMGlobalProperty::init";
+val_t NEW_MMGlobalProperty_metamodel___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 = 560;
+  fra.me.meth = LOCATE_NEW_MMGlobalProperty_metamodel___abstractmetamodel___MMGlobalProperty___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* metamodel/abstractmetamodel.nit:560 */
+  fra.me.REG[1] = NEW_metamodel___abstractmetamodel___MMGlobalProperty();
+  INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMGlobalProperty(fra.me.REG[1]);
+  metamodel___abstractmetamodel___MMGlobalProperty___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_metamodel___abstractmetamodel___MMGlobalProperty(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_metamodel___abstractmetamodel___MMExplicitImport[60] = {
+  {(bigint) 167 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "MMExplicitImport" /* 2: Class Name */},
+  {(bigint) 3 /* 3: MMExplicitImport < Object: superclass typecheck marker */},
+  {(bigint) 167 /* 4: MMExplicitImport < MMExplicitImport: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 0 /* 19: MMExplicitImport < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) native_interface___frontier___MMExplicitImport_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) native_interface___frontier___MMExplicitImport___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) native_interface___frontier___MMExplicitImport___compile_friendly_to_frontier},
+  {(bigint) metamodel___static_type___MMExplicitImport___signature},
+  {(bigint) metamodel___static_type___MMExplicitImport___signature__eq},
+  {(bigint) metamodel___abstractmetamodel___MMExplicitImport___init},
+  {(bigint) 1 /* 54: MMExplicitImport < MMExplicitImport: superclass init_table position */},
+  {(bigint) metamodel___abstractmetamodel___MMExplicitImport___local_class},
+  {(bigint) metamodel___abstractmetamodel___MMExplicitImport___local_class__eq},
+  {(bigint) metamodel___abstractmetamodel___MMExplicitImport___method},
+  {(bigint) metamodel___abstractmetamodel___MMExplicitImport___method__eq},
+  {(bigint) metamodel___static_type___MMExplicitImport___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute MMExplicitImport::@signature */
+/* 3: Attribute MMExplicitImport::@local_class */
+/* 4: Attribute MMExplicitImport::@method */
+static const char LOCATE_INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMExplicitImport[] = "init var of MMExplicitImport";
+void INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMExplicitImport(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMExplicitImport;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_metamodel___abstractmetamodel___MMExplicitImport(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_metamodel___abstractmetamodel___MMExplicitImport;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_metamodel___abstractmetamodel___MMExplicitImport[] = "check new MMExplicitImport";
+void CHECKNEW_metamodel___abstractmetamodel___MMExplicitImport(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_metamodel___abstractmetamodel___MMExplicitImport;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMExplicitImport_____atlocal_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_metamodel___abstractmetamodel___MMExplicitImport_____atmethod(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@method", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMExplicitImport_____atsignature(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@signature", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_MMExplicitImport_metamodel___abstractmetamodel___MMExplicitImport___init[] = "new MMExplicitImport static_type::MMExplicitImport::(abstractmetamodel::MMExplicitImport::init)";
+val_t NEW_MMExplicitImport_metamodel___abstractmetamodel___MMExplicitImport___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 = 253;
+  fra.me.meth = LOCATE_NEW_MMExplicitImport_metamodel___abstractmetamodel___MMExplicitImport___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  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/static_type.nit:253 */
+  fra.me.REG[2] = NEW_metamodel___abstractmetamodel___MMExplicitImport();
+  INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMExplicitImport(fra.me.REG[2]);
+  metamodel___static_type___MMExplicitImport___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_metamodel___abstractmetamodel___MMExplicitImport(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_metamodel___static_type___MMParam[66] = {
+  {(bigint) 3115 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "MMParam" /* 2: Class Name */},
+  {(bigint) 3 /* 3: MMParam < Object: superclass typecheck marker */},
+  {(bigint) 119 /* 4: MMParam < NiVariable: superclass typecheck marker */},
+  {(bigint) 3115 /* 5: MMParam < MMParam: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: MMParam < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) metamodel___static_type___MMParam___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 50: MMParam < NiVariable: superclass init_table position */},
+  {(bigint) native_interface___frontier___MMParam___ni_from_name},
+  {(bigint) native_interface___frontier___MMParam___ni_to_name},
+  {(bigint) native_interface___frontier___MMParam___ni_type},
+  {(bigint) native_interface___frontier___NiVariable___needs_preparation},
+  {(bigint) native_interface___frontier___NiVariable___prepare_for_nit},
+  {(bigint) native_interface___frontier___NiVariable___prepare_for_c},
+  {(bigint) native_interface___frontier___NiVariable___as_arg_to_nit},
+  {(bigint) native_interface___frontier___NiVariable___as_arg_to_c},
+  {(bigint) native_interface___frontier___NiVariable___init},
+  {(bigint) 2 /* 60: MMParam < MMParam: superclass init_table position */},
+  {(bigint) metamodel___static_type___MMParam___mmtype},
+  {(bigint) metamodel___static_type___MMParam___mmtype__eq},
+  {(bigint) metamodel___static_type___MMParam___name},
+  {(bigint) metamodel___static_type___MMParam___name__eq},
+  {(bigint) metamodel___static_type___MMParam___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute MMParam::@mmtype */
+/* 3: Attribute MMParam::@name */
+static const char LOCATE_INIT_ATTRIBUTES__metamodel___static_type___MMParam[] = "init var of MMParam";
+void INIT_ATTRIBUTES__metamodel___static_type___MMParam(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__metamodel___static_type___MMParam;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_metamodel___static_type___MMParam(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_metamodel___static_type___MMParam;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_metamodel___static_type___MMParam[] = "check new MMParam";
+void CHECKNEW_metamodel___static_type___MMParam(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_metamodel___static_type___MMParam;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMParam_____atmmtype(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@mmtype", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMParam_____atname(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;
+}
+static const char LOCATE_NEW_MMParam_metamodel___static_type___MMParam___init[] = "new MMParam static_type::MMParam::init";
+val_t NEW_MMParam_metamodel___static_type___MMParam___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 = 74;
+  fra.me.meth = LOCATE_NEW_MMParam_metamodel___static_type___MMParam___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  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/static_type.nit:74 */
+  fra.me.REG[2] = NEW_metamodel___static_type___MMParam();
+  INIT_ATTRIBUTES__metamodel___static_type___MMParam(fra.me.REG[2]);
+  metamodel___static_type___MMParam___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_metamodel___static_type___MMParam(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_metamodel___static_type___MMSignature[76] = {
+  {(bigint) 147 /* 0: Identity */},
+  {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "MMSignature" /* 2: Class Name */},
+  {(bigint) 3 /* 3: MMSignature < Object: superclass typecheck marker */},
+  {(bigint) 147 /* 4: MMSignature < MMSignature: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 0 /* 19: MMSignature < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) metamodel___static_type___MMSignature___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) native_interface___frontier___MMSignature___recv_ni_variable},
+  {(bigint) native_interface___frontier___MMSignature___recv_ni_variable__eq},
+  {(bigint) native_interface___frontier___MMSignature___return_ni_variable},
+  {(bigint) native_interface___frontier___MMSignature___return_ni_variable__eq},
+  {(bigint) metamodel___vararg___MMSignature___init},
+  {(bigint) native_interface___frontier___MMSignature___compile_frontier},
+  {(bigint) icode___icode_builder___MMSignature___generate_empty_iroutine},
+  {(bigint) icode___icode_builder___MMSignature___generate_empty_iclosuredef},
+  {(bigint) metamodel___vararg___MMSignature___vararg_rank},
+  {(bigint) metamodel___vararg___MMSignature___vararg_rank__eq},
+  {(bigint) metamodel___vararg___MMSignature___has_vararg},
+  {(bigint) metamodel___static_type___MMSignature___adaptation_to},
+  {(bigint) metamodel___static_type___MMSignature___not_for_self},
+  {(bigint) metamodel___static_type___MMSignature___init},
+  {(bigint) 1 /* 64: MMSignature < MMSignature: superclass init_table position */},
+  {(bigint) metamodel___static_type___MMSignature___recv},
+  {(bigint) metamodel___static_type___MMSignature___params},
+  {(bigint) metamodel___static_type___MMSignature___return_type},
+  {(bigint) metamodel___static_type___MMSignature___closures},
+  {(bigint) metamodel___static_type___MMSignature___closure_named},
+  {(bigint) metamodel___static_type___MMSignature___arity},
+  {(bigint) metamodel___static_type___MMSignature_____l},
+  {(bigint) metamodel___static_type___MMSignature_____bra},
+  {(bigint) metamodel___vararg___MMSignature___adaptation_to},
+  {(bigint) metamodel___vararg___MMSignature___not_for_self},
+  {(bigint) native_interface___frontier___MMSignature___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute MMSignature::@recv_ni_variable */
+/* 3: Attribute MMSignature::@return_ni_variable */
+/* 4: Attribute MMSignature::_vararg_rank */
+/* 5: Attribute MMSignature::_recv */
+/* 6: Attribute MMSignature::_params */
+/* 7: Attribute MMSignature::_return_type */
+/* 8: Attribute MMSignature::_closures */
+/* 9: Attribute MMSignature::_not_for_self_cache */
+static const char LOCATE_INIT_ATTRIBUTES__metamodel___static_type___MMSignature[] = "init var of MMSignature";
+void INIT_ATTRIBUTES__metamodel___static_type___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__metamodel___static_type___MMSignature;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* metamodel/static_type.nit:95 */
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
+  ATTR_metamodel___static_type___MMSignature____closures(fra.me.REG[0]) = fra.me.REG[1];
+  /* metamodel/static_type.nit:193 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_metamodel___static_type___MMSignature____not_for_self_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_metamodel___static_type___MMSignature(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 10);
+  obj->vft = (classtable_elt_t*)VFT_metamodel___static_type___MMSignature;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_metamodel___static_type___MMSignature[] = "check new MMSignature";
+void CHECKNEW_metamodel___static_type___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_metamodel___static_type___MMSignature;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_metamodel___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_metamodel___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_metamodel___static_type___MMSignature____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_metamodel___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_native_interface___frontier___MMSignature_____atrecv_ni_variable(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@recv_ni_variable", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_MMSignature_metamodel___static_type___MMSignature___init[] = "new MMSignature frontier::MMSignature::(static_type::MMSignature::init)";
+val_t NEW_MMSignature_metamodel___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 = 329;
+  fra.me.meth = LOCATE_NEW_MMSignature_metamodel___static_type___MMSignature___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  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;
+  /* native_interface/frontier.nit:329 */
+  fra.me.REG[3] = NEW_metamodel___static_type___MMSignature();
+  INIT_ATTRIBUTES__metamodel___static_type___MMSignature(fra.me.REG[3]);
+  native_interface___frontier___MMSignature___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_metamodel___static_type___MMSignature(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
+}
+const classtable_elt_t VFT_metamodel___static_type___MMClosure[59] = {
+  {(bigint) 179 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "MMClosure" /* 2: Class Name */},
+  {(bigint) 3 /* 3: MMClosure < Object: superclass typecheck marker */},
+  {(bigint) 179 /* 4: MMClosure < MMClosure: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 0 /* 19: MMClosure < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 50: MMClosure < MMClosure: superclass init_table position */},
+  {(bigint) metamodel___static_type___MMClosure___name},
+  {(bigint) metamodel___static_type___MMClosure___signature},
+  {(bigint) metamodel___static_type___MMClosure___is_break},
+  {(bigint) metamodel___static_type___MMClosure___is_optional},
+  {(bigint) metamodel___static_type___MMClosure___adaptation_to},
+  {(bigint) metamodel___static_type___MMClosure___init},
+  {(bigint) metamodel___static_type___MMClosure___not_for_self},
+  {(bigint) metamodel___static_type___MMClosure_____l},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute MMClosure::_name */
+/* 3: Attribute MMClosure::_signature */
+/* 4: Attribute MMClosure::_is_break */
+/* 5: Attribute MMClosure::_is_optional */
+static const char LOCATE_INIT_ATTRIBUTES__metamodel___static_type___MMClosure[] = "init var of MMClosure";
+void INIT_ATTRIBUTES__metamodel___static_type___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__metamodel___static_type___MMClosure;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_metamodel___static_type___MMClosure(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_metamodel___static_type___MMClosure;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_metamodel___static_type___MMClosure[] = "check new MMClosure";
+void CHECKNEW_metamodel___static_type___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_metamodel___static_type___MMClosure;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_metamodel___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_metamodel___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_metamodel___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_metamodel___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;
+}
+static const char LOCATE_NEW_MMClosure_metamodel___static_type___MMClosure___init[] = "new MMClosure static_type::MMClosure::init";
+val_t NEW_MMClosure_metamodel___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 = 282;
+  fra.me.meth = LOCATE_NEW_MMClosure_metamodel___static_type___MMClosure___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  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:282 */
+  fra.me.REG[2] = NEW_metamodel___static_type___MMClosure();
+  INIT_ATTRIBUTES__metamodel___static_type___MMClosure(fra.me.REG[2]);
+  metamodel___static_type___MMClosure___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], REGB0, REGB1, init_table);
+  CHECKNEW_metamodel___static_type___MMClosure(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_metamodel___static_type___MMNullableType[88] = {
+  {(bigint) 3119 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "MMNullableType" /* 2: Class Name */},
+  {(bigint) 3 /* 3: MMNullableType < Object: superclass typecheck marker */},
+  {(bigint) 143 /* 4: MMNullableType < MMType: superclass typecheck marker */},
+  {(bigint) 3119 /* 5: MMNullableType < MMNullableType: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: MMNullableType < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) metamodel___static_type___MMNullableType___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) native_interface___frontier___MMType___compile_check_isa},
+  {(bigint) native_interface___frontier___MMType___compile_condition_isa},
+  {(bigint) native_interface___frontier___MMType___compile_to_frontier},
+  {(bigint) native_interface___frontier___MMType___compile_new_local_ref},
+  {(bigint) native_interface___frontier___MMType___compile_stub_local_ref},
+  {(bigint) native_interface___ni_metamodel___MMType___friendly_extern_name},
+  {(bigint) native_interface___ni_metamodel___MMType___mangled_name},
+  {(bigint) native_interface___ni_metamodel___MMType___from_native},
+  {(bigint) native_interface___ni_metamodel___MMType___assign_to_friendly},
+  {(bigint) native_interface___ni_metamodel___MMType___assign_from_friendly},
+  {(bigint) native_interface___ni_metamodel___MMType___uses_nitni_ref},
+  {(bigint) native_interface___ni_metamodel___MMType___friendly_null_getter},
+  {(bigint) native_interface___ni_metamodel___MMType___local_friendly_null_getter_from},
+  {(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) metamodel___genericity___MMType___is_generic},
+  {(bigint) metamodel___type_formal___MMType___direct_type},
+  {(bigint) metamodel___type_formal___MMNullableType___has_formal},
+  {(bigint) 0 /* 71: MMNullableType < MMType: superclass init_table position */},
+  {(bigint) metamodel___static_type___MMNullableType___mmmodule},
+  {(bigint) metamodel___static_type___MMNullableType___local_class},
+  {(bigint) metamodel___static_type___MMNullableType___is_valid},
+  {(bigint) metamodel___static_type___MMNullableType_____l},
+  {(bigint) metamodel___static_type___MMNullableType___is_supertype},
+  {(bigint) metamodel___static_type___MMNullableType___for_module},
+  {(bigint) metamodel___static_type___MMNullableType___adapt_to},
+  {(bigint) metamodel___static_type___MMNullableType___upcast_for},
+  {(bigint) metamodel___static_type___MMNullableType___not_for_self},
+  {(bigint) metamodel___static_type___MMNullableType___is_nullable},
+  {(bigint) metamodel___static_type___MMNullableType___as_nullable},
+  {(bigint) metamodel___static_type___MMNullableType___as_notnull},
+  {(bigint) metamodel___static_type___MMType___init},
+  {(bigint) 2 /* 85: MMNullableType < MMNullableType: superclass init_table position */},
+  {(bigint) metamodel___static_type___MMNullableType___base_type},
+  {(bigint) metamodel___static_type___MMNullableType___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute MMNullableType::_as_nullable_cache */
+/* 3: Attribute MMNullableType::_base_type */
+static const char LOCATE_INIT_ATTRIBUTES__metamodel___static_type___MMNullableType[] = "init var of MMNullableType";
+void INIT_ATTRIBUTES__metamodel___static_type___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__metamodel___static_type___MMNullableType;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* metamodel/static_type.nit:397 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_metamodel___static_type___MMType____as_nullable_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_metamodel___static_type___MMNullableType(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_metamodel___static_type___MMNullableType;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_metamodel___static_type___MMNullableType[] = "check new MMNullableType";
+void CHECKNEW_metamodel___static_type___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_metamodel___static_type___MMNullableType;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_metamodel___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;
+}
+static const char LOCATE_NEW_MMNullableType_metamodel___static_type___MMNullableType___init[] = "new MMNullableType static_type::MMNullableType::init";
+val_t NEW_MMNullableType_metamodel___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 = 425;
+  fra.me.meth = LOCATE_NEW_MMNullableType_metamodel___static_type___MMNullableType___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* metamodel/static_type.nit:425 */
+  fra.me.REG[1] = NEW_metamodel___static_type___MMNullableType();
+  INIT_ATTRIBUTES__metamodel___static_type___MMNullableType(fra.me.REG[1]);
+  metamodel___static_type___MMNullableType___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_metamodel___static_type___MMNullableType(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_metamodel___static_type___MMTypeSimpleClass[89] = {
+  {(bigint) 3503 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "MMTypeSimpleClass" /* 2: Class Name */},
+  {(bigint) 3 /* 3: MMTypeSimpleClass < Object: superclass typecheck marker */},
+  {(bigint) 143 /* 4: MMTypeSimpleClass < MMType: superclass typecheck marker */},
+  {(bigint) 3099 /* 5: MMTypeSimpleClass < MMTypeClass: superclass typecheck marker */},
+  {(bigint) 3503 /* 6: MMTypeSimpleClass < MMTypeSimpleClass: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: MMTypeSimpleClass < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) metamodel___static_type___MMTypeClass___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) native_interface___frontier___MMType___compile_check_isa},
+  {(bigint) native_interface___frontier___MMType___compile_condition_isa},
+  {(bigint) native_interface___frontier___MMType___compile_to_frontier},
+  {(bigint) native_interface___frontier___MMType___compile_new_local_ref},
+  {(bigint) native_interface___frontier___MMType___compile_stub_local_ref},
+  {(bigint) native_interface___ni_metamodel___MMType___friendly_extern_name},
+  {(bigint) native_interface___ni_metamodel___MMType___mangled_name},
+  {(bigint) native_interface___ni_metamodel___MMType___from_native},
+  {(bigint) native_interface___ni_metamodel___MMType___assign_to_friendly},
+  {(bigint) native_interface___ni_metamodel___MMType___assign_from_friendly},
+  {(bigint) native_interface___ni_metamodel___MMType___uses_nitni_ref},
+  {(bigint) native_interface___ni_metamodel___MMType___friendly_null_getter},
+  {(bigint) native_interface___ni_metamodel___MMType___local_friendly_null_getter_from},
+  {(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) metamodel___genericity___MMTypeSimpleClass___is_generic},
+  {(bigint) metamodel___type_formal___MMType___direct_type},
+  {(bigint) metamodel___type_formal___MMType___has_formal},
+  {(bigint) 1 /* 71: MMTypeSimpleClass < MMType: superclass init_table position */},
+  {(bigint) metamodel___static_type___MMTypeClass___mmmodule},
+  {(bigint) metamodel___static_type___MMTypeClass___local_class},
+  {(bigint) metamodel___static_type___MMType___is_valid},
+  {(bigint) metamodel___static_type___MMTypeClass_____l},
+  {(bigint) metamodel___static_type___MMTypeSimpleClass___is_supertype},
+  {(bigint) metamodel___static_type___MMTypeSimpleClass___for_module},
+  {(bigint) metamodel___static_type___MMTypeSimpleClass___adapt_to},
+  {(bigint) metamodel___static_type___MMTypeClass___upcast_for},
+  {(bigint) metamodel___static_type___MMType___not_for_self},
+  {(bigint) metamodel___static_type___MMType___is_nullable},
+  {(bigint) metamodel___static_type___MMType___as_nullable},
+  {(bigint) metamodel___static_type___MMType___as_notnull},
+  {(bigint) metamodel___static_type___MMType___init},
+  {(bigint) 0 /* 85: MMTypeSimpleClass < MMTypeClass: superclass init_table position */},
+  {(bigint) metamodel___static_type___MMTypeClass___init},
+  {(bigint) 3 /* 87: MMTypeSimpleClass < MMTypeSimpleClass: superclass init_table position */},
+  {(bigint) metamodel___static_type___MMTypeSimpleClass___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute MMTypeSimpleClass::_as_nullable_cache */
+/* 3: Attribute MMTypeSimpleClass::_local_class */
+static const char LOCATE_INIT_ATTRIBUTES__metamodel___static_type___MMTypeSimpleClass[] = "init var of MMTypeSimpleClass";
+void INIT_ATTRIBUTES__metamodel___static_type___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__metamodel___static_type___MMTypeSimpleClass;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* metamodel/static_type.nit:397 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_metamodel___static_type___MMType____as_nullable_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_metamodel___static_type___MMTypeSimpleClass(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_metamodel___static_type___MMTypeSimpleClass;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_metamodel___static_type___MMTypeSimpleClass[] = "check new MMTypeSimpleClass";
+void CHECKNEW_metamodel___static_type___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_metamodel___static_type___MMTypeSimpleClass;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_metamodel___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;
+}
+static const char LOCATE_NEW_MMTypeSimpleClass_metamodel___static_type___MMTypeSimpleClass___init[] = "new MMTypeSimpleClass static_type::MMTypeSimpleClass::init";
+val_t NEW_MMTypeSimpleClass_metamodel___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 = 511;
+  fra.me.meth = LOCATE_NEW_MMTypeSimpleClass_metamodel___static_type___MMTypeSimpleClass___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* metamodel/static_type.nit:511 */
+  fra.me.REG[1] = NEW_metamodel___static_type___MMTypeSimpleClass();
+  INIT_ATTRIBUTES__metamodel___static_type___MMTypeSimpleClass(fra.me.REG[1]);
+  metamodel___static_type___MMTypeSimpleClass___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_metamodel___static_type___MMTypeSimpleClass(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_metamodel___static_type___MMTypeNone[87] = {
+  {(bigint) 3091 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "MMTypeNone" /* 2: Class Name */},
+  {(bigint) 3 /* 3: MMTypeNone < Object: superclass typecheck marker */},
+  {(bigint) 143 /* 4: MMTypeNone < MMType: superclass typecheck marker */},
+  {(bigint) 3091 /* 5: MMTypeNone < MMTypeNone: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: MMTypeNone < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) metamodel___static_type___MMTypeNone___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) native_interface___frontier___MMType___compile_check_isa},
+  {(bigint) native_interface___frontier___MMType___compile_condition_isa},
+  {(bigint) native_interface___frontier___MMType___compile_to_frontier},
+  {(bigint) native_interface___frontier___MMType___compile_new_local_ref},
+  {(bigint) native_interface___frontier___MMType___compile_stub_local_ref},
+  {(bigint) native_interface___ni_metamodel___MMType___friendly_extern_name},
+  {(bigint) native_interface___ni_metamodel___MMType___mangled_name},
+  {(bigint) native_interface___ni_metamodel___MMType___from_native},
+  {(bigint) native_interface___ni_metamodel___MMType___assign_to_friendly},
+  {(bigint) native_interface___ni_metamodel___MMType___assign_from_friendly},
+  {(bigint) native_interface___ni_metamodel___MMType___uses_nitni_ref},
+  {(bigint) native_interface___ni_metamodel___MMType___friendly_null_getter},
+  {(bigint) native_interface___ni_metamodel___MMType___local_friendly_null_getter_from},
+  {(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) metamodel___genericity___MMTypeNone___is_generic},
+  {(bigint) metamodel___type_formal___MMType___direct_type},
+  {(bigint) metamodel___type_formal___MMType___has_formal},
+  {(bigint) 0 /* 71: MMTypeNone < MMType: superclass init_table position */},
+  {(bigint) metamodel___static_type___MMTypeNone___mmmodule},
+  {(bigint) metamodel___static_type___MMTypeNone___local_class},
+  {(bigint) metamodel___static_type___MMType___is_valid},
+  {(bigint) metamodel___static_type___MMTypeNone_____l},
+  {(bigint) metamodel___static_type___MMTypeNone___is_supertype},
+  {(bigint) metamodel___genericity___MMTypeNone___for_module},
+  {(bigint) metamodel___genericity___MMTypeNone___adapt_to},
+  {(bigint) metamodel___static_type___MMTypeNone___upcast_for},
+  {(bigint) metamodel___static_type___MMType___not_for_self},
+  {(bigint) metamodel___static_type___MMTypeNone___is_nullable},
+  {(bigint) metamodel___static_type___MMTypeNone___as_nullable},
+  {(bigint) metamodel___static_type___MMTypeNone___as_notnull},
+  {(bigint) metamodel___static_type___MMType___init},
+  {(bigint) 2 /* 85: MMTypeNone < MMTypeNone: superclass init_table position */},
+  {(bigint) metamodel___static_type___MMTypeNone___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute MMTypeNone::_as_nullable_cache */
+/* 3: Attribute MMTypeNone::_mmmodule */
+static const char LOCATE_INIT_ATTRIBUTES__metamodel___static_type___MMTypeNone[] = "init var of MMTypeNone";
+void INIT_ATTRIBUTES__metamodel___static_type___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__metamodel___static_type___MMTypeNone;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* metamodel/static_type.nit:397 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_metamodel___static_type___MMType____as_nullable_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_metamodel___static_type___MMTypeNone(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_metamodel___static_type___MMTypeNone;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_metamodel___static_type___MMTypeNone[] = "check new MMTypeNone";
+void CHECKNEW_metamodel___static_type___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_metamodel___static_type___MMTypeNone;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_metamodel___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;
+}
+static const char LOCATE_NEW_MMTypeNone_metamodel___static_type___MMTypeNone___init[] = "new MMTypeNone static_type::MMTypeNone::init";
+val_t NEW_MMTypeNone_metamodel___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 = 530;
+  fra.me.meth = LOCATE_NEW_MMTypeNone_metamodel___static_type___MMTypeNone___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* metamodel/static_type.nit:530 */
+  fra.me.REG[1] = NEW_metamodel___static_type___MMTypeNone();
+  INIT_ATTRIBUTES__metamodel___static_type___MMTypeNone(fra.me.REG[1]);
+  metamodel___static_type___MMTypeNone___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_metamodel___static_type___MMTypeNone(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_metamodel___static_type___MMImportedCast[71] = {
+  {(bigint) 155 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "MMImportedCast" /* 2: Class Name */},
+  {(bigint) 3 /* 3: MMImportedCast < Object: superclass typecheck marker */},
+  {(bigint) 155 /* 4: MMImportedCast < MMImportedCast: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 0 /* 19: MMImportedCast < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) native_interface___frontier___MMImportedCast_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) native_interface___frontier___MMImportedCast___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) native_interface___frontier___MMImportedCast___compile_to_frontier},
+  {(bigint) native_interface___frontier___MMImportedCast___compile_as},
+  {(bigint) native_interface___frontier___MMImportedCast___compile_is},
+  {(bigint) native_interface___frontier___MMImportedCast___compile_check_is_not_null},
+  {(bigint) native_interface___ni_metamodel___MMImportedCast___in_name},
+  {(bigint) native_interface___ni_metamodel___MMImportedCast___in_name__eq},
+  {(bigint) native_interface___ni_metamodel___MMImportedCast___as_friendly_extern_name},
+  {(bigint) native_interface___ni_metamodel___MMImportedCast___as_local_cname},
+  {(bigint) native_interface___ni_metamodel___MMImportedCast___as_local_csignature},
+  {(bigint) native_interface___ni_metamodel___MMImportedCast___as_friendly_csignature},
+  {(bigint) native_interface___ni_metamodel___MMImportedCast___is_a_friendly_extern_name},
+  {(bigint) native_interface___ni_metamodel___MMImportedCast___is_a_local_cname},
+  {(bigint) native_interface___ni_metamodel___MMImportedCast___is_a_local_csignature},
+  {(bigint) native_interface___ni_metamodel___MMImportedCast___is_a_friendly_csignature},
+  {(bigint) 1 /* 64: MMImportedCast < MMImportedCast: superclass init_table position */},
+  {(bigint) metamodel___static_type___MMImportedCast___from},
+  {(bigint) metamodel___static_type___MMImportedCast___to},
+  {(bigint) metamodel___static_type___MMImportedCast___is_about_nullable_only},
+  {(bigint) metamodel___static_type___MMImportedCast___is_not_null_to_nullable},
+  {(bigint) metamodel___static_type___MMImportedCast___is_nullable_to_not_null},
+  {(bigint) metamodel___static_type___MMImportedCast___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute MMImportedCast::@in_name */
+/* 3: Attribute MMImportedCast::_from */
+/* 4: Attribute MMImportedCast::_to */
+static const char LOCATE_INIT_ATTRIBUTES__metamodel___static_type___MMImportedCast[] = "init var of MMImportedCast";
+void INIT_ATTRIBUTES__metamodel___static_type___MMImportedCast(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__metamodel___static_type___MMImportedCast;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* native_interface/ni_metamodel.nit:229 */
+  if (!once_value_1) {
+    fra.me.REG[1] = BOX_NativeString("value");
+    REGB0 = TAG_Int(5);
+    fra.me.REG[1] = NEW_String_standard___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_native_interface___ni_metamodel___MMImportedCast_____atin_name(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_metamodel___static_type___MMImportedCast(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_metamodel___static_type___MMImportedCast;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_metamodel___static_type___MMImportedCast[] = "check new MMImportedCast";
+void CHECKNEW_metamodel___static_type___MMImportedCast(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_metamodel___static_type___MMImportedCast;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMImportedCast____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_metamodel___static_type___MMImportedCast____to(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_to", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_native_interface___ni_metamodel___MMImportedCast_____atin_name(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@in_name", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_MMImportedCast_metamodel___static_type___MMImportedCast___init[] = "new MMImportedCast static_type::MMImportedCast::init";
+val_t NEW_MMImportedCast_metamodel___static_type___MMImportedCast___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 = 0;
+  fra.me.meth = LOCATE_NEW_MMImportedCast_metamodel___static_type___MMImportedCast___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  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_metamodel___static_type___MMImportedCast();
+  INIT_ATTRIBUTES__metamodel___static_type___MMImportedCast(fra.me.REG[2]);
+  metamodel___static_type___MMImportedCast___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_metamodel___static_type___MMImportedCast(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_metamodel___inheritance___MMImplicitLocalClass[154] = {
+  {(bigint) 3531 /* 0: Identity */},
+  {(bigint) 28 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "MMImplicitLocalClass" /* 2: Class Name */},
+  {(bigint) 3 /* 3: MMImplicitLocalClass < Object: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {(bigint) 259 /* 5: MMImplicitLocalClass < FFIVisited: superclass typecheck marker */},
+  {(bigint) 3131 /* 6: MMImplicitLocalClass < MMLocalClass: superclass typecheck marker */},
+  {(bigint) 3531 /* 7: MMImplicitLocalClass < MMImplicitLocalClass: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: MMImplicitLocalClass < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) metamodel___abstractmetamodel___MMLocalClass___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(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 :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 1 /* 72: MMImplicitLocalClass < FFIVisited: superclass init_table position */},
+  {(bigint) ffi___ffi_base___FFIVisited___accept_ffi_visitor},
+  {(bigint) abstracttool___MMLocalClass___dump_properties},
+  {(bigint) syntax___extern_type_inheritance___MMLocalClass___extern_type_origin},
+  {(bigint) syntax___extern_type_inheritance___MMLocalClass___extern_type_origin_cache},
+  {(bigint) syntax___extern_type_inheritance___MMLocalClass___extern_type_origin_cache__eq},
+  {(bigint) syntax___extern_type_inheritance___MMLocalClass___extern_type_cache},
+  {(bigint) syntax___extern_type_inheritance___MMLocalClass___extern_type_cache__eq},
+  {(bigint) syntax___extern_type_inheritance___MMLocalClass___extern_type},
+  {(bigint) syntax___extern_type_inheritance___MMLocalClass___extern_type__eq},
+  {(bigint) syntax___mmbuilder___MMLocalClass___accept_class_visitor},
+  {(bigint) syntax___mmbuilder___MMLocalClass___accept_properties_visitor},
+  {(bigint) syntax___extern_type_inheritance___MMLocalClass___extern_c_type},
+  {(bigint) primitive_info___MMLocalClass___primitive_info},
+  {(bigint) primitive_info___MMLocalClass___primitive_ctypes},
+  {(bigint) metamodel___genericity___MMLocalClass___get_formal},
+  {(bigint) metamodel___genericity___MMLocalClass___register_formal},
+  {(bigint) metamodel___genericity___MMLocalClass___get_instantiate_type},
+  {(bigint) metamodel___genericity___MMLocalClass___formals_types},
+  {(bigint) metamodel___static_type___MMLocalClass___get_type},
+  {(bigint) metamodel___genericity___MMLocalClass___is_generic},
+  {(bigint) metamodel___inheritance___MMLocalClass___compute_super_classes},
+  {(bigint) metamodel___inheritance___MMLocalClass___compute_ancestors},
+  {(bigint) metamodel___inheritance___MMLocalClass___inherit_global_properties},
+  {(bigint) metamodel___inheritance___MMLocalClass___make_visible_an_inherited_global_property},
+  {(bigint) metamodel___inheritance___MMLocalClass___add_direct_parent},
+  {(bigint) metamodel___inheritance___MMLocalClass___computed_super_classes},
+  {(bigint) metamodel___inheritance___MMLocalClass___computed_ancestors},
+  {(bigint) metamodel___inheritance___MMLocalClass___ancestor_for},
+  {(bigint) metamodel___inheritance___MMLocalClass___add_default_any_class},
+  {(bigint) metamodel___inheritance___MMLocalClass___add_super_classes},
+  {(bigint) metamodel___inheritance___MMLocalClass___add_explicit_classes},
+  {(bigint) metamodel___inheritance___MMLocalClass___compute_super_parents},
+  {(bigint) metamodel___inheritance___MMLocalClass___build_ancestors},
+  {(bigint) metamodel___inheritance___MMLocalClass___group_ancestors},
+  {(bigint) metamodel___inheritance___MMLocalClass___merge_ancestors},
+  {(bigint) metamodel___inheritance___MMLocalClass___inherit_local_property},
+  {(bigint) metamodel___genericity___MMLocalClass___get_type},
+  {(bigint) metamodel___static_type___MMLocalClass___add_ancestor},
+  {(bigint) metamodel___static_type___MMLocalClass___ancestors},
+  {(bigint) metamodel___static_type___MMLocalClass___ancestor},
+  {(bigint) 0 /* 113: MMImplicitLocalClass < MMLocalClass: superclass init_table position */},
+  {(bigint) metamodel___abstractmetamodel___MMLocalClass___name},
+  {(bigint) metamodel___abstractmetamodel___MMLocalClass___arity},
+  {(bigint) metamodel___abstractmetamodel___MMLocalClass___mmmodule},
+  {(bigint) metamodel___abstractmetamodel___MMLocalClass___global},
+  {(bigint) metamodel___abstractmetamodel___MMLocalClass___crhe},
+  {(bigint) metamodel___abstractmetamodel___MMLocalClass___cshe},
+  {(bigint) metamodel___abstractmetamodel___MMLocalClass___che},
+  {(bigint) metamodel___inheritance___MMLocalClass___global_properties},
+  {(bigint) metamodel___abstractmetamodel___MMLocalClass___local_local_properties},
+  {(bigint) metamodel___abstractmetamodel___MMLocalClass___init},
+  {(bigint) metamodel___abstractmetamodel___MMLocalClass___for_module},
+  {(bigint) metamodel___abstractmetamodel___MMLocalClass___new_global},
+  {(bigint) metamodel___abstractmetamodel___MMLocalClass___set_global},
+  {(bigint) metamodel___inheritance___MMLocalClass___has_global_property_by_name},
+  {(bigint) metamodel___abstractmetamodel___MMLocalClass___get_property_by_name},
+  {(bigint) metamodel___abstractmetamodel___MMLocalClass___attribute},
+  {(bigint) metamodel___abstractmetamodel___MMLocalClass___method},
+  {(bigint) metamodel___abstractmetamodel___MMLocalClass___select_method},
+  {(bigint) metamodel___abstractmetamodel___MMLocalClass___select_attribute},
+  {(bigint) metamodel___abstractmetamodel___MMLocalClass___super_methods_named},
+  {(bigint) metamodel___abstractmetamodel___MMLocalClass___register_local_property},
+  {(bigint) metamodel___abstractmetamodel___MMLocalClass___register_global_property},
+  {(bigint) metamodel___inheritance___MMLocalClass___has_global_property},
+  {(bigint) metamodel___inheritance___MMLocalClass_____bra},
+  {(bigint) metamodel___abstractmetamodel___MMLocalClass___context},
+  {(bigint) metamodel___abstractmetamodel___MMLocalClass___total_order_compare},
+  {(bigint) metamodel___virtualtype___MMLocalClass___virtual_type},
+  {(bigint) metamodel___virtualtype___MMLocalClass___select_virtual_type},
+  {(bigint) ffi___ffi_base___MMLocalClass___c_type},
+  {(bigint) compiling___icode_generator___MMLocalClass___generate_icode_file},
+  {(bigint) compiling___compiling_base___MMLocalClass___cname},
+  {(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___compiling_global___MMLocalClass___declare_tables_to_c},
+  {(bigint) compiling___compiling_global___MMLocalClass___compile_tables_to_c},
+  {(bigint) 3 /* 152: MMImplicitLocalClass < MMImplicitLocalClass: superclass init_table position */},
+  {(bigint) metamodel___inheritance___MMImplicitLocalClass___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute MMImplicitLocalClass::@extern_type_origin_cache */
+/* 3: Attribute MMImplicitLocalClass::@extern_type_cache */
+/* 4: Attribute MMImplicitLocalClass::@extern_type */
+/* 5: Attribute MMImplicitLocalClass::_primitive_info_cache */
+/* 6: Attribute MMImplicitLocalClass::_primitive_info_b */
+/* 7: Attribute MMImplicitLocalClass::_types */
+/* 8: Attribute MMImplicitLocalClass::_formals_types */
+/* 9: Attribute MMImplicitLocalClass::_direct_parents */
+/* 10: Attribute MMImplicitLocalClass::_computing_super */
+/* 11: Attribute MMImplicitLocalClass::_are_global_properties_inherited */
+/* 12: Attribute MMImplicitLocalClass::_base_type_cache */
+/* 13: Attribute MMImplicitLocalClass::_ancestors */
+/* 14: Attribute MMImplicitLocalClass::_name */
+/* 15: Attribute MMImplicitLocalClass::_arity */
+/* 16: Attribute MMImplicitLocalClass::_mmmodule */
+/* 17: Attribute MMImplicitLocalClass::_global */
+/* 18: Attribute MMImplicitLocalClass::_crhe */
+/* 19: Attribute MMImplicitLocalClass::_cshe */
+/* 20: Attribute MMImplicitLocalClass::_che */
+/* 21: Attribute MMImplicitLocalClass::_local_property_by_global */
+/* 22: Attribute MMImplicitLocalClass::_global_properties */
+/* 23: Attribute MMImplicitLocalClass::_local_local_properties */
+/* 24: Attribute MMImplicitLocalClass::_properties_by_name */
+/* 25: Attribute MMImplicitLocalClass::_init_var_iroutine */
+/* 26: Attribute MMImplicitLocalClass::_checknew_iroutine */
+/* 27: Attribute MMImplicitLocalClass::_new_instance_iroutine */
+static const char LOCATE_INIT_ATTRIBUTES__metamodel___inheritance___MMImplicitLocalClass[] = "init var of MMImplicitLocalClass";
+void INIT_ATTRIBUTES__metamodel___inheritance___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__metamodel___inheritance___MMImplicitLocalClass;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* metamodel/abstractmetamodel.nit:365 */
+  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
+  ATTR_metamodel___abstractmetamodel___MMLocalClass____local_property_by_global(fra.me.REG[0]) = fra.me.REG[1];
+  /* metamodel/abstractmetamodel.nit:368 */
+  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
+  ATTR_metamodel___abstractmetamodel___MMLocalClass____global_properties(fra.me.REG[0]) = fra.me.REG[1];
+  /* metamodel/abstractmetamodel.nit:371 */
+  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
+  ATTR_metamodel___abstractmetamodel___MMLocalClass____local_local_properties(fra.me.REG[0]) = fra.me.REG[1];
+  /* metamodel/abstractmetamodel.nit:374 */
+  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
+  ATTR_metamodel___abstractmetamodel___MMLocalClass____properties_by_name(fra.me.REG[0]) = fra.me.REG[1];
+  /* metamodel/inheritance.nit:82 */
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
+  ATTR_metamodel___inheritance___MMLocalClass____direct_parents(fra.me.REG[0]) = fra.me.REG[1];
+  /* metamodel/inheritance.nit:86 */
+  REGB0 = TAG_Bool(0);
+  ATTR_metamodel___inheritance___MMLocalClass____computing_super(fra.me.REG[0]) = REGB0;
+  /* metamodel/inheritance.nit:133 */
+  REGB0 = TAG_Bool(0);
+  ATTR_metamodel___inheritance___MMLocalClass____are_global_properties_inherited(fra.me.REG[0]) = REGB0;
+  /* metamodel/genericity.nit:41 */
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
+  ATTR_metamodel___genericity___MMLocalClass____types(fra.me.REG[0]) = fra.me.REG[1];
+  /* metamodel/genericity.nit:55 */
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
+  ATTR_metamodel___genericity___MMLocalClass____formals_types(fra.me.REG[0]) = fra.me.REG[1];
+  /* primitive_info.nit:28 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_primitive_info___MMLocalClass____primitive_info_cache(fra.me.REG[0]) = fra.me.REG[1];
+  /* primitive_info.nit:32 */
+  REGB0 = TAG_Bool(0);
+  ATTR_primitive_info___MMLocalClass____primitive_info_b(fra.me.REG[0]) = REGB0;
+  /* program.nit:230 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_program___MMLocalClass____init_var_iroutine(fra.me.REG[0]) = fra.me.REG[1];
+  /* program.nit:232 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_program___MMLocalClass____checknew_iroutine(fra.me.REG[0]) = fra.me.REG[1];
+  /* program.nit:237 */
+  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
+  ATTR_program___MMLocalClass____new_instance_iroutine(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/extern_inline.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_syntax___extern_inline___MMLocalClass_____atextern_type(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/extern_type_inheritance.nit:35 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_syntax___extern_type_inheritance___MMLocalClass_____atextern_type_origin_cache(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/extern_type_inheritance.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_syntax___extern_type_inheritance___MMLocalClass_____atextern_type_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_metamodel___inheritance___MMImplicitLocalClass(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 28);
+  obj->vft = (classtable_elt_t*)VFT_metamodel___inheritance___MMImplicitLocalClass;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_metamodel___inheritance___MMImplicitLocalClass[] = "check new MMImplicitLocalClass";
+void CHECKNEW_metamodel___inheritance___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_metamodel___inheritance___MMImplicitLocalClass;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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;
+}
+static const char LOCATE_NEW_MMImplicitLocalClass_metamodel___inheritance___MMImplicitLocalClass___init[] = "new MMImplicitLocalClass inheritance::MMImplicitLocalClass::init";
+val_t NEW_MMImplicitLocalClass_metamodel___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[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 517;
+  fra.me.meth = LOCATE_NEW_MMImplicitLocalClass_metamodel___inheritance___MMImplicitLocalClass___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  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:517 */
+  fra.me.REG[2] = NEW_metamodel___inheritance___MMImplicitLocalClass();
+  INIT_ATTRIBUTES__metamodel___inheritance___MMImplicitLocalClass(fra.me.REG[2]);
+  metamodel___inheritance___MMImplicitLocalClass___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_metamodel___inheritance___MMImplicitLocalClass(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_metamodel___inheritance___MMRefineAncestor[62] = {
+  {(bigint) 3111 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "MMRefineAncestor" /* 2: Class Name */},
+  {(bigint) 3 /* 3: MMRefineAncestor < Object: superclass typecheck marker */},
+  {(bigint) 183 /* 4: MMRefineAncestor < MMAncestor: superclass typecheck marker */},
+  {(bigint) 3111 /* 5: MMRefineAncestor < MMRefineAncestor: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: MMRefineAncestor < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) metamodel___static_type___MMAncestor___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) metamodel___inheritance___MMAncestor___add_in},
+  {(bigint) 0 /* 51: MMRefineAncestor < MMAncestor: superclass init_table position */},
+  {(bigint) metamodel___static_type___MMAncestor___stype__eq},
+  {(bigint) metamodel___static_type___MMAncestor___stype},
+  {(bigint) metamodel___static_type___MMAncestor___inheriter__eq},
+  {(bigint) metamodel___static_type___MMAncestor___inheriter},
+  {(bigint) metamodel___static_type___MMAncestor___is_reffinement},
+  {(bigint) metamodel___static_type___MMAncestor___is_specialisation},
+  {(bigint) metamodel___inheritance___MMRefineAncestor___local_class},
+  {(bigint) metamodel___static_type___MMAncestor___init},
+  {(bigint) 2 /* 60: MMRefineAncestor < MMRefineAncestor: superclass init_table position */},
+  {(bigint) metamodel___inheritance___MMRefineAncestor___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute MMRefineAncestor::_stype */
+/* 3: Attribute MMRefineAncestor::_inheriter */
+/* 4: Attribute MMRefineAncestor::_local_class */
+static const char LOCATE_INIT_ATTRIBUTES__metamodel___inheritance___MMRefineAncestor[] = "init var of MMRefineAncestor";
+void INIT_ATTRIBUTES__metamodel___inheritance___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__metamodel___inheritance___MMRefineAncestor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* metamodel/static_type.nit:310 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_metamodel___static_type___MMAncestor____stype(fra.me.REG[0]) = fra.me.REG[1];
+  /* metamodel/static_type.nit:316 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_metamodel___static_type___MMAncestor____inheriter(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_metamodel___inheritance___MMRefineAncestor(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_metamodel___inheritance___MMRefineAncestor;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_metamodel___inheritance___MMRefineAncestor[] = "check new MMRefineAncestor";
+void CHECKNEW_metamodel___inheritance___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_metamodel___inheritance___MMRefineAncestor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_metamodel___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;
+}
+static const char LOCATE_NEW_MMRefineAncestor_metamodel___inheritance___MMRefineAncestor___init[] = "new MMRefineAncestor inheritance::MMRefineAncestor::init";
+val_t NEW_MMRefineAncestor_metamodel___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 = 529;
+  fra.me.meth = LOCATE_NEW_MMRefineAncestor_metamodel___inheritance___MMRefineAncestor___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  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:529 */
+  fra.me.REG[2] = NEW_metamodel___inheritance___MMRefineAncestor();
+  INIT_ATTRIBUTES__metamodel___inheritance___MMRefineAncestor(fra.me.REG[2]);
+  metamodel___inheritance___MMRefineAncestor___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_metamodel___inheritance___MMRefineAncestor(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_metamodel___inheritance___MMSpecAncestor[62] = {
+  {(bigint) 3107 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "MMSpecAncestor" /* 2: Class Name */},
+  {(bigint) 3 /* 3: MMSpecAncestor < Object: superclass typecheck marker */},
+  {(bigint) 183 /* 4: MMSpecAncestor < MMAncestor: superclass typecheck marker */},
+  {(bigint) 3107 /* 5: MMSpecAncestor < MMSpecAncestor: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: MMSpecAncestor < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) metamodel___static_type___MMAncestor___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) metamodel___inheritance___MMAncestor___add_in},
+  {(bigint) 0 /* 51: MMSpecAncestor < MMAncestor: superclass init_table position */},
+  {(bigint) metamodel___static_type___MMAncestor___stype__eq},
+  {(bigint) metamodel___static_type___MMAncestor___stype},
+  {(bigint) metamodel___static_type___MMAncestor___inheriter__eq},
+  {(bigint) metamodel___static_type___MMAncestor___inheriter},
+  {(bigint) metamodel___static_type___MMAncestor___is_reffinement},
+  {(bigint) metamodel___static_type___MMAncestor___is_specialisation},
+  {(bigint) metamodel___inheritance___MMSpecAncestor___local_class},
+  {(bigint) metamodel___static_type___MMAncestor___init},
+  {(bigint) 2 /* 60: MMSpecAncestor < MMSpecAncestor: superclass init_table position */},
+  {(bigint) metamodel___inheritance___MMSpecAncestor___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute MMSpecAncestor::_stype */
+/* 3: Attribute MMSpecAncestor::_inheriter */
+static const char LOCATE_INIT_ATTRIBUTES__metamodel___inheritance___MMSpecAncestor[] = "init var of MMSpecAncestor";
+void INIT_ATTRIBUTES__metamodel___inheritance___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__metamodel___inheritance___MMSpecAncestor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* metamodel/static_type.nit:310 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_metamodel___static_type___MMAncestor____stype(fra.me.REG[0]) = fra.me.REG[1];
+  /* metamodel/static_type.nit:316 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_metamodel___static_type___MMAncestor____inheriter(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_metamodel___inheritance___MMSpecAncestor(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_metamodel___inheritance___MMSpecAncestor;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_metamodel___inheritance___MMSpecAncestor[] = "check new MMSpecAncestor";
+void CHECKNEW_metamodel___inheritance___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_metamodel___inheritance___MMSpecAncestor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_MMSpecAncestor_metamodel___inheritance___MMSpecAncestor___init[] = "new MMSpecAncestor inheritance::MMSpecAncestor::init";
+val_t NEW_MMSpecAncestor_metamodel___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 = 542;
+  fra.me.meth = LOCATE_NEW_MMSpecAncestor_metamodel___inheritance___MMSpecAncestor___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  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:542 */
+  fra.me.REG[2] = NEW_metamodel___inheritance___MMSpecAncestor();
+  INIT_ATTRIBUTES__metamodel___inheritance___MMSpecAncestor(fra.me.REG[2]);
+  metamodel___inheritance___MMSpecAncestor___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_metamodel___inheritance___MMSpecAncestor(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_metamodel___inheritance___MMDefaultAncestor[62] = {
+  {(bigint) 3135 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "MMDefaultAncestor" /* 2: Class Name */},
+  {(bigint) 3 /* 3: MMDefaultAncestor < Object: superclass typecheck marker */},
+  {(bigint) 183 /* 4: MMDefaultAncestor < MMAncestor: superclass typecheck marker */},
+  {(bigint) 3135 /* 5: MMDefaultAncestor < MMDefaultAncestor: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: MMDefaultAncestor < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) metamodel___static_type___MMAncestor___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) metamodel___inheritance___MMAncestor___add_in},
+  {(bigint) 0 /* 51: MMDefaultAncestor < MMAncestor: superclass init_table position */},
+  {(bigint) metamodel___static_type___MMAncestor___stype__eq},
+  {(bigint) metamodel___static_type___MMAncestor___stype},
+  {(bigint) metamodel___static_type___MMAncestor___inheriter__eq},
+  {(bigint) metamodel___static_type___MMAncestor___inheriter},
+  {(bigint) metamodel___static_type___MMAncestor___is_reffinement},
+  {(bigint) metamodel___static_type___MMAncestor___is_specialisation},
+  {(bigint) metamodel___inheritance___MMDefaultAncestor___local_class},
+  {(bigint) metamodel___static_type___MMAncestor___init},
+  {(bigint) 2 /* 60: MMDefaultAncestor < MMDefaultAncestor: superclass init_table position */},
+  {(bigint) metamodel___inheritance___MMDefaultAncestor___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute MMDefaultAncestor::_stype */
+/* 3: Attribute MMDefaultAncestor::_inheriter */
+static const char LOCATE_INIT_ATTRIBUTES__metamodel___inheritance___MMDefaultAncestor[] = "init var of MMDefaultAncestor";
+void INIT_ATTRIBUTES__metamodel___inheritance___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__metamodel___inheritance___MMDefaultAncestor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* metamodel/static_type.nit:310 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_metamodel___static_type___MMAncestor____stype(fra.me.REG[0]) = fra.me.REG[1];
+  /* metamodel/static_type.nit:316 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_metamodel___static_type___MMAncestor____inheriter(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_metamodel___inheritance___MMDefaultAncestor(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_metamodel___inheritance___MMDefaultAncestor;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_metamodel___inheritance___MMDefaultAncestor[] = "check new MMDefaultAncestor";
+void CHECKNEW_metamodel___inheritance___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_metamodel___inheritance___MMDefaultAncestor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_MMDefaultAncestor_metamodel___inheritance___MMDefaultAncestor___init[] = "new MMDefaultAncestor inheritance::MMDefaultAncestor::init";
+val_t NEW_MMDefaultAncestor_metamodel___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 = 553;
+  fra.me.meth = LOCATE_NEW_MMDefaultAncestor_metamodel___inheritance___MMDefaultAncestor___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  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:553 */
+  fra.me.REG[2] = NEW_metamodel___inheritance___MMDefaultAncestor();
+  INIT_ATTRIBUTES__metamodel___inheritance___MMDefaultAncestor(fra.me.REG[2]);
+  metamodel___inheritance___MMDefaultAncestor___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_metamodel___inheritance___MMDefaultAncestor(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_metamodel___genericity___MMTypeGeneric[94] = {
+  {(bigint) 3507 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "MMTypeGeneric" /* 2: Class Name */},
+  {(bigint) 3 /* 3: MMTypeGeneric < Object: superclass typecheck marker */},
+  {(bigint) 143 /* 4: MMTypeGeneric < MMType: superclass typecheck marker */},
+  {(bigint) 3099 /* 5: MMTypeGeneric < MMTypeClass: superclass typecheck marker */},
+  {(bigint) 3507 /* 6: MMTypeGeneric < MMTypeGeneric: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: MMTypeGeneric < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) metamodel___genericity___MMTypeGeneric___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) native_interface___frontier___MMType___compile_check_isa},
+  {(bigint) native_interface___frontier___MMType___compile_condition_isa},
+  {(bigint) native_interface___frontier___MMType___compile_to_frontier},
+  {(bigint) native_interface___frontier___MMType___compile_new_local_ref},
+  {(bigint) native_interface___frontier___MMType___compile_stub_local_ref},
+  {(bigint) native_interface___ni_metamodel___MMType___friendly_extern_name},
+  {(bigint) native_interface___ni_metamodel___MMType___mangled_name},
+  {(bigint) native_interface___ni_metamodel___MMType___from_native},
+  {(bigint) native_interface___ni_metamodel___MMType___assign_to_friendly},
+  {(bigint) native_interface___ni_metamodel___MMType___assign_from_friendly},
+  {(bigint) native_interface___ni_metamodel___MMType___uses_nitni_ref},
+  {(bigint) native_interface___ni_metamodel___MMType___friendly_null_getter},
+  {(bigint) native_interface___ni_metamodel___MMType___local_friendly_null_getter_from},
+  {(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) metamodel___genericity___MMTypeGeneric___is_generic},
+  {(bigint) metamodel___type_formal___MMType___direct_type},
+  {(bigint) metamodel___genericity___MMTypeGeneric___has_formal},
+  {(bigint) 1 /* 71: MMTypeGeneric < MMType: superclass init_table position */},
+  {(bigint) metamodel___static_type___MMTypeClass___mmmodule},
+  {(bigint) metamodel___static_type___MMTypeClass___local_class},
+  {(bigint) metamodel___static_type___MMType___is_valid},
+  {(bigint) metamodel___static_type___MMTypeClass_____l},
+  {(bigint) metamodel___genericity___MMTypeGeneric___is_supertype},
+  {(bigint) metamodel___genericity___MMTypeGeneric___for_module},
+  {(bigint) metamodel___genericity___MMTypeGeneric___adapt_to},
+  {(bigint) metamodel___genericity___MMTypeGeneric___upcast_for},
+  {(bigint) metamodel___static_type___MMType___not_for_self},
+  {(bigint) metamodel___static_type___MMType___is_nullable},
+  {(bigint) metamodel___static_type___MMType___as_nullable},
+  {(bigint) metamodel___static_type___MMType___as_notnull},
+  {(bigint) metamodel___static_type___MMType___init},
+  {(bigint) 0 /* 85: MMTypeGeneric < MMTypeClass: superclass init_table position */},
+  {(bigint) metamodel___static_type___MMTypeClass___init},
+  {(bigint) 3 /* 87: MMTypeGeneric < MMTypeGeneric: superclass init_table position */},
+  {(bigint) metamodel___genericity___MMTypeGeneric___params},
+  {(bigint) metamodel___static_type___MMTypeClass___upcast_for},
+  {(bigint) metamodel___genericity___MMTypeGeneric___params_equals},
+  {(bigint) metamodel___static_type___MMTypeClass___to_s},
+  {(bigint) metamodel___genericity___MMTypeGeneric___is_subtype},
+  {(bigint) metamodel___genericity___MMTypeGeneric___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute MMTypeGeneric::_as_nullable_cache */
+/* 3: Attribute MMTypeGeneric::_local_class */
+/* 4: Attribute MMTypeGeneric::_params */
+static const char LOCATE_INIT_ATTRIBUTES__metamodel___genericity___MMTypeGeneric[] = "init var of MMTypeGeneric";
+void INIT_ATTRIBUTES__metamodel___genericity___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__metamodel___genericity___MMTypeGeneric;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* metamodel/static_type.nit:397 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_metamodel___static_type___MMType____as_nullable_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_metamodel___genericity___MMTypeGeneric(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_metamodel___genericity___MMTypeGeneric;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_metamodel___genericity___MMTypeGeneric[] = "check new MMTypeGeneric";
+void CHECKNEW_metamodel___genericity___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_metamodel___genericity___MMTypeGeneric;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_metamodel___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);
+  }
+  REGB0 = TAG_Bool(ATTR_metamodel___genericity___MMTypeGeneric____params(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_params", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_MMTypeGeneric_metamodel___genericity___MMTypeGeneric___init[] = "new MMTypeGeneric genericity::MMTypeGeneric::init";
+val_t NEW_MMTypeGeneric_metamodel___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 = 197;
+  fra.me.meth = LOCATE_NEW_MMTypeGeneric_metamodel___genericity___MMTypeGeneric___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  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:197 */
+  fra.me.REG[2] = NEW_metamodel___genericity___MMTypeGeneric();
+  INIT_ATTRIBUTES__metamodel___genericity___MMTypeGeneric(fra.me.REG[2]);
+  metamodel___genericity___MMTypeGeneric___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_metamodel___genericity___MMTypeGeneric(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_metamodel___genericity___MMTypeFormalParameter[95] = {
+  {(bigint) 3511 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "MMTypeFormalParameter" /* 2: Class Name */},
+  {(bigint) 3 /* 3: MMTypeFormalParameter < Object: superclass typecheck marker */},
+  {(bigint) 143 /* 4: MMTypeFormalParameter < MMType: superclass typecheck marker */},
+  {(bigint) 3095 /* 5: MMTypeFormalParameter < MMTypeFormal: superclass typecheck marker */},
+  {(bigint) 3511 /* 6: MMTypeFormalParameter < MMTypeFormalParameter: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: MMTypeFormalParameter < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) metamodel___type_formal___MMTypeFormal___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) native_interface___frontier___MMType___compile_check_isa},
+  {(bigint) native_interface___frontier___MMType___compile_condition_isa},
+  {(bigint) native_interface___frontier___MMType___compile_to_frontier},
+  {(bigint) native_interface___frontier___MMType___compile_new_local_ref},
+  {(bigint) native_interface___frontier___MMType___compile_stub_local_ref},
+  {(bigint) native_interface___ni_metamodel___MMType___friendly_extern_name},
+  {(bigint) native_interface___ni_metamodel___MMType___mangled_name},
+  {(bigint) native_interface___ni_metamodel___MMType___from_native},
+  {(bigint) native_interface___ni_metamodel___MMType___assign_to_friendly},
+  {(bigint) native_interface___ni_metamodel___MMType___assign_from_friendly},
+  {(bigint) native_interface___ni_metamodel___MMType___uses_nitni_ref},
+  {(bigint) native_interface___ni_metamodel___MMType___friendly_null_getter},
+  {(bigint) native_interface___ni_metamodel___MMType___local_friendly_null_getter_from},
+  {(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) metamodel___genericity___MMTypeFormal___is_generic},
+  {(bigint) metamodel___type_formal___MMTypeFormal___direct_type},
+  {(bigint) metamodel___type_formal___MMTypeFormal___has_formal},
+  {(bigint) 1 /* 71: MMTypeFormalParameter < MMType: superclass init_table position */},
+  {(bigint) metamodel___genericity___MMTypeFormalParameter___mmmodule},
+  {(bigint) metamodel___type_formal___MMTypeFormal___local_class},
+  {(bigint) metamodel___type_formal___MMTypeFormal___is_valid},
+  {(bigint) metamodel___type_formal___MMTypeFormal_____l},
+  {(bigint) metamodel___type_formal___MMTypeFormal___is_supertype},
+  {(bigint) metamodel___genericity___MMTypeFormalParameter___for_module},
+  {(bigint) metamodel___genericity___MMTypeFormalParameter___adapt_to},
+  {(bigint) metamodel___genericity___MMTypeFormalParameter___upcast_for},
+  {(bigint) metamodel___static_type___MMType___not_for_self},
+  {(bigint) metamodel___type_formal___MMTypeFormal___is_nullable},
+  {(bigint) metamodel___static_type___MMType___as_nullable},
+  {(bigint) metamodel___static_type___MMType___as_notnull},
+  {(bigint) metamodel___static_type___MMType___init},
+  {(bigint) 0 /* 85: MMTypeFormalParameter < MMTypeFormal: superclass init_table position */},
+  {(bigint) metamodel___type_formal___MMTypeFormal___name},
+  {(bigint) metamodel___type_formal___MMTypeFormal___bound},
+  {(bigint) metamodel___type_formal___MMTypeFormal___init},
+  {(bigint) 3 /* 89: MMTypeFormalParameter < MMTypeFormalParameter: superclass init_table position */},
+  {(bigint) metamodel___genericity___MMTypeFormalParameter___def_class},
+  {(bigint) metamodel___genericity___MMTypeFormalParameter___position},
+  {(bigint) metamodel___genericity___MMTypeFormalParameter___bound__eq},
+  {(bigint) metamodel___genericity___MMTypeFormalParameter___with_bound},
+  {(bigint) metamodel___genericity___MMTypeFormalParameter___init},
+};
+/* 0: Pointer to the classtable */
+/* 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 */
+static const char LOCATE_INIT_ATTRIBUTES__metamodel___genericity___MMTypeFormalParameter[] = "init var of MMTypeFormalParameter";
+void INIT_ATTRIBUTES__metamodel___genericity___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__metamodel___genericity___MMTypeFormalParameter;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* metamodel/static_type.nit:397 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_metamodel___static_type___MMType____as_nullable_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_metamodel___genericity___MMTypeFormalParameter(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_metamodel___genericity___MMTypeFormalParameter;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_metamodel___genericity___MMTypeFormalParameter[] = "check new MMTypeFormalParameter";
+void CHECKNEW_metamodel___genericity___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_metamodel___genericity___MMTypeFormalParameter;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_metamodel___type_formal___MMTypeFormal____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_metamodel___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_metamodel___genericity___MMTypeFormalParameter____position(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_position", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_MMTypeFormalParameter_metamodel___genericity___MMTypeFormalParameter___with_bound[] = "new MMTypeFormalParameter genericity::MMTypeFormalParameter::with_bound";
+val_t NEW_MMTypeFormalParameter_metamodel___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 = 244;
+  fra.me.meth = LOCATE_NEW_MMTypeFormalParameter_metamodel___genericity___MMTypeFormalParameter___with_bound;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  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:244 */
+  fra.me.REG[3] = NEW_metamodel___genericity___MMTypeFormalParameter();
+  INIT_ATTRIBUTES__metamodel___genericity___MMTypeFormalParameter(fra.me.REG[3]);
+  metamodel___genericity___MMTypeFormalParameter___with_bound(fra.me.REG[3], fra.me.REG[0], REGB0, fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_metamodel___genericity___MMTypeFormalParameter(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
+}
+static const char LOCATE_NEW_MMTypeFormalParameter_metamodel___genericity___MMTypeFormalParameter___init[] = "new MMTypeFormalParameter genericity::MMTypeFormalParameter::init";
+val_t NEW_MMTypeFormalParameter_metamodel___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 = 250;
+  fra.me.meth = LOCATE_NEW_MMTypeFormalParameter_metamodel___genericity___MMTypeFormalParameter___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  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:250 */
+  fra.me.REG[2] = NEW_metamodel___genericity___MMTypeFormalParameter();
+  INIT_ATTRIBUTES__metamodel___genericity___MMTypeFormalParameter(fra.me.REG[2]);
+  metamodel___genericity___MMTypeFormalParameter___init(fra.me.REG[2], fra.me.REG[0], REGB0, fra.me.REG[1], init_table);
+  CHECKNEW_metamodel___genericity___MMTypeFormalParameter(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_metamodel___virtualtype___MMVirtualType[93] = {
+  {(bigint) 3499 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "MMVirtualType" /* 2: Class Name */},
+  {(bigint) 3 /* 3: MMVirtualType < Object: superclass typecheck marker */},
+  {(bigint) 143 /* 4: MMVirtualType < MMType: superclass typecheck marker */},
+  {(bigint) 3095 /* 5: MMVirtualType < MMTypeFormal: superclass typecheck marker */},
+  {(bigint) 3499 /* 6: MMVirtualType < MMVirtualType: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: MMVirtualType < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) metamodel___type_formal___MMTypeFormal___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) native_interface___frontier___MMType___compile_check_isa},
+  {(bigint) native_interface___frontier___MMType___compile_condition_isa},
+  {(bigint) native_interface___frontier___MMType___compile_to_frontier},
+  {(bigint) native_interface___frontier___MMType___compile_new_local_ref},
+  {(bigint) native_interface___frontier___MMType___compile_stub_local_ref},
+  {(bigint) native_interface___ni_metamodel___MMType___friendly_extern_name},
+  {(bigint) native_interface___ni_metamodel___MMType___mangled_name},
+  {(bigint) native_interface___ni_metamodel___MMType___from_native},
+  {(bigint) native_interface___ni_metamodel___MMType___assign_to_friendly},
+  {(bigint) native_interface___ni_metamodel___MMType___assign_from_friendly},
+  {(bigint) native_interface___ni_metamodel___MMType___uses_nitni_ref},
+  {(bigint) native_interface___ni_metamodel___MMType___friendly_null_getter},
+  {(bigint) native_interface___ni_metamodel___MMType___local_friendly_null_getter_from},
+  {(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) metamodel___genericity___MMTypeFormal___is_generic},
+  {(bigint) metamodel___type_formal___MMTypeFormal___direct_type},
+  {(bigint) metamodel___type_formal___MMTypeFormal___has_formal},
+  {(bigint) 1 /* 71: MMVirtualType < MMType: superclass init_table position */},
+  {(bigint) metamodel___virtualtype___MMVirtualType___mmmodule},
+  {(bigint) metamodel___type_formal___MMTypeFormal___local_class},
+  {(bigint) metamodel___type_formal___MMTypeFormal___is_valid},
+  {(bigint) metamodel___type_formal___MMTypeFormal_____l},
+  {(bigint) metamodel___type_formal___MMTypeFormal___is_supertype},
+  {(bigint) metamodel___virtualtype___MMVirtualType___for_module},
+  {(bigint) metamodel___virtualtype___MMVirtualType___adapt_to},
+  {(bigint) metamodel___static_type___MMType___upcast_for},
+  {(bigint) metamodel___virtualtype___MMVirtualType___not_for_self},
+  {(bigint) metamodel___type_formal___MMTypeFormal___is_nullable},
+  {(bigint) metamodel___static_type___MMType___as_nullable},
+  {(bigint) metamodel___static_type___MMType___as_notnull},
+  {(bigint) metamodel___static_type___MMType___init},
+  {(bigint) 0 /* 85: MMVirtualType < MMTypeFormal: superclass init_table position */},
+  {(bigint) metamodel___type_formal___MMTypeFormal___name},
+  {(bigint) metamodel___type_formal___MMTypeFormal___bound},
+  {(bigint) metamodel___type_formal___MMTypeFormal___init},
+  {(bigint) 3 /* 89: MMVirtualType < MMVirtualType: superclass init_table position */},
+  {(bigint) metamodel___virtualtype___MMVirtualType___property},
+  {(bigint) metamodel___virtualtype___MMVirtualType___recv},
+  {(bigint) metamodel___virtualtype___MMVirtualType___init},
+};
+/* 0: Pointer to the classtable */
+/* 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 */
+static const char LOCATE_INIT_ATTRIBUTES__metamodel___virtualtype___MMVirtualType[] = "init var of MMVirtualType";
+void INIT_ATTRIBUTES__metamodel___virtualtype___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__metamodel___virtualtype___MMVirtualType;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* metamodel/static_type.nit:397 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_metamodel___static_type___MMType____as_nullable_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_metamodel___virtualtype___MMVirtualType(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_metamodel___virtualtype___MMVirtualType;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_metamodel___virtualtype___MMVirtualType[] = "check new MMVirtualType";
+void CHECKNEW_metamodel___virtualtype___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_metamodel___virtualtype___MMVirtualType;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_metamodel___type_formal___MMTypeFormal____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_metamodel___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_metamodel___virtualtype___MMVirtualType____recv(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_recv", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_MMVirtualType_metamodel___virtualtype___MMVirtualType___init[] = "new MMVirtualType virtualtype::MMVirtualType::init";
+val_t NEW_MMVirtualType_metamodel___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_metamodel___virtualtype___MMVirtualType___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  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_metamodel___virtualtype___MMVirtualType();
+  INIT_ATTRIBUTES__metamodel___virtualtype___MMVirtualType(fra.me.REG[2]);
+  metamodel___virtualtype___MMVirtualType___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_metamodel___virtualtype___MMVirtualType(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_icode___icode_base___IRegister[61] = {
+  {(bigint) 199 /* 0: Identity */},
+  {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "IRegister" /* 2: Class Name */},
+  {(bigint) 3 /* 3: IRegister < Object: superclass typecheck marker */},
+  {(bigint) 199 /* 4: IRegister < IRegister: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 0 /* 19: IRegister < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) analysis___allocate_iregister_slots___IRegister___slot_index},
+  {(bigint) analysis___allocate_iregister_slots___IRegister___slot_index__eq},
+  {(bigint) analysis___allocate_iregister_slots___IRegister___is_local},
+  {(bigint) analysis___allocate_iregister_slots___IRegister___is_local__eq},
+  {(bigint) analysis___allocate_iregister_slots___IRegister___local_iroutine},
+  {(bigint) analysis___allocate_iregister_slots___IRegister___local_iroutine__eq},
+  {(bigint) analysis___allocate_iregister_slots___IRegister___in_tag_slots},
+  {(bigint) analysis___allocate_iregister_slots___IRegister___in_tag_slots__eq},
+  {(bigint) 1 /* 58: IRegister < IRegister: superclass init_table position */},
+  {(bigint) icode___icode_base___IRegister___stype},
+  {(bigint) icode___icode_base___IRegister___init},
+};
+/* 0: Pointer to the classtable */
+/* 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 */
+static const char LOCATE_INIT_ATTRIBUTES__icode___icode_base___IRegister[] = "init var of IRegister";
+void INIT_ATTRIBUTES__icode___icode_base___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__icode___icode_base___IRegister;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  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(1);
+  ATTR_analysis___allocate_iregister_slots___IRegister____is_local(fra.me.REG[0]) = REGB0;
+  /* analysis/allocate_iregister_slots.nit:293 */
+  REGB0 = TAG_Bool(0);
+  ATTR_analysis___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_analysis___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_analysis___allocate_iregister_slots___IRegister____last(fra.me.REG[0]) = fra.me.REG[1];
+  /* analysis/allocate_iregister_slots.nit:307 */
+  REGB0 = TAG_Int(0);
+  ATTR_analysis___allocate_iregister_slots___IRegister____born_rank(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_icode___icode_base___IRegister(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 10);
+  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___IRegister;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_icode___icode_base___IRegister[] = "check new IRegister";
+void CHECKNEW_icode___icode_base___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_icode___icode_base___IRegister;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode___icode_base___IRegister____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_analysis___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_analysis___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_analysis___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);
+  }
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_IRegister_icode___icode_base___IRegister___init[] = "new IRegister icode_base::IRegister::init";
+val_t NEW_IRegister_icode___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};
+  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_IRegister_icode___icode_base___IRegister___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* icode/icode_base.nit:28 */
+  fra.me.REG[1] = NEW_icode___icode_base___IRegister();
+  INIT_ATTRIBUTES__icode___icode_base___IRegister(fra.me.REG[1]);
+  icode___icode_base___IRegister___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_icode___icode_base___IRegister(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_icode___icode_base___IEscapeMark[52] = {
+  {(bigint) 207 /* 0: Identity */},
+  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "IEscapeMark" /* 2: Class Name */},
+  {(bigint) 3 /* 3: IEscapeMark < Object: superclass typecheck marker */},
+  {(bigint) 207 /* 4: IEscapeMark < IEscapeMark: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 0 /* 19: IEscapeMark < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 50: IEscapeMark < IEscapeMark: superclass init_table position */},
+  {(bigint) icode___icode_base___IEscapeMark___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+static const char LOCATE_INIT_ATTRIBUTES__icode___icode_base___IEscapeMark[] = "init var of IEscapeMark";
+void INIT_ATTRIBUTES__icode___icode_base___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__icode___icode_base___IEscapeMark;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_icode___icode_base___IEscapeMark(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 2);
+  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___IEscapeMark;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_icode___icode_base___IEscapeMark[] = "check new IEscapeMark";
+void CHECKNEW_icode___icode_base___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_icode___icode_base___IEscapeMark;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_IEscapeMark_icode___icode_base___IEscapeMark___init[] = "new IEscapeMark icode_base::IEscapeMark::init";
+val_t NEW_IEscapeMark_icode___icode_base___IEscapeMark___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_IEscapeMark_icode___icode_base___IEscapeMark___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = NEW_icode___icode_base___IEscapeMark();
+  INIT_ATTRIBUTES__icode___icode_base___IEscapeMark(fra.me.REG[0]);
+  icode___icode_base___IEscapeMark___init(fra.me.REG[0], init_table);
+  CHECKNEW_icode___icode_base___IEscapeMark(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_icode___icode_base___IClosureDecl[56] = {
+  {(bigint) 231 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "IClosureDecl" /* 2: Class Name */},
+  {(bigint) 3 /* 3: IClosureDecl < Object: superclass typecheck marker */},
+  {(bigint) 231 /* 4: IClosureDecl < IClosureDecl: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 0 /* 19: IClosureDecl < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) analysis___icode_dump___IClosureDecl___dump},
+  {(bigint) 1 /* 51: IClosureDecl < IClosureDecl: superclass init_table position */},
+  {(bigint) icode___icode_base___IClosureDecl___closure},
+  {(bigint) icode___icode_base___IClosureDecl___default},
+  {(bigint) icode___icode_base___IClosureDecl___default__eq},
+  {(bigint) icode___icode_base___IClosureDecl___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute IClosureDecl::_closure */
+/* 3: Attribute IClosureDecl::_default */
+static const char LOCATE_INIT_ATTRIBUTES__icode___icode_base___IClosureDecl[] = "init var of IClosureDecl";
+void INIT_ATTRIBUTES__icode___icode_base___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__icode___icode_base___IClosureDecl;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_icode___icode_base___IClosureDecl(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___IClosureDecl;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_icode___icode_base___IClosureDecl[] = "check new IClosureDecl";
+void CHECKNEW_icode___icode_base___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_icode___icode_base___IClosureDecl;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode___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;
+}
+static const char LOCATE_NEW_IClosureDecl_icode___icode_base___IClosureDecl___init[] = "new IClosureDecl icode_base::IClosureDecl::init";
+val_t NEW_IClosureDecl_icode___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};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 46;
+  fra.me.meth = LOCATE_NEW_IClosureDecl_icode___icode_base___IClosureDecl___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* icode/icode_base.nit:46 */
+  fra.me.REG[1] = NEW_icode___icode_base___IClosureDecl();
+  INIT_ATTRIBUTES__icode___icode_base___IClosureDecl(fra.me.REG[1]);
+  icode___icode_base___IClosureDecl___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_icode___icode_base___IClosureDecl(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_icode___icode_base___IRoutine[71] = {
+  {(bigint) 195 /* 0: Identity */},
+  {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "IRoutine" /* 2: Class Name */},
+  {(bigint) 3 /* 3: IRoutine < Object: superclass typecheck marker */},
+  {(bigint) 195 /* 4: IRoutine < IRoutine: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 0 /* 19: IRoutine < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) global___dead_method_removal___IRoutine___set_not_reachable},
+  {(bigint) 1 /* 51: IRoutine < IRoutine: superclass init_table position */},
+  {(bigint) icode___icode_base___IRoutine___params},
+  {(bigint) icode___icode_base___IRoutine___closure_decls},
+  {(bigint) icode___icode_base___IRoutine___closure_decls__eq},
+  {(bigint) icode___icode_base___IRoutine___registers},
+  {(bigint) icode___icode_base___IRoutine___result},
+  {(bigint) icode___icode_base___IRoutine___escape_marks},
+  {(bigint) icode___icode_base___IRoutine___body},
+  {(bigint) icode___icode_base___IRoutine___location},
+  {(bigint) icode___icode_base___IRoutine___location__eq},
+  {(bigint) icode___icode_base___IRoutine___init},
+  {(bigint) compiling___compiling_icode___IRoutine___compile_signature_to_c},
+  {(bigint) compiling___compiling_icode___IRoutine___compile_inside_to_c},
+  {(bigint) compiling___compiling_icode___IRoutine___compile_to_c},
+  {(bigint) analysis___IRoutine___optimize},
+  {(bigint) analysis___icode_dump___IRoutine___dump},
+  {(bigint) analysis___allocate_iregister_slots___IRoutine___std_slots_nb},
+  {(bigint) analysis___allocate_iregister_slots___IRoutine___tag_slots_nb},
+  {(bigint) analysis___allocate_iregister_slots___IRoutine___allocate_iregister_slots},
+  {(bigint) analysis___inline_methods___IRoutine___inline_methods},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute IRoutine::_params */
+/* 3: Attribute IRoutine::_closure_decls */
+/* 4: Attribute IRoutine::_registers */
+/* 5: Attribute IRoutine::_result */
+/* 6: Attribute IRoutine::_escape_marks */
+/* 7: Attribute IRoutine::_body */
+/* 8: Attribute IRoutine::_location */
+/* 9: Attribute IRoutine::_std_slots_nb */
+/* 10: Attribute IRoutine::_tag_slots_nb */
+static const char LOCATE_INIT_ATTRIBUTES__icode___icode_base___IRoutine[] = "init var of IRoutine";
+void INIT_ATTRIBUTES__icode___icode_base___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__icode___icode_base___IRoutine;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* icode/icode_base.nit:54 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___IRoutine____closure_decls(fra.me.REG[0]) = fra.me.REG[1];
+  /* icode/icode_base.nit:58 */
+  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
+  ATTR_icode___icode_base___IRoutine____registers(fra.me.REG[0]) = fra.me.REG[1];
+  /* icode/icode_base.nit:64 */
+  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
+  ATTR_icode___icode_base___IRoutine____escape_marks(fra.me.REG[0]) = fra.me.REG[1];
+  /* icode/icode_base.nit:67 */
+  fra.me.REG[1] = NEW_ISeq_icode___icode_base___ISeq___init();
+  ATTR_icode___icode_base___IRoutine____body(fra.me.REG[0]) = fra.me.REG[1];
+  /* icode/icode_base.nit:69 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___IRoutine____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* analysis/allocate_iregister_slots.nit:268 */
+  REGB0 = TAG_Int(0);
+  ATTR_analysis___allocate_iregister_slots___IRoutine____std_slots_nb(fra.me.REG[0]) = REGB0;
+  /* analysis/allocate_iregister_slots.nit:271 */
+  REGB0 = TAG_Int(0);
+  ATTR_analysis___allocate_iregister_slots___IRoutine____tag_slots_nb(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_icode___icode_base___IRoutine(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 11);
+  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___IRoutine;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_icode___icode_base___IRoutine[] = "check new IRoutine";
+void CHECKNEW_icode___icode_base___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_icode___icode_base___IRoutine;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode___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___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___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___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_analysis___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_analysis___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;
+}
+static const char LOCATE_NEW_IRoutine_icode___icode_base___IRoutine___init[] = "new IRoutine icode_base::IRoutine::init";
+val_t NEW_IRoutine_icode___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};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 72;
+  fra.me.meth = LOCATE_NEW_IRoutine_icode___icode_base___IRoutine___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  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:72 */
+  fra.me.REG[2] = NEW_icode___icode_base___IRoutine();
+  INIT_ATTRIBUTES__icode___icode_base___IRoutine(fra.me.REG[2]);
+  icode___icode_base___IRoutine___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_icode___icode_base___IRoutine(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_icode___icode_base___IClosureDef[74] = {
+  {(bigint) 3195 /* 0: Identity */},
+  {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "IClosureDef" /* 2: Class Name */},
+  {(bigint) 3 /* 3: IClosureDef < Object: superclass typecheck marker */},
+  {(bigint) 195 /* 4: IClosureDef < IRoutine: superclass typecheck marker */},
+  {(bigint) 3195 /* 5: IClosureDef < IClosureDef: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 0 /* 19: IClosureDef < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) global___dead_method_removal___IRoutine___set_not_reachable},
+  {(bigint) 1 /* 51: IClosureDef < IRoutine: superclass init_table position */},
+  {(bigint) icode___icode_base___IRoutine___params},
+  {(bigint) icode___icode_base___IRoutine___closure_decls},
+  {(bigint) icode___icode_base___IRoutine___closure_decls__eq},
+  {(bigint) icode___icode_base___IRoutine___registers},
+  {(bigint) icode___icode_base___IRoutine___result},
+  {(bigint) icode___icode_base___IRoutine___escape_marks},
+  {(bigint) icode___icode_base___IRoutine___body},
+  {(bigint) icode___icode_base___IRoutine___location},
+  {(bigint) icode___icode_base___IRoutine___location__eq},
+  {(bigint) icode___icode_base___IRoutine___init},
+  {(bigint) compiling___compiling_icode___IRoutine___compile_signature_to_c},
+  {(bigint) compiling___compiling_icode___IRoutine___compile_inside_to_c},
+  {(bigint) compiling___compiling_icode___IRoutine___compile_to_c},
+  {(bigint) analysis___IRoutine___optimize},
+  {(bigint) analysis___icode_dump___IRoutine___dump},
+  {(bigint) analysis___allocate_iregister_slots___IRoutine___std_slots_nb},
+  {(bigint) analysis___allocate_iregister_slots___IRoutine___tag_slots_nb},
+  {(bigint) analysis___allocate_iregister_slots___IRoutine___allocate_iregister_slots},
+  {(bigint) analysis___inline_methods___IRoutine___inline_methods},
+  {(bigint) compiling___compiling_icode___IClosureDef___compile_closure},
+  {(bigint) 2 /* 72: IClosureDef < IClosureDef: superclass init_table position */},
+  {(bigint) icode___icode_base___IClosureDef___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute IClosureDef::_params */
+/* 3: Attribute IClosureDef::_closure_decls */
+/* 4: Attribute IClosureDef::_registers */
+/* 5: Attribute IClosureDef::_result */
+/* 6: Attribute IClosureDef::_escape_marks */
+/* 7: Attribute IClosureDef::_body */
+/* 8: Attribute IClosureDef::_location */
+/* 9: Attribute IClosureDef::_std_slots_nb */
+/* 10: Attribute IClosureDef::_tag_slots_nb */
+static const char LOCATE_INIT_ATTRIBUTES__icode___icode_base___IClosureDef[] = "init var of IClosureDef";
+void INIT_ATTRIBUTES__icode___icode_base___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__icode___icode_base___IClosureDef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* icode/icode_base.nit:54 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___IRoutine____closure_decls(fra.me.REG[0]) = fra.me.REG[1];
+  /* icode/icode_base.nit:58 */
+  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
+  ATTR_icode___icode_base___IRoutine____registers(fra.me.REG[0]) = fra.me.REG[1];
+  /* icode/icode_base.nit:64 */
+  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
+  ATTR_icode___icode_base___IRoutine____escape_marks(fra.me.REG[0]) = fra.me.REG[1];
+  /* icode/icode_base.nit:67 */
+  fra.me.REG[1] = NEW_ISeq_icode___icode_base___ISeq___init();
+  ATTR_icode___icode_base___IRoutine____body(fra.me.REG[0]) = fra.me.REG[1];
+  /* icode/icode_base.nit:69 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___IRoutine____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* analysis/allocate_iregister_slots.nit:268 */
+  REGB0 = TAG_Int(0);
+  ATTR_analysis___allocate_iregister_slots___IRoutine____std_slots_nb(fra.me.REG[0]) = REGB0;
+  /* analysis/allocate_iregister_slots.nit:271 */
+  REGB0 = TAG_Int(0);
+  ATTR_analysis___allocate_iregister_slots___IRoutine____tag_slots_nb(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_icode___icode_base___IClosureDef(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 11);
+  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___IClosureDef;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_icode___icode_base___IClosureDef[] = "check new IClosureDef";
+void CHECKNEW_icode___icode_base___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_icode___icode_base___IClosureDef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode___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___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___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___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_analysis___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_analysis___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;
+}
+static const char LOCATE_NEW_IClosureDef_icode___icode_base___IClosureDef___init[] = "new IClosureDef icode_base::IClosureDef::init";
+val_t NEW_IClosureDef_icode___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 = 82;
+  fra.me.meth = LOCATE_NEW_IClosureDef_icode___icode_base___IClosureDef___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  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:82 */
+  fra.me.REG[2] = NEW_icode___icode_base___IClosureDef();
+  INIT_ATTRIBUTES__icode___icode_base___IClosureDef(fra.me.REG[2]);
+  icode___icode_base___IClosureDef___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_icode___icode_base___IClosureDef(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_icode___icode_base___ISeq[73] = {
+  {(bigint) 3555 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ISeq" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ISeq < Object: superclass typecheck marker */},
+  {(bigint) 227 /* 4: ISeq < ICode: superclass typecheck marker */},
+  {(bigint) 3191 /* 5: ISeq < ICode0: superclass typecheck marker */},
+  {(bigint) 3555 /* 6: ISeq < ISeq: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: ISeq < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling___compiling_icode___ISeq___compile_to_c},
+  {(bigint) compiling___compiling_icode___ICode___need_result},
+  {(bigint) compiling___compiling_icode___ICode___store_result},
+  {(bigint) compiling___compiling_icode___ICode___new_result},
+  {(bigint) analysis___icode_dump___ISeq___dump},
+  {(bigint) analysis___icode_dump___ICode___dump_intern},
+  {(bigint) icode___icode_tools___ICode___dup_with},
+  {(bigint) icode___icode_tools___ISeq___inner_dup_with},
+  {(bigint) 1 /* 58: ISeq < ICode: superclass init_table position */},
+  {(bigint) icode___icode_base___ICode0___arity},
+  {(bigint) icode___icode_base___ICode___result},
+  {(bigint) icode___icode_base___ICode___result__eq},
+  {(bigint) icode___icode_base___ICode___location},
+  {(bigint) icode___icode_base___ICode___location__eq},
+  {(bigint) icode___icode_base___ICode___is_pure},
+  {(bigint) icode___icode_base___ICode___init},
+  {(bigint) 0 /* 66: ISeq < ICode0: superclass init_table position */},
+  {(bigint) icode___icode_tools___ISeq___dup_seq_to},
+  {(bigint) 3 /* 68: ISeq < ISeq: superclass init_table position */},
+  {(bigint) icode___icode_base___ISeq___icodes},
+  {(bigint) icode___icode_base___ISeq___iescape_mark},
+  {(bigint) icode___icode_base___ISeq___iescape_mark__eq},
+  {(bigint) icode___icode_base___ISeq___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ISeq::_result */
+/* 3: Attribute ISeq::_location */
+/* 4: Attribute ISeq::_icodes */
+/* 5: Attribute ISeq::_iescape_mark */
+static const char LOCATE_INIT_ATTRIBUTES__icode___icode_base___ISeq[] = "init var of ISeq";
+void INIT_ATTRIBUTES__icode___icode_base___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__icode___icode_base___ISeq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* icode/icode_base.nit:95 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* icode/icode_base.nit:98 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* icode/icode_base.nit:167 */
+  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  ATTR_icode___icode_base___ISeq____icodes(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_icode___icode_base___ISeq(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___ISeq;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_icode___icode_base___ISeq[] = "check new ISeq";
+void CHECKNEW_icode___icode_base___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_icode___icode_base___ISeq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode___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;
+}
+static const char LOCATE_NEW_ISeq_icode___icode_base___ISeq___init[] = "new ISeq icode_base::ISeq::init";
+val_t NEW_ISeq_icode___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 = 172;
+  fra.me.meth = LOCATE_NEW_ISeq_icode___icode_base___ISeq___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* icode/icode_base.nit:172 */
+  fra.me.REG[0] = NEW_icode___icode_base___ISeq();
+  INIT_ATTRIBUTES__icode___icode_base___ISeq(fra.me.REG[0]);
+  icode___icode_base___ISeq___init(fra.me.REG[0], init_table);
+  CHECKNEW_icode___icode_base___ISeq(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_icode___icode_base___ILoop[75] = {
+  {(bigint) 4235 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ILoop" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ILoop < Object: superclass typecheck marker */},
+  {(bigint) 227 /* 4: ILoop < ICode: superclass typecheck marker */},
+  {(bigint) 3191 /* 5: ILoop < ICode0: superclass typecheck marker */},
+  {(bigint) 3555 /* 6: ILoop < ISeq: superclass typecheck marker */},
+  {(bigint) 4235 /* 7: ILoop < ILoop: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: ILoop < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling___compiling_icode___ILoop___compile_to_c},
+  {(bigint) compiling___compiling_icode___ICode___need_result},
+  {(bigint) compiling___compiling_icode___ICode___store_result},
+  {(bigint) compiling___compiling_icode___ICode___new_result},
+  {(bigint) analysis___icode_dump___ILoop___dump},
+  {(bigint) analysis___icode_dump___ICode___dump_intern},
+  {(bigint) icode___icode_tools___ICode___dup_with},
+  {(bigint) icode___icode_tools___ILoop___inner_dup_with},
+  {(bigint) 1 /* 58: ILoop < ICode: superclass init_table position */},
+  {(bigint) icode___icode_base___ICode0___arity},
+  {(bigint) icode___icode_base___ICode___result},
+  {(bigint) icode___icode_base___ICode___result__eq},
+  {(bigint) icode___icode_base___ICode___location},
+  {(bigint) icode___icode_base___ICode___location__eq},
+  {(bigint) icode___icode_base___ICode___is_pure},
+  {(bigint) icode___icode_base___ICode___init},
+  {(bigint) 0 /* 66: ILoop < ICode0: superclass init_table position */},
+  {(bigint) icode___icode_tools___ISeq___dup_seq_to},
+  {(bigint) 3 /* 68: ILoop < ISeq: superclass init_table position */},
+  {(bigint) icode___icode_base___ISeq___icodes},
+  {(bigint) icode___icode_base___ISeq___iescape_mark},
+  {(bigint) icode___icode_base___ISeq___iescape_mark__eq},
+  {(bigint) icode___icode_base___ISeq___init},
+  {(bigint) 4 /* 73: ILoop < ILoop: superclass init_table position */},
+  {(bigint) icode___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 */
+static const char LOCATE_INIT_ATTRIBUTES__icode___icode_base___ILoop[] = "init var of ILoop";
+void INIT_ATTRIBUTES__icode___icode_base___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__icode___icode_base___ILoop;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* icode/icode_base.nit:95 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* icode/icode_base.nit:98 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* icode/icode_base.nit:167 */
+  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  ATTR_icode___icode_base___ISeq____icodes(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_icode___icode_base___ILoop(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___ILoop;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_icode___icode_base___ILoop[] = "check new ILoop";
+void CHECKNEW_icode___icode_base___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_icode___icode_base___ILoop;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode___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;
+}
+static const char LOCATE_NEW_ILoop_icode___icode_base___ILoop___init[] = "new ILoop icode_base::ILoop::init";
+val_t NEW_ILoop_icode___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 = 179;
+  fra.me.meth = LOCATE_NEW_ILoop_icode___icode_base___ILoop___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* icode/icode_base.nit:179 */
+  fra.me.REG[0] = NEW_icode___icode_base___ILoop();
+  INIT_ATTRIBUTES__icode___icode_base___ILoop(fra.me.REG[0]);
+  icode___icode_base___ILoop___init(fra.me.REG[0], init_table);
+  CHECKNEW_icode___icode_base___ILoop(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_icode___icode_base___IIf[73] = {
+  {(bigint) 3595 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "IIf" /* 2: Class Name */},
+  {(bigint) 3 /* 3: IIf < Object: superclass typecheck marker */},
+  {(bigint) 227 /* 4: IIf < ICode: superclass typecheck marker */},
+  {(bigint) 3187 /* 5: IIf < ICode1: superclass typecheck marker */},
+  {(bigint) 3595 /* 6: IIf < IIf: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: IIf < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling___compiling_icode___IIf___compile_to_c},
+  {(bigint) compiling___compiling_icode___ICode___need_result},
+  {(bigint) compiling___compiling_icode___ICode___store_result},
+  {(bigint) compiling___compiling_icode___ICode___new_result},
+  {(bigint) analysis___icode_dump___IIf___dump},
+  {(bigint) analysis___icode_dump___ICode___dump_intern},
+  {(bigint) icode___icode_tools___ICode___dup_with},
+  {(bigint) icode___icode_tools___IIf___inner_dup_with},
+  {(bigint) 1 /* 58: IIf < ICode: superclass init_table position */},
+  {(bigint) icode___icode_base___ICode1___arity},
+  {(bigint) icode___icode_base___ICode___result},
+  {(bigint) icode___icode_base___ICode___result__eq},
+  {(bigint) icode___icode_base___ICode___location},
+  {(bigint) icode___icode_base___ICode___location__eq},
+  {(bigint) icode___icode_base___ICode___is_pure},
+  {(bigint) icode___icode_base___ICode___init},
+  {(bigint) 0 /* 66: IIf < ICode1: superclass init_table position */},
+  {(bigint) icode___icode_base___ICode1___expr},
+  {(bigint) icode___icode_base___ICode1___init},
+  {(bigint) 3 /* 69: IIf < IIf: superclass init_table position */},
+  {(bigint) icode___icode_base___IIf___then_seq},
+  {(bigint) icode___icode_base___IIf___else_seq},
+  {(bigint) icode___icode_base___IIf___init},
+};
+/* 0: Pointer to the classtable */
+/* 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 */
+static const char LOCATE_INIT_ATTRIBUTES__icode___icode_base___IIf[] = "init var of IIf";
+void INIT_ATTRIBUTES__icode___icode_base___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__icode___icode_base___IIf;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* icode/icode_base.nit:95 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* icode/icode_base.nit:98 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* icode/icode_base.nit:187 */
+  fra.me.REG[1] = NEW_ISeq_icode___icode_base___ISeq___init();
+  ATTR_icode___icode_base___IIf____then_seq(fra.me.REG[0]) = fra.me.REG[1];
+  /* icode/icode_base.nit:189 */
+  fra.me.REG[1] = NEW_ISeq_icode___icode_base___ISeq___init();
+  ATTR_icode___icode_base___IIf____else_seq(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_icode___icode_base___IIf(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___IIf;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_icode___icode_base___IIf[] = "check new IIf";
+void CHECKNEW_icode___icode_base___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_icode___icode_base___IIf;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode___icode_base___ICode1____expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_expr", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode___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___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);
+  }
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_IIf_icode___icode_base___IIf___init[] = "new IIf icode_base::IIf::init";
+val_t NEW_IIf_icode___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 = 190;
+  fra.me.meth = LOCATE_NEW_IIf_icode___icode_base___IIf___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* icode/icode_base.nit:190 */
+  fra.me.REG[1] = NEW_icode___icode_base___IIf();
+  INIT_ATTRIBUTES__icode___icode_base___IIf(fra.me.REG[1]);
+  icode___icode_base___IIf___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_icode___icode_base___IIf(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_icode___icode_base___IEscape[70] = {
+  {(bigint) 3607 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "IEscape" /* 2: Class Name */},
+  {(bigint) 3 /* 3: IEscape < Object: superclass typecheck marker */},
+  {(bigint) 227 /* 4: IEscape < ICode: superclass typecheck marker */},
+  {(bigint) 3191 /* 5: IEscape < ICode0: superclass typecheck marker */},
+  {(bigint) 3607 /* 6: IEscape < IEscape: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: IEscape < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling___compiling_icode___IEscape___compile_to_c},
+  {(bigint) compiling___compiling_icode___ICode___need_result},
+  {(bigint) compiling___compiling_icode___ICode___store_result},
+  {(bigint) compiling___compiling_icode___ICode___new_result},
+  {(bigint) analysis___icode_dump___ICode___dump},
+  {(bigint) analysis___icode_dump___IEscape___dump_intern},
+  {(bigint) icode___icode_tools___ICode___dup_with},
+  {(bigint) icode___icode_tools___IEscape___inner_dup_with},
+  {(bigint) 1 /* 58: IEscape < ICode: superclass init_table position */},
+  {(bigint) icode___icode_base___ICode0___arity},
+  {(bigint) icode___icode_base___ICode___result},
+  {(bigint) icode___icode_base___ICode___result__eq},
+  {(bigint) icode___icode_base___ICode___location},
+  {(bigint) icode___icode_base___ICode___location__eq},
+  {(bigint) icode___icode_base___ICode___is_pure},
+  {(bigint) icode___icode_base___ICode___init},
+  {(bigint) 0 /* 66: IEscape < ICode0: superclass init_table position */},
+  {(bigint) 3 /* 67: IEscape < IEscape: superclass init_table position */},
+  {(bigint) icode___icode_base___IEscape___iescape_mark},
+  {(bigint) icode___icode_base___IEscape___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute IEscape::_result */
+/* 3: Attribute IEscape::_location */
+/* 4: Attribute IEscape::_iescape_mark */
+static const char LOCATE_INIT_ATTRIBUTES__icode___icode_base___IEscape[] = "init var of IEscape";
+void INIT_ATTRIBUTES__icode___icode_base___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__icode___icode_base___IEscape;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* icode/icode_base.nit:95 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* icode/icode_base.nit:98 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_icode___icode_base___IEscape(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___IEscape;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_icode___icode_base___IEscape[] = "check new IEscape";
+void CHECKNEW_icode___icode_base___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_icode___icode_base___IEscape;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode___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;
+}
+static const char LOCATE_NEW_IEscape_icode___icode_base___IEscape___init[] = "new IEscape icode_base::IEscape::init";
+val_t NEW_IEscape_icode___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 = 199;
+  fra.me.meth = LOCATE_NEW_IEscape_icode___icode_base___IEscape___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* icode/icode_base.nit:199 */
+  fra.me.REG[1] = NEW_icode___icode_base___IEscape();
+  INIT_ATTRIBUTES__icode___icode_base___IEscape(fra.me.REG[1]);
+  icode___icode_base___IEscape___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_icode___icode_base___IEscape(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_icode___icode_base___IAbort[71] = {
+  {(bigint) 3647 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "IAbort" /* 2: Class Name */},
+  {(bigint) 3 /* 3: IAbort < Object: superclass typecheck marker */},
+  {(bigint) 227 /* 4: IAbort < ICode: superclass typecheck marker */},
+  {(bigint) 3191 /* 5: IAbort < ICode0: superclass typecheck marker */},
+  {(bigint) 3647 /* 6: IAbort < IAbort: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: IAbort < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling___compiling_icode___IAbort___compile_to_c},
+  {(bigint) compiling___compiling_icode___ICode___need_result},
+  {(bigint) compiling___compiling_icode___ICode___store_result},
+  {(bigint) compiling___compiling_icode___ICode___new_result},
+  {(bigint) analysis___icode_dump___ICode___dump},
+  {(bigint) analysis___icode_dump___IAbort___dump_intern},
+  {(bigint) icode___icode_tools___ICode___dup_with},
+  {(bigint) icode___icode_tools___IAbort___inner_dup_with},
+  {(bigint) 1 /* 58: IAbort < ICode: superclass init_table position */},
+  {(bigint) icode___icode_base___ICode0___arity},
+  {(bigint) icode___icode_base___ICode___result},
+  {(bigint) icode___icode_base___ICode___result__eq},
+  {(bigint) icode___icode_base___ICode___location},
+  {(bigint) icode___icode_base___ICode___location__eq},
+  {(bigint) icode___icode_base___ICode___is_pure},
+  {(bigint) icode___icode_base___ICode___init},
+  {(bigint) 0 /* 66: IAbort < ICode0: superclass init_table position */},
+  {(bigint) 3 /* 67: IAbort < IAbort: superclass init_table position */},
+  {(bigint) icode___icode_base___IAbort___texts},
+  {(bigint) icode___icode_base___IAbort___module_location},
+  {(bigint) icode___icode_base___IAbort___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute IAbort::_result */
+/* 3: Attribute IAbort::_location */
+/* 4: Attribute IAbort::_texts */
+/* 5: Attribute IAbort::_module_location */
+static const char LOCATE_INIT_ATTRIBUTES__icode___icode_base___IAbort[] = "init var of IAbort";
+void INIT_ATTRIBUTES__icode___icode_base___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__icode___icode_base___IAbort;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* icode/icode_base.nit:95 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* icode/icode_base.nit:98 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_icode___icode_base___IAbort(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___IAbort;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_icode___icode_base___IAbort[] = "check new IAbort";
+void CHECKNEW_icode___icode_base___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_icode___icode_base___IAbort;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode___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___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;
+}
+static const char LOCATE_NEW_IAbort_icode___icode_base___IAbort___init[] = "new IAbort icode_base::IAbort::init";
+val_t NEW_IAbort_icode___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 = 210;
+  fra.me.meth = LOCATE_NEW_IAbort_icode___icode_base___IAbort___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  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:210 */
+  fra.me.REG[2] = NEW_icode___icode_base___IAbort();
+  INIT_ATTRIBUTES__icode___icode_base___IAbort(fra.me.REG[2]);
+  icode___icode_base___IAbort___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_icode___icode_base___IAbort(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_icode___icode_base___ICall[81] = {
+  {(bigint) 4243 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ICall" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ICall < Object: superclass typecheck marker */},
+  {(bigint) 227 /* 4: ICall < ICode: superclass typecheck marker */},
+  {(bigint) 3179 /* 5: ICall < ICodeN: superclass typecheck marker */},
+  {(bigint) 3643 /* 6: ICall < IAbsCall: superclass typecheck marker */},
+  {(bigint) 4243 /* 7: ICall < ICall: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: ICall < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling___compiling_icode___IAbsCall___compile_to_c},
+  {(bigint) compiling___compiling_icode___ICode___need_result},
+  {(bigint) compiling___compiling_icode___ICode___store_result},
+  {(bigint) compiling___compiling_icode___ICode___new_result},
+  {(bigint) analysis___icode_dump___ICodeN___dump},
+  {(bigint) analysis___icode_dump___ICall___dump_intern},
+  {(bigint) icode___icode_tools___ICode___dup_with},
+  {(bigint) icode___icode_tools___ICall___inner_dup_with},
+  {(bigint) 2 /* 58: ICall < ICode: superclass init_table position */},
+  {(bigint) icode___icode_base___ICodeN___arity},
+  {(bigint) icode___icode_base___ICode___result},
+  {(bigint) icode___icode_base___ICode___result__eq},
+  {(bigint) icode___icode_base___ICode___location},
+  {(bigint) icode___icode_base___ICode___location__eq},
+  {(bigint) icode___icode_base___ICode___is_pure},
+  {(bigint) icode___icode_base___ICode___init},
+  {(bigint) analysis___icode_dump___ICode___dump},
+  {(bigint) 1 /* 67: ICall < ICodeN: superclass init_table position */},
+  {(bigint) icode___icode_base___ICodeN___exprs},
+  {(bigint) icode___icode_base___ICodeN___closure_defs},
+  {(bigint) icode___icode_base___ICodeN___closure_defs__eq},
+  {(bigint) icode___icode_base___ICodeN___init},
+  {(bigint) compiling___compiling_icode___ICall___compile_call_to_c},
+  {(bigint) 0 /* 73: ICall < IAbsCall: superclass init_table position */},
+  {(bigint) icode___icode_base___IAbsCall___property},
+  {(bigint) icode___icode_base___IAbsCall___is_explicit_from_extern},
+  {(bigint) icode___icode_base___IAbsCall___is_explicit_from_extern__eq},
+  {(bigint) icode___icode_base___IAbsCall___init},
+  {(bigint) 4 /* 78: ICall < ICall: superclass init_table position */},
+  {(bigint) icode___icode_base___ICall___init},
+  {(bigint) analysis___inline_methods___ICall___is_inlinable},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ICall::_result */
+/* 3: Attribute ICall::_location */
+/* 4: Attribute ICall::_exprs */
+/* 5: Attribute ICall::_closure_defs */
+/* 6: Attribute ICall::_property */
+/* 7: Attribute ICall::@is_explicit_from_extern */
+static const char LOCATE_INIT_ATTRIBUTES__icode___icode_base___ICall[] = "init var of ICall";
+void INIT_ATTRIBUTES__icode___icode_base___ICall(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__icode___icode_base___ICall;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* icode/icode_base.nit:95 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* icode/icode_base.nit:98 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* icode/icode_base.nit:226 */
+  REGB0 = TAG_Bool(0);
+  ATTR_icode___icode_base___IAbsCall_____atis_explicit_from_extern(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_icode___icode_base___ICall(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___ICall;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_icode___icode_base___ICall[] = "check new ICall";
+void CHECKNEW_icode___icode_base___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_icode___icode_base___ICall;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode___icode_base___ICodeN____exprs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_exprs", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode___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___icode_base___IAbsCall_____atis_explicit_from_extern(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@is_explicit_from_extern", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_ICall_icode___icode_base___ICall___init[] = "new ICall icode_base::ICall::init";
+val_t NEW_ICall_icode___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 = 239;
+  fra.me.meth = LOCATE_NEW_ICall_icode___icode_base___ICall___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  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:239 */
+  fra.me.REG[2] = NEW_icode___icode_base___ICall();
+  INIT_ATTRIBUTES__icode___icode_base___ICall(fra.me.REG[2]);
+  icode___icode_base___ICall___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_icode___icode_base___ICall(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_icode___icode_base___ISuper[80] = {
+  {(bigint) 4219 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ISuper" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ISuper < Object: superclass typecheck marker */},
+  {(bigint) 227 /* 4: ISuper < ICode: superclass typecheck marker */},
+  {(bigint) 3179 /* 5: ISuper < ICodeN: superclass typecheck marker */},
+  {(bigint) 3643 /* 6: ISuper < IAbsCall: superclass typecheck marker */},
+  {(bigint) 4219 /* 7: ISuper < ISuper: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: ISuper < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling___compiling_icode___IAbsCall___compile_to_c},
+  {(bigint) compiling___compiling_icode___ICode___need_result},
+  {(bigint) compiling___compiling_icode___ICode___store_result},
+  {(bigint) compiling___compiling_icode___ICode___new_result},
+  {(bigint) analysis___icode_dump___ICodeN___dump},
+  {(bigint) analysis___icode_dump___ISuper___dump_intern},
+  {(bigint) icode___icode_tools___ICode___dup_with},
+  {(bigint) icode___icode_tools___ISuper___inner_dup_with},
+  {(bigint) 2 /* 58: ISuper < ICode: superclass init_table position */},
+  {(bigint) icode___icode_base___ICodeN___arity},
+  {(bigint) icode___icode_base___ICode___result},
+  {(bigint) icode___icode_base___ICode___result__eq},
+  {(bigint) icode___icode_base___ICode___location},
+  {(bigint) icode___icode_base___ICode___location__eq},
+  {(bigint) icode___icode_base___ICode___is_pure},
+  {(bigint) icode___icode_base___ICode___init},
+  {(bigint) analysis___icode_dump___ICode___dump},
+  {(bigint) 1 /* 67: ISuper < ICodeN: superclass init_table position */},
+  {(bigint) icode___icode_base___ICodeN___exprs},
+  {(bigint) icode___icode_base___ICodeN___closure_defs},
+  {(bigint) icode___icode_base___ICodeN___closure_defs__eq},
+  {(bigint) icode___icode_base___ICodeN___init},
+  {(bigint) compiling___compiling_icode___ISuper___compile_call_to_c},
+  {(bigint) 0 /* 73: ISuper < IAbsCall: superclass init_table position */},
+  {(bigint) icode___icode_base___IAbsCall___property},
+  {(bigint) icode___icode_base___IAbsCall___is_explicit_from_extern},
+  {(bigint) icode___icode_base___IAbsCall___is_explicit_from_extern__eq},
+  {(bigint) icode___icode_base___IAbsCall___init},
+  {(bigint) 4 /* 78: ISuper < ISuper: superclass init_table position */},
+  {(bigint) icode___icode_base___ISuper___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ISuper::_result */
+/* 3: Attribute ISuper::_location */
+/* 4: Attribute ISuper::_exprs */
+/* 5: Attribute ISuper::_closure_defs */
+/* 6: Attribute ISuper::_property */
+/* 7: Attribute ISuper::@is_explicit_from_extern */
+static const char LOCATE_INIT_ATTRIBUTES__icode___icode_base___ISuper[] = "init var of ISuper";
+void INIT_ATTRIBUTES__icode___icode_base___ISuper(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__icode___icode_base___ISuper;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* icode/icode_base.nit:95 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* icode/icode_base.nit:98 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* icode/icode_base.nit:226 */
+  REGB0 = TAG_Bool(0);
+  ATTR_icode___icode_base___IAbsCall_____atis_explicit_from_extern(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_icode___icode_base___ISuper(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___ISuper;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_icode___icode_base___ISuper[] = "check new ISuper";
+void CHECKNEW_icode___icode_base___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_icode___icode_base___ISuper;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode___icode_base___ICodeN____exprs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_exprs", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode___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___icode_base___IAbsCall_____atis_explicit_from_extern(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@is_explicit_from_extern", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_ISuper_icode___icode_base___ISuper___init[] = "new ISuper icode_base::ISuper::init";
+val_t NEW_ISuper_icode___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 = 246;
+  fra.me.meth = LOCATE_NEW_ISuper_icode___icode_base___ISuper___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  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:246 */
+  fra.me.REG[2] = NEW_icode___icode_base___ISuper();
+  INIT_ATTRIBUTES__icode___icode_base___ISuper(fra.me.REG[2]);
+  icode___icode_base___ISuper___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_icode___icode_base___ISuper(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_icode___icode_base___INew[81] = {
+  {(bigint) 4231 /* 0: Identity */},
+  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "INew" /* 2: Class Name */},
+  {(bigint) 3 /* 3: INew < Object: superclass typecheck marker */},
+  {(bigint) 227 /* 4: INew < ICode: superclass typecheck marker */},
+  {(bigint) 3179 /* 5: INew < ICodeN: superclass typecheck marker */},
+  {(bigint) 3643 /* 6: INew < IAbsCall: superclass typecheck marker */},
+  {(bigint) 4231 /* 7: INew < INew: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: INew < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling___compiling_icode___IAbsCall___compile_to_c},
+  {(bigint) compiling___compiling_icode___ICode___need_result},
+  {(bigint) compiling___compiling_icode___ICode___store_result},
+  {(bigint) compiling___compiling_icode___ICode___new_result},
+  {(bigint) analysis___icode_dump___ICodeN___dump},
+  {(bigint) analysis___icode_dump___INew___dump_intern},
+  {(bigint) icode___icode_tools___ICode___dup_with},
+  {(bigint) icode___icode_tools___INew___inner_dup_with},
+  {(bigint) 2 /* 58: INew < ICode: superclass init_table position */},
+  {(bigint) icode___icode_base___ICodeN___arity},
+  {(bigint) icode___icode_base___ICode___result},
+  {(bigint) icode___icode_base___ICode___result__eq},
+  {(bigint) icode___icode_base___ICode___location},
+  {(bigint) icode___icode_base___ICode___location__eq},
+  {(bigint) icode___icode_base___ICode___is_pure},
+  {(bigint) icode___icode_base___ICode___init},
+  {(bigint) analysis___icode_dump___ICode___dump},
+  {(bigint) 1 /* 67: INew < ICodeN: superclass init_table position */},
+  {(bigint) icode___icode_base___ICodeN___exprs},
+  {(bigint) icode___icode_base___ICodeN___closure_defs},
+  {(bigint) icode___icode_base___ICodeN___closure_defs__eq},
+  {(bigint) icode___icode_base___ICodeN___init},
+  {(bigint) compiling___compiling_icode___INew___compile_call_to_c},
+  {(bigint) 0 /* 73: INew < IAbsCall: superclass init_table position */},
+  {(bigint) icode___icode_base___IAbsCall___property},
+  {(bigint) icode___icode_base___IAbsCall___is_explicit_from_extern},
+  {(bigint) icode___icode_base___IAbsCall___is_explicit_from_extern__eq},
+  {(bigint) icode___icode_base___IAbsCall___init},
+  {(bigint) 4 /* 78: INew < INew: superclass init_table position */},
+  {(bigint) icode___icode_base___INew___stype},
+  {(bigint) icode___icode_base___INew___init},
+};
+/* 0: Pointer to the classtable */
+/* 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::@is_explicit_from_extern */
+/* 8: Attribute INew::_stype */
+static const char LOCATE_INIT_ATTRIBUTES__icode___icode_base___INew[] = "init var of INew";
+void INIT_ATTRIBUTES__icode___icode_base___INew(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__icode___icode_base___INew;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* icode/icode_base.nit:95 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* icode/icode_base.nit:98 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* icode/icode_base.nit:226 */
+  REGB0 = TAG_Bool(0);
+  ATTR_icode___icode_base___IAbsCall_____atis_explicit_from_extern(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_icode___icode_base___INew(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 9);
+  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___INew;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_icode___icode_base___INew[] = "check new INew";
+void CHECKNEW_icode___icode_base___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_icode___icode_base___INew;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode___icode_base___ICodeN____exprs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_exprs", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode___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___icode_base___IAbsCall_____atis_explicit_from_extern(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@is_explicit_from_extern", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode___icode_base___INew____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;
+}
+static const char LOCATE_NEW_INew_icode___icode_base___INew___init[] = "new INew icode_base::INew::init";
+val_t NEW_INew_icode___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 = 260;
+  fra.me.meth = LOCATE_NEW_INew_icode___icode_base___INew___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  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:260 */
+  fra.me.REG[3] = NEW_icode___icode_base___INew();
+  INIT_ATTRIBUTES__icode___icode_base___INew(fra.me.REG[3]);
+  icode___icode_base___INew___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_icode___icode_base___INew(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
+}
+const classtable_elt_t VFT_icode___icode_base___IAllocateInstance[70] = {
+  {(bigint) 3639 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "IAllocateInstance" /* 2: Class Name */},
+  {(bigint) 3 /* 3: IAllocateInstance < Object: superclass typecheck marker */},
+  {(bigint) 227 /* 4: IAllocateInstance < ICode: superclass typecheck marker */},
+  {(bigint) 3191 /* 5: IAllocateInstance < ICode0: superclass typecheck marker */},
+  {(bigint) 3639 /* 6: IAllocateInstance < IAllocateInstance: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: IAllocateInstance < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling___compiling_icode___IAllocateInstance___compile_to_c},
+  {(bigint) compiling___compiling_icode___ICode___need_result},
+  {(bigint) compiling___compiling_icode___ICode___store_result},
+  {(bigint) compiling___compiling_icode___ICode___new_result},
+  {(bigint) analysis___icode_dump___ICode___dump},
+  {(bigint) analysis___icode_dump___IAllocateInstance___dump_intern},
+  {(bigint) icode___icode_tools___ICode___dup_with},
+  {(bigint) icode___icode_tools___IAllocateInstance___inner_dup_with},
+  {(bigint) 1 /* 58: IAllocateInstance < ICode: superclass init_table position */},
+  {(bigint) icode___icode_base___ICode0___arity},
+  {(bigint) icode___icode_base___ICode___result},
+  {(bigint) icode___icode_base___ICode___result__eq},
+  {(bigint) icode___icode_base___ICode___location},
+  {(bigint) icode___icode_base___ICode___location__eq},
+  {(bigint) icode___icode_base___ICode___is_pure},
+  {(bigint) icode___icode_base___ICode___init},
+  {(bigint) 0 /* 66: IAllocateInstance < ICode0: superclass init_table position */},
+  {(bigint) 3 /* 67: IAllocateInstance < IAllocateInstance: superclass init_table position */},
+  {(bigint) icode___icode_base___IAllocateInstance___stype},
+  {(bigint) icode___icode_base___IAllocateInstance___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute IAllocateInstance::_result */
+/* 3: Attribute IAllocateInstance::_location */
+/* 4: Attribute IAllocateInstance::_stype */
+static const char LOCATE_INIT_ATTRIBUTES__icode___icode_base___IAllocateInstance[] = "init var of IAllocateInstance";
+void INIT_ATTRIBUTES__icode___icode_base___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__icode___icode_base___IAllocateInstance;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* icode/icode_base.nit:95 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* icode/icode_base.nit:98 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_icode___icode_base___IAllocateInstance(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___IAllocateInstance;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_icode___icode_base___IAllocateInstance[] = "check new IAllocateInstance";
+void CHECKNEW_icode___icode_base___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_icode___icode_base___IAllocateInstance;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode___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;
+}
+static const char LOCATE_NEW_IAllocateInstance_icode___icode_base___IAllocateInstance___init[] = "new IAllocateInstance icode_base::IAllocateInstance::init";
+val_t NEW_IAllocateInstance_icode___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};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 274;
+  fra.me.meth = LOCATE_NEW_IAllocateInstance_icode___icode_base___IAllocateInstance___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* icode/icode_base.nit:274 */
+  fra.me.REG[1] = NEW_icode___icode_base___IAllocateInstance();
+  INIT_ATTRIBUTES__icode___icode_base___IAllocateInstance(fra.me.REG[1]);
+  icode___icode_base___IAllocateInstance___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_icode___icode_base___IAllocateInstance(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_icode___icode_base___IStaticCall[80] = {
+  {(bigint) 4223 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "IStaticCall" /* 2: Class Name */},
+  {(bigint) 3 /* 3: IStaticCall < Object: superclass typecheck marker */},
+  {(bigint) 227 /* 4: IStaticCall < ICode: superclass typecheck marker */},
+  {(bigint) 3179 /* 5: IStaticCall < ICodeN: superclass typecheck marker */},
+  {(bigint) 3643 /* 6: IStaticCall < IAbsCall: superclass typecheck marker */},
+  {(bigint) 4223 /* 7: IStaticCall < IStaticCall: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: IStaticCall < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling___compiling_icode___IAbsCall___compile_to_c},
+  {(bigint) compiling___compiling_icode___ICode___need_result},
+  {(bigint) compiling___compiling_icode___ICode___store_result},
+  {(bigint) compiling___compiling_icode___ICode___new_result},
+  {(bigint) analysis___icode_dump___ICodeN___dump},
+  {(bigint) analysis___icode_dump___IStaticCall___dump_intern},
+  {(bigint) icode___icode_tools___ICode___dup_with},
+  {(bigint) icode___icode_tools___IStaticCall___inner_dup_with},
+  {(bigint) 2 /* 58: IStaticCall < ICode: superclass init_table position */},
+  {(bigint) icode___icode_base___ICodeN___arity},
+  {(bigint) icode___icode_base___ICode___result},
+  {(bigint) icode___icode_base___ICode___result__eq},
+  {(bigint) icode___icode_base___ICode___location},
+  {(bigint) icode___icode_base___ICode___location__eq},
+  {(bigint) icode___icode_base___ICode___is_pure},
+  {(bigint) icode___icode_base___ICode___init},
+  {(bigint) analysis___icode_dump___ICode___dump},
+  {(bigint) 1 /* 67: IStaticCall < ICodeN: superclass init_table position */},
+  {(bigint) icode___icode_base___ICodeN___exprs},
+  {(bigint) icode___icode_base___ICodeN___closure_defs},
+  {(bigint) icode___icode_base___ICodeN___closure_defs__eq},
+  {(bigint) icode___icode_base___ICodeN___init},
+  {(bigint) compiling___compiling_icode___IStaticCall___compile_call_to_c},
+  {(bigint) 0 /* 73: IStaticCall < IAbsCall: superclass init_table position */},
+  {(bigint) icode___icode_base___IAbsCall___property},
+  {(bigint) icode___icode_base___IAbsCall___is_explicit_from_extern},
+  {(bigint) icode___icode_base___IAbsCall___is_explicit_from_extern__eq},
+  {(bigint) icode___icode_base___IAbsCall___init},
+  {(bigint) 4 /* 78: IStaticCall < IStaticCall: superclass init_table position */},
+  {(bigint) icode___icode_base___IStaticCall___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute IStaticCall::_result */
+/* 3: Attribute IStaticCall::_location */
+/* 4: Attribute IStaticCall::_exprs */
+/* 5: Attribute IStaticCall::_closure_defs */
+/* 6: Attribute IStaticCall::_property */
+/* 7: Attribute IStaticCall::@is_explicit_from_extern */
+static const char LOCATE_INIT_ATTRIBUTES__icode___icode_base___IStaticCall[] = "init var of IStaticCall";
+void INIT_ATTRIBUTES__icode___icode_base___IStaticCall(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__icode___icode_base___IStaticCall;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* icode/icode_base.nit:95 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* icode/icode_base.nit:98 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* icode/icode_base.nit:226 */
+  REGB0 = TAG_Bool(0);
+  ATTR_icode___icode_base___IAbsCall_____atis_explicit_from_extern(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_icode___icode_base___IStaticCall(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___IStaticCall;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_icode___icode_base___IStaticCall[] = "check new IStaticCall";
+void CHECKNEW_icode___icode_base___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_icode___icode_base___IStaticCall;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode___icode_base___ICodeN____exprs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_exprs", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode___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___icode_base___IAbsCall_____atis_explicit_from_extern(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@is_explicit_from_extern", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_IStaticCall_icode___icode_base___IStaticCall___init[] = "new IStaticCall icode_base::IStaticCall::init";
+val_t NEW_IStaticCall_icode___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 = 283;
+  fra.me.meth = LOCATE_NEW_IStaticCall_icode___icode_base___IStaticCall___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  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:283 */
+  fra.me.REG[2] = NEW_icode___icode_base___IStaticCall();
+  INIT_ATTRIBUTES__icode___icode_base___IStaticCall(fra.me.REG[2]);
+  icode___icode_base___IStaticCall___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_icode___icode_base___IStaticCall(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_icode___icode_base___ICheckInstance[72] = {
+  {(bigint) 3615 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ICheckInstance" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ICheckInstance < Object: superclass typecheck marker */},
+  {(bigint) 227 /* 4: ICheckInstance < ICode: superclass typecheck marker */},
+  {(bigint) 3187 /* 5: ICheckInstance < ICode1: superclass typecheck marker */},
+  {(bigint) 3615 /* 6: ICheckInstance < ICheckInstance: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: ICheckInstance < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling___compiling_icode___ICheckInstance___compile_to_c},
+  {(bigint) compiling___compiling_icode___ICode___need_result},
+  {(bigint) compiling___compiling_icode___ICode___store_result},
+  {(bigint) compiling___compiling_icode___ICode___new_result},
+  {(bigint) analysis___icode_dump___ICode___dump},
+  {(bigint) analysis___icode_dump___ICheckInstance___dump_intern},
+  {(bigint) icode___icode_tools___ICode___dup_with},
+  {(bigint) icode___icode_tools___ICheckInstance___inner_dup_with},
+  {(bigint) 1 /* 58: ICheckInstance < ICode: superclass init_table position */},
+  {(bigint) icode___icode_base___ICode1___arity},
+  {(bigint) icode___icode_base___ICode___result},
+  {(bigint) icode___icode_base___ICode___result__eq},
+  {(bigint) icode___icode_base___ICode___location},
+  {(bigint) icode___icode_base___ICode___location__eq},
+  {(bigint) icode___icode_base___ICode___is_pure},
+  {(bigint) icode___icode_base___ICode___init},
+  {(bigint) 0 /* 66: ICheckInstance < ICode1: superclass init_table position */},
+  {(bigint) icode___icode_base___ICode1___expr},
+  {(bigint) icode___icode_base___ICode1___init},
+  {(bigint) 3 /* 69: ICheckInstance < ICheckInstance: superclass init_table position */},
+  {(bigint) icode___icode_base___ICheckInstance___stype},
+  {(bigint) icode___icode_base___ICheckInstance___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ICheckInstance::_result */
+/* 3: Attribute ICheckInstance::_location */
+/* 4: Attribute ICheckInstance::_expr */
+/* 5: Attribute ICheckInstance::_stype */
+static const char LOCATE_INIT_ATTRIBUTES__icode___icode_base___ICheckInstance[] = "init var of ICheckInstance";
+void INIT_ATTRIBUTES__icode___icode_base___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__icode___icode_base___ICheckInstance;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* icode/icode_base.nit:95 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* icode/icode_base.nit:98 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_icode___icode_base___ICheckInstance(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___ICheckInstance;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_icode___icode_base___ICheckInstance[] = "check new ICheckInstance";
+void CHECKNEW_icode___icode_base___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_icode___icode_base___ICheckInstance;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode___icode_base___ICode1____expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_expr", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode___icode_base___ICheckInstance____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;
+}
+static const char LOCATE_NEW_ICheckInstance_icode___icode_base___ICheckInstance___init[] = "new ICheckInstance icode_base::ICheckInstance::init";
+val_t NEW_ICheckInstance_icode___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 = 291;
+  fra.me.meth = LOCATE_NEW_ICheckInstance_icode___icode_base___ICheckInstance___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  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:291 */
+  fra.me.REG[2] = NEW_icode___icode_base___ICheckInstance();
+  INIT_ATTRIBUTES__icode___icode_base___ICheckInstance(fra.me.REG[2]);
+  icode___icode_base___ICheckInstance___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_icode___icode_base___ICheckInstance(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_icode___icode_base___IInitAttributes[72] = {
+  {(bigint) 3591 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "IInitAttributes" /* 2: Class Name */},
+  {(bigint) 3 /* 3: IInitAttributes < Object: superclass typecheck marker */},
+  {(bigint) 227 /* 4: IInitAttributes < ICode: superclass typecheck marker */},
+  {(bigint) 3187 /* 5: IInitAttributes < ICode1: superclass typecheck marker */},
+  {(bigint) 3591 /* 6: IInitAttributes < IInitAttributes: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: IInitAttributes < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling___compiling_icode___IInitAttributes___compile_to_c},
+  {(bigint) compiling___compiling_icode___ICode___need_result},
+  {(bigint) compiling___compiling_icode___ICode___store_result},
+  {(bigint) compiling___compiling_icode___ICode___new_result},
+  {(bigint) analysis___icode_dump___ICode___dump},
+  {(bigint) analysis___icode_dump___IInitAttributes___dump_intern},
+  {(bigint) icode___icode_tools___ICode___dup_with},
+  {(bigint) icode___icode_tools___IInitAttributes___inner_dup_with},
+  {(bigint) 1 /* 58: IInitAttributes < ICode: superclass init_table position */},
+  {(bigint) icode___icode_base___ICode1___arity},
+  {(bigint) icode___icode_base___ICode___result},
+  {(bigint) icode___icode_base___ICode___result__eq},
+  {(bigint) icode___icode_base___ICode___location},
+  {(bigint) icode___icode_base___ICode___location__eq},
+  {(bigint) icode___icode_base___ICode___is_pure},
+  {(bigint) icode___icode_base___ICode___init},
+  {(bigint) 0 /* 66: IInitAttributes < ICode1: superclass init_table position */},
+  {(bigint) icode___icode_base___ICode1___expr},
+  {(bigint) icode___icode_base___ICode1___init},
+  {(bigint) 3 /* 69: IInitAttributes < IInitAttributes: superclass init_table position */},
+  {(bigint) icode___icode_base___IInitAttributes___stype},
+  {(bigint) icode___icode_base___IInitAttributes___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute IInitAttributes::_result */
+/* 3: Attribute IInitAttributes::_location */
+/* 4: Attribute IInitAttributes::_expr */
+/* 5: Attribute IInitAttributes::_stype */
+static const char LOCATE_INIT_ATTRIBUTES__icode___icode_base___IInitAttributes[] = "init var of IInitAttributes";
+void INIT_ATTRIBUTES__icode___icode_base___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__icode___icode_base___IInitAttributes;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* icode/icode_base.nit:95 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* icode/icode_base.nit:98 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_icode___icode_base___IInitAttributes(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___IInitAttributes;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_icode___icode_base___IInitAttributes[] = "check new IInitAttributes";
+void CHECKNEW_icode___icode_base___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_icode___icode_base___IInitAttributes;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode___icode_base___ICode1____expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_expr", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode___icode_base___IInitAttributes____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;
+}
+static const char LOCATE_NEW_IInitAttributes_icode___icode_base___IInitAttributes___init[] = "new IInitAttributes icode_base::IInitAttributes::init";
+val_t NEW_IInitAttributes_icode___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 = 303;
+  fra.me.meth = LOCATE_NEW_IInitAttributes_icode___icode_base___IInitAttributes___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  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:303 */
+  fra.me.REG[2] = NEW_icode___icode_base___IInitAttributes();
+  INIT_ATTRIBUTES__icode___icode_base___IInitAttributes(fra.me.REG[2]);
+  icode___icode_base___IInitAttributes___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_icode___icode_base___IInitAttributes(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_icode___icode_base___IClosCall[78] = {
+  {(bigint) 3611 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "IClosCall" /* 2: Class Name */},
+  {(bigint) 3 /* 3: IClosCall < Object: superclass typecheck marker */},
+  {(bigint) 227 /* 4: IClosCall < ICode: superclass typecheck marker */},
+  {(bigint) 3179 /* 5: IClosCall < ICodeN: superclass typecheck marker */},
+  {(bigint) 3611 /* 6: IClosCall < IClosCall: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: IClosCall < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling___compiling_icode___IClosCall___compile_to_c},
+  {(bigint) compiling___compiling_icode___ICode___need_result},
+  {(bigint) compiling___compiling_icode___ICode___store_result},
+  {(bigint) compiling___compiling_icode___ICode___new_result},
+  {(bigint) analysis___icode_dump___ICodeN___dump},
+  {(bigint) analysis___icode_dump___IClosCall___dump_intern},
+  {(bigint) icode___icode_tools___IClosCall___dup_with},
+  {(bigint) icode___icode_tools___IClosCall___inner_dup_with},
+  {(bigint) 1 /* 58: IClosCall < ICode: superclass init_table position */},
+  {(bigint) icode___icode_base___ICodeN___arity},
+  {(bigint) icode___icode_base___ICode___result},
+  {(bigint) icode___icode_base___ICode___result__eq},
+  {(bigint) icode___icode_base___ICode___location},
+  {(bigint) icode___icode_base___ICode___location__eq},
+  {(bigint) icode___icode_base___ICode___is_pure},
+  {(bigint) icode___icode_base___ICode___init},
+  {(bigint) analysis___icode_dump___ICode___dump},
+  {(bigint) 0 /* 67: IClosCall < ICodeN: superclass init_table position */},
+  {(bigint) icode___icode_base___ICodeN___exprs},
+  {(bigint) icode___icode_base___ICodeN___closure_defs},
+  {(bigint) icode___icode_base___ICodeN___closure_defs__eq},
+  {(bigint) icode___icode_base___ICodeN___init},
+  {(bigint) icode___icode_tools___ICode___dup_with},
+  {(bigint) 3 /* 73: IClosCall < IClosCall: superclass init_table position */},
+  {(bigint) icode___icode_base___IClosCall___closure_decl},
+  {(bigint) icode___icode_base___IClosCall___break_seq},
+  {(bigint) icode___icode_base___IClosCall___break_seq__eq},
+  {(bigint) icode___icode_base___IClosCall___init},
+};
+/* 0: Pointer to the classtable */
+/* 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 */
+static const char LOCATE_INIT_ATTRIBUTES__icode___icode_base___IClosCall[] = "init var of IClosCall";
+void INIT_ATTRIBUTES__icode___icode_base___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__icode___icode_base___IClosCall;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* icode/icode_base.nit:95 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* icode/icode_base.nit:98 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* icode/icode_base.nit:317 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___IClosCall____break_seq(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_icode___icode_base___IClosCall(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___IClosCall;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_icode___icode_base___IClosCall[] = "check new IClosCall";
+void CHECKNEW_icode___icode_base___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_icode___icode_base___IClosCall;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode___icode_base___ICodeN____exprs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_exprs", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode___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);
+  }
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_IClosCall_icode___icode_base___IClosCall___init[] = "new IClosCall icode_base::IClosCall::init";
+val_t NEW_IClosCall_icode___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 = 320;
+  fra.me.meth = LOCATE_NEW_IClosCall_icode___icode_base___IClosCall___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  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:320 */
+  fra.me.REG[2] = NEW_icode___icode_base___IClosCall();
+  INIT_ATTRIBUTES__icode___icode_base___IClosCall(fra.me.REG[2]);
+  icode___icode_base___IClosCall___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_icode___icode_base___IClosCall(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_icode___icode_base___INative[78] = {
+  {(bigint) 3575 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "INative" /* 2: Class Name */},
+  {(bigint) 3 /* 3: INative < Object: superclass typecheck marker */},
+  {(bigint) 227 /* 4: INative < ICode: superclass typecheck marker */},
+  {(bigint) 3179 /* 5: INative < ICodeN: superclass typecheck marker */},
+  {(bigint) 3575 /* 6: INative < INative: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: INative < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling___compiling_icode___INative___compile_to_c},
+  {(bigint) compiling___compiling_icode___ICode___need_result},
+  {(bigint) compiling___compiling_icode___ICode___store_result},
+  {(bigint) compiling___compiling_icode___ICode___new_result},
+  {(bigint) analysis___icode_dump___ICodeN___dump},
+  {(bigint) analysis___icode_dump___INative___dump_intern},
+  {(bigint) icode___icode_tools___ICode___dup_with},
+  {(bigint) icode___icode_tools___INative___inner_dup_with},
+  {(bigint) 1 /* 58: INative < ICode: superclass init_table position */},
+  {(bigint) icode___icode_base___ICodeN___arity},
+  {(bigint) icode___icode_base___ICode___result},
+  {(bigint) icode___icode_base___ICode___result__eq},
+  {(bigint) icode___icode_base___ICode___location},
+  {(bigint) icode___icode_base___ICode___location__eq},
+  {(bigint) icode___icode_base___INative___is_pure},
+  {(bigint) icode___icode_base___ICode___init},
+  {(bigint) analysis___icode_dump___ICode___dump},
+  {(bigint) 0 /* 67: INative < ICodeN: superclass init_table position */},
+  {(bigint) icode___icode_base___ICodeN___exprs},
+  {(bigint) icode___icode_base___ICodeN___closure_defs},
+  {(bigint) icode___icode_base___ICodeN___closure_defs__eq},
+  {(bigint) icode___icode_base___ICodeN___init},
+  {(bigint) compiling___compiling_icode___INative___compile_extern_method_to_c},
+  {(bigint) compiling___compiling_icode___INative___compile_intern_method_to_c},
+  {(bigint) 3 /* 74: INative < INative: superclass init_table position */},
+  {(bigint) icode___icode_base___INative___method},
+  {(bigint) icode___icode_base___INative___init},
+  {(bigint) icode___icode_base___INative___is_pure__eq},
+};
+/* 0: Pointer to the classtable */
+/* 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 */
+static const char LOCATE_INIT_ATTRIBUTES__icode___icode_base___INative[] = "init var of INative";
+void INIT_ATTRIBUTES__icode___icode_base___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__icode___icode_base___INative;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* icode/icode_base.nit:95 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* icode/icode_base.nit:98 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* icode/icode_base.nit:344 */
+  REGB0 = TAG_Bool(0);
+  ATTR_icode___icode_base___INative____is_pure(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_icode___icode_base___INative(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___INative;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_icode___icode_base___INative[] = "check new INative";
+void CHECKNEW_icode___icode_base___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_icode___icode_base___INative;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode___icode_base___ICodeN____exprs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_exprs", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode___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___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);
+  }
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_INative_icode___icode_base___INative___init[] = "new INative icode_base::INative::init";
+val_t NEW_INative_icode___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 = 335;
+  fra.me.meth = LOCATE_NEW_INative_icode___icode_base___INative___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  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:335 */
+  fra.me.REG[2] = NEW_icode___icode_base___INative();
+  INIT_ATTRIBUTES__icode___icode_base___INative(fra.me.REG[2]);
+  icode___icode_base___INative___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_icode___icode_base___INative(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_icode___icode_base___IIntValue[70] = {
+  {(bigint) 3587 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "IIntValue" /* 2: Class Name */},
+  {(bigint) 3 /* 3: IIntValue < Object: superclass typecheck marker */},
+  {(bigint) 227 /* 4: IIntValue < ICode: superclass typecheck marker */},
+  {(bigint) 3191 /* 5: IIntValue < ICode0: superclass typecheck marker */},
+  {(bigint) 3587 /* 6: IIntValue < IIntValue: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: IIntValue < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling___compiling_icode___IIntValue___compile_to_c},
+  {(bigint) compiling___compiling_icode___ICode___need_result},
+  {(bigint) compiling___compiling_icode___ICode___store_result},
+  {(bigint) compiling___compiling_icode___ICode___new_result},
+  {(bigint) analysis___icode_dump___ICode___dump},
+  {(bigint) analysis___icode_dump___IIntValue___dump_intern},
+  {(bigint) icode___icode_tools___ICode___dup_with},
+  {(bigint) icode___icode_tools___IIntValue___inner_dup_with},
+  {(bigint) 1 /* 58: IIntValue < ICode: superclass init_table position */},
+  {(bigint) icode___icode_base___ICode0___arity},
+  {(bigint) icode___icode_base___ICode___result},
+  {(bigint) icode___icode_base___ICode___result__eq},
+  {(bigint) icode___icode_base___ICode___location},
+  {(bigint) icode___icode_base___ICode___location__eq},
+  {(bigint) icode___icode_base___IIntValue___is_pure},
+  {(bigint) icode___icode_base___ICode___init},
+  {(bigint) 0 /* 66: IIntValue < ICode0: superclass init_table position */},
+  {(bigint) 3 /* 67: IIntValue < IIntValue: superclass init_table position */},
+  {(bigint) icode___icode_base___IIntValue___value},
+  {(bigint) icode___icode_base___IIntValue___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute IIntValue::_result */
+/* 3: Attribute IIntValue::_location */
+/* 4: Attribute IIntValue::_value */
+static const char LOCATE_INIT_ATTRIBUTES__icode___icode_base___IIntValue[] = "init var of IIntValue";
+void INIT_ATTRIBUTES__icode___icode_base___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__icode___icode_base___IIntValue;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* icode/icode_base.nit:95 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* icode/icode_base.nit:98 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_icode___icode_base___IIntValue(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___IIntValue;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_icode___icode_base___IIntValue[] = "check new IIntValue";
+void CHECKNEW_icode___icode_base___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_icode___icode_base___IIntValue;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode___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;
+}
+static const char LOCATE_NEW_IIntValue_icode___icode_base___IIntValue___init[] = "new IIntValue icode_base::IIntValue::init";
+val_t NEW_IIntValue_icode___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 = 353;
+  fra.me.meth = LOCATE_NEW_IIntValue_icode___icode_base___IIntValue___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* icode/icode_base.nit:353 */
+  fra.me.REG[1] = NEW_icode___icode_base___IIntValue();
+  INIT_ATTRIBUTES__icode___icode_base___IIntValue(fra.me.REG[1]);
+  icode___icode_base___IIntValue___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_icode___icode_base___IIntValue(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_icode___icode_base___IBoolValue[70] = {
+  {(bigint) 3623 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "IBoolValue" /* 2: Class Name */},
+  {(bigint) 3 /* 3: IBoolValue < Object: superclass typecheck marker */},
+  {(bigint) 227 /* 4: IBoolValue < ICode: superclass typecheck marker */},
+  {(bigint) 3191 /* 5: IBoolValue < ICode0: superclass typecheck marker */},
+  {(bigint) 3623 /* 6: IBoolValue < IBoolValue: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: IBoolValue < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling___compiling_icode___IBoolValue___compile_to_c},
+  {(bigint) compiling___compiling_icode___ICode___need_result},
+  {(bigint) compiling___compiling_icode___ICode___store_result},
+  {(bigint) compiling___compiling_icode___ICode___new_result},
+  {(bigint) analysis___icode_dump___ICode___dump},
+  {(bigint) analysis___icode_dump___IBoolValue___dump_intern},
+  {(bigint) icode___icode_tools___ICode___dup_with},
+  {(bigint) icode___icode_tools___IBoolValue___inner_dup_with},
+  {(bigint) 1 /* 58: IBoolValue < ICode: superclass init_table position */},
+  {(bigint) icode___icode_base___ICode0___arity},
+  {(bigint) icode___icode_base___ICode___result},
+  {(bigint) icode___icode_base___ICode___result__eq},
+  {(bigint) icode___icode_base___ICode___location},
+  {(bigint) icode___icode_base___ICode___location__eq},
+  {(bigint) icode___icode_base___IBoolValue___is_pure},
+  {(bigint) icode___icode_base___ICode___init},
+  {(bigint) 0 /* 66: IBoolValue < ICode0: superclass init_table position */},
+  {(bigint) 3 /* 67: IBoolValue < IBoolValue: superclass init_table position */},
+  {(bigint) icode___icode_base___IBoolValue___value},
+  {(bigint) icode___icode_base___IBoolValue___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute IBoolValue::_result */
+/* 3: Attribute IBoolValue::_location */
+/* 4: Attribute IBoolValue::_value */
+static const char LOCATE_INIT_ATTRIBUTES__icode___icode_base___IBoolValue[] = "init var of IBoolValue";
+void INIT_ATTRIBUTES__icode___icode_base___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__icode___icode_base___IBoolValue;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* icode/icode_base.nit:95 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* icode/icode_base.nit:98 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_icode___icode_base___IBoolValue(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___IBoolValue;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_icode___icode_base___IBoolValue[] = "check new IBoolValue";
+void CHECKNEW_icode___icode_base___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_icode___icode_base___IBoolValue;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode___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;
+}
+static const char LOCATE_NEW_IBoolValue_icode___icode_base___IBoolValue___init[] = "new IBoolValue icode_base::IBoolValue::init";
+val_t NEW_IBoolValue_icode___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};
+  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_IBoolValue_icode___icode_base___IBoolValue___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* icode/icode_base.nit:364 */
+  fra.me.REG[0] = NEW_icode___icode_base___IBoolValue();
+  INIT_ATTRIBUTES__icode___icode_base___IBoolValue(fra.me.REG[0]);
+  icode___icode_base___IBoolValue___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_icode___icode_base___IBoolValue(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_icode___icode_base___IStringValue[70] = {
+  {(bigint) 3551 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "IStringValue" /* 2: Class Name */},
+  {(bigint) 3 /* 3: IStringValue < Object: superclass typecheck marker */},
+  {(bigint) 227 /* 4: IStringValue < ICode: superclass typecheck marker */},
+  {(bigint) 3191 /* 5: IStringValue < ICode0: superclass typecheck marker */},
+  {(bigint) 3551 /* 6: IStringValue < IStringValue: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: IStringValue < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling___compiling_icode___IStringValue___compile_to_c},
+  {(bigint) compiling___compiling_icode___ICode___need_result},
+  {(bigint) compiling___compiling_icode___ICode___store_result},
+  {(bigint) compiling___compiling_icode___ICode___new_result},
+  {(bigint) analysis___icode_dump___ICode___dump},
+  {(bigint) analysis___icode_dump___IStringValue___dump_intern},
+  {(bigint) icode___icode_tools___ICode___dup_with},
+  {(bigint) icode___icode_tools___IStringValue___inner_dup_with},
+  {(bigint) 1 /* 58: IStringValue < ICode: superclass init_table position */},
+  {(bigint) icode___icode_base___ICode0___arity},
+  {(bigint) icode___icode_base___ICode___result},
+  {(bigint) icode___icode_base___ICode___result__eq},
+  {(bigint) icode___icode_base___ICode___location},
+  {(bigint) icode___icode_base___ICode___location__eq},
+  {(bigint) icode___icode_base___IStringValue___is_pure},
+  {(bigint) icode___icode_base___ICode___init},
+  {(bigint) 0 /* 66: IStringValue < ICode0: superclass init_table position */},
+  {(bigint) 3 /* 67: IStringValue < IStringValue: superclass init_table position */},
+  {(bigint) icode___icode_base___IStringValue___value},
+  {(bigint) icode___icode_base___IStringValue___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute IStringValue::_result */
+/* 3: Attribute IStringValue::_location */
+/* 4: Attribute IStringValue::_value */
+static const char LOCATE_INIT_ATTRIBUTES__icode___icode_base___IStringValue[] = "init var of IStringValue";
+void INIT_ATTRIBUTES__icode___icode_base___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__icode___icode_base___IStringValue;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* icode/icode_base.nit:95 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* icode/icode_base.nit:98 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_icode___icode_base___IStringValue(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___IStringValue;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_icode___icode_base___IStringValue[] = "check new IStringValue";
+void CHECKNEW_icode___icode_base___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_icode___icode_base___IStringValue;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode___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;
+}
+static const char LOCATE_NEW_IStringValue_icode___icode_base___IStringValue___init[] = "new IStringValue icode_base::IStringValue::init";
+val_t NEW_IStringValue_icode___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};
+  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_IStringValue_icode___icode_base___IStringValue___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* icode/icode_base.nit:375 */
+  fra.me.REG[1] = NEW_icode___icode_base___IStringValue();
+  INIT_ATTRIBUTES__icode___icode_base___IStringValue(fra.me.REG[1]);
+  icode___icode_base___IStringValue___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_icode___icode_base___IStringValue(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_icode___icode_base___IFloatValue[70] = {
+  {(bigint) 3603 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "IFloatValue" /* 2: Class Name */},
+  {(bigint) 3 /* 3: IFloatValue < Object: superclass typecheck marker */},
+  {(bigint) 227 /* 4: IFloatValue < ICode: superclass typecheck marker */},
+  {(bigint) 3191 /* 5: IFloatValue < ICode0: superclass typecheck marker */},
+  {(bigint) 3603 /* 6: IFloatValue < IFloatValue: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: IFloatValue < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling___compiling_icode___IFloatValue___compile_to_c},
+  {(bigint) compiling___compiling_icode___ICode___need_result},
+  {(bigint) compiling___compiling_icode___ICode___store_result},
+  {(bigint) compiling___compiling_icode___ICode___new_result},
+  {(bigint) analysis___icode_dump___ICode___dump},
+  {(bigint) analysis___icode_dump___IFloatValue___dump_intern},
+  {(bigint) icode___icode_tools___ICode___dup_with},
+  {(bigint) icode___icode_tools___IFloatValue___inner_dup_with},
+  {(bigint) 1 /* 58: IFloatValue < ICode: superclass init_table position */},
+  {(bigint) icode___icode_base___ICode0___arity},
+  {(bigint) icode___icode_base___ICode___result},
+  {(bigint) icode___icode_base___ICode___result__eq},
+  {(bigint) icode___icode_base___ICode___location},
+  {(bigint) icode___icode_base___ICode___location__eq},
+  {(bigint) icode___icode_base___IFloatValue___is_pure},
+  {(bigint) icode___icode_base___ICode___init},
+  {(bigint) 0 /* 66: IFloatValue < ICode0: superclass init_table position */},
+  {(bigint) 3 /* 67: IFloatValue < IFloatValue: superclass init_table position */},
+  {(bigint) icode___icode_base___IFloatValue___value},
+  {(bigint) icode___icode_base___IFloatValue___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute IFloatValue::_result */
+/* 3: Attribute IFloatValue::_location */
+/* 4: Attribute IFloatValue::_value */
+static const char LOCATE_INIT_ATTRIBUTES__icode___icode_base___IFloatValue[] = "init var of IFloatValue";
+void INIT_ATTRIBUTES__icode___icode_base___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__icode___icode_base___IFloatValue;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* icode/icode_base.nit:95 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* icode/icode_base.nit:98 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_icode___icode_base___IFloatValue(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___IFloatValue;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_icode___icode_base___IFloatValue[] = "check new IFloatValue";
+void CHECKNEW_icode___icode_base___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_icode___icode_base___IFloatValue;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode___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;
+}
+static const char LOCATE_NEW_IFloatValue_icode___icode_base___IFloatValue___init[] = "new IFloatValue icode_base::IFloatValue::init";
+val_t NEW_IFloatValue_icode___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 = 386;
+  fra.me.meth = LOCATE_NEW_IFloatValue_icode___icode_base___IFloatValue___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* icode/icode_base.nit:386 */
+  fra.me.REG[1] = NEW_icode___icode_base___IFloatValue();
+  INIT_ATTRIBUTES__icode___icode_base___IFloatValue(fra.me.REG[1]);
+  icode___icode_base___IFloatValue___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_icode___icode_base___IFloatValue(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_icode___icode_base___ICharValue[70] = {
+  {(bigint) 3619 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ICharValue" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ICharValue < Object: superclass typecheck marker */},
+  {(bigint) 227 /* 4: ICharValue < ICode: superclass typecheck marker */},
+  {(bigint) 3191 /* 5: ICharValue < ICode0: superclass typecheck marker */},
+  {(bigint) 3619 /* 6: ICharValue < ICharValue: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: ICharValue < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling___compiling_icode___ICharValue___compile_to_c},
+  {(bigint) compiling___compiling_icode___ICode___need_result},
+  {(bigint) compiling___compiling_icode___ICode___store_result},
+  {(bigint) compiling___compiling_icode___ICode___new_result},
+  {(bigint) analysis___icode_dump___ICode___dump},
+  {(bigint) analysis___icode_dump___ICharValue___dump_intern},
+  {(bigint) icode___icode_tools___ICode___dup_with},
+  {(bigint) icode___icode_tools___ICharValue___inner_dup_with},
+  {(bigint) 1 /* 58: ICharValue < ICode: superclass init_table position */},
+  {(bigint) icode___icode_base___ICode0___arity},
+  {(bigint) icode___icode_base___ICode___result},
+  {(bigint) icode___icode_base___ICode___result__eq},
+  {(bigint) icode___icode_base___ICode___location},
+  {(bigint) icode___icode_base___ICode___location__eq},
+  {(bigint) icode___icode_base___ICharValue___is_pure},
+  {(bigint) icode___icode_base___ICode___init},
+  {(bigint) 0 /* 66: ICharValue < ICode0: superclass init_table position */},
+  {(bigint) 3 /* 67: ICharValue < ICharValue: superclass init_table position */},
+  {(bigint) icode___icode_base___ICharValue___value},
+  {(bigint) icode___icode_base___ICharValue___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ICharValue::_result */
+/* 3: Attribute ICharValue::_location */
+/* 4: Attribute ICharValue::_value */
+static const char LOCATE_INIT_ATTRIBUTES__icode___icode_base___ICharValue[] = "init var of ICharValue";
+void INIT_ATTRIBUTES__icode___icode_base___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__icode___icode_base___ICharValue;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* icode/icode_base.nit:95 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* icode/icode_base.nit:98 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_icode___icode_base___ICharValue(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___ICharValue;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_icode___icode_base___ICharValue[] = "check new ICharValue";
+void CHECKNEW_icode___icode_base___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_icode___icode_base___ICharValue;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode___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;
+}
+static const char LOCATE_NEW_ICharValue_icode___icode_base___ICharValue___init[] = "new ICharValue icode_base::ICharValue::init";
+val_t NEW_ICharValue_icode___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};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 397;
+  fra.me.meth = LOCATE_NEW_ICharValue_icode___icode_base___ICharValue___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* icode/icode_base.nit:397 */
+  fra.me.REG[1] = NEW_icode___icode_base___ICharValue();
+  INIT_ATTRIBUTES__icode___icode_base___ICharValue(fra.me.REG[1]);
+  icode___icode_base___ICharValue___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_icode___icode_base___ICharValue(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_icode___icode_base___IMove[71] = {
+  {(bigint) 3579 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "IMove" /* 2: Class Name */},
+  {(bigint) 3 /* 3: IMove < Object: superclass typecheck marker */},
+  {(bigint) 227 /* 4: IMove < ICode: superclass typecheck marker */},
+  {(bigint) 3187 /* 5: IMove < ICode1: superclass typecheck marker */},
+  {(bigint) 3579 /* 6: IMove < IMove: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: IMove < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling___compiling_icode___IMove___compile_to_c},
+  {(bigint) compiling___compiling_icode___ICode___need_result},
+  {(bigint) compiling___compiling_icode___ICode___store_result},
+  {(bigint) compiling___compiling_icode___ICode___new_result},
+  {(bigint) analysis___icode_dump___ICode___dump},
+  {(bigint) analysis___icode_dump___IMove___dump_intern},
+  {(bigint) icode___icode_tools___ICode___dup_with},
+  {(bigint) icode___icode_tools___IMove___inner_dup_with},
+  {(bigint) 1 /* 58: IMove < ICode: superclass init_table position */},
+  {(bigint) icode___icode_base___ICode1___arity},
+  {(bigint) icode___icode_base___ICode___result},
+  {(bigint) icode___icode_base___ICode___result__eq},
+  {(bigint) icode___icode_base___ICode___location},
+  {(bigint) icode___icode_base___ICode___location__eq},
+  {(bigint) icode___icode_base___IMove___is_pure},
+  {(bigint) icode___icode_base___ICode___init},
+  {(bigint) 0 /* 66: IMove < ICode1: superclass init_table position */},
+  {(bigint) icode___icode_base___ICode1___expr},
+  {(bigint) icode___icode_base___ICode1___init},
+  {(bigint) 3 /* 69: IMove < IMove: superclass init_table position */},
+  {(bigint) icode___icode_base___IMove___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute IMove::_result */
+/* 3: Attribute IMove::_location */
+/* 4: Attribute IMove::_expr */
+static const char LOCATE_INIT_ATTRIBUTES__icode___icode_base___IMove[] = "init var of IMove";
+void INIT_ATTRIBUTES__icode___icode_base___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__icode___icode_base___IMove;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* icode/icode_base.nit:95 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* icode/icode_base.nit:98 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_icode___icode_base___IMove(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___IMove;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_icode___icode_base___IMove[] = "check new IMove";
+void CHECKNEW_icode___icode_base___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_icode___icode_base___IMove;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode___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;
+}
+static const char LOCATE_NEW_IMove_icode___icode_base___IMove___init[] = "new IMove icode_base::IMove::init";
+val_t NEW_IMove_icode___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 = 407;
+  fra.me.meth = LOCATE_NEW_IMove_icode___icode_base___IMove___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  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:407 */
+  fra.me.REG[2] = NEW_icode___icode_base___IMove();
+  INIT_ATTRIBUTES__icode___icode_base___IMove(fra.me.REG[2]);
+  icode___icode_base___IMove___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_icode___icode_base___IMove(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_icode___icode_base___IAttrRead[72] = {
+  {(bigint) 3631 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "IAttrRead" /* 2: Class Name */},
+  {(bigint) 3 /* 3: IAttrRead < Object: superclass typecheck marker */},
+  {(bigint) 227 /* 4: IAttrRead < ICode: superclass typecheck marker */},
+  {(bigint) 3187 /* 5: IAttrRead < ICode1: superclass typecheck marker */},
+  {(bigint) 3631 /* 6: IAttrRead < IAttrRead: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: IAttrRead < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling___compiling_icode___IAttrRead___compile_to_c},
+  {(bigint) compiling___compiling_icode___ICode___need_result},
+  {(bigint) compiling___compiling_icode___ICode___store_result},
+  {(bigint) compiling___compiling_icode___ICode___new_result},
+  {(bigint) analysis___icode_dump___ICode___dump},
+  {(bigint) analysis___icode_dump___IAttrRead___dump_intern},
+  {(bigint) icode___icode_tools___ICode___dup_with},
+  {(bigint) icode___icode_tools___IAttrRead___inner_dup_with},
+  {(bigint) 1 /* 58: IAttrRead < ICode: superclass init_table position */},
+  {(bigint) icode___icode_base___ICode1___arity},
+  {(bigint) icode___icode_base___ICode___result},
+  {(bigint) icode___icode_base___ICode___result__eq},
+  {(bigint) icode___icode_base___ICode___location},
+  {(bigint) icode___icode_base___ICode___location__eq},
+  {(bigint) icode___icode_base___IAttrRead___is_pure},
+  {(bigint) icode___icode_base___ICode___init},
+  {(bigint) 0 /* 66: IAttrRead < ICode1: superclass init_table position */},
+  {(bigint) icode___icode_base___ICode1___expr},
+  {(bigint) icode___icode_base___ICode1___init},
+  {(bigint) 3 /* 69: IAttrRead < IAttrRead: superclass init_table position */},
+  {(bigint) icode___icode_base___IAttrRead___property},
+  {(bigint) icode___icode_base___IAttrRead___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute IAttrRead::_result */
+/* 3: Attribute IAttrRead::_location */
+/* 4: Attribute IAttrRead::_expr */
+/* 5: Attribute IAttrRead::_property */
+static const char LOCATE_INIT_ATTRIBUTES__icode___icode_base___IAttrRead[] = "init var of IAttrRead";
+void INIT_ATTRIBUTES__icode___icode_base___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__icode___icode_base___IAttrRead;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* icode/icode_base.nit:95 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* icode/icode_base.nit:98 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_icode___icode_base___IAttrRead(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___IAttrRead;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_icode___icode_base___IAttrRead[] = "check new IAttrRead";
+void CHECKNEW_icode___icode_base___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_icode___icode_base___IAttrRead;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode___icode_base___ICode1____expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_expr", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode___icode_base___IAttrRead____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;
+}
+static const char LOCATE_NEW_IAttrRead_icode___icode_base___IAttrRead___init[] = "new IAttrRead icode_base::IAttrRead::init";
+val_t NEW_IAttrRead_icode___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 = 423;
+  fra.me.meth = LOCATE_NEW_IAttrRead_icode___icode_base___IAttrRead___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  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:423 */
+  fra.me.REG[2] = NEW_icode___icode_base___IAttrRead();
+  INIT_ATTRIBUTES__icode___icode_base___IAttrRead(fra.me.REG[2]);
+  icode___icode_base___IAttrRead___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_icode___icode_base___IAttrRead(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_icode___icode_base___IAttrWrite[73] = {
+  {(bigint) 3627 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "IAttrWrite" /* 2: Class Name */},
+  {(bigint) 3 /* 3: IAttrWrite < Object: superclass typecheck marker */},
+  {(bigint) 227 /* 4: IAttrWrite < ICode: superclass typecheck marker */},
+  {(bigint) 3183 /* 5: IAttrWrite < ICode2: superclass typecheck marker */},
+  {(bigint) 3627 /* 6: IAttrWrite < IAttrWrite: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: IAttrWrite < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling___compiling_icode___IAttrWrite___compile_to_c},
+  {(bigint) compiling___compiling_icode___ICode___need_result},
+  {(bigint) compiling___compiling_icode___ICode___store_result},
+  {(bigint) compiling___compiling_icode___ICode___new_result},
+  {(bigint) analysis___icode_dump___ICode___dump},
+  {(bigint) analysis___icode_dump___IAttrWrite___dump_intern},
+  {(bigint) icode___icode_tools___ICode___dup_with},
+  {(bigint) icode___icode_tools___IAttrWrite___inner_dup_with},
+  {(bigint) 1 /* 58: IAttrWrite < ICode: superclass init_table position */},
+  {(bigint) icode___icode_base___ICode2___arity},
+  {(bigint) icode___icode_base___ICode___result},
+  {(bigint) icode___icode_base___ICode___result__eq},
+  {(bigint) icode___icode_base___ICode___location},
+  {(bigint) icode___icode_base___ICode___location__eq},
+  {(bigint) icode___icode_base___ICode___is_pure},
+  {(bigint) icode___icode_base___ICode___init},
+  {(bigint) 0 /* 66: IAttrWrite < ICode2: superclass init_table position */},
+  {(bigint) icode___icode_base___ICode2___expr1},
+  {(bigint) icode___icode_base___ICode2___expr2},
+  {(bigint) icode___icode_base___ICode2___init},
+  {(bigint) 3 /* 70: IAttrWrite < IAttrWrite: superclass init_table position */},
+  {(bigint) icode___icode_base___IAttrWrite___property},
+  {(bigint) icode___icode_base___IAttrWrite___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute IAttrWrite::_result */
+/* 3: Attribute IAttrWrite::_location */
+/* 4: Attribute IAttrWrite::_expr1 */
+/* 5: Attribute IAttrWrite::_expr2 */
+/* 6: Attribute IAttrWrite::_property */
+static const char LOCATE_INIT_ATTRIBUTES__icode___icode_base___IAttrWrite[] = "init var of IAttrWrite";
+void INIT_ATTRIBUTES__icode___icode_base___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__icode___icode_base___IAttrWrite;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* icode/icode_base.nit:95 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* icode/icode_base.nit:98 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_icode___icode_base___IAttrWrite(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___IAttrWrite;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_icode___icode_base___IAttrWrite[] = "check new IAttrWrite";
+void CHECKNEW_icode___icode_base___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_icode___icode_base___IAttrWrite;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode___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___icode_base___ICode2____expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_expr2", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode___icode_base___IAttrWrite____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;
+}
+static const char LOCATE_NEW_IAttrWrite_icode___icode_base___IAttrWrite___init[] = "new IAttrWrite icode_base::IAttrWrite::init";
+val_t NEW_IAttrWrite_icode___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 = 439;
+  fra.me.meth = LOCATE_NEW_IAttrWrite_icode___icode_base___IAttrWrite___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  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:439 */
+  fra.me.REG[3] = NEW_icode___icode_base___IAttrWrite();
+  INIT_ATTRIBUTES__icode___icode_base___IAttrWrite(fra.me.REG[3]);
+  icode___icode_base___IAttrWrite___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_icode___icode_base___IAttrWrite(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
+}
+const classtable_elt_t VFT_icode___icode_base___IAttrIsset[72] = {
+  {(bigint) 3635 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "IAttrIsset" /* 2: Class Name */},
+  {(bigint) 3 /* 3: IAttrIsset < Object: superclass typecheck marker */},
+  {(bigint) 227 /* 4: IAttrIsset < ICode: superclass typecheck marker */},
+  {(bigint) 3187 /* 5: IAttrIsset < ICode1: superclass typecheck marker */},
+  {(bigint) 3635 /* 6: IAttrIsset < IAttrIsset: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: IAttrIsset < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling___compiling_icode___IAttrIsset___compile_to_c},
+  {(bigint) compiling___compiling_icode___ICode___need_result},
+  {(bigint) compiling___compiling_icode___ICode___store_result},
+  {(bigint) compiling___compiling_icode___ICode___new_result},
+  {(bigint) analysis___icode_dump___ICode___dump},
+  {(bigint) analysis___icode_dump___IAttrIsset___dump_intern},
+  {(bigint) icode___icode_tools___ICode___dup_with},
+  {(bigint) icode___icode_tools___IAttrIsset___inner_dup_with},
+  {(bigint) 1 /* 58: IAttrIsset < ICode: superclass init_table position */},
+  {(bigint) icode___icode_base___ICode1___arity},
+  {(bigint) icode___icode_base___ICode___result},
+  {(bigint) icode___icode_base___ICode___result__eq},
+  {(bigint) icode___icode_base___ICode___location},
+  {(bigint) icode___icode_base___ICode___location__eq},
+  {(bigint) icode___icode_base___IAttrIsset___is_pure},
+  {(bigint) icode___icode_base___ICode___init},
+  {(bigint) 0 /* 66: IAttrIsset < ICode1: superclass init_table position */},
+  {(bigint) icode___icode_base___ICode1___expr},
+  {(bigint) icode___icode_base___ICode1___init},
+  {(bigint) 3 /* 69: IAttrIsset < IAttrIsset: superclass init_table position */},
+  {(bigint) icode___icode_base___IAttrIsset___property},
+  {(bigint) icode___icode_base___IAttrIsset___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute IAttrIsset::_result */
+/* 3: Attribute IAttrIsset::_location */
+/* 4: Attribute IAttrIsset::_expr */
+/* 5: Attribute IAttrIsset::_property */
+static const char LOCATE_INIT_ATTRIBUTES__icode___icode_base___IAttrIsset[] = "init var of IAttrIsset";
+void INIT_ATTRIBUTES__icode___icode_base___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__icode___icode_base___IAttrIsset;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* icode/icode_base.nit:95 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* icode/icode_base.nit:98 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_icode___icode_base___IAttrIsset(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___IAttrIsset;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_icode___icode_base___IAttrIsset[] = "check new IAttrIsset";
+void CHECKNEW_icode___icode_base___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_icode___icode_base___IAttrIsset;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode___icode_base___ICode1____expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_expr", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode___icode_base___IAttrIsset____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;
+}
+static const char LOCATE_NEW_IAttrIsset_icode___icode_base___IAttrIsset___init[] = "new IAttrIsset icode_base::IAttrIsset::init";
+val_t NEW_IAttrIsset_icode___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 = 454;
+  fra.me.meth = LOCATE_NEW_IAttrIsset_icode___icode_base___IAttrIsset___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  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:454 */
+  fra.me.REG[2] = NEW_icode___icode_base___IAttrIsset();
+  INIT_ATTRIBUTES__icode___icode_base___IAttrIsset(fra.me.REG[2]);
+  icode___icode_base___IAttrIsset___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_icode___icode_base___IAttrIsset(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_icode___icode_base___ITypeCheck[73] = {
+  {(bigint) 3547 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ITypeCheck" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ITypeCheck < Object: superclass typecheck marker */},
+  {(bigint) 227 /* 4: ITypeCheck < ICode: superclass typecheck marker */},
+  {(bigint) 3183 /* 5: ITypeCheck < ICode2: superclass typecheck marker */},
+  {(bigint) 3547 /* 6: ITypeCheck < ITypeCheck: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: ITypeCheck < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling___compiling_icode___ITypeCheck___compile_to_c},
+  {(bigint) compiling___compiling_icode___ICode___need_result},
+  {(bigint) compiling___compiling_icode___ICode___store_result},
+  {(bigint) compiling___compiling_icode___ICode___new_result},
+  {(bigint) analysis___icode_dump___ICode___dump},
+  {(bigint) analysis___icode_dump___ITypeCheck___dump_intern},
+  {(bigint) icode___icode_tools___ICode___dup_with},
+  {(bigint) icode___icode_tools___ITypeCheck___inner_dup_with},
+  {(bigint) 1 /* 58: ITypeCheck < ICode: superclass init_table position */},
+  {(bigint) icode___icode_base___ICode2___arity},
+  {(bigint) icode___icode_base___ICode___result},
+  {(bigint) icode___icode_base___ICode___result__eq},
+  {(bigint) icode___icode_base___ICode___location},
+  {(bigint) icode___icode_base___ICode___location__eq},
+  {(bigint) icode___icode_base___ITypeCheck___is_pure},
+  {(bigint) icode___icode_base___ICode___init},
+  {(bigint) 0 /* 66: ITypeCheck < ICode2: superclass init_table position */},
+  {(bigint) icode___icode_base___ICode2___expr1},
+  {(bigint) icode___icode_base___ICode2___expr2},
+  {(bigint) icode___icode_base___ICode2___init},
+  {(bigint) 3 /* 70: ITypeCheck < ITypeCheck: superclass init_table position */},
+  {(bigint) icode___icode_base___ITypeCheck___stype},
+  {(bigint) icode___icode_base___ITypeCheck___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ITypeCheck::_result */
+/* 3: Attribute ITypeCheck::_location */
+/* 4: Attribute ITypeCheck::_expr1 */
+/* 5: Attribute ITypeCheck::_expr2 */
+/* 6: Attribute ITypeCheck::_stype */
+static const char LOCATE_INIT_ATTRIBUTES__icode___icode_base___ITypeCheck[] = "init var of ITypeCheck";
+void INIT_ATTRIBUTES__icode___icode_base___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__icode___icode_base___ITypeCheck;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* icode/icode_base.nit:95 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* icode/icode_base.nit:98 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_icode___icode_base___ITypeCheck(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___ITypeCheck;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_icode___icode_base___ITypeCheck[] = "check new ITypeCheck";
+void CHECKNEW_icode___icode_base___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_icode___icode_base___ITypeCheck;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode___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___icode_base___ICode2____expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_expr2", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode___icode_base___ITypeCheck____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;
+}
+static const char LOCATE_NEW_ITypeCheck_icode___icode_base___ITypeCheck___init[] = "new ITypeCheck icode_base::ITypeCheck::init";
+val_t NEW_ITypeCheck_icode___icode_base___ITypeCheck___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 = 471;
+  fra.me.meth = LOCATE_NEW_ITypeCheck_icode___icode_base___ITypeCheck___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  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:471 */
+  fra.me.REG[3] = NEW_icode___icode_base___ITypeCheck();
+  INIT_ATTRIBUTES__icode___icode_base___ITypeCheck(fra.me.REG[3]);
+  icode___icode_base___ITypeCheck___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_icode___icode_base___ITypeCheck(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
+}
+const classtable_elt_t VFT_icode___icode_base___IIs[72] = {
+  {(bigint) 3583 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "IIs" /* 2: Class Name */},
+  {(bigint) 3 /* 3: IIs < Object: superclass typecheck marker */},
+  {(bigint) 227 /* 4: IIs < ICode: superclass typecheck marker */},
+  {(bigint) 3183 /* 5: IIs < ICode2: superclass typecheck marker */},
+  {(bigint) 3583 /* 6: IIs < IIs: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: IIs < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling___compiling_icode___IIs___compile_to_c},
+  {(bigint) compiling___compiling_icode___ICode___need_result},
+  {(bigint) compiling___compiling_icode___ICode___store_result},
+  {(bigint) compiling___compiling_icode___ICode___new_result},
+  {(bigint) analysis___icode_dump___ICode___dump},
+  {(bigint) analysis___icode_dump___IIs___dump_intern},
+  {(bigint) icode___icode_tools___ICode___dup_with},
+  {(bigint) icode___icode_tools___IIs___inner_dup_with},
+  {(bigint) 1 /* 58: IIs < ICode: superclass init_table position */},
+  {(bigint) icode___icode_base___ICode2___arity},
+  {(bigint) icode___icode_base___ICode___result},
+  {(bigint) icode___icode_base___ICode___result__eq},
+  {(bigint) icode___icode_base___ICode___location},
+  {(bigint) icode___icode_base___ICode___location__eq},
+  {(bigint) icode___icode_base___IIs___is_pure},
+  {(bigint) icode___icode_base___ICode___init},
+  {(bigint) 0 /* 66: IIs < ICode2: superclass init_table position */},
+  {(bigint) icode___icode_base___ICode2___expr1},
+  {(bigint) icode___icode_base___ICode2___expr2},
+  {(bigint) icode___icode_base___ICode2___init},
+  {(bigint) 3 /* 70: IIs < IIs: superclass init_table position */},
+  {(bigint) icode___icode_base___IIs___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute IIs::_result */
+/* 3: Attribute IIs::_location */
+/* 4: Attribute IIs::_expr1 */
+/* 5: Attribute IIs::_expr2 */
+static const char LOCATE_INIT_ATTRIBUTES__icode___icode_base___IIs[] = "init var of IIs";
+void INIT_ATTRIBUTES__icode___icode_base___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__icode___icode_base___IIs;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* icode/icode_base.nit:95 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* icode/icode_base.nit:98 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_icode___icode_base___IIs(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___IIs;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_icode___icode_base___IIs[] = "check new IIs";
+void CHECKNEW_icode___icode_base___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_icode___icode_base___IIs;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode___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___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;
+}
+static const char LOCATE_NEW_IIs_icode___icode_base___IIs___init[] = "new IIs icode_base::IIs::init";
+val_t NEW_IIs_icode___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};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 484;
+  fra.me.meth = LOCATE_NEW_IIs_icode___icode_base___IIs___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  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:484 */
+  fra.me.REG[2] = NEW_icode___icode_base___IIs();
+  INIT_ATTRIBUTES__icode___icode_base___IIs(fra.me.REG[2]);
+  icode___icode_base___IIs___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_icode___icode_base___IIs(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_icode___icode_base___INot[71] = {
+  {(bigint) 3571 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "INot" /* 2: Class Name */},
+  {(bigint) 3 /* 3: INot < Object: superclass typecheck marker */},
+  {(bigint) 227 /* 4: INot < ICode: superclass typecheck marker */},
+  {(bigint) 3187 /* 5: INot < ICode1: superclass typecheck marker */},
+  {(bigint) 3571 /* 6: INot < INot: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: INot < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling___compiling_icode___INot___compile_to_c},
+  {(bigint) compiling___compiling_icode___ICode___need_result},
+  {(bigint) compiling___compiling_icode___ICode___store_result},
+  {(bigint) compiling___compiling_icode___ICode___new_result},
+  {(bigint) analysis___icode_dump___ICode___dump},
+  {(bigint) analysis___icode_dump___INot___dump_intern},
+  {(bigint) icode___icode_tools___ICode___dup_with},
+  {(bigint) icode___icode_tools___INot___inner_dup_with},
+  {(bigint) 1 /* 58: INot < ICode: superclass init_table position */},
+  {(bigint) icode___icode_base___ICode1___arity},
+  {(bigint) icode___icode_base___ICode___result},
+  {(bigint) icode___icode_base___ICode___result__eq},
+  {(bigint) icode___icode_base___ICode___location},
+  {(bigint) icode___icode_base___ICode___location__eq},
+  {(bigint) icode___icode_base___INot___is_pure},
+  {(bigint) icode___icode_base___ICode___init},
+  {(bigint) 0 /* 66: INot < ICode1: superclass init_table position */},
+  {(bigint) icode___icode_base___ICode1___expr},
+  {(bigint) icode___icode_base___ICode1___init},
+  {(bigint) 3 /* 69: INot < INot: superclass init_table position */},
+  {(bigint) icode___icode_base___INot___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute INot::_result */
+/* 3: Attribute INot::_location */
+/* 4: Attribute INot::_expr */
+static const char LOCATE_INIT_ATTRIBUTES__icode___icode_base___INot[] = "init var of INot";
+void INIT_ATTRIBUTES__icode___icode_base___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__icode___icode_base___INot;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* icode/icode_base.nit:95 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* icode/icode_base.nit:98 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_icode___icode_base___INot(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___INot;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_icode___icode_base___INot[] = "check new INot";
+void CHECKNEW_icode___icode_base___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_icode___icode_base___INot;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode___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;
+}
+static const char LOCATE_NEW_INot_icode___icode_base___INot___init[] = "new INot icode_base::INot::init";
+val_t NEW_INot_icode___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};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 496;
+  fra.me.meth = LOCATE_NEW_INot_icode___icode_base___INot___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* icode/icode_base.nit:496 */
+  fra.me.REG[1] = NEW_icode___icode_base___INot();
+  INIT_ATTRIBUTES__icode___icode_base___INot(fra.me.REG[1]);
+  icode___icode_base___INot___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_icode___icode_base___INot(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_icode___icode_base___IOnce[70] = {
+  {(bigint) 3563 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "IOnce" /* 2: Class Name */},
+  {(bigint) 3 /* 3: IOnce < Object: superclass typecheck marker */},
+  {(bigint) 227 /* 4: IOnce < ICode: superclass typecheck marker */},
+  {(bigint) 3191 /* 5: IOnce < ICode0: superclass typecheck marker */},
+  {(bigint) 3563 /* 6: IOnce < IOnce: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: IOnce < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling___compiling_icode___IOnce___compile_to_c},
+  {(bigint) compiling___compiling_icode___ICode___need_result},
+  {(bigint) compiling___compiling_icode___ICode___store_result},
+  {(bigint) compiling___compiling_icode___ICode___new_result},
+  {(bigint) analysis___icode_dump___IOnce___dump},
+  {(bigint) analysis___icode_dump___ICode___dump_intern},
+  {(bigint) icode___icode_tools___ICode___dup_with},
+  {(bigint) icode___icode_tools___IOnce___inner_dup_with},
+  {(bigint) 1 /* 58: IOnce < ICode: superclass init_table position */},
+  {(bigint) icode___icode_base___ICode0___arity},
+  {(bigint) icode___icode_base___ICode___result},
+  {(bigint) icode___icode_base___ICode___result__eq},
+  {(bigint) icode___icode_base___ICode___location},
+  {(bigint) icode___icode_base___ICode___location__eq},
+  {(bigint) icode___icode_base___ICode___is_pure},
+  {(bigint) icode___icode_base___ICode___init},
+  {(bigint) 0 /* 66: IOnce < ICode0: superclass init_table position */},
+  {(bigint) 3 /* 67: IOnce < IOnce: superclass init_table position */},
+  {(bigint) icode___icode_base___IOnce___body},
+  {(bigint) icode___icode_base___IOnce___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute IOnce::_result */
+/* 3: Attribute IOnce::_location */
+/* 4: Attribute IOnce::_body */
+static const char LOCATE_INIT_ATTRIBUTES__icode___icode_base___IOnce[] = "init var of IOnce";
+void INIT_ATTRIBUTES__icode___icode_base___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__icode___icode_base___IOnce;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* icode/icode_base.nit:95 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* icode/icode_base.nit:98 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* icode/icode_base.nit:508 */
+  fra.me.REG[1] = NEW_ISeq_icode___icode_base___ISeq___init();
+  ATTR_icode___icode_base___IOnce____body(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_icode___icode_base___IOnce(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___IOnce;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_icode___icode_base___IOnce[] = "check new IOnce";
+void CHECKNEW_icode___icode_base___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_icode___icode_base___IOnce;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode___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;
+}
+static const char LOCATE_NEW_IOnce_icode___icode_base___IOnce___init[] = "new IOnce icode_base::IOnce::init";
+val_t NEW_IOnce_icode___icode_base___IOnce___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 = 509;
+  fra.me.meth = LOCATE_NEW_IOnce_icode___icode_base___IOnce___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* icode/icode_base.nit:509 */
+  fra.me.REG[0] = NEW_icode___icode_base___IOnce();
+  INIT_ATTRIBUTES__icode___icode_base___IOnce(fra.me.REG[0]);
+  icode___icode_base___IOnce___init(fra.me.REG[0], init_table);
+  CHECKNEW_icode___icode_base___IOnce(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_icode___icode_base___IHasClos[70] = {
+  {(bigint) 3599 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "IHasClos" /* 2: Class Name */},
+  {(bigint) 3 /* 3: IHasClos < Object: superclass typecheck marker */},
+  {(bigint) 227 /* 4: IHasClos < ICode: superclass typecheck marker */},
+  {(bigint) 3191 /* 5: IHasClos < ICode0: superclass typecheck marker */},
+  {(bigint) 3599 /* 6: IHasClos < IHasClos: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: IHasClos < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling___compiling_icode___IHasClos___compile_to_c},
+  {(bigint) compiling___compiling_icode___ICode___need_result},
+  {(bigint) compiling___compiling_icode___ICode___store_result},
+  {(bigint) compiling___compiling_icode___ICode___new_result},
+  {(bigint) analysis___icode_dump___ICode___dump},
+  {(bigint) analysis___icode_dump___IHasClos___dump_intern},
+  {(bigint) icode___icode_tools___ICode___dup_with},
+  {(bigint) icode___icode_tools___IHasClos___inner_dup_with},
+  {(bigint) 1 /* 58: IHasClos < ICode: superclass init_table position */},
+  {(bigint) icode___icode_base___ICode0___arity},
+  {(bigint) icode___icode_base___ICode___result},
+  {(bigint) icode___icode_base___ICode___result__eq},
+  {(bigint) icode___icode_base___ICode___location},
+  {(bigint) icode___icode_base___ICode___location__eq},
+  {(bigint) icode___icode_base___IHasClos___is_pure},
+  {(bigint) icode___icode_base___ICode___init},
+  {(bigint) 0 /* 66: IHasClos < ICode0: superclass init_table position */},
+  {(bigint) 3 /* 67: IHasClos < IHasClos: superclass init_table position */},
+  {(bigint) icode___icode_base___IHasClos___closure_decl},
+  {(bigint) icode___icode_base___IHasClos___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute IHasClos::_result */
+/* 3: Attribute IHasClos::_location */
+/* 4: Attribute IHasClos::_closure_decl */
+static const char LOCATE_INIT_ATTRIBUTES__icode___icode_base___IHasClos[] = "init var of IHasClos";
+void INIT_ATTRIBUTES__icode___icode_base___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__icode___icode_base___IHasClos;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* icode/icode_base.nit:95 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* icode/icode_base.nit:98 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_icode___icode_base___IHasClos(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___IHasClos;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_icode___icode_base___IHasClos[] = "check new IHasClos";
+void CHECKNEW_icode___icode_base___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_icode___icode_base___IHasClos;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode___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;
+}
+static const char LOCATE_NEW_IHasClos_icode___icode_base___IHasClos___init[] = "new IHasClos icode_base::IHasClos::init";
+val_t NEW_IHasClos_icode___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};
+  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_IHasClos_icode___icode_base___IHasClos___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* icode/icode_base.nit:518 */
+  fra.me.REG[1] = NEW_icode___icode_base___IHasClos();
+  INIT_ATTRIBUTES__icode___icode_base___IHasClos(fra.me.REG[1]);
+  icode___icode_base___IHasClos___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_icode___icode_base___IHasClos(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_icode___icode_builder___ICodeBuilder[74] = {
+  {(bigint) 223 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ICodeBuilder" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ICodeBuilder < Object: superclass typecheck marker */},
+  {(bigint) 223 /* 4: ICodeBuilder < ICodeBuilder: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 0 /* 19: ICodeBuilder < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) icode___icode_tools___ICodeBuilder___inline_routine},
+  {(bigint) 1 /* 51: ICodeBuilder < ICodeBuilder: superclass init_table position */},
+  {(bigint) icode___icode_builder___ICodeBuilder___stmt},
+  {(bigint) icode___icode_builder___ICodeBuilder___expr},
+  {(bigint) icode___icode_builder___ICodeBuilder___add_assignment},
+  {(bigint) icode___icode_builder___ICodeBuilder___add_null_reciever_check},
+  {(bigint) icode___icode_builder___ICodeBuilder___add_type_cast},
+  {(bigint) icode___icode_builder___ICodeBuilder___add_attr_check},
+  {(bigint) icode___icode_builder___ICodeBuilder___add_attr_read},
+  {(bigint) icode___icode_builder___ICodeBuilder___add_abort},
+  {(bigint) icode___icode_builder___ICodeBuilder___add_return_value},
+  {(bigint) icode___icode_builder___ICodeBuilder___add_call},
+  {(bigint) icode___icode_builder___ICodeBuilder___add_escape},
+  {(bigint) icode___icode_builder___ICodeBuilder___lit_null_reg},
+  {(bigint) icode___icode_builder___ICodeBuilder___lit_true_reg},
+  {(bigint) icode___icode_builder___ICodeBuilder___lit_false_reg},
+  {(bigint) icode___icode_builder___ICodeBuilder___new_register},
+  {(bigint) icode___icode_builder___ICodeBuilder___mmmodule},
+  {(bigint) icode___icode_builder___ICodeBuilder___iroutine},
+  {(bigint) icode___icode_builder___ICodeBuilder___seq},
+  {(bigint) icode___icode_builder___ICodeBuilder___seq__eq},
+  {(bigint) icode___icode_builder___ICodeBuilder___init},
+  {(bigint) icode___icode_builder___ICodeBuilder___current_location},
+  {(bigint) icode___icode_builder___ICodeBuilder___current_location__eq},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ICodeBuilder::_mmmodule */
+/* 3: Attribute ICodeBuilder::_iroutine */
+/* 4: Attribute ICodeBuilder::_seq */
+/* 5: Attribute ICodeBuilder::_current_location */
+static const char LOCATE_INIT_ATTRIBUTES__icode___icode_builder___ICodeBuilder[] = "init var of ICodeBuilder";
+void INIT_ATTRIBUTES__icode___icode_builder___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__icode___icode_builder___ICodeBuilder;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  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___icode_builder___ICodeBuilder____current_location(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_icode___icode_builder___ICodeBuilder(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_icode___icode_builder___ICodeBuilder;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_icode___icode_builder___ICodeBuilder[] = "check new ICodeBuilder";
+void CHECKNEW_icode___icode_builder___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_icode___icode_builder___ICodeBuilder;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode___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___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___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;
+}
+static const char LOCATE_NEW_ICodeBuilder_icode___icode_builder___ICodeBuilder___init[] = "new ICodeBuilder icode_builder::ICodeBuilder::init";
+val_t NEW_ICodeBuilder_icode___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};
+  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___icode_builder___ICodeBuilder___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  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_icode___icode_builder___ICodeBuilder();
+  INIT_ATTRIBUTES__icode___icode_builder___ICodeBuilder(fra.me.REG[2]);
+  icode___icode_builder___ICodeBuilder___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_icode___icode_builder___ICodeBuilder(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_icode___icode_tools___ICodeDupContext[55] = {
+  {(bigint) 215 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ICodeDupContext" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ICodeDupContext < Object: superclass typecheck marker */},
+  {(bigint) 215 /* 4: ICodeDupContext < ICodeDupContext: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 0 /* 19: ICodeDupContext < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 50: ICodeDupContext < ICodeDupContext: superclass init_table position */},
+  {(bigint) icode___icode_tools___ICodeDupContext___dup_ireg},
+  {(bigint) icode___icode_tools___ICodeDupContext___dup_iregs},
+  {(bigint) icode___icode_tools___ICodeDupContext___dup_mark},
+  {(bigint) icode___icode_tools___ICodeDupContext___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ICodeDupContext::_registers */
+/* 3: Attribute ICodeDupContext::_marks */
+/* 4: Attribute ICodeDupContext::_closures */
+/* 5: Attribute ICodeDupContext::_icb */
+static const char LOCATE_INIT_ATTRIBUTES__icode___icode_tools___ICodeDupContext[] = "init var of ICodeDupContext";
+void INIT_ATTRIBUTES__icode___icode_tools___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__icode___icode_tools___ICodeDupContext;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* icode/icode_tools.nit:178 */
+  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
+  ATTR_icode___icode_tools___ICodeDupContext____registers(fra.me.REG[0]) = fra.me.REG[1];
+  /* icode/icode_tools.nit:195 */
+  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
+  ATTR_icode___icode_tools___ICodeDupContext____marks(fra.me.REG[0]) = fra.me.REG[1];
+  /* icode/icode_tools.nit:198 */
+  fra.me.REG[1] = NEW_ArrayMap_standard___collection___array___ArrayMap___init();
+  ATTR_icode___icode_tools___ICodeDupContext____closures(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_icode___icode_tools___ICodeDupContext(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_icode___icode_tools___ICodeDupContext;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_icode___icode_tools___ICodeDupContext[] = "check new ICodeDupContext";
+void CHECKNEW_icode___icode_tools___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_icode___icode_tools___ICodeDupContext;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode___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___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___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___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;
+}
+static const char LOCATE_NEW_ICodeDupContext_icode___icode_tools___ICodeDupContext___init[] = "new ICodeDupContext icode_tools::ICodeDupContext::init";
+val_t NEW_ICodeDupContext_icode___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};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 203;
+  fra.me.meth = LOCATE_NEW_ICodeDupContext_icode___icode_tools___ICodeDupContext___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* icode/icode_tools.nit:203 */
+  fra.me.REG[1] = NEW_icode___icode_tools___ICodeDupContext();
+  INIT_ATTRIBUTES__icode___icode_tools___ICodeDupContext(fra.me.REG[1]);
+  icode___icode_tools___ICodeDupContext___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_icode___icode_tools___ICodeDupContext(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TEol[78] = {
+  {(bigint) 3403 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TEol" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TEol < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TEol < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TEol < Token: superclass typecheck marker */},
+  {(bigint) 3403 /* 6: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: TEol < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TEol___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 1 /* 63: TEol < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TEol___parser_index},
+  {(bigint) 0 /* 73: TEol < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) parser___lexer___TEol___init_tk},
+  {(bigint) 3 /* 77: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TEol[] = "init var of TEol";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TEol;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TEol(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TEol;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TEol[] = "check new TEol";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TEol;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TEol_parser___lexer___TEol___init_tk[] = "new TEol lexer::TEol::init_tk";
+val_t NEW_TEol_parser___lexer___TEol___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 = 34;
+  fra.me.meth = LOCATE_NEW_TEol_parser___lexer___TEol___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:34 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TEol();
+  INIT_ATTRIBUTES__parser___parser_nodes___TEol(fra.me.REG[1]);
+  parser___lexer___TEol___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TEol(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TEol_parser___parser_nodes___ANode___init[] = "new TEol parser_nodes::ANode::init";
+val_t NEW_TEol_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TEol_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TEol();
+  INIT_ATTRIBUTES__parser___parser_nodes___TEol(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TEol(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TComment[78] = {
+  {(bigint) 3415 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TComment" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TComment < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TComment < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TComment < Token: superclass typecheck marker */},
+  {(bigint) 3415 /* 6: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: TComment < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___Token___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 1 /* 63: TComment < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TComment___parser_index},
+  {(bigint) 0 /* 73: TComment < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) parser___lexer___TComment___init_tk},
+  {(bigint) 3 /* 77: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TComment[] = "init var of TComment";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TComment;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TComment(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TComment;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TComment[] = "check new TComment";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TComment;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TComment_parser___lexer___TComment___init_tk[] = "new TComment lexer::TComment::init_tk";
+val_t NEW_TComment_parser___lexer___TComment___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 = 46;
+  fra.me.meth = LOCATE_NEW_TComment_parser___lexer___TComment___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:46 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TComment();
+  INIT_ATTRIBUTES__parser___parser_nodes___TComment(fra.me.REG[1]);
+  parser___lexer___TComment___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TComment(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TComment_parser___parser_nodes___ANode___init[] = "new TComment parser_nodes::ANode::init";
+val_t NEW_TComment_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TComment_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TComment();
+  INIT_ATTRIBUTES__parser___parser_nodes___TComment(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TComment(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TKwmodule[79] = {
+  {(bigint) 4031 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TKwmodule" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TKwmodule < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TKwmodule < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TKwmodule < Token: superclass typecheck marker */},
+  {(bigint) 3339 /* 6: TKwmodule < TokenKeyword: superclass typecheck marker */},
+  {(bigint) 4031 /* 7: TKwmodule < TKwmodule: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TKwmodule < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenKeyword___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TKwmodule < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TKwmodule___parser_index},
+  {(bigint) 1 /* 73: TKwmodule < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TKwmodule < TokenKeyword: superclass init_table position */},
+  {(bigint) parser___lexer___TKwmodule___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwmodule[] = "init var of TKwmodule";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwmodule;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TKwmodule(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwmodule;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TKwmodule[] = "check new TKwmodule";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TKwmodule;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TKwmodule_parser___lexer___TKwmodule___init_tk[] = "new TKwmodule lexer::TKwmodule::init_tk";
+val_t NEW_TKwmodule_parser___lexer___TKwmodule___init_tk(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 = 58;
+  fra.me.meth = LOCATE_NEW_TKwmodule_parser___lexer___TKwmodule___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:58 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TKwmodule();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwmodule(fra.me.REG[1]);
+  parser___lexer___TKwmodule___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwmodule(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TKwmodule_parser___parser_nodes___ANode___init[] = "new TKwmodule parser_nodes::ANode::init";
+val_t NEW_TKwmodule_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TKwmodule_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TKwmodule();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwmodule(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwmodule(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TKwimport[79] = {
+  {(bigint) 4079 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TKwimport" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TKwimport < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TKwimport < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TKwimport < Token: superclass typecheck marker */},
+  {(bigint) 3339 /* 6: TKwimport < TokenKeyword: superclass typecheck marker */},
+  {(bigint) 4079 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TKwimport < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenKeyword___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TKwimport < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TKwimport___parser_index},
+  {(bigint) 1 /* 73: TKwimport < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TKwimport < TokenKeyword: superclass init_table position */},
+  {(bigint) parser___lexer___TKwimport___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwimport[] = "init var of TKwimport";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwimport;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TKwimport(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwimport;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TKwimport[] = "check new TKwimport";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TKwimport;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TKwimport_parser___lexer___TKwimport___init_tk[] = "new TKwimport lexer::TKwimport::init_tk";
+val_t NEW_TKwimport_parser___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[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 = 70;
+  fra.me.meth = LOCATE_NEW_TKwimport_parser___lexer___TKwimport___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:70 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TKwimport();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwimport(fra.me.REG[1]);
+  parser___lexer___TKwimport___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwimport(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TKwimport_parser___parser_nodes___ANode___init[] = "new TKwimport parser_nodes::ANode::init";
+val_t NEW_TKwimport_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TKwimport_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TKwimport();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwimport(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwimport(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TKwclass[79] = {
+  {(bigint) 4119 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TKwclass" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TKwclass < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TKwclass < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TKwclass < Token: superclass typecheck marker */},
+  {(bigint) 3339 /* 6: TKwclass < TokenKeyword: superclass typecheck marker */},
+  {(bigint) 4119 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TKwclass < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenKeyword___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TKwclass < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TKwclass___parser_index},
+  {(bigint) 1 /* 73: TKwclass < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TKwclass < TokenKeyword: superclass init_table position */},
+  {(bigint) parser___lexer___TKwclass___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwclass[] = "init var of TKwclass";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwclass;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TKwclass(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwclass;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TKwclass[] = "check new TKwclass";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TKwclass;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TKwclass_parser___lexer___TKwclass___init_tk[] = "new TKwclass lexer::TKwclass::init_tk";
+val_t NEW_TKwclass_parser___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[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 = 82;
+  fra.me.meth = LOCATE_NEW_TKwclass_parser___lexer___TKwclass___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:82 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TKwclass();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwclass(fra.me.REG[1]);
+  parser___lexer___TKwclass___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwclass(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TKwclass_parser___parser_nodes___ANode___init[] = "new TKwclass parser_nodes::ANode::init";
+val_t NEW_TKwclass_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TKwclass_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TKwclass();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwclass(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwclass(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TKwabstract[79] = {
+  {(bigint) 4139 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TKwabstract" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TKwabstract < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TKwabstract < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TKwabstract < Token: superclass typecheck marker */},
+  {(bigint) 3339 /* 6: TKwabstract < TokenKeyword: superclass typecheck marker */},
+  {(bigint) 4139 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TKwabstract < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenKeyword___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TKwabstract < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TKwabstract___parser_index},
+  {(bigint) 1 /* 73: TKwabstract < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TKwabstract < TokenKeyword: superclass init_table position */},
+  {(bigint) parser___lexer___TKwabstract___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwabstract[] = "init var of TKwabstract";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwabstract;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TKwabstract(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwabstract;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TKwabstract[] = "check new TKwabstract";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TKwabstract;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TKwabstract_parser___lexer___TKwabstract___init_tk[] = "new TKwabstract lexer::TKwabstract::init_tk";
+val_t NEW_TKwabstract_parser___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[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 = 94;
+  fra.me.meth = LOCATE_NEW_TKwabstract_parser___lexer___TKwabstract___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:94 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TKwabstract();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwabstract(fra.me.REG[1]);
+  parser___lexer___TKwabstract___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwabstract(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TKwabstract_parser___parser_nodes___ANode___init[] = "new TKwabstract parser_nodes::ANode::init";
+val_t NEW_TKwabstract_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TKwabstract_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TKwabstract();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwabstract(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwabstract(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TKwinterface[79] = {
+  {(bigint) 4067 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TKwinterface" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TKwinterface < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TKwinterface < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TKwinterface < Token: superclass typecheck marker */},
+  {(bigint) 3339 /* 6: TKwinterface < TokenKeyword: superclass typecheck marker */},
+  {(bigint) 4067 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TKwinterface < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenKeyword___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TKwinterface < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TKwinterface___parser_index},
+  {(bigint) 1 /* 73: TKwinterface < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TKwinterface < TokenKeyword: superclass init_table position */},
+  {(bigint) parser___lexer___TKwinterface___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwinterface[] = "init var of TKwinterface";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwinterface;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TKwinterface(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwinterface;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TKwinterface[] = "check new TKwinterface";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TKwinterface;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TKwinterface_parser___lexer___TKwinterface___init_tk[] = "new TKwinterface lexer::TKwinterface::init_tk";
+val_t NEW_TKwinterface_parser___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[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 = 106;
+  fra.me.meth = LOCATE_NEW_TKwinterface_parser___lexer___TKwinterface___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:106 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TKwinterface();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwinterface(fra.me.REG[1]);
+  parser___lexer___TKwinterface___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwinterface(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TKwinterface_parser___parser_nodes___ANode___init[] = "new TKwinterface parser_nodes::ANode::init";
+val_t NEW_TKwinterface_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TKwinterface_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TKwinterface();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwinterface(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwinterface(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TKwenum[79] = {
+  {(bigint) 4099 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TKwenum" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TKwenum < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TKwenum < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TKwenum < Token: superclass typecheck marker */},
+  {(bigint) 3339 /* 6: TKwenum < TokenKeyword: superclass typecheck marker */},
+  {(bigint) 4099 /* 7: TKwenum < TKwenum: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TKwenum < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenKeyword___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TKwenum < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TKwenum___parser_index},
+  {(bigint) 1 /* 73: TKwenum < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TKwenum < TokenKeyword: superclass init_table position */},
+  {(bigint) parser___lexer___TKwenum___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwenum[] = "init var of TKwenum";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwenum;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TKwenum(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwenum;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TKwenum[] = "check new TKwenum";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TKwenum;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TKwenum_parser___lexer___TKwenum___init_tk[] = "new TKwenum lexer::TKwenum::init_tk";
+val_t NEW_TKwenum_parser___lexer___TKwenum___init_tk(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_TKwenum_parser___lexer___TKwenum___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:118 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TKwenum();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwenum(fra.me.REG[1]);
+  parser___lexer___TKwenum___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwenum(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TKwenum_parser___parser_nodes___ANode___init[] = "new TKwenum parser_nodes::ANode::init";
+val_t NEW_TKwenum_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TKwenum_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TKwenum();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwenum(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwenum(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TKwend[79] = {
+  {(bigint) 4103 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TKwend" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TKwend < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TKwend < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TKwend < Token: superclass typecheck marker */},
+  {(bigint) 3339 /* 6: TKwend < TokenKeyword: superclass typecheck marker */},
+  {(bigint) 4103 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TKwend < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenKeyword___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TKwend < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TKwend___parser_index},
+  {(bigint) 1 /* 73: TKwend < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TKwend < TokenKeyword: superclass init_table position */},
+  {(bigint) parser___lexer___TKwend___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwend[] = "init var of TKwend";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwend;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TKwend(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwend;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TKwend[] = "check new TKwend";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TKwend;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TKwend_parser___lexer___TKwend___init_tk[] = "new TKwend lexer::TKwend::init_tk";
+val_t NEW_TKwend_parser___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[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 = 130;
+  fra.me.meth = LOCATE_NEW_TKwend_parser___lexer___TKwend___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:130 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TKwend();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwend(fra.me.REG[1]);
+  parser___lexer___TKwend___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwend(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TKwend_parser___parser_nodes___ANode___init[] = "new TKwend parser_nodes::ANode::init";
+val_t NEW_TKwend_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TKwend_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TKwend();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwend(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwend(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TKwmeth[79] = {
+  {(bigint) 4035 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TKwmeth" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TKwmeth < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TKwmeth < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TKwmeth < Token: superclass typecheck marker */},
+  {(bigint) 3339 /* 6: TKwmeth < TokenKeyword: superclass typecheck marker */},
+  {(bigint) 4035 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TKwmeth < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenKeyword___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TKwmeth < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TKwmeth___parser_index},
+  {(bigint) 1 /* 73: TKwmeth < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TKwmeth < TokenKeyword: superclass init_table position */},
+  {(bigint) parser___lexer___TKwmeth___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwmeth[] = "init var of TKwmeth";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwmeth;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TKwmeth(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwmeth;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TKwmeth[] = "check new TKwmeth";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TKwmeth;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TKwmeth_parser___lexer___TKwmeth___init_tk[] = "new TKwmeth lexer::TKwmeth::init_tk";
+val_t NEW_TKwmeth_parser___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[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 = 142;
+  fra.me.meth = LOCATE_NEW_TKwmeth_parser___lexer___TKwmeth___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:142 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TKwmeth();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwmeth(fra.me.REG[1]);
+  parser___lexer___TKwmeth___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwmeth(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TKwmeth_parser___parser_nodes___ANode___init[] = "new TKwmeth parser_nodes::ANode::init";
+val_t NEW_TKwmeth_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TKwmeth_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TKwmeth();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwmeth(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwmeth(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TKwtype[79] = {
+  {(bigint) 3967 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TKwtype" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TKwtype < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TKwtype < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TKwtype < Token: superclass typecheck marker */},
+  {(bigint) 3339 /* 6: TKwtype < TokenKeyword: superclass typecheck marker */},
+  {(bigint) 3967 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TKwtype < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenKeyword___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TKwtype < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TKwtype___parser_index},
+  {(bigint) 1 /* 73: TKwtype < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TKwtype < TokenKeyword: superclass init_table position */},
+  {(bigint) parser___lexer___TKwtype___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwtype[] = "init var of TKwtype";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwtype;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TKwtype(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwtype;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TKwtype[] = "check new TKwtype";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TKwtype;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TKwtype_parser___lexer___TKwtype___init_tk[] = "new TKwtype lexer::TKwtype::init_tk";
+val_t NEW_TKwtype_parser___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[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 = 154;
+  fra.me.meth = LOCATE_NEW_TKwtype_parser___lexer___TKwtype___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  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_parser___parser_nodes___TKwtype();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwtype(fra.me.REG[1]);
+  parser___lexer___TKwtype___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwtype(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TKwtype_parser___parser_nodes___ANode___init[] = "new TKwtype parser_nodes::ANode::init";
+val_t NEW_TKwtype_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TKwtype_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TKwtype();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwtype(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwtype(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TKwinit[79] = {
+  {(bigint) 4071 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TKwinit" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TKwinit < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TKwinit < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TKwinit < Token: superclass typecheck marker */},
+  {(bigint) 3339 /* 6: TKwinit < TokenKeyword: superclass typecheck marker */},
+  {(bigint) 4071 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TKwinit < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenKeyword___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TKwinit < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TKwinit___parser_index},
+  {(bigint) 1 /* 73: TKwinit < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TKwinit < TokenKeyword: superclass init_table position */},
+  {(bigint) parser___lexer___TKwinit___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwinit[] = "init var of TKwinit";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwinit;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TKwinit(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwinit;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TKwinit[] = "check new TKwinit";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TKwinit;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TKwinit_parser___lexer___TKwinit___init_tk[] = "new TKwinit lexer::TKwinit::init_tk";
+val_t NEW_TKwinit_parser___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[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 = 166;
+  fra.me.meth = LOCATE_NEW_TKwinit_parser___lexer___TKwinit___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:166 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TKwinit();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwinit(fra.me.REG[1]);
+  parser___lexer___TKwinit___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwinit(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TKwinit_parser___parser_nodes___ANode___init[] = "new TKwinit parser_nodes::ANode::init";
+val_t NEW_TKwinit_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TKwinit_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TKwinit();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwinit(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwinit(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TKwredef[79] = {
+  {(bigint) 3991 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TKwredef" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TKwredef < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TKwredef < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TKwredef < Token: superclass typecheck marker */},
+  {(bigint) 3339 /* 6: TKwredef < TokenKeyword: superclass typecheck marker */},
+  {(bigint) 3991 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TKwredef < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenKeyword___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TKwredef < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TKwredef___parser_index},
+  {(bigint) 1 /* 73: TKwredef < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TKwredef < TokenKeyword: superclass init_table position */},
+  {(bigint) parser___lexer___TKwredef___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwredef[] = "init var of TKwredef";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwredef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TKwredef(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwredef;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TKwredef[] = "check new TKwredef";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TKwredef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TKwredef_parser___lexer___TKwredef___init_tk[] = "new TKwredef lexer::TKwredef::init_tk";
+val_t NEW_TKwredef_parser___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[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 = 178;
+  fra.me.meth = LOCATE_NEW_TKwredef_parser___lexer___TKwredef___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:178 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TKwredef();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwredef(fra.me.REG[1]);
+  parser___lexer___TKwredef___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwredef(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TKwredef_parser___parser_nodes___ANode___init[] = "new TKwredef parser_nodes::ANode::init";
+val_t NEW_TKwredef_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TKwredef_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TKwredef();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwredef(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwredef(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TKwis[79] = {
+  {(bigint) 4055 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TKwis" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TKwis < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TKwis < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TKwis < Token: superclass typecheck marker */},
+  {(bigint) 3339 /* 6: TKwis < TokenKeyword: superclass typecheck marker */},
+  {(bigint) 4055 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TKwis < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenKeyword___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TKwis < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TKwis___parser_index},
+  {(bigint) 1 /* 73: TKwis < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TKwis < TokenKeyword: superclass init_table position */},
+  {(bigint) parser___lexer___TKwis___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwis[] = "init var of TKwis";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwis;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TKwis(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwis;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TKwis[] = "check new TKwis";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TKwis;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TKwis_parser___lexer___TKwis___init_tk[] = "new TKwis lexer::TKwis::init_tk";
+val_t NEW_TKwis_parser___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[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 = 190;
+  fra.me.meth = LOCATE_NEW_TKwis_parser___lexer___TKwis___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:190 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TKwis();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwis(fra.me.REG[1]);
+  parser___lexer___TKwis___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwis(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TKwis_parser___parser_nodes___ANode___init[] = "new TKwis parser_nodes::ANode::init";
+val_t NEW_TKwis_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TKwis_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TKwis();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwis(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwis(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TKwdo[79] = {
+  {(bigint) 4111 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TKwdo" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TKwdo < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TKwdo < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TKwdo < Token: superclass typecheck marker */},
+  {(bigint) 3339 /* 6: TKwdo < TokenKeyword: superclass typecheck marker */},
+  {(bigint) 4111 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TKwdo < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenKeyword___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TKwdo < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TKwdo___parser_index},
+  {(bigint) 1 /* 73: TKwdo < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TKwdo < TokenKeyword: superclass init_table position */},
+  {(bigint) parser___lexer___TKwdo___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwdo[] = "init var of TKwdo";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwdo;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TKwdo(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwdo;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TKwdo[] = "check new TKwdo";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TKwdo;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TKwdo_parser___lexer___TKwdo___init_tk[] = "new TKwdo lexer::TKwdo::init_tk";
+val_t NEW_TKwdo_parser___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[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 = 202;
+  fra.me.meth = LOCATE_NEW_TKwdo_parser___lexer___TKwdo___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:202 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TKwdo();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwdo(fra.me.REG[1]);
+  parser___lexer___TKwdo___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwdo(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TKwdo_parser___parser_nodes___ANode___init[] = "new TKwdo parser_nodes::ANode::init";
+val_t NEW_TKwdo_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TKwdo_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TKwdo();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwdo(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwdo(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TKwreadable[79] = {
+  {(bigint) 3995 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TKwreadable" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TKwreadable < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TKwreadable < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TKwreadable < Token: superclass typecheck marker */},
+  {(bigint) 3339 /* 6: TKwreadable < TokenKeyword: superclass typecheck marker */},
+  {(bigint) 3995 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TKwreadable < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenKeyword___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TKwreadable < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TKwreadable___parser_index},
+  {(bigint) 1 /* 73: TKwreadable < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TKwreadable < TokenKeyword: superclass init_table position */},
+  {(bigint) parser___lexer___TKwreadable___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwreadable[] = "init var of TKwreadable";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwreadable;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TKwreadable(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwreadable;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TKwreadable[] = "check new TKwreadable";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TKwreadable;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TKwreadable_parser___lexer___TKwreadable___init_tk[] = "new TKwreadable lexer::TKwreadable::init_tk";
+val_t NEW_TKwreadable_parser___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[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 = 214;
+  fra.me.meth = LOCATE_NEW_TKwreadable_parser___lexer___TKwreadable___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:214 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TKwreadable();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwreadable(fra.me.REG[1]);
+  parser___lexer___TKwreadable___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwreadable(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TKwreadable_parser___parser_nodes___ANode___init[] = "new TKwreadable parser_nodes::ANode::init";
+val_t NEW_TKwreadable_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TKwreadable_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TKwreadable();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwreadable(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwreadable(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TKwwritable[79] = {
+  {(bigint) 3955 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TKwwritable" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TKwwritable < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TKwwritable < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TKwwritable < Token: superclass typecheck marker */},
+  {(bigint) 3339 /* 6: TKwwritable < TokenKeyword: superclass typecheck marker */},
+  {(bigint) 3955 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TKwwritable < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenKeyword___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TKwwritable < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TKwwritable___parser_index},
+  {(bigint) 1 /* 73: TKwwritable < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TKwwritable < TokenKeyword: superclass init_table position */},
+  {(bigint) parser___lexer___TKwwritable___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwwritable[] = "init var of TKwwritable";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwwritable;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TKwwritable(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwwritable;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TKwwritable[] = "check new TKwwritable";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TKwwritable;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TKwwritable_parser___lexer___TKwwritable___init_tk[] = "new TKwwritable lexer::TKwwritable::init_tk";
+val_t NEW_TKwwritable_parser___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[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 = 226;
+  fra.me.meth = LOCATE_NEW_TKwwritable_parser___lexer___TKwwritable___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:226 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TKwwritable();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwwritable(fra.me.REG[1]);
+  parser___lexer___TKwwritable___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwwritable(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TKwwritable_parser___parser_nodes___ANode___init[] = "new TKwwritable parser_nodes::ANode::init";
+val_t NEW_TKwwritable_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TKwwritable_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TKwwritable();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwwritable(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwwritable(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TKwvar[79] = {
+  {(bigint) 3963 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TKwvar" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TKwvar < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TKwvar < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TKwvar < Token: superclass typecheck marker */},
+  {(bigint) 3339 /* 6: TKwvar < TokenKeyword: superclass typecheck marker */},
+  {(bigint) 3963 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TKwvar < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenKeyword___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TKwvar < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TKwvar___parser_index},
+  {(bigint) 1 /* 73: TKwvar < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TKwvar < TokenKeyword: superclass init_table position */},
+  {(bigint) parser___lexer___TKwvar___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwvar[] = "init var of TKwvar";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwvar;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TKwvar(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwvar;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TKwvar[] = "check new TKwvar";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TKwvar;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TKwvar_parser___lexer___TKwvar___init_tk[] = "new TKwvar lexer::TKwvar::init_tk";
+val_t NEW_TKwvar_parser___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[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 = 238;
+  fra.me.meth = LOCATE_NEW_TKwvar_parser___lexer___TKwvar___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:238 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TKwvar();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwvar(fra.me.REG[1]);
+  parser___lexer___TKwvar___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwvar(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TKwvar_parser___parser_nodes___ANode___init[] = "new TKwvar parser_nodes::ANode::init";
+val_t NEW_TKwvar_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TKwvar_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TKwvar();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwvar(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwvar(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TKwintern[79] = {
+  {(bigint) 4063 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TKwintern" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TKwintern < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TKwintern < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TKwintern < Token: superclass typecheck marker */},
+  {(bigint) 3339 /* 6: TKwintern < TokenKeyword: superclass typecheck marker */},
+  {(bigint) 4063 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TKwintern < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenKeyword___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TKwintern < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TKwintern___parser_index},
+  {(bigint) 1 /* 73: TKwintern < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TKwintern < TokenKeyword: superclass init_table position */},
+  {(bigint) parser___lexer___TKwintern___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwintern[] = "init var of TKwintern";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwintern;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TKwintern(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwintern;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TKwintern[] = "check new TKwintern";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TKwintern;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TKwintern_parser___lexer___TKwintern___init_tk[] = "new TKwintern lexer::TKwintern::init_tk";
+val_t NEW_TKwintern_parser___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[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 = 250;
+  fra.me.meth = LOCATE_NEW_TKwintern_parser___lexer___TKwintern___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:250 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TKwintern();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwintern(fra.me.REG[1]);
+  parser___lexer___TKwintern___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwintern(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TKwintern_parser___parser_nodes___ANode___init[] = "new TKwintern parser_nodes::ANode::init";
+val_t NEW_TKwintern_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TKwintern_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TKwintern();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwintern(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwintern(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TKwextern[79] = {
+  {(bigint) 4095 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TKwextern" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TKwextern < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TKwextern < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TKwextern < Token: superclass typecheck marker */},
+  {(bigint) 3339 /* 6: TKwextern < TokenKeyword: superclass typecheck marker */},
+  {(bigint) 4095 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TKwextern < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenKeyword___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TKwextern < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TKwextern___parser_index},
+  {(bigint) 1 /* 73: TKwextern < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TKwextern < TokenKeyword: superclass init_table position */},
+  {(bigint) parser___lexer___TKwextern___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwextern[] = "init var of TKwextern";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwextern;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TKwextern(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwextern;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TKwextern[] = "check new TKwextern";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TKwextern;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TKwextern_parser___lexer___TKwextern___init_tk[] = "new TKwextern lexer::TKwextern::init_tk";
+val_t NEW_TKwextern_parser___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[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 = 262;
+  fra.me.meth = LOCATE_NEW_TKwextern_parser___lexer___TKwextern___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:262 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TKwextern();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwextern(fra.me.REG[1]);
+  parser___lexer___TKwextern___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwextern(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TKwextern_parser___parser_nodes___ANode___init[] = "new TKwextern parser_nodes::ANode::init";
+val_t NEW_TKwextern_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TKwextern_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TKwextern();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwextern(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwextern(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TKwprotected[79] = {
+  {(bigint) 3999 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TKwprotected" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TKwprotected < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TKwprotected < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TKwprotected < Token: superclass typecheck marker */},
+  {(bigint) 3339 /* 6: TKwprotected < TokenKeyword: superclass typecheck marker */},
+  {(bigint) 3999 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TKwprotected < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenKeyword___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TKwprotected < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TKwprotected___parser_index},
+  {(bigint) 1 /* 73: TKwprotected < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TKwprotected < TokenKeyword: superclass init_table position */},
+  {(bigint) parser___lexer___TKwprotected___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwprotected[] = "init var of TKwprotected";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwprotected;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TKwprotected(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwprotected;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TKwprotected[] = "check new TKwprotected";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TKwprotected;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TKwprotected_parser___lexer___TKwprotected___init_tk[] = "new TKwprotected lexer::TKwprotected::init_tk";
+val_t NEW_TKwprotected_parser___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[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 = 274;
+  fra.me.meth = LOCATE_NEW_TKwprotected_parser___lexer___TKwprotected___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:274 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TKwprotected();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwprotected(fra.me.REG[1]);
+  parser___lexer___TKwprotected___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwprotected(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TKwprotected_parser___parser_nodes___ANode___init[] = "new TKwprotected parser_nodes::ANode::init";
+val_t NEW_TKwprotected_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TKwprotected_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TKwprotected();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwprotected(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwprotected(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TKwprivate[79] = {
+  {(bigint) 4003 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TKwprivate" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TKwprivate < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TKwprivate < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TKwprivate < Token: superclass typecheck marker */},
+  {(bigint) 3339 /* 6: TKwprivate < TokenKeyword: superclass typecheck marker */},
+  {(bigint) 4003 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TKwprivate < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenKeyword___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TKwprivate < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TKwprivate___parser_index},
+  {(bigint) 1 /* 73: TKwprivate < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TKwprivate < TokenKeyword: superclass init_table position */},
+  {(bigint) parser___lexer___TKwprivate___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwprivate[] = "init var of TKwprivate";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwprivate;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TKwprivate(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwprivate;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TKwprivate[] = "check new TKwprivate";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TKwprivate;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TKwprivate_parser___lexer___TKwprivate___init_tk[] = "new TKwprivate lexer::TKwprivate::init_tk";
+val_t NEW_TKwprivate_parser___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[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 = 286;
+  fra.me.meth = LOCATE_NEW_TKwprivate_parser___lexer___TKwprivate___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:286 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TKwprivate();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwprivate(fra.me.REG[1]);
+  parser___lexer___TKwprivate___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwprivate(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TKwprivate_parser___parser_nodes___ANode___init[] = "new TKwprivate parser_nodes::ANode::init";
+val_t NEW_TKwprivate_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TKwprivate_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TKwprivate();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwprivate(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwprivate(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TKwintrude[79] = {
+  {(bigint) 4059 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TKwintrude" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TKwintrude < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TKwintrude < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TKwintrude < Token: superclass typecheck marker */},
+  {(bigint) 3339 /* 6: TKwintrude < TokenKeyword: superclass typecheck marker */},
+  {(bigint) 4059 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TKwintrude < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenKeyword___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TKwintrude < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TKwintrude___parser_index},
+  {(bigint) 1 /* 73: TKwintrude < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TKwintrude < TokenKeyword: superclass init_table position */},
+  {(bigint) parser___lexer___TKwintrude___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwintrude[] = "init var of TKwintrude";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwintrude;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TKwintrude(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwintrude;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TKwintrude[] = "check new TKwintrude";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TKwintrude;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TKwintrude_parser___lexer___TKwintrude___init_tk[] = "new TKwintrude lexer::TKwintrude::init_tk";
+val_t NEW_TKwintrude_parser___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[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 = 298;
+  fra.me.meth = LOCATE_NEW_TKwintrude_parser___lexer___TKwintrude___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:298 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TKwintrude();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwintrude(fra.me.REG[1]);
+  parser___lexer___TKwintrude___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwintrude(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TKwintrude_parser___parser_nodes___ANode___init[] = "new TKwintrude parser_nodes::ANode::init";
+val_t NEW_TKwintrude_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TKwintrude_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TKwintrude();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwintrude(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwintrude(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TKwif[79] = {
+  {(bigint) 4083 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TKwif" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TKwif < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TKwif < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TKwif < Token: superclass typecheck marker */},
+  {(bigint) 3339 /* 6: TKwif < TokenKeyword: superclass typecheck marker */},
+  {(bigint) 4083 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TKwif < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenKeyword___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TKwif < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TKwif___parser_index},
+  {(bigint) 1 /* 73: TKwif < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TKwif < TokenKeyword: superclass init_table position */},
+  {(bigint) parser___lexer___TKwif___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwif[] = "init var of TKwif";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwif;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TKwif(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwif;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TKwif[] = "check new TKwif";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TKwif;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TKwif_parser___lexer___TKwif___init_tk[] = "new TKwif lexer::TKwif::init_tk";
+val_t NEW_TKwif_parser___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[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 = 310;
+  fra.me.meth = LOCATE_NEW_TKwif_parser___lexer___TKwif___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  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_parser___parser_nodes___TKwif();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwif(fra.me.REG[1]);
+  parser___lexer___TKwif___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwif(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TKwif_parser___parser_nodes___ANode___init[] = "new TKwif parser_nodes::ANode::init";
+val_t NEW_TKwif_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TKwif_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TKwif();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwif(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwif(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TKwthen[79] = {
+  {(bigint) 3975 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TKwthen" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TKwthen < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TKwthen < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TKwthen < Token: superclass typecheck marker */},
+  {(bigint) 3339 /* 6: TKwthen < TokenKeyword: superclass typecheck marker */},
+  {(bigint) 3975 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TKwthen < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenKeyword___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TKwthen < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TKwthen___parser_index},
+  {(bigint) 1 /* 73: TKwthen < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TKwthen < TokenKeyword: superclass init_table position */},
+  {(bigint) parser___lexer___TKwthen___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwthen[] = "init var of TKwthen";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwthen;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TKwthen(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwthen;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TKwthen[] = "check new TKwthen";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TKwthen;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TKwthen_parser___lexer___TKwthen___init_tk[] = "new TKwthen lexer::TKwthen::init_tk";
+val_t NEW_TKwthen_parser___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[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 = 322;
+  fra.me.meth = LOCATE_NEW_TKwthen_parser___lexer___TKwthen___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:322 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TKwthen();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwthen(fra.me.REG[1]);
+  parser___lexer___TKwthen___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwthen(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TKwthen_parser___parser_nodes___ANode___init[] = "new TKwthen parser_nodes::ANode::init";
+val_t NEW_TKwthen_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TKwthen_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TKwthen();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwthen(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwthen(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TKwelse[79] = {
+  {(bigint) 4107 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TKwelse" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TKwelse < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TKwelse < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TKwelse < Token: superclass typecheck marker */},
+  {(bigint) 3339 /* 6: TKwelse < TokenKeyword: superclass typecheck marker */},
+  {(bigint) 4107 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TKwelse < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenKeyword___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TKwelse < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TKwelse___parser_index},
+  {(bigint) 1 /* 73: TKwelse < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TKwelse < TokenKeyword: superclass init_table position */},
+  {(bigint) parser___lexer___TKwelse___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwelse[] = "init var of TKwelse";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwelse;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TKwelse(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwelse;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TKwelse[] = "check new TKwelse";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TKwelse;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TKwelse_parser___lexer___TKwelse___init_tk[] = "new TKwelse lexer::TKwelse::init_tk";
+val_t NEW_TKwelse_parser___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[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 = 334;
+  fra.me.meth = LOCATE_NEW_TKwelse_parser___lexer___TKwelse___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:334 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TKwelse();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwelse(fra.me.REG[1]);
+  parser___lexer___TKwelse___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwelse(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TKwelse_parser___parser_nodes___ANode___init[] = "new TKwelse parser_nodes::ANode::init";
+val_t NEW_TKwelse_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TKwelse_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TKwelse();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwelse(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwelse(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TKwwhile[79] = {
+  {(bigint) 3959 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TKwwhile" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TKwwhile < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TKwwhile < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TKwwhile < Token: superclass typecheck marker */},
+  {(bigint) 3339 /* 6: TKwwhile < TokenKeyword: superclass typecheck marker */},
+  {(bigint) 3959 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TKwwhile < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenKeyword___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TKwwhile < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TKwwhile___parser_index},
+  {(bigint) 1 /* 73: TKwwhile < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TKwwhile < TokenKeyword: superclass init_table position */},
+  {(bigint) parser___lexer___TKwwhile___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwwhile[] = "init var of TKwwhile";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwwhile;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TKwwhile(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwwhile;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TKwwhile[] = "check new TKwwhile";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TKwwhile;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TKwwhile_parser___lexer___TKwwhile___init_tk[] = "new TKwwhile lexer::TKwwhile::init_tk";
+val_t NEW_TKwwhile_parser___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[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 = 346;
+  fra.me.meth = LOCATE_NEW_TKwwhile_parser___lexer___TKwwhile___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:346 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TKwwhile();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwwhile(fra.me.REG[1]);
+  parser___lexer___TKwwhile___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwwhile(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TKwwhile_parser___parser_nodes___ANode___init[] = "new TKwwhile parser_nodes::ANode::init";
+val_t NEW_TKwwhile_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TKwwhile_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TKwwhile();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwwhile(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwwhile(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TKwloop[79] = {
+  {(bigint) 4039 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TKwloop" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TKwloop < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TKwloop < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TKwloop < Token: superclass typecheck marker */},
+  {(bigint) 3339 /* 6: TKwloop < TokenKeyword: superclass typecheck marker */},
+  {(bigint) 4039 /* 7: TKwloop < TKwloop: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TKwloop < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenKeyword___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TKwloop < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TKwloop___parser_index},
+  {(bigint) 1 /* 73: TKwloop < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TKwloop < TokenKeyword: superclass init_table position */},
+  {(bigint) parser___lexer___TKwloop___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwloop[] = "init var of TKwloop";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwloop;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TKwloop(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwloop;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TKwloop[] = "check new TKwloop";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TKwloop;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TKwloop_parser___lexer___TKwloop___init_tk[] = "new TKwloop lexer::TKwloop::init_tk";
+val_t NEW_TKwloop_parser___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[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 = 358;
+  fra.me.meth = LOCATE_NEW_TKwloop_parser___lexer___TKwloop___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:358 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TKwloop();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwloop(fra.me.REG[1]);
+  parser___lexer___TKwloop___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwloop(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TKwloop_parser___parser_nodes___ANode___init[] = "new TKwloop parser_nodes::ANode::init";
+val_t NEW_TKwloop_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TKwloop_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TKwloop();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwloop(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwloop(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TKwfor[79] = {
+  {(bigint) 4087 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TKwfor" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TKwfor < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TKwfor < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TKwfor < Token: superclass typecheck marker */},
+  {(bigint) 3339 /* 6: TKwfor < TokenKeyword: superclass typecheck marker */},
+  {(bigint) 4087 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TKwfor < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenKeyword___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TKwfor < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TKwfor___parser_index},
+  {(bigint) 1 /* 73: TKwfor < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TKwfor < TokenKeyword: superclass init_table position */},
+  {(bigint) parser___lexer___TKwfor___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwfor[] = "init var of TKwfor";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwfor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TKwfor(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwfor;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TKwfor[] = "check new TKwfor";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TKwfor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TKwfor_parser___lexer___TKwfor___init_tk[] = "new TKwfor lexer::TKwfor::init_tk";
+val_t NEW_TKwfor_parser___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[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 = 370;
+  fra.me.meth = LOCATE_NEW_TKwfor_parser___lexer___TKwfor___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:370 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TKwfor();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwfor(fra.me.REG[1]);
+  parser___lexer___TKwfor___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwfor(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TKwfor_parser___parser_nodes___ANode___init[] = "new TKwfor parser_nodes::ANode::init";
+val_t NEW_TKwfor_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TKwfor_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TKwfor();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwfor(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwfor(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TKwin[79] = {
+  {(bigint) 4075 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TKwin" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TKwin < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TKwin < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TKwin < Token: superclass typecheck marker */},
+  {(bigint) 3339 /* 6: TKwin < TokenKeyword: superclass typecheck marker */},
+  {(bigint) 4075 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TKwin < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenKeyword___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TKwin < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TKwin___parser_index},
+  {(bigint) 1 /* 73: TKwin < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TKwin < TokenKeyword: superclass init_table position */},
+  {(bigint) parser___lexer___TKwin___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwin[] = "init var of TKwin";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwin;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TKwin(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwin;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TKwin[] = "check new TKwin";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TKwin;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TKwin_parser___lexer___TKwin___init_tk[] = "new TKwin lexer::TKwin::init_tk";
+val_t NEW_TKwin_parser___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[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 = 382;
+  fra.me.meth = LOCATE_NEW_TKwin_parser___lexer___TKwin___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:382 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TKwin();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwin(fra.me.REG[1]);
+  parser___lexer___TKwin___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwin(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TKwin_parser___parser_nodes___ANode___init[] = "new TKwin parser_nodes::ANode::init";
+val_t NEW_TKwin_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TKwin_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TKwin();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwin(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwin(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TKwand[79] = {
+  {(bigint) 4135 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TKwand" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TKwand < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TKwand < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TKwand < Token: superclass typecheck marker */},
+  {(bigint) 3339 /* 6: TKwand < TokenKeyword: superclass typecheck marker */},
+  {(bigint) 4135 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TKwand < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenKeyword___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TKwand < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TKwand___parser_index},
+  {(bigint) 1 /* 73: TKwand < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TKwand < TokenKeyword: superclass init_table position */},
+  {(bigint) parser___lexer___TKwand___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwand[] = "init var of TKwand";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwand;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TKwand(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwand;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TKwand[] = "check new TKwand";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TKwand;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TKwand_parser___lexer___TKwand___init_tk[] = "new TKwand lexer::TKwand::init_tk";
+val_t NEW_TKwand_parser___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[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 = 394;
+  fra.me.meth = LOCATE_NEW_TKwand_parser___lexer___TKwand___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:394 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TKwand();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwand(fra.me.REG[1]);
+  parser___lexer___TKwand___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwand(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TKwand_parser___parser_nodes___ANode___init[] = "new TKwand parser_nodes::ANode::init";
+val_t NEW_TKwand_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TKwand_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TKwand();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwand(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwand(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TKwor[79] = {
+  {(bigint) 4007 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TKwor" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TKwor < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TKwor < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TKwor < Token: superclass typecheck marker */},
+  {(bigint) 3339 /* 6: TKwor < TokenKeyword: superclass typecheck marker */},
+  {(bigint) 4007 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TKwor < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenKeyword___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TKwor < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TKwor___parser_index},
+  {(bigint) 1 /* 73: TKwor < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TKwor < TokenKeyword: superclass init_table position */},
+  {(bigint) parser___lexer___TKwor___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwor[] = "init var of TKwor";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TKwor(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwor;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TKwor[] = "check new TKwor";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TKwor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TKwor_parser___lexer___TKwor___init_tk[] = "new TKwor lexer::TKwor::init_tk";
+val_t NEW_TKwor_parser___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[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 = 406;
+  fra.me.meth = LOCATE_NEW_TKwor_parser___lexer___TKwor___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:406 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TKwor();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwor(fra.me.REG[1]);
+  parser___lexer___TKwor___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwor(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TKwor_parser___parser_nodes___ANode___init[] = "new TKwor parser_nodes::ANode::init";
+val_t NEW_TKwor_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TKwor_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TKwor();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwor(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwor(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TKwnot[79] = {
+  {(bigint) 4023 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TKwnot" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TKwnot < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TKwnot < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TKwnot < Token: superclass typecheck marker */},
+  {(bigint) 3339 /* 6: TKwnot < TokenKeyword: superclass typecheck marker */},
+  {(bigint) 4023 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TKwnot < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenKeyword___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TKwnot < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TKwnot___parser_index},
+  {(bigint) 1 /* 73: TKwnot < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TKwnot < TokenKeyword: superclass init_table position */},
+  {(bigint) parser___lexer___TKwnot___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwnot[] = "init var of TKwnot";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwnot;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TKwnot(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwnot;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TKwnot[] = "check new TKwnot";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TKwnot;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TKwnot_parser___lexer___TKwnot___init_tk[] = "new TKwnot lexer::TKwnot::init_tk";
+val_t NEW_TKwnot_parser___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[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 = 418;
+  fra.me.meth = LOCATE_NEW_TKwnot_parser___lexer___TKwnot___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:418 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TKwnot();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwnot(fra.me.REG[1]);
+  parser___lexer___TKwnot___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwnot(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TKwnot_parser___parser_nodes___ANode___init[] = "new TKwnot parser_nodes::ANode::init";
+val_t NEW_TKwnot_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TKwnot_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TKwnot();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwnot(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwnot(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TKwreturn[79] = {
+  {(bigint) 3987 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TKwreturn" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TKwreturn < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TKwreturn < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TKwreturn < Token: superclass typecheck marker */},
+  {(bigint) 3339 /* 6: TKwreturn < TokenKeyword: superclass typecheck marker */},
+  {(bigint) 3987 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TKwreturn < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenKeyword___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TKwreturn < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TKwreturn___parser_index},
+  {(bigint) 1 /* 73: TKwreturn < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TKwreturn < TokenKeyword: superclass init_table position */},
+  {(bigint) parser___lexer___TKwreturn___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwreturn[] = "init var of TKwreturn";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwreturn;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TKwreturn(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwreturn;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TKwreturn[] = "check new TKwreturn";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TKwreturn;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TKwreturn_parser___lexer___TKwreturn___init_tk[] = "new TKwreturn lexer::TKwreturn::init_tk";
+val_t NEW_TKwreturn_parser___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[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 = 430;
+  fra.me.meth = LOCATE_NEW_TKwreturn_parser___lexer___TKwreturn___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:430 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TKwreturn();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwreturn(fra.me.REG[1]);
+  parser___lexer___TKwreturn___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwreturn(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TKwreturn_parser___parser_nodes___ANode___init[] = "new TKwreturn parser_nodes::ANode::init";
+val_t NEW_TKwreturn_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TKwreturn_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TKwreturn();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwreturn(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwreturn(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TKwcontinue[79] = {
+  {(bigint) 4115 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TKwcontinue" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TKwcontinue < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TKwcontinue < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TKwcontinue < Token: superclass typecheck marker */},
+  {(bigint) 3339 /* 6: TKwcontinue < TokenKeyword: superclass typecheck marker */},
+  {(bigint) 4115 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TKwcontinue < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenKeyword___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TKwcontinue < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TKwcontinue___parser_index},
+  {(bigint) 1 /* 73: TKwcontinue < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TKwcontinue < TokenKeyword: superclass init_table position */},
+  {(bigint) parser___lexer___TKwcontinue___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwcontinue[] = "init var of TKwcontinue";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwcontinue;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TKwcontinue(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwcontinue;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TKwcontinue[] = "check new TKwcontinue";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TKwcontinue;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TKwcontinue_parser___lexer___TKwcontinue___init_tk[] = "new TKwcontinue lexer::TKwcontinue::init_tk";
+val_t NEW_TKwcontinue_parser___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[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 = 442;
+  fra.me.meth = LOCATE_NEW_TKwcontinue_parser___lexer___TKwcontinue___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:442 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TKwcontinue();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwcontinue(fra.me.REG[1]);
+  parser___lexer___TKwcontinue___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwcontinue(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TKwcontinue_parser___parser_nodes___ANode___init[] = "new TKwcontinue parser_nodes::ANode::init";
+val_t NEW_TKwcontinue_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TKwcontinue_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TKwcontinue();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwcontinue(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwcontinue(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TKwbreak[79] = {
+  {(bigint) 4123 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TKwbreak" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TKwbreak < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TKwbreak < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TKwbreak < Token: superclass typecheck marker */},
+  {(bigint) 3339 /* 6: TKwbreak < TokenKeyword: superclass typecheck marker */},
+  {(bigint) 4123 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TKwbreak < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenKeyword___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TKwbreak < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TKwbreak___parser_index},
+  {(bigint) 1 /* 73: TKwbreak < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TKwbreak < TokenKeyword: superclass init_table position */},
+  {(bigint) parser___lexer___TKwbreak___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwbreak[] = "init var of TKwbreak";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwbreak;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TKwbreak(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwbreak;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TKwbreak[] = "check new TKwbreak";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TKwbreak;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TKwbreak_parser___lexer___TKwbreak___init_tk[] = "new TKwbreak lexer::TKwbreak::init_tk";
+val_t NEW_TKwbreak_parser___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[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 = 454;
+  fra.me.meth = LOCATE_NEW_TKwbreak_parser___lexer___TKwbreak___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:454 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TKwbreak();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwbreak(fra.me.REG[1]);
+  parser___lexer___TKwbreak___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwbreak(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TKwbreak_parser___parser_nodes___ANode___init[] = "new TKwbreak parser_nodes::ANode::init";
+val_t NEW_TKwbreak_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TKwbreak_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TKwbreak();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwbreak(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwbreak(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TKwabort[79] = {
+  {(bigint) 4143 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TKwabort" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TKwabort < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TKwabort < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TKwabort < Token: superclass typecheck marker */},
+  {(bigint) 3339 /* 6: TKwabort < TokenKeyword: superclass typecheck marker */},
+  {(bigint) 4143 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TKwabort < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenKeyword___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TKwabort < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TKwabort___parser_index},
+  {(bigint) 1 /* 73: TKwabort < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TKwabort < TokenKeyword: superclass init_table position */},
+  {(bigint) parser___lexer___TKwabort___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwabort[] = "init var of TKwabort";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwabort;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TKwabort(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwabort;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TKwabort[] = "check new TKwabort";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TKwabort;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TKwabort_parser___lexer___TKwabort___init_tk[] = "new TKwabort lexer::TKwabort::init_tk";
+val_t NEW_TKwabort_parser___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[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 = 466;
+  fra.me.meth = LOCATE_NEW_TKwabort_parser___lexer___TKwabort___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  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_parser___parser_nodes___TKwabort();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwabort(fra.me.REG[1]);
+  parser___lexer___TKwabort___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwabort(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TKwabort_parser___parser_nodes___ANode___init[] = "new TKwabort parser_nodes::ANode::init";
+val_t NEW_TKwabort_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TKwabort_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TKwabort();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwabort(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwabort(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TKwassert[79] = {
+  {(bigint) 4127 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TKwassert" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TKwassert < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TKwassert < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TKwassert < Token: superclass typecheck marker */},
+  {(bigint) 3339 /* 6: TKwassert < TokenKeyword: superclass typecheck marker */},
+  {(bigint) 4127 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TKwassert < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenKeyword___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TKwassert < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TKwassert___parser_index},
+  {(bigint) 1 /* 73: TKwassert < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TKwassert < TokenKeyword: superclass init_table position */},
+  {(bigint) parser___lexer___TKwassert___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwassert[] = "init var of TKwassert";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwassert;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TKwassert(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwassert;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TKwassert[] = "check new TKwassert";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TKwassert;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TKwassert_parser___lexer___TKwassert___init_tk[] = "new TKwassert lexer::TKwassert::init_tk";
+val_t NEW_TKwassert_parser___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[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 = 478;
+  fra.me.meth = LOCATE_NEW_TKwassert_parser___lexer___TKwassert___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:478 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TKwassert();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwassert(fra.me.REG[1]);
+  parser___lexer___TKwassert___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwassert(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TKwassert_parser___parser_nodes___ANode___init[] = "new TKwassert parser_nodes::ANode::init";
+val_t NEW_TKwassert_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TKwassert_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TKwassert();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwassert(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwassert(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TKwnew[79] = {
+  {(bigint) 4027 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TKwnew" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TKwnew < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TKwnew < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TKwnew < Token: superclass typecheck marker */},
+  {(bigint) 3339 /* 6: TKwnew < TokenKeyword: superclass typecheck marker */},
+  {(bigint) 4027 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TKwnew < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenKeyword___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TKwnew < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TKwnew___parser_index},
+  {(bigint) 1 /* 73: TKwnew < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TKwnew < TokenKeyword: superclass init_table position */},
+  {(bigint) parser___lexer___TKwnew___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwnew[] = "init var of TKwnew";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwnew;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TKwnew(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwnew;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TKwnew[] = "check new TKwnew";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TKwnew;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TKwnew_parser___lexer___TKwnew___init_tk[] = "new TKwnew lexer::TKwnew::init_tk";
+val_t NEW_TKwnew_parser___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[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 = 490;
+  fra.me.meth = LOCATE_NEW_TKwnew_parser___lexer___TKwnew___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:490 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TKwnew();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwnew(fra.me.REG[1]);
+  parser___lexer___TKwnew___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwnew(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TKwnew_parser___parser_nodes___ANode___init[] = "new TKwnew parser_nodes::ANode::init";
+val_t NEW_TKwnew_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TKwnew_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TKwnew();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwnew(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwnew(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TKwisa[79] = {
+  {(bigint) 4051 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TKwisa" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TKwisa < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TKwisa < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TKwisa < Token: superclass typecheck marker */},
+  {(bigint) 3339 /* 6: TKwisa < TokenKeyword: superclass typecheck marker */},
+  {(bigint) 4051 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TKwisa < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenKeyword___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TKwisa < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TKwisa___parser_index},
+  {(bigint) 1 /* 73: TKwisa < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TKwisa < TokenKeyword: superclass init_table position */},
+  {(bigint) parser___lexer___TKwisa___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwisa[] = "init var of TKwisa";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwisa;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TKwisa(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwisa;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TKwisa[] = "check new TKwisa";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TKwisa;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TKwisa_parser___lexer___TKwisa___init_tk[] = "new TKwisa lexer::TKwisa::init_tk";
+val_t NEW_TKwisa_parser___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[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 = 502;
+  fra.me.meth = LOCATE_NEW_TKwisa_parser___lexer___TKwisa___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:502 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TKwisa();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwisa(fra.me.REG[1]);
+  parser___lexer___TKwisa___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwisa(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TKwisa_parser___parser_nodes___ANode___init[] = "new TKwisa parser_nodes::ANode::init";
+val_t NEW_TKwisa_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TKwisa_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TKwisa();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwisa(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwisa(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TKwonce[79] = {
+  {(bigint) 4011 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TKwonce" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TKwonce < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TKwonce < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TKwonce < Token: superclass typecheck marker */},
+  {(bigint) 3339 /* 6: TKwonce < TokenKeyword: superclass typecheck marker */},
+  {(bigint) 4011 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TKwonce < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenKeyword___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TKwonce < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TKwonce___parser_index},
+  {(bigint) 1 /* 73: TKwonce < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TKwonce < TokenKeyword: superclass init_table position */},
+  {(bigint) parser___lexer___TKwonce___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwonce[] = "init var of TKwonce";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwonce;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TKwonce(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwonce;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TKwonce[] = "check new TKwonce";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TKwonce;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TKwonce_parser___lexer___TKwonce___init_tk[] = "new TKwonce lexer::TKwonce::init_tk";
+val_t NEW_TKwonce_parser___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[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 = 514;
+  fra.me.meth = LOCATE_NEW_TKwonce_parser___lexer___TKwonce___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:514 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TKwonce();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwonce(fra.me.REG[1]);
+  parser___lexer___TKwonce___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwonce(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TKwonce_parser___parser_nodes___ANode___init[] = "new TKwonce parser_nodes::ANode::init";
+val_t NEW_TKwonce_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TKwonce_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TKwonce();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwonce(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwonce(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TKwsuper[79] = {
+  {(bigint) 3979 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TKwsuper" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TKwsuper < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TKwsuper < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TKwsuper < Token: superclass typecheck marker */},
+  {(bigint) 3339 /* 6: TKwsuper < TokenKeyword: superclass typecheck marker */},
+  {(bigint) 3979 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TKwsuper < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenKeyword___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TKwsuper < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TKwsuper___parser_index},
+  {(bigint) 1 /* 73: TKwsuper < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TKwsuper < TokenKeyword: superclass init_table position */},
+  {(bigint) parser___lexer___TKwsuper___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwsuper[] = "init var of TKwsuper";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwsuper;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TKwsuper(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwsuper;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TKwsuper[] = "check new TKwsuper";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TKwsuper;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TKwsuper_parser___lexer___TKwsuper___init_tk[] = "new TKwsuper lexer::TKwsuper::init_tk";
+val_t NEW_TKwsuper_parser___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[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 = 526;
+  fra.me.meth = LOCATE_NEW_TKwsuper_parser___lexer___TKwsuper___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:526 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TKwsuper();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwsuper(fra.me.REG[1]);
+  parser___lexer___TKwsuper___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwsuper(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TKwsuper_parser___parser_nodes___ANode___init[] = "new TKwsuper parser_nodes::ANode::init";
+val_t NEW_TKwsuper_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TKwsuper_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TKwsuper();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwsuper(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwsuper(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TKwself[79] = {
+  {(bigint) 3983 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TKwself" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TKwself < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TKwself < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TKwself < Token: superclass typecheck marker */},
+  {(bigint) 3339 /* 6: TKwself < TokenKeyword: superclass typecheck marker */},
+  {(bigint) 3983 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TKwself < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenKeyword___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TKwself < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TKwself___parser_index},
+  {(bigint) 1 /* 73: TKwself < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TKwself < TokenKeyword: superclass init_table position */},
+  {(bigint) parser___lexer___TKwself___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwself[] = "init var of TKwself";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwself;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TKwself(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwself;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TKwself[] = "check new TKwself";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TKwself;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TKwself_parser___lexer___TKwself___init_tk[] = "new TKwself lexer::TKwself::init_tk";
+val_t NEW_TKwself_parser___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[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 = 538;
+  fra.me.meth = LOCATE_NEW_TKwself_parser___lexer___TKwself___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:538 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TKwself();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwself(fra.me.REG[1]);
+  parser___lexer___TKwself___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwself(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TKwself_parser___parser_nodes___ANode___init[] = "new TKwself parser_nodes::ANode::init";
+val_t NEW_TKwself_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TKwself_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TKwself();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwself(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwself(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TKwtrue[79] = {
+  {(bigint) 3971 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TKwtrue" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TKwtrue < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TKwtrue < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TKwtrue < Token: superclass typecheck marker */},
+  {(bigint) 3339 /* 6: TKwtrue < TokenKeyword: superclass typecheck marker */},
+  {(bigint) 3971 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TKwtrue < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenKeyword___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TKwtrue < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TKwtrue___parser_index},
+  {(bigint) 1 /* 73: TKwtrue < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TKwtrue < TokenKeyword: superclass init_table position */},
+  {(bigint) parser___lexer___TKwtrue___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwtrue[] = "init var of TKwtrue";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwtrue;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TKwtrue(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwtrue;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TKwtrue[] = "check new TKwtrue";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TKwtrue;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TKwtrue_parser___lexer___TKwtrue___init_tk[] = "new TKwtrue lexer::TKwtrue::init_tk";
+val_t NEW_TKwtrue_parser___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[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 = 550;
+  fra.me.meth = LOCATE_NEW_TKwtrue_parser___lexer___TKwtrue___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:550 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TKwtrue();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwtrue(fra.me.REG[1]);
+  parser___lexer___TKwtrue___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwtrue(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TKwtrue_parser___parser_nodes___ANode___init[] = "new TKwtrue parser_nodes::ANode::init";
+val_t NEW_TKwtrue_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TKwtrue_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TKwtrue();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwtrue(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwtrue(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TKwfalse[79] = {
+  {(bigint) 4091 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TKwfalse" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TKwfalse < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TKwfalse < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TKwfalse < Token: superclass typecheck marker */},
+  {(bigint) 3339 /* 6: TKwfalse < TokenKeyword: superclass typecheck marker */},
+  {(bigint) 4091 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TKwfalse < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenKeyword___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TKwfalse < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TKwfalse___parser_index},
+  {(bigint) 1 /* 73: TKwfalse < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TKwfalse < TokenKeyword: superclass init_table position */},
+  {(bigint) parser___lexer___TKwfalse___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwfalse[] = "init var of TKwfalse";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwfalse;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TKwfalse(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwfalse;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TKwfalse[] = "check new TKwfalse";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TKwfalse;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TKwfalse_parser___lexer___TKwfalse___init_tk[] = "new TKwfalse lexer::TKwfalse::init_tk";
+val_t NEW_TKwfalse_parser___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[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 = 562;
+  fra.me.meth = LOCATE_NEW_TKwfalse_parser___lexer___TKwfalse___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:562 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TKwfalse();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwfalse(fra.me.REG[1]);
+  parser___lexer___TKwfalse___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwfalse(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TKwfalse_parser___parser_nodes___ANode___init[] = "new TKwfalse parser_nodes::ANode::init";
+val_t NEW_TKwfalse_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TKwfalse_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TKwfalse();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwfalse(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwfalse(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TKwnull[79] = {
+  {(bigint) 4019 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TKwnull" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TKwnull < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TKwnull < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TKwnull < Token: superclass typecheck marker */},
+  {(bigint) 3339 /* 6: TKwnull < TokenKeyword: superclass typecheck marker */},
+  {(bigint) 4019 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TKwnull < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenKeyword___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TKwnull < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TKwnull___parser_index},
+  {(bigint) 1 /* 73: TKwnull < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TKwnull < TokenKeyword: superclass init_table position */},
+  {(bigint) parser___lexer___TKwnull___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwnull[] = "init var of TKwnull";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwnull;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TKwnull(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwnull;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TKwnull[] = "check new TKwnull";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TKwnull;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TKwnull_parser___lexer___TKwnull___init_tk[] = "new TKwnull lexer::TKwnull::init_tk";
+val_t NEW_TKwnull_parser___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[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 = 574;
+  fra.me.meth = LOCATE_NEW_TKwnull_parser___lexer___TKwnull___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:574 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TKwnull();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwnull(fra.me.REG[1]);
+  parser___lexer___TKwnull___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwnull(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TKwnull_parser___parser_nodes___ANode___init[] = "new TKwnull parser_nodes::ANode::init";
+val_t NEW_TKwnull_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TKwnull_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TKwnull();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwnull(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwnull(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TKwas[79] = {
+  {(bigint) 4131 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TKwas" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TKwas < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TKwas < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TKwas < Token: superclass typecheck marker */},
+  {(bigint) 3339 /* 6: TKwas < TokenKeyword: superclass typecheck marker */},
+  {(bigint) 4131 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TKwas < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenKeyword___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TKwas < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TKwas___parser_index},
+  {(bigint) 1 /* 73: TKwas < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TKwas < TokenKeyword: superclass init_table position */},
+  {(bigint) parser___lexer___TKwas___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwas[] = "init var of TKwas";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwas;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TKwas(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwas;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TKwas[] = "check new TKwas";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TKwas;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TKwas_parser___lexer___TKwas___init_tk[] = "new TKwas lexer::TKwas::init_tk";
+val_t NEW_TKwas_parser___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[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 = 586;
+  fra.me.meth = LOCATE_NEW_TKwas_parser___lexer___TKwas___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:586 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TKwas();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwas(fra.me.REG[1]);
+  parser___lexer___TKwas___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwas(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TKwas_parser___parser_nodes___ANode___init[] = "new TKwas parser_nodes::ANode::init";
+val_t NEW_TKwas_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TKwas_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TKwas();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwas(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwas(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TKwnullable[79] = {
+  {(bigint) 4015 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TKwnullable" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TKwnullable < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TKwnullable < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TKwnullable < Token: superclass typecheck marker */},
+  {(bigint) 3339 /* 6: TKwnullable < TokenKeyword: superclass typecheck marker */},
+  {(bigint) 4015 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TKwnullable < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenKeyword___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TKwnullable < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TKwnullable___parser_index},
+  {(bigint) 1 /* 73: TKwnullable < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TKwnullable < TokenKeyword: superclass init_table position */},
+  {(bigint) parser___lexer___TKwnullable___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwnullable[] = "init var of TKwnullable";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwnullable;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TKwnullable(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwnullable;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TKwnullable[] = "check new TKwnullable";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TKwnullable;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TKwnullable_parser___lexer___TKwnullable___init_tk[] = "new TKwnullable lexer::TKwnullable::init_tk";
+val_t NEW_TKwnullable_parser___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[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 = 598;
+  fra.me.meth = LOCATE_NEW_TKwnullable_parser___lexer___TKwnullable___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:598 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TKwnullable();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwnullable(fra.me.REG[1]);
+  parser___lexer___TKwnullable___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwnullable(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TKwnullable_parser___parser_nodes___ANode___init[] = "new TKwnullable parser_nodes::ANode::init";
+val_t NEW_TKwnullable_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TKwnullable_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TKwnullable();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwnullable(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwnullable(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TKwisset[79] = {
+  {(bigint) 4047 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TKwisset" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TKwisset < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TKwisset < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TKwisset < Token: superclass typecheck marker */},
+  {(bigint) 3339 /* 6: TKwisset < TokenKeyword: superclass typecheck marker */},
+  {(bigint) 4047 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TKwisset < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenKeyword___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TKwisset < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TKwisset___parser_index},
+  {(bigint) 1 /* 73: TKwisset < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TKwisset < TokenKeyword: superclass init_table position */},
+  {(bigint) parser___lexer___TKwisset___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwisset[] = "init var of TKwisset";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwisset;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TKwisset(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwisset;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TKwisset[] = "check new TKwisset";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TKwisset;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TKwisset_parser___lexer___TKwisset___init_tk[] = "new TKwisset lexer::TKwisset::init_tk";
+val_t NEW_TKwisset_parser___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[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 = 610;
+  fra.me.meth = LOCATE_NEW_TKwisset_parser___lexer___TKwisset___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:610 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TKwisset();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwisset(fra.me.REG[1]);
+  parser___lexer___TKwisset___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwisset(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TKwisset_parser___parser_nodes___ANode___init[] = "new TKwisset parser_nodes::ANode::init";
+val_t NEW_TKwisset_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TKwisset_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TKwisset();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwisset(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwisset(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TKwlabel[79] = {
+  {(bigint) 4043 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TKwlabel" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TKwlabel < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TKwlabel < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TKwlabel < Token: superclass typecheck marker */},
+  {(bigint) 3339 /* 6: TKwlabel < TokenKeyword: superclass typecheck marker */},
+  {(bigint) 4043 /* 7: TKwlabel < TKwlabel: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TKwlabel < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenKeyword___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TKwlabel < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TKwlabel___parser_index},
+  {(bigint) 1 /* 73: TKwlabel < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TKwlabel < TokenKeyword: superclass init_table position */},
+  {(bigint) parser___lexer___TKwlabel___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwlabel[] = "init var of TKwlabel";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwlabel;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TKwlabel(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwlabel;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TKwlabel[] = "check new TKwlabel";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TKwlabel;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TKwlabel_parser___lexer___TKwlabel___init_tk[] = "new TKwlabel lexer::TKwlabel::init_tk";
+val_t NEW_TKwlabel_parser___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[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 = 622;
+  fra.me.meth = LOCATE_NEW_TKwlabel_parser___lexer___TKwlabel___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  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_parser___parser_nodes___TKwlabel();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwlabel(fra.me.REG[1]);
+  parser___lexer___TKwlabel___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwlabel(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TKwlabel_parser___parser_nodes___ANode___init[] = "new TKwlabel parser_nodes::ANode::init";
+val_t NEW_TKwlabel_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TKwlabel_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TKwlabel();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwlabel(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwlabel(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TKwdebug[78] = {
+  {(bigint) 3391 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TKwdebug" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TKwdebug < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TKwdebug < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TKwdebug < Token: superclass typecheck marker */},
+  {(bigint) 3391 /* 6: TKwdebug < TKwdebug: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: TKwdebug < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___Token___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 1 /* 63: TKwdebug < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TKwdebug___parser_index},
+  {(bigint) 0 /* 73: TKwdebug < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) parser___lexer___TKwdebug___init_tk},
+  {(bigint) 3 /* 77: TKwdebug < TKwdebug: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TKwdebug::_parent */
+/* 3: Attribute TKwdebug::_location */
+/* 4: Attribute TKwdebug::_symbol_cache */
+/* 5: Attribute TKwdebug::_text */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TKwdebug[] = "init var of TKwdebug";
+void INIT_ATTRIBUTES__parser___parser_nodes___TKwdebug(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.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___parser_nodes___TKwdebug;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TKwdebug(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwdebug;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TKwdebug[] = "check new TKwdebug";
+void CHECKNEW_parser___parser_nodes___TKwdebug(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.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___parser_nodes___TKwdebug;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TKwdebug_parser___lexer___TKwdebug___init_tk[] = "new TKwdebug lexer::TKwdebug::init_tk";
+val_t NEW_TKwdebug_parser___lexer___TKwdebug___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 = 634;
+  fra.me.meth = LOCATE_NEW_TKwdebug_parser___lexer___TKwdebug___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:634 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TKwdebug();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwdebug(fra.me.REG[1]);
+  parser___lexer___TKwdebug___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwdebug(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TKwdebug_parser___parser_nodes___ANode___init[] = "new TKwdebug parser_nodes::ANode::init";
+val_t NEW_TKwdebug_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TKwdebug_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TKwdebug();
+  INIT_ATTRIBUTES__parser___parser_nodes___TKwdebug(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TKwdebug(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TOpar[78] = {
+  {(bigint) 3383 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TOpar" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TOpar < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TOpar < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TOpar < Token: superclass typecheck marker */},
+  {(bigint) 3383 /* 6: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: TOpar < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___Token___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 1 /* 63: TOpar < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TOpar___parser_index},
+  {(bigint) 0 /* 73: TOpar < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) parser___lexer___TOpar___init_tk},
+  {(bigint) 3 /* 77: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TOpar[] = "init var of TOpar";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TOpar;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TOpar(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TOpar;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TOpar[] = "check new TOpar";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TOpar;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TOpar_parser___lexer___TOpar___init_tk[] = "new TOpar lexer::TOpar::init_tk";
+val_t NEW_TOpar_parser___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 = 646;
+  fra.me.meth = LOCATE_NEW_TOpar_parser___lexer___TOpar___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:646 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TOpar();
+  INIT_ATTRIBUTES__parser___parser_nodes___TOpar(fra.me.REG[1]);
+  parser___lexer___TOpar___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TOpar(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TOpar_parser___parser_nodes___ANode___init[] = "new TOpar parser_nodes::ANode::init";
+val_t NEW_TOpar_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TOpar_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TOpar();
+  INIT_ATTRIBUTES__parser___parser_nodes___TOpar(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TOpar(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TCpar[78] = {
+  {(bigint) 3411 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TCpar" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TCpar < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TCpar < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TCpar < Token: superclass typecheck marker */},
+  {(bigint) 3411 /* 6: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: TCpar < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___Token___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 1 /* 63: TCpar < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TCpar___parser_index},
+  {(bigint) 0 /* 73: TCpar < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) parser___lexer___TCpar___init_tk},
+  {(bigint) 3 /* 77: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TCpar[] = "init var of TCpar";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TCpar;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TCpar(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TCpar;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TCpar[] = "check new TCpar";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TCpar;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TCpar_parser___lexer___TCpar___init_tk[] = "new TCpar lexer::TCpar::init_tk";
+val_t NEW_TCpar_parser___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 = 658;
+  fra.me.meth = LOCATE_NEW_TCpar_parser___lexer___TCpar___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:658 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TCpar();
+  INIT_ATTRIBUTES__parser___parser_nodes___TCpar(fra.me.REG[1]);
+  parser___lexer___TCpar___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TCpar(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TCpar_parser___parser_nodes___ANode___init[] = "new TCpar parser_nodes::ANode::init";
+val_t NEW_TCpar_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TCpar_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TCpar();
+  INIT_ATTRIBUTES__parser___parser_nodes___TCpar(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TCpar(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TObra[78] = {
+  {(bigint) 3387 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TObra" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TObra < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TObra < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TObra < Token: superclass typecheck marker */},
+  {(bigint) 3387 /* 6: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: TObra < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___Token___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 1 /* 63: TObra < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TObra___parser_index},
+  {(bigint) 0 /* 73: TObra < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) parser___lexer___TObra___init_tk},
+  {(bigint) 3 /* 77: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TObra[] = "init var of TObra";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TObra;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TObra(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TObra;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TObra[] = "check new TObra";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TObra;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TObra_parser___lexer___TObra___init_tk[] = "new TObra lexer::TObra::init_tk";
+val_t NEW_TObra_parser___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 = 670;
+  fra.me.meth = LOCATE_NEW_TObra_parser___lexer___TObra___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:670 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TObra();
+  INIT_ATTRIBUTES__parser___parser_nodes___TObra(fra.me.REG[1]);
+  parser___lexer___TObra___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TObra(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TObra_parser___parser_nodes___ANode___init[] = "new TObra parser_nodes::ANode::init";
+val_t NEW_TObra_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TObra_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TObra();
+  INIT_ATTRIBUTES__parser___parser_nodes___TObra(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TObra(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TCbra[78] = {
+  {(bigint) 3431 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TCbra" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TCbra < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TCbra < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TCbra < Token: superclass typecheck marker */},
+  {(bigint) 3431 /* 6: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: TCbra < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___Token___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 1 /* 63: TCbra < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TCbra___parser_index},
+  {(bigint) 0 /* 73: TCbra < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) parser___lexer___TCbra___init_tk},
+  {(bigint) 3 /* 77: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TCbra[] = "init var of TCbra";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TCbra;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TCbra(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TCbra;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TCbra[] = "check new TCbra";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TCbra;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TCbra_parser___lexer___TCbra___init_tk[] = "new TCbra lexer::TCbra::init_tk";
+val_t NEW_TCbra_parser___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 = 682;
+  fra.me.meth = LOCATE_NEW_TCbra_parser___lexer___TCbra___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:682 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TCbra();
+  INIT_ATTRIBUTES__parser___parser_nodes___TCbra(fra.me.REG[1]);
+  parser___lexer___TCbra___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TCbra(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TCbra_parser___parser_nodes___ANode___init[] = "new TCbra parser_nodes::ANode::init";
+val_t NEW_TCbra_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TCbra_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TCbra();
+  INIT_ATTRIBUTES__parser___parser_nodes___TCbra(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TCbra(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TComma[78] = {
+  {(bigint) 3419 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TComma" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TComma < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TComma < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TComma < Token: superclass typecheck marker */},
+  {(bigint) 3419 /* 6: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: TComma < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___Token___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 1 /* 63: TComma < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TComma___parser_index},
+  {(bigint) 0 /* 73: TComma < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) parser___lexer___TComma___init_tk},
+  {(bigint) 3 /* 77: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TComma[] = "init var of TComma";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TComma;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TComma(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TComma;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TComma[] = "check new TComma";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TComma;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TComma_parser___lexer___TComma___init_tk[] = "new TComma lexer::TComma::init_tk";
+val_t NEW_TComma_parser___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 = 694;
+  fra.me.meth = LOCATE_NEW_TComma_parser___lexer___TComma___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:694 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TComma();
+  INIT_ATTRIBUTES__parser___parser_nodes___TComma(fra.me.REG[1]);
+  parser___lexer___TComma___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TComma(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TComma_parser___parser_nodes___ANode___init[] = "new TComma parser_nodes::ANode::init";
+val_t NEW_TComma_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TComma_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TComma();
+  INIT_ATTRIBUTES__parser___parser_nodes___TComma(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TComma(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TColumn[78] = {
+  {(bigint) 3423 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TColumn" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TColumn < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TColumn < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TColumn < Token: superclass typecheck marker */},
+  {(bigint) 3423 /* 6: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: TColumn < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___Token___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 1 /* 63: TColumn < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TColumn___parser_index},
+  {(bigint) 0 /* 73: TColumn < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) parser___lexer___TColumn___init_tk},
+  {(bigint) 3 /* 77: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TColumn[] = "init var of TColumn";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TColumn;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TColumn(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TColumn;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TColumn[] = "check new TColumn";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TColumn;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TColumn_parser___lexer___TColumn___init_tk[] = "new TColumn lexer::TColumn::init_tk";
+val_t NEW_TColumn_parser___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 = 706;
+  fra.me.meth = LOCATE_NEW_TColumn_parser___lexer___TColumn___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:706 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TColumn();
+  INIT_ATTRIBUTES__parser___parser_nodes___TColumn(fra.me.REG[1]);
+  parser___lexer___TColumn___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TColumn(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TColumn_parser___parser_nodes___ANode___init[] = "new TColumn parser_nodes::ANode::init";
+val_t NEW_TColumn_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TColumn_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TColumn();
+  INIT_ATTRIBUTES__parser___parser_nodes___TColumn(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TColumn(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TQuad[78] = {
+  {(bigint) 3379 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TQuad" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TQuad < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TQuad < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TQuad < Token: superclass typecheck marker */},
+  {(bigint) 3379 /* 6: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: TQuad < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___Token___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 1 /* 63: TQuad < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TQuad___parser_index},
+  {(bigint) 0 /* 73: TQuad < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) parser___lexer___TQuad___init_tk},
+  {(bigint) 3 /* 77: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TQuad[] = "init var of TQuad";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TQuad;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TQuad(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TQuad;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TQuad[] = "check new TQuad";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TQuad;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TQuad_parser___lexer___TQuad___init_tk[] = "new TQuad lexer::TQuad::init_tk";
+val_t NEW_TQuad_parser___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 = 718;
+  fra.me.meth = LOCATE_NEW_TQuad_parser___lexer___TQuad___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:718 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TQuad();
+  INIT_ATTRIBUTES__parser___parser_nodes___TQuad(fra.me.REG[1]);
+  parser___lexer___TQuad___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TQuad(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TQuad_parser___parser_nodes___ANode___init[] = "new TQuad parser_nodes::ANode::init";
+val_t NEW_TQuad_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TQuad_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TQuad();
+  INIT_ATTRIBUTES__parser___parser_nodes___TQuad(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TQuad(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TAssign[78] = {
+  {(bigint) 3451 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TAssign" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TAssign < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TAssign < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TAssign < Token: superclass typecheck marker */},
+  {(bigint) 3451 /* 6: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: TAssign < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___Token___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 1 /* 63: TAssign < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TAssign___parser_index},
+  {(bigint) 0 /* 73: TAssign < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) parser___lexer___TAssign___init_tk},
+  {(bigint) 3 /* 77: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TAssign[] = "init var of TAssign";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TAssign;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TAssign(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TAssign;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TAssign[] = "check new TAssign";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TAssign;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TAssign_parser___lexer___TAssign___init_tk[] = "new TAssign lexer::TAssign::init_tk";
+val_t NEW_TAssign_parser___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 = 730;
+  fra.me.meth = LOCATE_NEW_TAssign_parser___lexer___TAssign___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:730 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TAssign();
+  INIT_ATTRIBUTES__parser___parser_nodes___TAssign(fra.me.REG[1]);
+  parser___lexer___TAssign___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TAssign(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TAssign_parser___parser_nodes___ANode___init[] = "new TAssign parser_nodes::ANode::init";
+val_t NEW_TAssign_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TAssign_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TAssign();
+  INIT_ATTRIBUTES__parser___parser_nodes___TAssign(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TAssign(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TPluseq[79] = {
+  {(bigint) 3911 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TPluseq" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TPluseq < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TPluseq < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TPluseq < Token: superclass typecheck marker */},
+  {(bigint) 3331 /* 6: TPluseq < TokenOperator: superclass typecheck marker */},
+  {(bigint) 3911 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TPluseq < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenOperator___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TPluseq < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TPluseq___parser_index},
+  {(bigint) 1 /* 73: TPluseq < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TPluseq < TokenOperator: superclass init_table position */},
+  {(bigint) parser___lexer___TPluseq___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TPluseq[] = "init var of TPluseq";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TPluseq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TPluseq(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TPluseq;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TPluseq[] = "check new TPluseq";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TPluseq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TPluseq_parser___lexer___TPluseq___init_tk[] = "new TPluseq lexer::TPluseq::init_tk";
+val_t NEW_TPluseq_parser___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[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 = 742;
+  fra.me.meth = LOCATE_NEW_TPluseq_parser___lexer___TPluseq___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:742 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TPluseq();
+  INIT_ATTRIBUTES__parser___parser_nodes___TPluseq(fra.me.REG[1]);
+  parser___lexer___TPluseq___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TPluseq(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TPluseq_parser___parser_nodes___ANode___init[] = "new TPluseq parser_nodes::ANode::init";
+val_t NEW_TPluseq_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TPluseq_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TPluseq();
+  INIT_ATTRIBUTES__parser___parser_nodes___TPluseq(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TPluseq(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TMinuseq[79] = {
+  {(bigint) 3931 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TMinuseq" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TMinuseq < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TMinuseq < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TMinuseq < Token: superclass typecheck marker */},
+  {(bigint) 3331 /* 6: TMinuseq < TokenOperator: superclass typecheck marker */},
+  {(bigint) 3931 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TMinuseq < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenOperator___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TMinuseq < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TMinuseq___parser_index},
+  {(bigint) 1 /* 73: TMinuseq < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TMinuseq < TokenOperator: superclass init_table position */},
+  {(bigint) parser___lexer___TMinuseq___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TMinuseq[] = "init var of TMinuseq";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TMinuseq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TMinuseq(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TMinuseq;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TMinuseq[] = "check new TMinuseq";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TMinuseq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TMinuseq_parser___lexer___TMinuseq___init_tk[] = "new TMinuseq lexer::TMinuseq::init_tk";
+val_t NEW_TMinuseq_parser___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[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_TMinuseq_parser___lexer___TMinuseq___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:754 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TMinuseq();
+  INIT_ATTRIBUTES__parser___parser_nodes___TMinuseq(fra.me.REG[1]);
+  parser___lexer___TMinuseq___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TMinuseq(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TMinuseq_parser___parser_nodes___ANode___init[] = "new TMinuseq parser_nodes::ANode::init";
+val_t NEW_TMinuseq_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TMinuseq_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TMinuseq();
+  INIT_ATTRIBUTES__parser___parser_nodes___TMinuseq(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TMinuseq(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TDotdotdot[79] = {
+  {(bigint) 4167 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TDotdotdot" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TDotdotdot < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TDotdotdot < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TDotdotdot < Token: superclass typecheck marker */},
+  {(bigint) 3331 /* 6: TDotdotdot < TokenOperator: superclass typecheck marker */},
+  {(bigint) 4167 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TDotdotdot < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenOperator___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TDotdotdot < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TDotdotdot___parser_index},
+  {(bigint) 1 /* 73: TDotdotdot < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TDotdotdot < TokenOperator: superclass init_table position */},
+  {(bigint) parser___lexer___TDotdotdot___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TDotdotdot[] = "init var of TDotdotdot";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TDotdotdot;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TDotdotdot(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TDotdotdot;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TDotdotdot[] = "check new TDotdotdot";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TDotdotdot;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TDotdotdot_parser___lexer___TDotdotdot___init_tk[] = "new TDotdotdot lexer::TDotdotdot::init_tk";
+val_t NEW_TDotdotdot_parser___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[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 = 766;
+  fra.me.meth = LOCATE_NEW_TDotdotdot_parser___lexer___TDotdotdot___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:766 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TDotdotdot();
+  INIT_ATTRIBUTES__parser___parser_nodes___TDotdotdot(fra.me.REG[1]);
+  parser___lexer___TDotdotdot___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TDotdotdot(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TDotdotdot_parser___parser_nodes___ANode___init[] = "new TDotdotdot parser_nodes::ANode::init";
+val_t NEW_TDotdotdot_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TDotdotdot_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TDotdotdot();
+  INIT_ATTRIBUTES__parser___parser_nodes___TDotdotdot(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TDotdotdot(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TDotdot[79] = {
+  {(bigint) 4171 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TDotdot" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TDotdot < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TDotdot < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TDotdot < Token: superclass typecheck marker */},
+  {(bigint) 3331 /* 6: TDotdot < TokenOperator: superclass typecheck marker */},
+  {(bigint) 4171 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TDotdot < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenOperator___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TDotdot < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TDotdot___parser_index},
+  {(bigint) 1 /* 73: TDotdot < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TDotdot < TokenOperator: superclass init_table position */},
+  {(bigint) parser___lexer___TDotdot___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TDotdot[] = "init var of TDotdot";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TDotdot;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TDotdot(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TDotdot;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TDotdot[] = "check new TDotdot";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TDotdot;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TDotdot_parser___lexer___TDotdot___init_tk[] = "new TDotdot lexer::TDotdot::init_tk";
+val_t NEW_TDotdot_parser___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[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 = 778;
+  fra.me.meth = LOCATE_NEW_TDotdot_parser___lexer___TDotdot___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  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_parser___parser_nodes___TDotdot();
+  INIT_ATTRIBUTES__parser___parser_nodes___TDotdot(fra.me.REG[1]);
+  parser___lexer___TDotdot___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TDotdot(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TDotdot_parser___parser_nodes___ANode___init[] = "new TDotdot parser_nodes::ANode::init";
+val_t NEW_TDotdot_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TDotdot_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TDotdot();
+  INIT_ATTRIBUTES__parser___parser_nodes___TDotdot(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TDotdot(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TDot[79] = {
+  {(bigint) 4175 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TDot" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TDot < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TDot < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TDot < Token: superclass typecheck marker */},
+  {(bigint) 3331 /* 6: TDot < TokenOperator: superclass typecheck marker */},
+  {(bigint) 4175 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TDot < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenOperator___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TDot < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TDot___parser_index},
+  {(bigint) 1 /* 73: TDot < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TDot < TokenOperator: superclass init_table position */},
+  {(bigint) parser___lexer___TDot___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TDot[] = "init var of TDot";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TDot;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TDot(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TDot;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TDot[] = "check new TDot";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TDot;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TDot_parser___lexer___TDot___init_tk[] = "new TDot lexer::TDot::init_tk";
+val_t NEW_TDot_parser___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[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 = 790;
+  fra.me.meth = LOCATE_NEW_TDot_parser___lexer___TDot___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:790 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TDot();
+  INIT_ATTRIBUTES__parser___parser_nodes___TDot(fra.me.REG[1]);
+  parser___lexer___TDot___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TDot(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TDot_parser___parser_nodes___ANode___init[] = "new TDot parser_nodes::ANode::init";
+val_t NEW_TDot_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TDot_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TDot();
+  INIT_ATTRIBUTES__parser___parser_nodes___TDot(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TDot(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TPlus[79] = {
+  {(bigint) 3915 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TPlus" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TPlus < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TPlus < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TPlus < Token: superclass typecheck marker */},
+  {(bigint) 3331 /* 6: TPlus < TokenOperator: superclass typecheck marker */},
+  {(bigint) 3915 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TPlus < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenOperator___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TPlus < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TPlus___parser_index},
+  {(bigint) 1 /* 73: TPlus < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TPlus < TokenOperator: superclass init_table position */},
+  {(bigint) parser___lexer___TPlus___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TPlus[] = "init var of TPlus";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TPlus;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TPlus(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TPlus;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TPlus[] = "check new TPlus";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TPlus;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TPlus_parser___lexer___TPlus___init_tk[] = "new TPlus lexer::TPlus::init_tk";
+val_t NEW_TPlus_parser___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[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 = 802;
+  fra.me.meth = LOCATE_NEW_TPlus_parser___lexer___TPlus___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:802 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TPlus();
+  INIT_ATTRIBUTES__parser___parser_nodes___TPlus(fra.me.REG[1]);
+  parser___lexer___TPlus___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TPlus(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TPlus_parser___parser_nodes___ANode___init[] = "new TPlus parser_nodes::ANode::init";
+val_t NEW_TPlus_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TPlus_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TPlus();
+  INIT_ATTRIBUTES__parser___parser_nodes___TPlus(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TPlus(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TMinus[79] = {
+  {(bigint) 3935 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TMinus" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TMinus < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TMinus < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TMinus < Token: superclass typecheck marker */},
+  {(bigint) 3331 /* 6: TMinus < TokenOperator: superclass typecheck marker */},
+  {(bigint) 3935 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TMinus < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenOperator___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TMinus < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TMinus___parser_index},
+  {(bigint) 1 /* 73: TMinus < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TMinus < TokenOperator: superclass init_table position */},
+  {(bigint) parser___lexer___TMinus___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TMinus[] = "init var of TMinus";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TMinus;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TMinus(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TMinus;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TMinus[] = "check new TMinus";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TMinus;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TMinus_parser___lexer___TMinus___init_tk[] = "new TMinus lexer::TMinus::init_tk";
+val_t NEW_TMinus_parser___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[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 = 814;
+  fra.me.meth = LOCATE_NEW_TMinus_parser___lexer___TMinus___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:814 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TMinus();
+  INIT_ATTRIBUTES__parser___parser_nodes___TMinus(fra.me.REG[1]);
+  parser___lexer___TMinus___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TMinus(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TMinus_parser___parser_nodes___ANode___init[] = "new TMinus parser_nodes::ANode::init";
+val_t NEW_TMinus_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TMinus_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TMinus();
+  INIT_ATTRIBUTES__parser___parser_nodes___TMinus(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TMinus(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TStar[79] = {
+  {(bigint) 3903 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TStar" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TStar < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TStar < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TStar < Token: superclass typecheck marker */},
+  {(bigint) 3331 /* 6: TStar < TokenOperator: superclass typecheck marker */},
+  {(bigint) 3903 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TStar < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenOperator___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TStar < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TStar___parser_index},
+  {(bigint) 1 /* 73: TStar < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TStar < TokenOperator: superclass init_table position */},
+  {(bigint) parser___lexer___TStar___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TStar[] = "init var of TStar";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TStar;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TStar(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TStar;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TStar[] = "check new TStar";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TStar;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TStar_parser___lexer___TStar___init_tk[] = "new TStar lexer::TStar::init_tk";
+val_t NEW_TStar_parser___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[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 = 826;
+  fra.me.meth = LOCATE_NEW_TStar_parser___lexer___TStar___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:826 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TStar();
+  INIT_ATTRIBUTES__parser___parser_nodes___TStar(fra.me.REG[1]);
+  parser___lexer___TStar___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TStar(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TStar_parser___parser_nodes___ANode___init[] = "new TStar parser_nodes::ANode::init";
+val_t NEW_TStar_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TStar_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TStar();
+  INIT_ATTRIBUTES__parser___parser_nodes___TStar(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TStar(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TSlash[79] = {
+  {(bigint) 3907 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TSlash" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TSlash < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TSlash < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TSlash < Token: superclass typecheck marker */},
+  {(bigint) 3331 /* 6: TSlash < TokenOperator: superclass typecheck marker */},
+  {(bigint) 3907 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TSlash < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenOperator___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TSlash < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TSlash___parser_index},
+  {(bigint) 1 /* 73: TSlash < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TSlash < TokenOperator: superclass init_table position */},
+  {(bigint) parser___lexer___TSlash___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TSlash[] = "init var of TSlash";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TSlash;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TSlash(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TSlash;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TSlash[] = "check new TSlash";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TSlash;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TSlash_parser___lexer___TSlash___init_tk[] = "new TSlash lexer::TSlash::init_tk";
+val_t NEW_TSlash_parser___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[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 = 838;
+  fra.me.meth = LOCATE_NEW_TSlash_parser___lexer___TSlash___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:838 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TSlash();
+  INIT_ATTRIBUTES__parser___parser_nodes___TSlash(fra.me.REG[1]);
+  parser___lexer___TSlash___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TSlash(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TSlash_parser___parser_nodes___ANode___init[] = "new TSlash parser_nodes::ANode::init";
+val_t NEW_TSlash_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TSlash_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TSlash();
+  INIT_ATTRIBUTES__parser___parser_nodes___TSlash(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TSlash(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TPercent[79] = {
+  {(bigint) 3919 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TPercent" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TPercent < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TPercent < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TPercent < Token: superclass typecheck marker */},
+  {(bigint) 3331 /* 6: TPercent < TokenOperator: superclass typecheck marker */},
+  {(bigint) 3919 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TPercent < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenOperator___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TPercent < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TPercent___parser_index},
+  {(bigint) 1 /* 73: TPercent < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TPercent < TokenOperator: superclass init_table position */},
+  {(bigint) parser___lexer___TPercent___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TPercent[] = "init var of TPercent";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TPercent;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TPercent(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TPercent;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TPercent[] = "check new TPercent";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TPercent;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TPercent_parser___lexer___TPercent___init_tk[] = "new TPercent lexer::TPercent::init_tk";
+val_t NEW_TPercent_parser___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[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 = 850;
+  fra.me.meth = LOCATE_NEW_TPercent_parser___lexer___TPercent___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:850 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TPercent();
+  INIT_ATTRIBUTES__parser___parser_nodes___TPercent(fra.me.REG[1]);
+  parser___lexer___TPercent___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TPercent(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TPercent_parser___parser_nodes___ANode___init[] = "new TPercent parser_nodes::ANode::init";
+val_t NEW_TPercent_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TPercent_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TPercent();
+  INIT_ATTRIBUTES__parser___parser_nodes___TPercent(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TPercent(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TEq[79] = {
+  {(bigint) 4163 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TEq" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TEq < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TEq < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TEq < Token: superclass typecheck marker */},
+  {(bigint) 3331 /* 6: TEq < TokenOperator: superclass typecheck marker */},
+  {(bigint) 4163 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TEq < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenOperator___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TEq < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TEq___parser_index},
+  {(bigint) 1 /* 73: TEq < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TEq < TokenOperator: superclass init_table position */},
+  {(bigint) parser___lexer___TEq___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TEq[] = "init var of TEq";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TEq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TEq(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TEq;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TEq[] = "check new TEq";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TEq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TEq_parser___lexer___TEq___init_tk[] = "new TEq lexer::TEq::init_tk";
+val_t NEW_TEq_parser___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[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 = 862;
+  fra.me.meth = LOCATE_NEW_TEq_parser___lexer___TEq___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:862 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TEq();
+  INIT_ATTRIBUTES__parser___parser_nodes___TEq(fra.me.REG[1]);
+  parser___lexer___TEq___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TEq(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TEq_parser___parser_nodes___ANode___init[] = "new TEq parser_nodes::ANode::init";
+val_t NEW_TEq_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TEq_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TEq();
+  INIT_ATTRIBUTES__parser___parser_nodes___TEq(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TEq(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TNe[79] = {
+  {(bigint) 3927 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TNe" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TNe < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TNe < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TNe < Token: superclass typecheck marker */},
+  {(bigint) 3331 /* 6: TNe < TokenOperator: superclass typecheck marker */},
+  {(bigint) 3927 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TNe < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenOperator___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TNe < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TNe___parser_index},
+  {(bigint) 1 /* 73: TNe < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TNe < TokenOperator: superclass init_table position */},
+  {(bigint) parser___lexer___TNe___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TNe[] = "init var of TNe";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TNe;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TNe(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TNe;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TNe[] = "check new TNe";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TNe;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TNe_parser___lexer___TNe___init_tk[] = "new TNe lexer::TNe::init_tk";
+val_t NEW_TNe_parser___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[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 = 874;
+  fra.me.meth = LOCATE_NEW_TNe_parser___lexer___TNe___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:874 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TNe();
+  INIT_ATTRIBUTES__parser___parser_nodes___TNe(fra.me.REG[1]);
+  parser___lexer___TNe___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TNe(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TNe_parser___parser_nodes___ANode___init[] = "new TNe parser_nodes::ANode::init";
+val_t NEW_TNe_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TNe_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TNe();
+  INIT_ATTRIBUTES__parser___parser_nodes___TNe(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TNe(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TLt[79] = {
+  {(bigint) 3943 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TLt" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TLt < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TLt < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TLt < Token: superclass typecheck marker */},
+  {(bigint) 3331 /* 6: TLt < TokenOperator: superclass typecheck marker */},
+  {(bigint) 3943 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TLt < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenOperator___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TLt < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TLt___parser_index},
+  {(bigint) 1 /* 73: TLt < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TLt < TokenOperator: superclass init_table position */},
+  {(bigint) parser___lexer___TLt___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TLt[] = "init var of TLt";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TLt;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TLt(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TLt;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TLt[] = "check new TLt";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TLt;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TLt_parser___lexer___TLt___init_tk[] = "new TLt lexer::TLt::init_tk";
+val_t NEW_TLt_parser___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[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 = 886;
+  fra.me.meth = LOCATE_NEW_TLt_parser___lexer___TLt___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:886 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TLt();
+  INIT_ATTRIBUTES__parser___parser_nodes___TLt(fra.me.REG[1]);
+  parser___lexer___TLt___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TLt(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TLt_parser___parser_nodes___ANode___init[] = "new TLt parser_nodes::ANode::init";
+val_t NEW_TLt_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TLt_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TLt();
+  INIT_ATTRIBUTES__parser___parser_nodes___TLt(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TLt(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TLe[79] = {
+  {(bigint) 3951 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TLe" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TLe < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TLe < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TLe < Token: superclass typecheck marker */},
+  {(bigint) 3331 /* 6: TLe < TokenOperator: superclass typecheck marker */},
+  {(bigint) 3951 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TLe < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenOperator___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TLe < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TLe___parser_index},
+  {(bigint) 1 /* 73: TLe < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TLe < TokenOperator: superclass init_table position */},
+  {(bigint) parser___lexer___TLe___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TLe[] = "init var of TLe";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TLe;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TLe(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TLe;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TLe[] = "check new TLe";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TLe;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TLe_parser___lexer___TLe___init_tk[] = "new TLe lexer::TLe::init_tk";
+val_t NEW_TLe_parser___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[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 = 898;
+  fra.me.meth = LOCATE_NEW_TLe_parser___lexer___TLe___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:898 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TLe();
+  INIT_ATTRIBUTES__parser___parser_nodes___TLe(fra.me.REG[1]);
+  parser___lexer___TLe___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TLe(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TLe_parser___parser_nodes___ANode___init[] = "new TLe parser_nodes::ANode::init";
+val_t NEW_TLe_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TLe_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TLe();
+  INIT_ATTRIBUTES__parser___parser_nodes___TLe(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TLe(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TLl[79] = {
+  {(bigint) 3947 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TLl" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TLl < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TLl < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TLl < Token: superclass typecheck marker */},
+  {(bigint) 3331 /* 6: TLl < TokenOperator: superclass typecheck marker */},
+  {(bigint) 3947 /* 7: TLl < TLl: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TLl < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenOperator___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TLl < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TLl___parser_index},
+  {(bigint) 1 /* 73: TLl < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TLl < TokenOperator: superclass init_table position */},
+  {(bigint) parser___lexer___TLl___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TLl[] = "init var of TLl";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TLl;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TLl(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TLl;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TLl[] = "check new TLl";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TLl;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TLl_parser___lexer___TLl___init_tk[] = "new TLl lexer::TLl::init_tk";
+val_t NEW_TLl_parser___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[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 = 910;
+  fra.me.meth = LOCATE_NEW_TLl_parser___lexer___TLl___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:910 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TLl();
+  INIT_ATTRIBUTES__parser___parser_nodes___TLl(fra.me.REG[1]);
+  parser___lexer___TLl___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TLl(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TLl_parser___parser_nodes___ANode___init[] = "new TLl parser_nodes::ANode::init";
+val_t NEW_TLl_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TLl_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TLl();
+  INIT_ATTRIBUTES__parser___parser_nodes___TLl(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TLl(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TGt[79] = {
+  {(bigint) 4147 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TGt" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TGt < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TGt < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TGt < Token: superclass typecheck marker */},
+  {(bigint) 3331 /* 6: TGt < TokenOperator: superclass typecheck marker */},
+  {(bigint) 4147 /* 7: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 19: TGt < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenOperator___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TGt < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TGt___parser_index},
+  {(bigint) 1 /* 73: TGt < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TGt < TokenOperator: superclass init_table position */},
+  {(bigint) parser___lexer___TGt___init_tk},
+  {(bigint) 4 /* 78: 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TGt[] = "init var of TGt";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TGt;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_nitc___NitCompiler(void)
+val_t NEW_parser___parser_nodes___TGt(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 68);
-  obj->vft = (classtable_elt_t*)VFT_nitc___NitCompiler;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TGt;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_nitc___NitCompiler(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TGt[] = "check new TGt";
+void CHECKNEW_parser___parser_nodes___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_nitc___NitCompiler;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___TGt;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TGt_parser___lexer___TGt___init_tk[] = "new TGt lexer::TGt::init_tk";
+val_t NEW_TGt_parser___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[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 = 922;
+  fra.me.meth = LOCATE_NEW_TGt_parser___lexer___TGt___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = 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_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____opt_stop_on_first_error(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_opt_stop_on_first_error", LOCATE_nitc, 0);
-  }
-  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____opt_no_color(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_opt_no_color", 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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_separate_options___ToolContext_____atseparate_options(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "@separate_options", LOCATE_nitc, 0);
-  }
-  REGB0 = TAG_Bool(ATTR_separate_options___ToolContext_____atopt_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_separate_options___ToolContext_____atopt_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_separate_options___ToolContext_____atopt_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_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___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___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___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___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___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___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___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);
-  }
+  /* parser/lexer.nit:922 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TGt();
+  INIT_ATTRIBUTES__parser___parser_nodes___TGt(fra.me.REG[1]);
+  parser___lexer___TGt___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TGt(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
 }
-val_t NEW_NitCompiler_nitc___NitCompiler___init(void){
+static const char LOCATE_NEW_TGt_parser___parser_nodes___ANode___init[] = "new TGt parser_nodes::ANode::init";
+val_t NEW_TGt_parser___parser_nodes___ANode___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 = 48;
-  fra.me.meth = LOCATE_NEW_NitCompiler_nitc___NitCompiler___init;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_TGt_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./nitc.nit:48 */
-  fra.me.REG[0] = NEW_nitc___NitCompiler();
-  INIT_ATTRIBUTES__nitc___NitCompiler(fra.me.REG[0]);
-  nitc___NitCompiler___init(fra.me.REG[0], init_table);
-  CHECKNEW_nitc___NitCompiler(fra.me.REG[0]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TGt();
+  INIT_ATTRIBUTES__parser___parser_nodes___TGt(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TGt(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___kernel___Sys[55] = {
-  {(bigint) 27 /* 0: Identity */},
-  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "Sys" /* 2: Class Name */},
-  {(bigint) 3 /* 3: Sys < Object: superclass typecheck marker */},
-  {(bigint) 27 /* 4: Sys < Sys: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_parser___parser_nodes___TGe[79] = {
+  {(bigint) 4155 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TGe" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TGe < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TGe < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TGe < Token: superclass typecheck marker */},
+  {(bigint) 3331 /* 6: TGe < TokenOperator: superclass typecheck marker */},
+  {(bigint) 4155 /* 7: TGe < TGe: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -16547,7 +47233,7 @@ const classtable_elt_t VFT_standard___kernel___Sys[55] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: Sys < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: TGe < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -16563,12 +47249,14 @@ const classtable_elt_t VFT_standard___kernel___Sys[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenOperator___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
   {(bigint) standard___string___Object___inspect_head},
-  {(bigint) standard___string___Sys___args},
+  {(bigint) standard___string___Object___args},
   {(bigint) standard___hash___Object___hash},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
@@ -16576,75 +47264,130 @@ const classtable_elt_t VFT_standard___kernel___Sys[55] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) standard___exec___Sys___system},
-  {(bigint) standard___string___Sys___program_name},
-  {(bigint) standard___string___Sys___init_args},
-  {(bigint) standard___string___Sys___native_argc},
-  {(bigint) standard___string___Sys___native_argv},
-  {(bigint) 1 /* 52: Sys < Sys: superclass init_table position */},
-  {(bigint) nitc___Sys___main},
-  {(bigint) standard___kernel___Sys___init},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TGe < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TGe___parser_index},
+  {(bigint) 1 /* 73: TGe < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TGe < TokenOperator: superclass init_table position */},
+  {(bigint) parser___lexer___TGe___init_tk},
+  {(bigint) 4 /* 78: TGe < TGe: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute Sys::_args_cache */
-void INIT_ATTRIBUTES__standard___kernel___Sys(val_t p0){
+/* 2: Attribute TGe::_parent */
+/* 3: Attribute TGe::_location */
+/* 4: Attribute TGe::_symbol_cache */
+/* 5: Attribute TGe::_text */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TGe[] = "init var of TGe";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__standard___kernel___Sys;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TGe;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___kernel___Sys(void)
+val_t NEW_parser___parser_nodes___TGe(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_standard___kernel___Sys;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TGe;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___kernel___Sys(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TGe[] = "check new TGe";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_standard___kernel___Sys;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___TGe;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_Sys_standard___kernel___Sys___init(void){
+static const char LOCATE_NEW_TGe_parser___lexer___TGe___init_tk[] = "new TGe lexer::TGe::init_tk";
+val_t NEW_TGe_parser___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[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 = 934;
+  fra.me.meth = LOCATE_NEW_TGe_parser___lexer___TGe___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  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_parser___parser_nodes___TGe();
+  INIT_ATTRIBUTES__parser___parser_nodes___TGe(fra.me.REG[1]);
+  parser___lexer___TGe___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TGe(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TGe_parser___parser_nodes___ANode___init[] = "new TGe parser_nodes::ANode::init";
+val_t NEW_TGe_parser___parser_nodes___ANode___init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[2] = {0, 0};
+  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_Sys_standard___kernel___Sys___init;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_TGe_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = NEW_standard___kernel___Sys();
-  INIT_ATTRIBUTES__standard___kernel___Sys(fra.me.REG[0]);
-  standard___kernel___Sys___init(fra.me.REG[0], init_table);
-  CHECKNEW_standard___kernel___Sys(fra.me.REG[0]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TGe();
+  INIT_ATTRIBUTES__parser___parser_nodes___TGe(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TGe(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___kernel___Bool[48] = {
-  {(bigint) -13 /* 0: Identity */},
-  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "Bool" /* 2: Class Name */},
-  {(bigint) 3 /* 3: Bool < Object: superclass typecheck marker */},
-  {(bigint) -13 /* 4: Bool < Bool: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_parser___parser_nodes___TGg[79] = {
+  {(bigint) 4151 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TGg" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TGg < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TGg < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TGg < Token: superclass typecheck marker */},
+  {(bigint) 3331 /* 6: TGg < TokenOperator: superclass typecheck marker */},
+  {(bigint) 4151 /* 7: TGg < TGg: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -16656,12 +47399,12 @@ const classtable_elt_t VFT_standard___kernel___Bool[48] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: Bool < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Bool___object_id},
+  {(bigint) 3 /* 19: TGg < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Bool_____eqeq},
-  {(bigint) standard___kernel___Bool_____neq},
-  {(bigint) standard___kernel___Bool___output},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
   {(bigint) standard___kernel___Object___output_class_name},
   {(bigint) standard___kernel___Object___exit},
   {(bigint) standard___kernel___Object___sys},
@@ -16672,31 +47415,145 @@ const classtable_elt_t VFT_standard___kernel___Bool[48] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Bool___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenOperator___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
-  {(bigint) standard___hash___Bool___hash},
+  {(bigint) standard___hash___Object___hash},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: Bool < Bool: superclass init_table position */},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TGg < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TGg___parser_index},
+  {(bigint) 1 /* 73: TGg < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TGg < TokenOperator: superclass init_table position */},
+  {(bigint) parser___lexer___TGg___init_tk},
+  {(bigint) 4 /* 78: TGg < TGg: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-const classtable_elt_t VFT_standard___kernel___Float[71] = {
-  {(bigint) -9 /* 0: Identity */},
-  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "Float" /* 2: Class Name */},
-  {(bigint) 3 /* 3: Float < Object: superclass typecheck marker */},
-  {(bigint) -9 /* 4: Float < Float: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+/* 2: Attribute TGg::_parent */
+/* 3: Attribute TGg::_location */
+/* 4: Attribute TGg::_symbol_cache */
+/* 5: Attribute TGg::_text */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TGg[] = "init var of TGg";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TGg;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TGg(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TGg;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TGg[] = "check new TGg";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TGg;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TGg_parser___lexer___TGg___init_tk[] = "new TGg lexer::TGg::init_tk";
+val_t NEW_TGg_parser___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[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 = 946;
+  fra.me.meth = LOCATE_NEW_TGg_parser___lexer___TGg___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:946 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TGg();
+  INIT_ATTRIBUTES__parser___parser_nodes___TGg(fra.me.REG[1]);
+  parser___lexer___TGg___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TGg(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TGg_parser___parser_nodes___ANode___init[] = "new TGg parser_nodes::ANode::init";
+val_t NEW_TGg_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TGg_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TGg();
+  INIT_ATTRIBUTES__parser___parser_nodes___TGg(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TGg(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TStarship[79] = {
+  {(bigint) 3899 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TStarship" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TStarship < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TStarship < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TStarship < Token: superclass typecheck marker */},
+  {(bigint) 3331 /* 6: TStarship < TokenOperator: superclass typecheck marker */},
+  {(bigint) 3899 /* 7: TStarship < TStarship: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -16708,12 +47565,12 @@ const classtable_elt_t VFT_standard___kernel___Float[71] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: Float < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Float___object_id},
+  {(bigint) 3 /* 19: TStarship < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
   {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Float___output},
+  {(bigint) standard___kernel___Object___output},
   {(bigint) standard___kernel___Object___output_class_name},
   {(bigint) standard___kernel___Object___exit},
   {(bigint) standard___kernel___Object___sys},
@@ -16724,7 +47581,9 @@ const classtable_elt_t VFT_standard___kernel___Float[71] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Float___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenOperator___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -16737,50 +47596,131 @@ const classtable_elt_t VFT_standard___kernel___Float[71] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) standard___string___Float___to_precision},
-  {(bigint) 1 /* 48: Float < Float: superclass init_table position */},
-  {(bigint) standard___kernel___Float_____leq},
-  {(bigint) standard___kernel___Float_____l},
-  {(bigint) standard___kernel___Float_____geq},
-  {(bigint) standard___kernel___Float_____g},
-  {(bigint) standard___kernel___Float_____plus},
-  {(bigint) standard___kernel___Float___unary__minus},
-  {(bigint) standard___kernel___Float_____minus},
-  {(bigint) standard___kernel___Float_____star},
-  {(bigint) standard___kernel___Float_____slash},
-  {(bigint) standard___kernel___Float___to_i},
-  {(bigint) standard___math___Float___sqrt},
-  {(bigint) standard___math___Float___cos},
-  {(bigint) standard___math___Float___sin},
-  {(bigint) standard___math___Float___tan},
-  {(bigint) standard___math___Float___acos},
-  {(bigint) standard___math___Float___asin},
-  {(bigint) standard___math___Float___atan},
-  {(bigint) standard___math___Float___pow},
-  {(bigint) standard___math___Float___log},
-  {(bigint) standard___math___Float___exp},
-  {(bigint) standard___math___Float___rand},
-  {(bigint) standard___math___Float___hypot_with},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TStarship < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TStarship___parser_index},
+  {(bigint) 1 /* 73: TStarship < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TStarship < TokenOperator: superclass init_table position */},
+  {(bigint) parser___lexer___TStarship___init_tk},
+  {(bigint) 4 /* 78: TStarship < TStarship: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-val_t BOX_Float(float val) {
-  struct TBOX_Float *box = (struct TBOX_Float*)alloc(sizeof(struct TBOX_Float));
-  box->vft = VFT_standard___kernel___Float;
-  box->val = val;
-  box->object_id = object_id_counter;
+/* 2: Attribute TStarship::_parent */
+/* 3: Attribute TStarship::_location */
+/* 4: Attribute TStarship::_symbol_cache */
+/* 5: Attribute TStarship::_text */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TStarship[] = "init var of TStarship";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TStarship;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TStarship(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TStarship;
+  obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
-  return OBJ2VAL(box);
+  return OBJ2VAL(obj);
 }
-const classtable_elt_t VFT_standard___kernel___Int[87] = {
-  {(bigint) -29 /* 0: Identity */},
-  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "Int" /* 2: Class Name */},
-  {(bigint) 3 /* 3: Int < Object: superclass typecheck marker */},
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TStarship[] = "check new TStarship";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TStarship;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TStarship_parser___lexer___TStarship___init_tk[] = "new TStarship lexer::TStarship::init_tk";
+val_t NEW_TStarship_parser___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[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 = 958;
+  fra.me.meth = LOCATE_NEW_TStarship_parser___lexer___TStarship___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:958 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TStarship();
+  INIT_ATTRIBUTES__parser___parser_nodes___TStarship(fra.me.REG[1]);
+  parser___lexer___TStarship___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TStarship(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TStarship_parser___parser_nodes___ANode___init[] = "new TStarship parser_nodes::ANode::init";
+val_t NEW_TStarship_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TStarship_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TStarship();
+  INIT_ATTRIBUTES__parser___parser_nodes___TStarship(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TStarship(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TBang[79] = {
+  {(bigint) 4183 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TBang" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TBang < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TBang < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TBang < Token: superclass typecheck marker */},
+  {(bigint) 3331 /* 6: TBang < TokenOperator: superclass typecheck marker */},
+  {(bigint) 4183 /* 7: TBang < TBang: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 275 /* 5: Int < Comparable: superclass typecheck marker */},
-  {(bigint) 2295 /* 6: Int < Discrete: superclass typecheck marker */},
-  {(bigint) -29 /* 7: Int < Int: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -16791,12 +47731,12 @@ const classtable_elt_t VFT_standard___kernel___Int[87] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: Int < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Int___object_id},
+  {(bigint) 3 /* 19: TBang < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Int_____eqeq},
-  {(bigint) standard___kernel___Int_____neq},
-  {(bigint) standard___kernel___Int___output},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
   {(bigint) standard___kernel___Object___output_class_name},
   {(bigint) standard___kernel___Object___exit},
   {(bigint) standard___kernel___Object___sys},
@@ -16807,71 +47747,146 @@ const classtable_elt_t VFT_standard___kernel___Int[87] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Int___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenOperator___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
-  {(bigint) standard___hash___Int___hash},
+  {(bigint) standard___hash___Object___hash},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 1 /* 52: Int < Comparable: superclass init_table position */},
-  {(bigint) -29 /* 53: VT Int::OTHER : id of Int */},
-  {(bigint) 7 /* 54: VT Int::OTHER : color of Int */},
-  {(bigint) standard___kernel___Int_____l},
-  {(bigint) standard___kernel___Int_____leq},
-  {(bigint) standard___kernel___Int_____geq},
-  {(bigint) standard___kernel___Int_____g},
-  {(bigint) standard___kernel___Int_____leqg},
-  {(bigint) standard___kernel___Int___is_between},
-  {(bigint) standard___kernel___Int___max},
-  {(bigint) standard___kernel___Int___min},
-  {(bigint) 0 /* 63: Int < Discrete: superclass init_table position */},
-  {(bigint) standard___kernel___Int___succ},
-  {(bigint) standard___kernel___Int___prec},
-  {(bigint) standard___kernel___Int_____plus},
-  {(bigint) standard___kernel___Int_____minus},
-  {(bigint) standard___kernel___Int___distance},
-  {(bigint) standard___string___Int___fill_buffer},
-  {(bigint) standard___string___Int___to_hex},
-  {(bigint) standard___string___Int___to_base},
-  {(bigint) 3 /* 72: Int < Int: superclass init_table position */},
-  {(bigint) standard___kernel___Int___unary__minus},
-  {(bigint) standard___kernel___Int_____star},
-  {(bigint) standard___kernel___Int_____slash},
-  {(bigint) standard___kernel___Int_____percent},
-  {(bigint) standard___kernel___Int___lshift},
-  {(bigint) standard___kernel___Int___rshift},
-  {(bigint) standard___kernel___Int___to_f},
-  {(bigint) standard___kernel___Int___ascii},
-  {(bigint) standard___kernel___Int___digit_count},
-  {(bigint) standard___kernel___Int___to_c},
-  {(bigint) standard___kernel___Int___enumerate_to},
-  {(bigint) standard___kernel___Int___enumerate_before},
-  {(bigint) standard___kernel___Int___abs},
-  {(bigint) standard___math___Int___rand},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TBang < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TBang___parser_index},
+  {(bigint) 1 /* 73: TBang < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TBang < TokenOperator: superclass init_table position */},
+  {(bigint) parser___lexer___TBang___init_tk},
+  {(bigint) 4 /* 78: TBang < TBang: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-const classtable_elt_t VFT_standard___kernel___Char[78] = {
-  {(bigint) -33 /* 0: Identity */},
-  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "Char" /* 2: Class Name */},
-  {(bigint) 3 /* 3: Char < Object: superclass typecheck marker */},
-  {(bigint) 103 /* 4: Char < Pattern: superclass typecheck marker */},
-  {(bigint) 275 /* 5: Char < Comparable: superclass typecheck marker */},
-  {(bigint) 2295 /* 6: Char < Discrete: superclass typecheck marker */},
-  {(bigint) -33 /* 7: Char < Char: superclass typecheck marker */},
+/* 2: Attribute TBang::_parent */
+/* 3: Attribute TBang::_location */
+/* 4: Attribute TBang::_symbol_cache */
+/* 5: Attribute TBang::_text */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TBang[] = "init var of TBang";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TBang;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TBang(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TBang;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TBang[] = "check new TBang";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TBang;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TBang_parser___lexer___TBang___init_tk[] = "new TBang lexer::TBang::init_tk";
+val_t NEW_TBang_parser___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[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 = 970;
+  fra.me.meth = LOCATE_NEW_TBang_parser___lexer___TBang___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:970 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TBang();
+  INIT_ATTRIBUTES__parser___parser_nodes___TBang(fra.me.REG[1]);
+  parser___lexer___TBang___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TBang(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TBang_parser___parser_nodes___ANode___init[] = "new TBang parser_nodes::ANode::init";
+val_t NEW_TBang_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TBang_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TBang();
+  INIT_ATTRIBUTES__parser___parser_nodes___TBang(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TBang(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TAt[78] = {
+  {(bigint) 3447 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TAt" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TAt < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TAt < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TAt < Token: superclass typecheck marker */},
+  {(bigint) 3447 /* 6: TAt < TAt: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -16882,12 +47897,12 @@ const classtable_elt_t VFT_standard___kernel___Char[78] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: Char < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Char___object_id},
+  {(bigint) 2 /* 19: TAt < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Char_____eqeq},
-  {(bigint) standard___kernel___Char_____neq},
-  {(bigint) standard___kernel___Char___output},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
   {(bigint) standard___kernel___Object___output_class_name},
   {(bigint) standard___kernel___Object___exit},
   {(bigint) standard___kernel___Object___sys},
@@ -16898,60 +47913,143 @@ const classtable_elt_t VFT_standard___kernel___Char[78] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Char___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___Token___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
-  {(bigint) standard___hash___Char___hash},
+  {(bigint) standard___hash___Object___hash},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: Char < Pattern: superclass init_table position */},
-  {(bigint) standard___string_search___Char___search_index_in},
-  {(bigint) standard___string_search___Char___search_in},
-  {(bigint) standard___string_search___Pattern___search_all_in},
-  {(bigint) standard___string_search___Pattern___split_in},
-  {(bigint) 3 /* 52: Char < Comparable: superclass init_table position */},
-  {(bigint) -33 /* 53: VT Char::OTHER : id of Char */},
-  {(bigint) 7 /* 54: VT Char::OTHER : color of Char */},
-  {(bigint) standard___kernel___Char_____l},
-  {(bigint) standard___kernel___Char_____leq},
-  {(bigint) standard___kernel___Char_____geq},
-  {(bigint) standard___kernel___Char_____g},
-  {(bigint) standard___kernel___Comparable_____leqg},
-  {(bigint) standard___kernel___Comparable___is_between},
-  {(bigint) standard___kernel___Comparable___max},
-  {(bigint) standard___kernel___Comparable___min},
-  {(bigint) 2 /* 63: Char < Discrete: superclass init_table position */},
-  {(bigint) standard___kernel___Char___succ},
-  {(bigint) standard___kernel___Char___prec},
-  {(bigint) standard___kernel___Char_____plus},
-  {(bigint) standard___kernel___Char_____minus},
-  {(bigint) standard___kernel___Char___distance},
-  {(bigint) 4 /* 69: Char < Char: superclass init_table position */},
-  {(bigint) standard___kernel___Char___to_i},
-  {(bigint) standard___kernel___Char___ascii},
-  {(bigint) standard___kernel___Char___to_lower},
-  {(bigint) standard___kernel___Char___to_upper},
-  {(bigint) standard___kernel___Char___is_digit},
-  {(bigint) standard___kernel___Char___is_lower},
-  {(bigint) standard___kernel___Char___is_upper},
-  {(bigint) standard___kernel___Char___is_letter},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 1 /* 63: TAt < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TAt___parser_index},
+  {(bigint) 0 /* 73: TAt < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) parser___lexer___TAt___init_tk},
+  {(bigint) 3 /* 77: TAt < TAt: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-const classtable_elt_t VFT_standard___kernel___Pointer[48] = {
-  {(bigint) -1 /* 0: Identity */},
-  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "Pointer" /* 2: Class Name */},
-  {(bigint) 3 /* 3: Pointer < Object: superclass typecheck marker */},
-  {(bigint) -1 /* 4: Pointer < Pointer: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+/* 2: Attribute TAt::_parent */
+/* 3: Attribute TAt::_location */
+/* 4: Attribute TAt::_symbol_cache */
+/* 5: Attribute TAt::_text */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TAt[] = "init var of TAt";
+void INIT_ATTRIBUTES__parser___parser_nodes___TAt(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.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___parser_nodes___TAt;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TAt(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TAt;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TAt[] = "check new TAt";
+void CHECKNEW_parser___parser_nodes___TAt(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.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___parser_nodes___TAt;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TAt_parser___lexer___TAt___init_tk[] = "new TAt lexer::TAt::init_tk";
+val_t NEW_TAt_parser___lexer___TAt___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 = 982;
+  fra.me.meth = LOCATE_NEW_TAt_parser___lexer___TAt___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:982 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TAt();
+  INIT_ATTRIBUTES__parser___parser_nodes___TAt(fra.me.REG[1]);
+  parser___lexer___TAt___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TAt(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TAt_parser___parser_nodes___ANode___init[] = "new TAt parser_nodes::ANode::init";
+val_t NEW_TAt_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TAt_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TAt();
+  INIT_ATTRIBUTES__parser___parser_nodes___TAt(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TAt(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TClassid[78] = {
+  {(bigint) 3427 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TClassid" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TClassid < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TClassid < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TClassid < Token: superclass typecheck marker */},
+  {(bigint) 3427 /* 6: TClassid < TClassid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -16964,7 +48062,7 @@ const classtable_elt_t VFT_standard___kernel___Pointer[48] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: Pointer < Object: superclass init_table position */},
+  {(bigint) 2 /* 19: TClassid < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -16980,7 +48078,9 @@ const classtable_elt_t VFT_standard___kernel___Pointer[48] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TClassid___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -16993,27 +48093,130 @@ const classtable_elt_t VFT_standard___kernel___Pointer[48] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: Pointer < Pointer: superclass init_table position */},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 1 /* 63: TClassid < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TClassid___parser_index},
+  {(bigint) 0 /* 73: TClassid < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) parser___lexer___TClassid___init_tk},
+  {(bigint) 3 /* 77: TClassid < TClassid: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-val_t BOX_Pointer(void * val) {
-  struct TBOX_Pointer *box = (struct TBOX_Pointer*)alloc(sizeof(struct TBOX_Pointer));
-  box->vft = VFT_standard___kernel___Pointer;
-  box->val = val;
-  box->object_id = object_id_counter;
+/* 2: Attribute TClassid::_parent */
+/* 3: Attribute TClassid::_location */
+/* 4: Attribute TClassid::_symbol_cache */
+/* 5: Attribute TClassid::_text */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TClassid[] = "init var of TClassid";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TClassid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___TClassid(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TClassid;
+  obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
-  return OBJ2VAL(box);
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TClassid[] = "check new TClassid";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_parser___parser_nodes___TClassid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TClassid_parser___lexer___TClassid___init_tk[] = "new TClassid lexer::TClassid::init_tk";
+val_t NEW_TClassid_parser___lexer___TClassid___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 = 994;
+  fra.me.meth = LOCATE_NEW_TClassid_parser___lexer___TClassid___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:994 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TClassid();
+  INIT_ATTRIBUTES__parser___parser_nodes___TClassid(fra.me.REG[1]);
+  parser___lexer___TClassid___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TClassid(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_TClassid_parser___parser_nodes___ANode___init[] = "new TClassid parser_nodes::ANode::init";
+val_t NEW_TClassid_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TClassid_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TClassid();
+  INIT_ATTRIBUTES__parser___parser_nodes___TClassid(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TClassid(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___collection___abstract_collection___Container[79] = {
-  {(bigint) 2323 /* 0: Identity */},
-  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "Container" /* 2: Class Name */},
-  {(bigint) 3 /* 3: Container < Object: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___parser_nodes___TId[78] = {
+  {(bigint) 3395 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TId" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TId < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TId < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TId < Token: superclass typecheck marker */},
+  {(bigint) 3395 /* 6: TId < TId: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 283 /* 6: Container < Collection: superclass typecheck marker */},
-  {(bigint) 2323 /* 7: Container < Container: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -17024,7 +48227,7 @@ const classtable_elt_t VFT_standard___collection___abstract_collection___Contain
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: Container < Object: superclass init_table position */},
+  {(bigint) 2 /* 19: TId < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -17040,7 +48243,9 @@ const classtable_elt_t VFT_standard___collection___abstract_collection___Contain
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Collection___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TId___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -17053,101 +48258,128 @@ const classtable_elt_t VFT_standard___collection___abstract_collection___Contain
   {(bigint) standard___math___Object___srand},
   {(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 :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) standard___string___Collection___join},
-  {(bigint) standard___collection___array___Collection___to_a},
-  {(bigint) 0 /* 65: Container < Collection: superclass init_table position */},
-  {(bigint) standard___collection___abstract_collection___Container___iterator},
-  {(bigint) standard___collection___abstract_collection___Collection___iterate},
-  {(bigint) standard___collection___abstract_collection___Container___is_empty},
-  {(bigint) standard___collection___abstract_collection___Container___length},
-  {(bigint) standard___collection___abstract_collection___Container___has},
-  {(bigint) standard___collection___abstract_collection___Container___has_only},
-  {(bigint) standard___collection___abstract_collection___Container___count},
-  {(bigint) standard___collection___abstract_collection___Container___first},
-  {(bigint) standard___math___Collection___rand},
-  {(bigint) 2 /* 75: Container < Container: superclass init_table position */},
-  {(bigint) standard___collection___abstract_collection___Container___init},
-  {(bigint) standard___collection___abstract_collection___Container___item},
-  {(bigint) standard___collection___abstract_collection___Container___item__eq},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 1 /* 63: TId < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TId___parser_index},
+  {(bigint) 0 /* 73: TId < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) parser___lexer___TId___init_tk},
+  {(bigint) 3 /* 77: TId < TId: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute Container::_item */
-void INIT_ATTRIBUTES__standard___collection___abstract_collection___Container(val_t p0){
+/* 2: Attribute TId::_parent */
+/* 3: Attribute TId::_location */
+/* 4: Attribute TId::_symbol_cache */
+/* 5: Attribute TId::_text */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TId[] = "init var of TId";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__standard___collection___abstract_collection___Container;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TId;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___collection___abstract_collection___Container(void)
+val_t NEW_parser___parser_nodes___TId(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_standard___collection___abstract_collection___Container;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TId;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___collection___abstract_collection___Container(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TId[] = "check new TId";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_standard___collection___abstract_collection___Container;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___TId;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_Container_standard___collection___abstract_collection___Container___init(val_t p0){
+static const char LOCATE_NEW_TId_parser___lexer___TId___init_tk[] = "new TId lexer::TId::init_tk";
+val_t NEW_TId_parser___lexer___TId___init_tk(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};
+  int init_table[4] = {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_Container_standard___collection___abstract_collection___Container___init;
+  fra.me.line = 1006;
+  fra.me.meth = LOCATE_NEW_TId_parser___lexer___TId___init_tk;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   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_standard___collection___abstract_collection___Container();
-  INIT_ATTRIBUTES__standard___collection___abstract_collection___Container(fra.me.REG[1]);
-  standard___collection___abstract_collection___Container___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_standard___collection___abstract_collection___Container(fra.me.REG[1]);
+  /* parser/lexer.nit:1006 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TId();
+  INIT_ATTRIBUTES__parser___parser_nodes___TId(fra.me.REG[1]);
+  parser___lexer___TId___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TId(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_standard___collection___abstract_collection___ContainerIterator[54] = {
-  {(bigint) 2319 /* 0: Identity */},
-  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ContainerIterator" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ContainerIterator < Object: superclass typecheck marker */},
-  {(bigint) 199 /* 4: ContainerIterator < Iterator: superclass typecheck marker */},
-  {(bigint) 2319 /* 5: ContainerIterator < ContainerIterator: superclass typecheck marker */},
+static const char LOCATE_NEW_TId_parser___parser_nodes___ANode___init[] = "new TId parser_nodes::ANode::init";
+val_t NEW_TId_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TId_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TId();
+  INIT_ATTRIBUTES__parser___parser_nodes___TId(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TId(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TAttrid[78] = {
+  {(bigint) 3443 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TAttrid" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TAttrid < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TAttrid < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TAttrid < Token: superclass typecheck marker */},
+  {(bigint) 3443 /* 6: TAttrid < TAttrid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -17160,7 +48392,7 @@ const classtable_elt_t VFT_standard___collection___abstract_collection___Contain
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ContainerIterator < Object: superclass init_table position */},
+  {(bigint) 2 /* 19: TAttrid < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -17176,7 +48408,9 @@ const classtable_elt_t VFT_standard___collection___abstract_collection___Contain
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TAttrid___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -17189,97 +48423,129 @@ const classtable_elt_t VFT_standard___collection___abstract_collection___Contain
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) standard___collection___array___Iterator___to_a},
-  {(bigint) 0 /* 48: ContainerIterator < Iterator: superclass init_table position */},
-  {(bigint) standard___collection___abstract_collection___ContainerIterator___item},
-  {(bigint) standard___collection___abstract_collection___ContainerIterator___next},
-  {(bigint) standard___collection___abstract_collection___ContainerIterator___is_ok},
-  {(bigint) 2 /* 52: ContainerIterator < ContainerIterator: superclass init_table position */},
-  {(bigint) standard___collection___abstract_collection___ContainerIterator___init},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 1 /* 63: TAttrid < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TAttrid___parser_index},
+  {(bigint) 0 /* 73: TAttrid < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) parser___lexer___TAttrid___init_tk},
+  {(bigint) 3 /* 77: TAttrid < TAttrid: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ContainerIterator::_is_ok */
-/* 3: Attribute ContainerIterator::_container */
-void INIT_ATTRIBUTES__standard___collection___abstract_collection___ContainerIterator(val_t p0){
+/* 2: Attribute TAttrid::_parent */
+/* 3: Attribute TAttrid::_location */
+/* 4: Attribute TAttrid::_symbol_cache */
+/* 5: Attribute TAttrid::_text */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TAttrid[] = "init var of TAttrid";
+void INIT_ATTRIBUTES__parser___parser_nodes___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_INIT_ATTRIBUTES__standard___collection___abstract_collection___ContainerIterator;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TAttrid;
   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_standard___collection___abstract_collection___ContainerIterator____is_ok(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___collection___abstract_collection___ContainerIterator(void)
+val_t NEW_parser___parser_nodes___TAttrid(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_standard___collection___abstract_collection___ContainerIterator;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TAttrid;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___collection___abstract_collection___ContainerIterator(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TAttrid[] = "check new TAttrid";
+void CHECKNEW_parser___parser_nodes___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_standard___collection___abstract_collection___ContainerIterator;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___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_standard___collection___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_standard___collection___abstract_collection___ContainerIterator____container(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_container", LOCATE_nitc, 0);
-  }
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ContainerIterator_standard___collection___abstract_collection___ContainerIterator___init(val_t p0){
+static const char LOCATE_NEW_TAttrid_parser___lexer___TAttrid___init_tk[] = "new TAttrid lexer::TAttrid::init_tk";
+val_t NEW_TAttrid_parser___lexer___TAttrid___init_tk(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};
+  int init_table[4] = {0, 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_standard___collection___abstract_collection___ContainerIterator___init;
+  fra.me.line = 1018;
+  fra.me.meth = LOCATE_NEW_TAttrid_parser___lexer___TAttrid___init_tk;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   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_standard___collection___abstract_collection___ContainerIterator();
-  INIT_ATTRIBUTES__standard___collection___abstract_collection___ContainerIterator(fra.me.REG[1]);
-  standard___collection___abstract_collection___ContainerIterator___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_standard___collection___abstract_collection___ContainerIterator(fra.me.REG[1]);
+  /* parser/lexer.nit:1018 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TAttrid();
+  INIT_ATTRIBUTES__parser___parser_nodes___TAttrid(fra.me.REG[1]);
+  parser___lexer___TAttrid___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TAttrid(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_standard___collection___abstract_collection___MapKeysIterator[56] = {
-  {(bigint) 2135 /* 0: Identity */},
-  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "MapKeysIterator" /* 2: Class Name */},
-  {(bigint) 3 /* 3: MapKeysIterator < Object: superclass typecheck marker */},
-  {(bigint) 199 /* 4: MapKeysIterator < Iterator: superclass typecheck marker */},
-  {(bigint) 2135 /* 5: MapKeysIterator < MapKeysIterator: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+static const char LOCATE_NEW_TAttrid_parser___parser_nodes___ANode___init[] = "new TAttrid parser_nodes::ANode::init";
+val_t NEW_TAttrid_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TAttrid_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TAttrid();
+  INIT_ATTRIBUTES__parser___parser_nodes___TAttrid(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TAttrid(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TNumber[79] = {
+  {(bigint) 3923 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TNumber" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TNumber < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TNumber < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TNumber < Token: superclass typecheck marker */},
+  {(bigint) 3335 /* 6: TNumber < TokenLiteral: superclass typecheck marker */},
+  {(bigint) 3923 /* 7: TNumber < TNumber: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -17291,7 +48557,7 @@ const classtable_elt_t VFT_standard___collection___abstract_collection___MapKeys
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: MapKeysIterator < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: TNumber < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -17307,7 +48573,9 @@ const classtable_elt_t VFT_standard___collection___abstract_collection___MapKeys
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenLiteral___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -17320,86 +48588,130 @@ const classtable_elt_t VFT_standard___collection___abstract_collection___MapKeys
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) standard___collection___array___Iterator___to_a},
-  {(bigint) 0 /* 48: MapKeysIterator < Iterator: superclass init_table position */},
-  {(bigint) standard___collection___abstract_collection___MapKeysIterator___item},
-  {(bigint) standard___collection___abstract_collection___MapKeysIterator___next},
-  {(bigint) standard___collection___abstract_collection___MapKeysIterator___is_ok},
-  {(bigint) 2 /* 52: MapKeysIterator < MapKeysIterator: superclass init_table position */},
-  {(bigint) standard___collection___abstract_collection___MapKeysIterator___iterator},
-  {(bigint) standard___collection___abstract_collection___MapKeysIterator___iterator__eq},
-  {(bigint) standard___collection___abstract_collection___MapKeysIterator___init},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TNumber < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TNumber___parser_index},
+  {(bigint) 1 /* 73: TNumber < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TNumber < TokenLiteral: superclass init_table position */},
+  {(bigint) parser___lexer___TNumber___init_tk},
+  {(bigint) 4 /* 78: TNumber < TNumber: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute MapKeysIterator::@iterator */
-void INIT_ATTRIBUTES__standard___collection___abstract_collection___MapKeysIterator(val_t p0){
+/* 2: Attribute TNumber::_parent */
+/* 3: Attribute TNumber::_location */
+/* 4: Attribute TNumber::_symbol_cache */
+/* 5: Attribute TNumber::_text */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TNumber[] = "init var of TNumber";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__standard___collection___abstract_collection___MapKeysIterator;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TNumber;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___collection___abstract_collection___MapKeysIterator(void)
+val_t NEW_parser___parser_nodes___TNumber(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_standard___collection___abstract_collection___MapKeysIterator;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TNumber;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___collection___abstract_collection___MapKeysIterator(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TNumber[] = "check new TNumber";
+void CHECKNEW_parser___parser_nodes___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_standard___collection___abstract_collection___MapKeysIterator;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___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_standard___collection___abstract_collection___MapKeysIterator_____atiterator(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "@iterator", LOCATE_nitc, 0);
-  }
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_MapKeysIterator_standard___collection___abstract_collection___MapKeysIterator___init(val_t p0){
+static const char LOCATE_NEW_TNumber_parser___lexer___TNumber___init_tk[] = "new TNumber lexer::TNumber::init_tk";
+val_t NEW_TNumber_parser___lexer___TNumber___init_tk(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};
+  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_MapKeysIterator_standard___collection___abstract_collection___MapKeysIterator___init;
+  fra.me.line = 1030;
+  fra.me.meth = LOCATE_NEW_TNumber_parser___lexer___TNumber___init_tk;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_standard___collection___abstract_collection___MapKeysIterator();
-  INIT_ATTRIBUTES__standard___collection___abstract_collection___MapKeysIterator(fra.me.REG[1]);
-  standard___collection___abstract_collection___MapKeysIterator___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_standard___collection___abstract_collection___MapKeysIterator(fra.me.REG[1]);
+  /* parser/lexer.nit:1030 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TNumber();
+  INIT_ATTRIBUTES__parser___parser_nodes___TNumber(fra.me.REG[1]);
+  parser___lexer___TNumber___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TNumber(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_standard___collection___abstract_collection___MapValuesIterator[56] = {
-  {(bigint) 2131 /* 0: Identity */},
-  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "MapValuesIterator" /* 2: Class Name */},
-  {(bigint) 3 /* 3: MapValuesIterator < Object: superclass typecheck marker */},
-  {(bigint) 199 /* 4: MapValuesIterator < Iterator: superclass typecheck marker */},
-  {(bigint) 2131 /* 5: MapValuesIterator < MapValuesIterator: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+static const char LOCATE_NEW_TNumber_parser___parser_nodes___ANode___init[] = "new TNumber parser_nodes::ANode::init";
+val_t NEW_TNumber_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TNumber_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TNumber();
+  INIT_ATTRIBUTES__parser___parser_nodes___TNumber(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TNumber(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TFloat[79] = {
+  {(bigint) 4159 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TFloat" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TFloat < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TFloat < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TFloat < Token: superclass typecheck marker */},
+  {(bigint) 3335 /* 6: TFloat < TokenLiteral: superclass typecheck marker */},
+  {(bigint) 4159 /* 7: TFloat < TFloat: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -17411,7 +48723,7 @@ const classtable_elt_t VFT_standard___collection___abstract_collection___MapValu
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: MapValuesIterator < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: TFloat < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -17427,7 +48739,9 @@ const classtable_elt_t VFT_standard___collection___abstract_collection___MapValu
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenLiteral___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -17440,86 +48754,130 @@ const classtable_elt_t VFT_standard___collection___abstract_collection___MapValu
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) standard___collection___array___Iterator___to_a},
-  {(bigint) 0 /* 48: MapValuesIterator < Iterator: superclass init_table position */},
-  {(bigint) standard___collection___abstract_collection___MapValuesIterator___item},
-  {(bigint) standard___collection___abstract_collection___MapValuesIterator___next},
-  {(bigint) standard___collection___abstract_collection___MapValuesIterator___is_ok},
-  {(bigint) 2 /* 52: MapValuesIterator < MapValuesIterator: superclass init_table position */},
-  {(bigint) standard___collection___abstract_collection___MapValuesIterator___iterator},
-  {(bigint) standard___collection___abstract_collection___MapValuesIterator___iterator__eq},
-  {(bigint) standard___collection___abstract_collection___MapValuesIterator___init},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TFloat < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TFloat___parser_index},
+  {(bigint) 1 /* 73: TFloat < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TFloat < TokenLiteral: superclass init_table position */},
+  {(bigint) parser___lexer___TFloat___init_tk},
+  {(bigint) 4 /* 78: TFloat < TFloat: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute MapValuesIterator::@iterator */
-void INIT_ATTRIBUTES__standard___collection___abstract_collection___MapValuesIterator(val_t p0){
+/* 2: Attribute TFloat::_parent */
+/* 3: Attribute TFloat::_location */
+/* 4: Attribute TFloat::_symbol_cache */
+/* 5: Attribute TFloat::_text */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TFloat[] = "init var of TFloat";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__standard___collection___abstract_collection___MapValuesIterator;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TFloat;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___collection___abstract_collection___MapValuesIterator(void)
+val_t NEW_parser___parser_nodes___TFloat(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_standard___collection___abstract_collection___MapValuesIterator;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TFloat;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___collection___abstract_collection___MapValuesIterator(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TFloat[] = "check new TFloat";
+void CHECKNEW_parser___parser_nodes___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_standard___collection___abstract_collection___MapValuesIterator;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___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_standard___collection___abstract_collection___MapValuesIterator_____atiterator(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "@iterator", LOCATE_nitc, 0);
-  }
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_MapValuesIterator_standard___collection___abstract_collection___MapValuesIterator___init(val_t p0){
+static const char LOCATE_NEW_TFloat_parser___lexer___TFloat___init_tk[] = "new TFloat lexer::TFloat::init_tk";
+val_t NEW_TFloat_parser___lexer___TFloat___init_tk(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};
+  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_MapValuesIterator_standard___collection___abstract_collection___MapValuesIterator___init;
+  fra.me.line = 1042;
+  fra.me.meth = LOCATE_NEW_TFloat_parser___lexer___TFloat___init_tk;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_standard___collection___abstract_collection___MapValuesIterator();
-  INIT_ATTRIBUTES__standard___collection___abstract_collection___MapValuesIterator(fra.me.REG[1]);
-  standard___collection___abstract_collection___MapValuesIterator___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_standard___collection___abstract_collection___MapValuesIterator(fra.me.REG[1]);
+  /* parser/lexer.nit:1042 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TFloat();
+  INIT_ATTRIBUTES__parser___parser_nodes___TFloat(fra.me.REG[1]);
+  parser___lexer___TFloat___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TFloat(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_standard___collection___abstract_collection___CoupleMapIterator[54] = {
-  {(bigint) 2315 /* 0: Identity */},
-  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "CoupleMapIterator" /* 2: Class Name */},
-  {(bigint) 3 /* 3: CoupleMapIterator < Object: superclass typecheck marker */},
-  {(bigint) 139 /* 4: CoupleMapIterator < MapIterator: superclass typecheck marker */},
-  {(bigint) 2315 /* 5: CoupleMapIterator < CoupleMapIterator: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+static const char LOCATE_NEW_TFloat_parser___parser_nodes___ANode___init[] = "new TFloat parser_nodes::ANode::init";
+val_t NEW_TFloat_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TFloat_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TFloat();
+  INIT_ATTRIBUTES__parser___parser_nodes___TFloat(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TFloat(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TChar[79] = {
+  {(bigint) 4179 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TChar" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TChar < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TChar < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TChar < Token: superclass typecheck marker */},
+  {(bigint) 3335 /* 6: TChar < TokenLiteral: superclass typecheck marker */},
+  {(bigint) 4179 /* 7: TChar < TChar: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -17531,7 +48889,7 @@ const classtable_elt_t VFT_standard___collection___abstract_collection___CoupleM
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: CoupleMapIterator < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: TChar < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -17547,7 +48905,9 @@ const classtable_elt_t VFT_standard___collection___abstract_collection___CoupleM
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenLiteral___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -17560,85 +48920,130 @@ const classtable_elt_t VFT_standard___collection___abstract_collection___CoupleM
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: CoupleMapIterator < MapIterator: superclass init_table position */},
-  {(bigint) standard___collection___abstract_collection___CoupleMapIterator___item},
-  {(bigint) standard___collection___abstract_collection___CoupleMapIterator___key},
-  {(bigint) standard___collection___abstract_collection___CoupleMapIterator___next},
-  {(bigint) standard___collection___abstract_collection___CoupleMapIterator___is_ok},
-  {(bigint) 2 /* 52: CoupleMapIterator < CoupleMapIterator: superclass init_table position */},
-  {(bigint) standard___collection___abstract_collection___CoupleMapIterator___init},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TChar < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TChar___parser_index},
+  {(bigint) 1 /* 73: TChar < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TChar < TokenLiteral: superclass init_table position */},
+  {(bigint) parser___lexer___TChar___init_tk},
+  {(bigint) 4 /* 78: TChar < TChar: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute CoupleMapIterator::_iter */
-void INIT_ATTRIBUTES__standard___collection___abstract_collection___CoupleMapIterator(val_t p0){
+/* 2: Attribute TChar::_parent */
+/* 3: Attribute TChar::_location */
+/* 4: Attribute TChar::_symbol_cache */
+/* 5: Attribute TChar::_text */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TChar[] = "init var of TChar";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__standard___collection___abstract_collection___CoupleMapIterator;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TChar;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___collection___abstract_collection___CoupleMapIterator(void)
+val_t NEW_parser___parser_nodes___TChar(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_standard___collection___abstract_collection___CoupleMapIterator;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TChar;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___collection___abstract_collection___CoupleMapIterator(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TChar[] = "check new TChar";
+void CHECKNEW_parser___parser_nodes___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_standard___collection___abstract_collection___CoupleMapIterator;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___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_standard___collection___abstract_collection___CoupleMapIterator____iter(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_iter", LOCATE_nitc, 0);
-  }
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_CoupleMapIterator_standard___collection___abstract_collection___CoupleMapIterator___init(val_t p0){
+static const char LOCATE_NEW_TChar_parser___lexer___TChar___init_tk[] = "new TChar lexer::TChar::init_tk";
+val_t NEW_TChar_parser___lexer___TChar___init_tk(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};
+  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 = 504;
-  fra.me.meth = LOCATE_NEW_CoupleMapIterator_standard___collection___abstract_collection___CoupleMapIterator___init;
+  fra.me.line = 1102;
+  fra.me.meth = LOCATE_NEW_TChar_parser___lexer___TChar___init_tk;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//abstract_collection.nit:504 */
-  fra.me.REG[1] = NEW_standard___collection___abstract_collection___CoupleMapIterator();
-  INIT_ATTRIBUTES__standard___collection___abstract_collection___CoupleMapIterator(fra.me.REG[1]);
-  standard___collection___abstract_collection___CoupleMapIterator___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_standard___collection___abstract_collection___CoupleMapIterator(fra.me.REG[1]);
+  /* parser/lexer.nit:1102 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TChar();
+  INIT_ATTRIBUTES__parser___parser_nodes___TChar(fra.me.REG[1]);
+  parser___lexer___TChar___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TChar(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_standard___collection___abstract_collection___Couple[53] = {
-  {(bigint) 267 /* 0: Identity */},
-  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "Couple" /* 2: Class Name */},
-  {(bigint) 3 /* 3: Couple < Object: superclass typecheck marker */},
-  {(bigint) 267 /* 4: Couple < Couple: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+static const char LOCATE_NEW_TChar_parser___parser_nodes___ANode___init[] = "new TChar parser_nodes::ANode::init";
+val_t NEW_TChar_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TChar_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TChar();
+  INIT_ATTRIBUTES__parser___parser_nodes___TChar(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TChar(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TString[79] = {
+  {(bigint) 3891 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TString" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TString < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TString < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TString < Token: superclass typecheck marker */},
+  {(bigint) 3335 /* 6: TString < TokenLiteral: superclass typecheck marker */},
+  {(bigint) 3891 /* 7: TString < TString: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -17650,7 +49055,7 @@ const classtable_elt_t VFT_standard___collection___abstract_collection___Couple[
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: Couple < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: TString < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -17666,7 +49071,9 @@ const classtable_elt_t VFT_standard___collection___abstract_collection___Couple[
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenLiteral___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -17679,80 +49086,131 @@ const classtable_elt_t VFT_standard___collection___abstract_collection___Couple[
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: Couple < Couple: superclass init_table position */},
-  {(bigint) standard___collection___abstract_collection___Couple___first},
-  {(bigint) standard___collection___abstract_collection___Couple___first__eq},
-  {(bigint) standard___collection___abstract_collection___Couple___second},
-  {(bigint) standard___collection___abstract_collection___Couple___second__eq},
-  {(bigint) standard___collection___abstract_collection___Couple___init},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TString < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TString___parser_index},
+  {(bigint) 1 /* 73: TString < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TString < TokenLiteral: superclass init_table position */},
+  {(bigint) parser___lexer___TString___init_tk},
+  {(bigint) 4 /* 78: TString < TString: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute Couple::_first */
-/* 3: Attribute Couple::_second */
-void INIT_ATTRIBUTES__standard___collection___abstract_collection___Couple(val_t p0){
+/* 2: Attribute TString::_parent */
+/* 3: Attribute TString::_location */
+/* 4: Attribute TString::_symbol_cache */
+/* 5: Attribute TString::_text */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TString[] = "init var of TString";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__standard___collection___abstract_collection___Couple;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TString;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___collection___abstract_collection___Couple(void)
+val_t NEW_parser___parser_nodes___TString(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_standard___collection___abstract_collection___Couple;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TString;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___collection___abstract_collection___Couple(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TString[] = "check new TString";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_standard___collection___abstract_collection___Couple;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___TString;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_Couple_standard___collection___abstract_collection___Couple___init(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_TString_parser___lexer___TString___init_tk[] = "new TString lexer::TString::init_tk";
+val_t NEW_TString_parser___lexer___TString___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
-  int init_table[2] = {0, 0};
+  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 = 518;
-  fra.me.meth = LOCATE_NEW_Couple_standard___collection___abstract_collection___Couple___init;
+  fra.me.line = 1054;
+  fra.me.meth = LOCATE_NEW_TString_parser___lexer___TString___init_tk;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   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:518 */
-  fra.me.REG[2] = NEW_standard___collection___abstract_collection___Couple();
-  INIT_ATTRIBUTES__standard___collection___abstract_collection___Couple(fra.me.REG[2]);
-  standard___collection___abstract_collection___Couple___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_standard___collection___abstract_collection___Couple(fra.me.REG[2]);
+  /* parser/lexer.nit:1054 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TString();
+  INIT_ATTRIBUTES__parser___parser_nodes___TString(fra.me.REG[1]);
+  parser___lexer___TString___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TString(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[1];
 }
-const classtable_elt_t VFT_standard___collection___range___Range[80] = {
-  {(bigint) 2059 /* 0: Identity */},
-  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "Range" /* 2: Class Name */},
-  {(bigint) 3 /* 3: Range < Object: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+static const char LOCATE_NEW_TString_parser___parser_nodes___ANode___init[] = "new TString parser_nodes::ANode::init";
+val_t NEW_TString_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TString_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TString();
+  INIT_ATTRIBUTES__parser___parser_nodes___TString(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TString(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TStartString[79] = {
+  {(bigint) 3895 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TStartString" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TStartString < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TStartString < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TStartString < Token: superclass typecheck marker */},
+  {(bigint) 3335 /* 6: TStartString < TokenLiteral: superclass typecheck marker */},
+  {(bigint) 3895 /* 7: TStartString < TStartString: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 283 /* 6: Range < Collection: superclass typecheck marker */},
-  {(bigint) 2059 /* 7: Range < Range: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -17763,7 +49221,7 @@ const classtable_elt_t VFT_standard___collection___range___Range[80] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: Range < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: TStartString < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -17779,7 +49237,9 @@ const classtable_elt_t VFT_standard___collection___range___Range[80] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Collection___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenLiteral___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -17792,148 +49252,130 @@ const classtable_elt_t VFT_standard___collection___range___Range[80] = {
   {(bigint) standard___math___Object___srand},
   {(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 :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) standard___string___Collection___join},
-  {(bigint) standard___collection___array___Collection___to_a},
-  {(bigint) 0 /* 65: Range < Collection: superclass init_table position */},
-  {(bigint) standard___collection___range___Range___iterator},
-  {(bigint) standard___collection___range___Range___iterate},
-  {(bigint) standard___collection___range___Range___is_empty},
-  {(bigint) standard___collection___range___Range___length},
-  {(bigint) standard___collection___range___Range___has},
-  {(bigint) standard___collection___range___Range___has_only},
-  {(bigint) standard___collection___range___Range___count},
-  {(bigint) standard___collection___range___Range___first},
-  {(bigint) standard___math___Collection___rand},
-  {(bigint) 2 /* 75: Range < Range: superclass init_table position */},
-  {(bigint) standard___collection___range___Range___last},
-  {(bigint) standard___collection___range___Range___after},
-  {(bigint) standard___collection___range___Range___init},
-  {(bigint) standard___collection___range___Range___without_last},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TStartString < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TStartString___parser_index},
+  {(bigint) 1 /* 73: TStartString < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TStartString < TokenLiteral: superclass init_table position */},
+  {(bigint) parser___lexer___TStartString___init_tk},
+  {(bigint) 4 /* 78: TStartString < TStartString: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute Range::_first */
-/* 3: Attribute Range::_last */
-/* 4: Attribute Range::_after */
-void INIT_ATTRIBUTES__standard___collection___range___Range(val_t p0){
+/* 2: Attribute TStartString::_parent */
+/* 3: Attribute TStartString::_location */
+/* 4: Attribute TStartString::_symbol_cache */
+/* 5: Attribute TStartString::_text */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TStartString[] = "init var of TStartString";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__standard___collection___range___Range;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TStartString;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___collection___range___Range(void)
+val_t NEW_parser___parser_nodes___TStartString(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_standard___collection___range___Range;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TStartString;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___collection___range___Range(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TStartString[] = "check new TStartString";
+void CHECKNEW_parser___parser_nodes___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_standard___collection___range___Range;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___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_standard___collection___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_standard___collection___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_standard___collection___range___Range____after(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_after", LOCATE_nitc, 0);
-  }
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_Range_standard___collection___range___Range___init(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_TStartString_parser___lexer___TStartString___init_tk[] = "new TStartString lexer::TStartString::init_tk";
+val_t NEW_TStartString_parser___lexer___TStartString___init_tk(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};
+  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 = 68;
-  fra.me.meth = LOCATE_NEW_Range_standard___collection___range___Range___init;
+  fra.me.line = 1066;
+  fra.me.meth = LOCATE_NEW_TStartString_parser___lexer___TStartString___init_tk;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   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_standard___collection___range___Range();
-  INIT_ATTRIBUTES__standard___collection___range___Range(fra.me.REG[2]);
-  standard___collection___range___Range___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_standard___collection___range___Range(fra.me.REG[2]);
+  /* parser/lexer.nit:1066 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TStartString();
+  INIT_ATTRIBUTES__parser___parser_nodes___TStartString(fra.me.REG[1]);
+  parser___lexer___TStartString___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TStartString(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[1];
 }
-val_t NEW_Range_standard___collection___range___Range___without_last(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_TStartString_parser___parser_nodes___ANode___init[] = "new TStartString parser_nodes::ANode::init";
+val_t NEW_TStartString_parser___parser_nodes___ANode___init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[3] = {0, 0, 0};
+  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 = 77;
-  fra.me.meth = LOCATE_NEW_Range_standard___collection___range___Range___without_last;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_TStartString_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_standard___collection___range___Range();
-  INIT_ATTRIBUTES__standard___collection___range___Range(fra.me.REG[2]);
-  standard___collection___range___Range___without_last(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_standard___collection___range___Range(fra.me.REG[2]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TStartString();
+  INIT_ATTRIBUTES__parser___parser_nodes___TStartString(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TStartString(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___collection___range___IteratorRange[54] = {
-  {(bigint) 2207 /* 0: Identity */},
-  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "IteratorRange" /* 2: Class Name */},
-  {(bigint) 3 /* 3: IteratorRange < Object: superclass typecheck marker */},
-  {(bigint) 199 /* 4: IteratorRange < Iterator: superclass typecheck marker */},
-  {(bigint) 2207 /* 5: IteratorRange < IteratorRange: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_parser___parser_nodes___TMidString[79] = {
+  {(bigint) 3939 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TMidString" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TMidString < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TMidString < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TMidString < Token: superclass typecheck marker */},
+  {(bigint) 3335 /* 6: TMidString < TokenLiteral: superclass typecheck marker */},
+  {(bigint) 3939 /* 7: TMidString < TMidString: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -17945,7 +49387,7 @@ const classtable_elt_t VFT_standard___collection___range___IteratorRange[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: IteratorRange < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: TMidString < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -17961,7 +49403,9 @@ const classtable_elt_t VFT_standard___collection___range___IteratorRange[54] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TokenLiteral___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -17974,103 +49418,142 @@ const classtable_elt_t VFT_standard___collection___range___IteratorRange[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) standard___collection___array___Iterator___to_a},
-  {(bigint) 0 /* 48: IteratorRange < Iterator: superclass init_table position */},
-  {(bigint) standard___collection___range___IteratorRange___item},
-  {(bigint) standard___collection___range___IteratorRange___next},
-  {(bigint) standard___collection___range___IteratorRange___is_ok},
-  {(bigint) 2 /* 52: IteratorRange < IteratorRange: superclass init_table position */},
-  {(bigint) standard___collection___range___IteratorRange___init},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 2 /* 63: TMidString < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TMidString___parser_index},
+  {(bigint) 1 /* 73: TMidString < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) 0 /* 76: TMidString < TokenLiteral: superclass init_table position */},
+  {(bigint) parser___lexer___TMidString___init_tk},
+  {(bigint) 4 /* 78: TMidString < TMidString: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute IteratorRange::_range */
-/* 3: Attribute IteratorRange::_item */
-void INIT_ATTRIBUTES__standard___collection___range___IteratorRange(val_t p0){
+/* 2: Attribute TMidString::_parent */
+/* 3: Attribute TMidString::_location */
+/* 4: Attribute TMidString::_symbol_cache */
+/* 5: Attribute TMidString::_text */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TMidString[] = "init var of TMidString";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__standard___collection___range___IteratorRange;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TMidString;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___collection___range___IteratorRange(void)
+val_t NEW_parser___parser_nodes___TMidString(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_standard___collection___range___IteratorRange;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TMidString;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___collection___range___IteratorRange(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TMidString[] = "check new TMidString";
+void CHECKNEW_parser___parser_nodes___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_standard___collection___range___IteratorRange;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___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_standard___collection___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_standard___collection___range___IteratorRange____item(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_item", LOCATE_nitc, 0);
-  }
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_IteratorRange_standard___collection___range___IteratorRange___init(val_t p0){
+static const char LOCATE_NEW_TMidString_parser___lexer___TMidString___init_tk[] = "new TMidString lexer::TMidString::init_tk";
+val_t NEW_TMidString_parser___lexer___TMidString___init_tk(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};
+  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 = 97;
-  fra.me.meth = LOCATE_NEW_IteratorRange_standard___collection___range___IteratorRange___init;
+  fra.me.line = 1078;
+  fra.me.meth = LOCATE_NEW_TMidString_parser___lexer___TMidString___init_tk;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   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_standard___collection___range___IteratorRange();
-  INIT_ATTRIBUTES__standard___collection___range___IteratorRange(fra.me.REG[1]);
-  standard___collection___range___IteratorRange___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_standard___collection___range___IteratorRange(fra.me.REG[1]);
+  /* parser/lexer.nit:1078 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TMidString();
+  INIT_ATTRIBUTES__parser___parser_nodes___TMidString(fra.me.REG[1]);
+  parser___lexer___TMidString___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TMidString(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_standard___collection___list___List[114] = {
-  {(bigint) 3555 /* 0: Identity */},
-  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "List" /* 2: Class Name */},
-  {(bigint) 3 /* 3: List < Object: superclass typecheck marker */},
+static const char LOCATE_NEW_TMidString_parser___parser_nodes___ANode___init[] = "new TMidString parser_nodes::ANode::init";
+val_t NEW_TMidString_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TMidString_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TMidString();
+  INIT_ATTRIBUTES__parser___parser_nodes___TMidString(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TMidString(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TEndString[78] = {
+  {(bigint) 3407 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TEndString" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TEndString < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TEndString < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TEndString < Token: superclass typecheck marker */},
+  {(bigint) 3407 /* 6: TEndString < TEndString: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 283 /* 6: List < Collection: superclass typecheck marker */},
-  {(bigint) 351 /* 7: List < SequenceRead: superclass typecheck marker */},
-  {(bigint) 367 /* 8: List < RemovableCollection: superclass typecheck marker */},
-  {(bigint) 2779 /* 9: List < SimpleCollection: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 3187 /* 11: List < Sequence: superclass typecheck marker */},
-  {(bigint) 3555 /* 12: List < List: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 5 /* 18: List < Object: superclass init_table position */},
+  {(bigint) 2 /* 19: TEndString < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -18086,7 +49569,9 @@ const classtable_elt_t VFT_standard___collection___list___List[114] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Collection___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___Token___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -18099,157 +49584,129 @@ const classtable_elt_t VFT_standard___collection___list___List[114] = {
   {(bigint) standard___math___Object___srand},
   {(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 :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) standard___string___Collection___join},
-  {(bigint) standard___collection___array___Collection___to_a},
-  {(bigint) 4 /* 65: List < Collection: superclass init_table position */},
-  {(bigint) standard___collection___list___List___iterator},
-  {(bigint) standard___collection___abstract_collection___Collection___iterate},
-  {(bigint) standard___collection___list___List___is_empty},
-  {(bigint) standard___collection___list___List___length},
-  {(bigint) standard___collection___list___List___has},
-  {(bigint) standard___collection___list___List___has_only},
-  {(bigint) standard___collection___list___List___count},
-  {(bigint) standard___collection___list___List___first},
-  {(bigint) standard___math___Collection___rand},
-  {(bigint) 1 /* 75: List < SequenceRead: superclass init_table position */},
-  {(bigint) standard___collection___list___List_____bra},
-  {(bigint) standard___collection___list___List___last},
-  {(bigint) standard___collection___abstract_collection___SequenceRead___index_of},
-  {(bigint) 3 /* 79: List < RemovableCollection: superclass init_table position */},
-  {(bigint) standard___collection___list___List___clear},
-  {(bigint) standard___collection___list___List___remove},
-  {(bigint) standard___collection___abstract_collection___RemovableCollection___remove_all},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 2 /* 93: List < SimpleCollection: superclass init_table position */},
-  {(bigint) standard___collection___abstract_collection___Sequence___add},
-  {(bigint) standard___collection___abstract_collection___SimpleCollection___add_all},
-  {(bigint) 0 /* 96: List < Sequence: superclass init_table position */},
-  {(bigint) standard___collection___list___List___first__eq},
-  {(bigint) standard___collection___list___List___last__eq},
-  {(bigint) standard___collection___list___List___push},
-  {(bigint) standard___collection___abstract_collection___Sequence___append},
-  {(bigint) standard___collection___list___List___pop},
-  {(bigint) standard___collection___list___List___unshift},
-  {(bigint) standard___collection___list___List___shift},
-  {(bigint) standard___collection___list___List_____braeq},
-  {(bigint) standard___collection___list___List___remove_at},
-  {(bigint) 6 /* 106: List < List: superclass init_table position */},
-  {(bigint) standard___collection___list___List___link},
-  {(bigint) standard___collection___list___List___init},
-  {(bigint) standard___collection___list___List___from},
-  {(bigint) standard___collection___list___List___get_node},
-  {(bigint) standard___collection___list___List___search_node_after},
-  {(bigint) standard___collection___list___List___remove_node},
-  {(bigint) standard___collection___list___List___insert_before},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 1 /* 63: TEndString < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TEndString___parser_index},
+  {(bigint) 0 /* 73: TEndString < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) parser___lexer___TEndString___init_tk},
+  {(bigint) 3 /* 77: TEndString < TEndString: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute List::_head */
-/* 3: Attribute List::_tail */
-void INIT_ATTRIBUTES__standard___collection___list___List(val_t p0){
+/* 2: Attribute TEndString::_parent */
+/* 3: Attribute TEndString::_location */
+/* 4: Attribute TEndString::_symbol_cache */
+/* 5: Attribute TEndString::_text */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TEndString[] = "init var of TEndString";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__standard___collection___list___List;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TEndString;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___collection___list___List(void)
+val_t NEW_parser___parser_nodes___TEndString(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_standard___collection___list___List;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TEndString;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___collection___list___List(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TEndString[] = "check new TEndString";
+void CHECKNEW_parser___parser_nodes___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_CHECKNEW_standard___collection___list___List;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___TEndString;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_List_standard___collection___list___List___init(void){
-  struct {struct stack_frame_t me;} fra;
+static const char LOCATE_NEW_TEndString_parser___lexer___TEndString___init_tk[] = "new TEndString lexer::TEndString::init_tk";
+val_t NEW_TEndString_parser___lexer___TEndString___init_tk(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};
+  int init_table[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_List_standard___collection___list___List___init;
+  fra.me.line = 1090;
+  fra.me.meth = LOCATE_NEW_TEndString_parser___lexer___TEndString___init_tk;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./../lib/standard//collection//list.nit:173 */
-  fra.me.REG[0] = NEW_standard___collection___list___List();
-  INIT_ATTRIBUTES__standard___collection___list___List(fra.me.REG[0]);
-  standard___collection___list___List___init(fra.me.REG[0], init_table);
-  CHECKNEW_standard___collection___list___List(fra.me.REG[0]);
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:1090 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TEndString();
+  INIT_ATTRIBUTES__parser___parser_nodes___TEndString(fra.me.REG[1]);
+  parser___lexer___TEndString___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TEndString(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
-val_t NEW_List_standard___collection___list___List___from(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_TEndString_parser___parser_nodes___ANode___init[] = "new TEndString parser_nodes::ANode::init";
+val_t NEW_TEndString_parser___parser_nodes___ANode___init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  int init_table[4] = {0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 176;
-  fra.me.meth = LOCATE_NEW_List_standard___collection___list___List___from;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_TEndString_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//list.nit:176 */
-  fra.me.REG[1] = NEW_standard___collection___list___List();
-  INIT_ATTRIBUTES__standard___collection___list___List(fra.me.REG[1]);
-  standard___collection___list___List___from(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_standard___collection___list___List(fra.me.REG[1]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TEndString();
+  INIT_ATTRIBUTES__parser___parser_nodes___TEndString(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TEndString(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___collection___list___ListIterator[59] = {
-  {(bigint) 2855 /* 0: Identity */},
-  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ListIterator" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ListIterator < Object: superclass typecheck marker */},
-  {(bigint) 199 /* 4: ListIterator < Iterator: superclass typecheck marker */},
-  {(bigint) 2223 /* 5: ListIterator < IndexedIterator: superclass typecheck marker */},
-  {(bigint) 2855 /* 6: ListIterator < ListIterator: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___parser_nodes___TBadString[78] = {
+  {(bigint) 3435 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TBadString" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TBadString < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TBadString < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TBadString < Token: superclass typecheck marker */},
+  {(bigint) 3435 /* 6: TBadString < TBadString: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -18261,7 +49718,7 @@ const classtable_elt_t VFT_standard___collection___list___ListIterator[59] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: ListIterator < Object: superclass init_table position */},
+  {(bigint) 2 /* 19: TBadString < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -18277,7 +49734,9 @@ const classtable_elt_t VFT_standard___collection___list___ListIterator[59] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TBadString___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -18290,99 +49749,131 @@ const classtable_elt_t VFT_standard___collection___list___ListIterator[59] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) standard___collection___array___Iterator___to_a},
-  {(bigint) 1 /* 48: ListIterator < Iterator: superclass init_table position */},
-  {(bigint) standard___collection___list___ListIterator___item},
-  {(bigint) standard___collection___list___ListIterator___next},
-  {(bigint) standard___collection___list___ListIterator___is_ok},
-  {(bigint) 0 /* 52: ListIterator < IndexedIterator: superclass init_table position */},
-  {(bigint) standard___collection___list___ListIterator___index},
-  {(bigint) 3 /* 54: ListIterator < ListIterator: superclass init_table position */},
-  {(bigint) standard___collection___list___ListIterator___item__eq},
-  {(bigint) standard___collection___list___ListIterator___init},
-  {(bigint) standard___collection___list___ListIterator___delete},
-  {(bigint) standard___collection___list___ListIterator___insert_before},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 1 /* 63: TBadString < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TBadString___parser_index},
+  {(bigint) 0 /* 73: TBadString < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) parser___lexer___TBadString___init_tk},
+  {(bigint) 3 /* 77: TBadString < TBadString: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ListIterator::_list */
-/* 3: Attribute ListIterator::_node */
-/* 4: Attribute ListIterator::_index */
-void INIT_ATTRIBUTES__standard___collection___list___ListIterator(val_t p0){
+/* 2: Attribute TBadString::_parent */
+/* 3: Attribute TBadString::_location */
+/* 4: Attribute TBadString::_symbol_cache */
+/* 5: Attribute TBadString::_text */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TBadString[] = "init var of TBadString";
+void INIT_ATTRIBUTES__parser___parser_nodes___TBadString(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__standard___collection___list___ListIterator;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TBadString;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___collection___list___ListIterator(void)
+val_t NEW_parser___parser_nodes___TBadString(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_standard___collection___list___ListIterator;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TBadString;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___collection___list___ListIterator(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TBadString[] = "check new TBadString";
+void CHECKNEW_parser___parser_nodes___TBadString(val_t p0){
   struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_standard___collection___list___ListIterator;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___TBadString;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_standard___collection___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_standard___collection___list___ListIterator____index(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_index", LOCATE_nitc, 0);
-  }
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ListIterator_standard___collection___list___ListIterator___init(val_t p0){
+static const char LOCATE_NEW_TBadString_parser___lexer___TBadString___init_tk[] = "new TBadString lexer::TBadString::init_tk";
+val_t NEW_TBadString_parser___lexer___TBadString___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 = 256;
-  fra.me.meth = LOCATE_NEW_ListIterator_standard___collection___list___ListIterator___init;
+  fra.me.line = 1114;
+  fra.me.meth = LOCATE_NEW_TBadString_parser___lexer___TBadString___init_tk;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//list.nit:256 */
-  fra.me.REG[1] = NEW_standard___collection___list___ListIterator();
-  INIT_ATTRIBUTES__standard___collection___list___ListIterator(fra.me.REG[1]);
-  standard___collection___list___ListIterator___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_standard___collection___list___ListIterator(fra.me.REG[1]);
+  /* parser/lexer.nit:1114 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TBadString();
+  INIT_ATTRIBUTES__parser___parser_nodes___TBadString(fra.me.REG[1]);
+  parser___lexer___TBadString___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TBadString(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_standard___collection___list___ListNode[85] = {
-  {(bigint) 2851 /* 0: Identity */},
-  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ListNode" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ListNode < Object: superclass typecheck marker */},
+static const char LOCATE_NEW_TBadString_parser___parser_nodes___ANode___init[] = "new TBadString parser_nodes::ANode::init";
+val_t NEW_TBadString_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TBadString_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TBadString();
+  INIT_ATTRIBUTES__parser___parser_nodes___TBadString(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TBadString(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TBadChar[78] = {
+  {(bigint) 3439 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TBadChar" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TBadChar < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TBadChar < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TBadChar < Token: superclass typecheck marker */},
+  {(bigint) 3439 /* 6: TBadChar < TBadChar: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 283 /* 6: ListNode < Collection: superclass typecheck marker */},
-  {(bigint) 2323 /* 7: ListNode < Container: superclass typecheck marker */},
-  {(bigint) 2851 /* 8: ListNode < ListNode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -18392,7 +49883,7 @@ const classtable_elt_t VFT_standard___collection___list___ListNode[85] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ListNode < Object: superclass init_table position */},
+  {(bigint) 2 /* 19: TBadChar < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -18408,7 +49899,9 @@ const classtable_elt_t VFT_standard___collection___list___ListNode[85] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Collection___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___TBadChar___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -18421,114 +49914,133 @@ const classtable_elt_t VFT_standard___collection___list___ListNode[85] = {
   {(bigint) standard___math___Object___srand},
   {(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 :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) standard___string___Collection___join},
-  {(bigint) standard___collection___array___Collection___to_a},
-  {(bigint) 0 /* 65: ListNode < Collection: superclass init_table position */},
-  {(bigint) standard___collection___abstract_collection___Container___iterator},
-  {(bigint) standard___collection___abstract_collection___Collection___iterate},
-  {(bigint) standard___collection___abstract_collection___Container___is_empty},
-  {(bigint) standard___collection___abstract_collection___Container___length},
-  {(bigint) standard___collection___abstract_collection___Container___has},
-  {(bigint) standard___collection___abstract_collection___Container___has_only},
-  {(bigint) standard___collection___abstract_collection___Container___count},
-  {(bigint) standard___collection___abstract_collection___Container___first},
-  {(bigint) standard___math___Collection___rand},
-  {(bigint) 2 /* 75: ListNode < Container: superclass init_table position */},
-  {(bigint) standard___collection___abstract_collection___Container___init},
-  {(bigint) standard___collection___abstract_collection___Container___item},
-  {(bigint) standard___collection___abstract_collection___Container___item__eq},
-  {(bigint) 3 /* 79: ListNode < ListNode: superclass init_table position */},
-  {(bigint) standard___collection___list___ListNode___init},
-  {(bigint) standard___collection___list___ListNode___next},
-  {(bigint) standard___collection___list___ListNode___next__eq},
-  {(bigint) standard___collection___list___ListNode___prev},
-  {(bigint) standard___collection___list___ListNode___prev__eq},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 1 /* 63: TBadChar < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TBadChar___parser_index},
+  {(bigint) 0 /* 73: TBadChar < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) parser___lexer___TBadChar___init_tk},
+  {(bigint) 3 /* 77: TBadChar < TBadChar: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ListNode::_item */
-/* 3: Attribute ListNode::_next */
-/* 4: Attribute ListNode::_prev */
-void INIT_ATTRIBUTES__standard___collection___list___ListNode(val_t p0){
+/* 2: Attribute TBadChar::_parent */
+/* 3: Attribute TBadChar::_location */
+/* 4: Attribute TBadChar::_symbol_cache */
+/* 5: Attribute TBadChar::_text */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TBadChar[] = "init var of TBadChar";
+void INIT_ATTRIBUTES__parser___parser_nodes___TBadChar(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__standard___collection___list___ListNode;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TBadChar;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___collection___list___ListNode(void)
+val_t NEW_parser___parser_nodes___TBadChar(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_standard___collection___list___ListNode;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TBadChar;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___collection___list___ListNode(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TBadChar[] = "check new TBadChar";
+void CHECKNEW_parser___parser_nodes___TBadChar(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_standard___collection___list___ListNode;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___TBadChar;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ListNode_standard___collection___list___ListNode___init(val_t p0){
+static const char LOCATE_NEW_TBadChar_parser___lexer___TBadChar___init_tk[] = "new TBadChar lexer::TBadChar::init_tk";
+val_t NEW_TBadChar_parser___lexer___TBadChar___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 = 289;
-  fra.me.meth = LOCATE_NEW_ListNode_standard___collection___list___ListNode___init;
+  fra.me.line = 1126;
+  fra.me.meth = LOCATE_NEW_TBadChar_parser___lexer___TBadChar___init_tk;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//list.nit:289 */
-  fra.me.REG[1] = NEW_standard___collection___list___ListNode();
-  INIT_ATTRIBUTES__standard___collection___list___ListNode(fra.me.REG[1]);
-  standard___collection___list___ListNode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_standard___collection___list___ListNode(fra.me.REG[1]);
+  /* parser/lexer.nit:1126 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TBadChar();
+  INIT_ATTRIBUTES__parser___parser_nodes___TBadChar(fra.me.REG[1]);
+  parser___lexer___TBadChar___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TBadChar(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_standard___collection___array___AbstractArrayRead[90] = {
-  {(bigint) 3039 /* 0: Identity */},
-  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AbstractArrayRead" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AbstractArrayRead < Object: superclass typecheck marker */},
+static const char LOCATE_NEW_TBadChar_parser___parser_nodes___ANode___init[] = "new TBadChar parser_nodes::ANode::init";
+val_t NEW_TBadChar_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_TBadChar_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TBadChar();
+  INIT_ATTRIBUTES__parser___parser_nodes___TBadChar(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TBadChar(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___TExternCodeSegment[79] = {
+  {(bigint) 3399 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TExternCodeSegment" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TExternCodeSegment < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: TExternCodeSegment < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TExternCodeSegment < Token: superclass typecheck marker */},
+  {(bigint) 3399 /* 6: TExternCodeSegment < TExternCodeSegment: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 283 /* 6: AbstractArrayRead < Collection: superclass typecheck marker */},
-  {(bigint) 351 /* 7: AbstractArrayRead < SequenceRead: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 3039 /* 10: AbstractArrayRead < AbstractArrayRead: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -18536,12 +50048,12 @@ const classtable_elt_t VFT_standard___collection___array___AbstractArrayRead[90]
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AbstractArrayRead < Object: superclass init_table position */},
+  {(bigint) 2 /* 19: TExternCodeSegment < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___collection___array___AbstractArrayRead_____eqeq},
+  {(bigint) standard___kernel___Object_____eqeq},
   {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___collection___array___AbstractArrayRead___output},
+  {(bigint) standard___kernel___Object___output},
   {(bigint) standard___kernel___Object___output_class_name},
   {(bigint) standard___kernel___Object___exit},
   {(bigint) standard___kernel___Object___sys},
@@ -18552,7 +50064,9 @@ const classtable_elt_t VFT_standard___collection___array___AbstractArrayRead[90]
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Collection___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___Token___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -18565,141 +50079,147 @@ const classtable_elt_t VFT_standard___collection___array___AbstractArrayRead[90]
   {(bigint) standard___math___Object___srand},
   {(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 :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) standard___string___Collection___join},
-  {(bigint) standard___collection___array___Collection___to_a},
-  {(bigint) 1 /* 65: AbstractArrayRead < Collection: superclass init_table position */},
-  {(bigint) standard___collection___array___AbstractArrayRead___iterator},
-  {(bigint) standard___collection___abstract_collection___Collection___iterate},
-  {(bigint) standard___collection___array___AbstractArrayRead___is_empty},
-  {(bigint) standard___collection___array___AbstractArrayRead___length},
-  {(bigint) standard___collection___array___AbstractArrayRead___has},
-  {(bigint) standard___collection___array___AbstractArrayRead___has_only},
-  {(bigint) standard___collection___array___AbstractArrayRead___count},
-  {(bigint) standard___collection___abstract_collection___SequenceRead___first},
-  {(bigint) standard___math___Collection___rand},
-  {(bigint) 0 /* 75: AbstractArrayRead < SequenceRead: superclass init_table position */},
-  {(bigint) standard___collection___abstract_collection___SequenceRead_____bra},
-  {(bigint) standard___collection___abstract_collection___SequenceRead___last},
-  {(bigint) standard___collection___array___AbstractArrayRead___index_of},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 3 /* 83: AbstractArrayRead < AbstractArrayRead: superclass init_table position */},
-  {(bigint) standard___collection___array___AbstractArrayRead___last_index_of},
-  {(bigint) standard___collection___array___AbstractArrayRead___index_of_from},
-  {(bigint) standard___collection___array___AbstractArrayRead___last_index_of_from},
-  {(bigint) standard___collection___array___AbstractArrayRead___reversed},
-  {(bigint) standard___collection___array___AbstractArrayRead___copy_to},
-  {(bigint) standard___collection___array___AbstractArrayRead___init},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 1 /* 63: TExternCodeSegment < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___TExternCodeSegment___parser_index},
+  {(bigint) 0 /* 73: TExternCodeSegment < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) syntax___extern_inline___TExternCodeSegment___code},
+  {(bigint) parser___lexer___TExternCodeSegment___init_tk},
+  {(bigint) 3 /* 78: TExternCodeSegment < TExternCodeSegment: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AbstractArrayRead::_length */
-void INIT_ATTRIBUTES__standard___collection___array___AbstractArrayRead(val_t p0){
+/* 2: Attribute TExternCodeSegment::_parent */
+/* 3: Attribute TExternCodeSegment::_location */
+/* 4: Attribute TExternCodeSegment::_symbol_cache */
+/* 5: Attribute TExternCodeSegment::_text */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TExternCodeSegment[] = "init var of TExternCodeSegment";
+void INIT_ATTRIBUTES__parser___parser_nodes___TExternCodeSegment(val_t p0){
   struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__standard___collection___array___AbstractArrayRead;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TExternCodeSegment;
   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_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___collection___array___AbstractArrayRead(void)
+val_t NEW_parser___parser_nodes___TExternCodeSegment(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_standard___collection___array___AbstractArrayRead;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TExternCodeSegment;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___collection___array___AbstractArrayRead(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___TExternCodeSegment[] = "check new TExternCodeSegment";
+void CHECKNEW_parser___parser_nodes___TExternCodeSegment(val_t p0){
   struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_standard___collection___array___AbstractArrayRead;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___TExternCodeSegment;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_TExternCodeSegment_parser___lexer___TExternCodeSegment___init_tk[] = "new TExternCodeSegment lexer::TExternCodeSegment::init_tk";
+val_t NEW_TExternCodeSegment_parser___lexer___TExternCodeSegment___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 = 1138;
+  fra.me.meth = LOCATE_NEW_TExternCodeSegment_parser___lexer___TExternCodeSegment___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_nitc, 0);
-  }
+  /* parser/lexer.nit:1138 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___TExternCodeSegment();
+  INIT_ATTRIBUTES__parser___parser_nodes___TExternCodeSegment(fra.me.REG[1]);
+  parser___lexer___TExternCodeSegment___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TExternCodeSegment(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
 }
-val_t NEW_AbstractArrayRead_standard___collection___array___AbstractArrayRead___init(void){
+static const char LOCATE_NEW_TExternCodeSegment_parser___parser_nodes___ANode___init[] = "new TExternCodeSegment parser_nodes::ANode::init";
+val_t NEW_TExternCodeSegment_parser___parser_nodes___ANode___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_AbstractArrayRead_standard___collection___array___AbstractArrayRead___init;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_TExternCodeSegment_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = NEW_standard___collection___array___AbstractArrayRead();
-  INIT_ATTRIBUTES__standard___collection___array___AbstractArrayRead(fra.me.REG[0]);
-  standard___collection___array___AbstractArrayRead___init(fra.me.REG[0], init_table);
-  CHECKNEW_standard___collection___array___AbstractArrayRead(fra.me.REG[0]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___TExternCodeSegment();
+  INIT_ATTRIBUTES__parser___parser_nodes___TExternCodeSegment(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___TExternCodeSegment(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___collection___array___AbstractArray[122] = {
-  {(bigint) 3567 /* 0: Identity */},
-  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AbstractArray" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AbstractArray < Object: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___parser_nodes___EOF[78] = {
+  {(bigint) 3675 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "EOF" /* 2: Class Name */},
+  {(bigint) 3 /* 3: EOF < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: EOF < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: EOF < Token: superclass typecheck marker */},
+  {(bigint) 3675 /* 6: 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 :( */,
-  {(bigint) 283 /* 6: AbstractArray < Collection: superclass typecheck marker */},
-  {(bigint) 351 /* 7: AbstractArray < SequenceRead: superclass typecheck marker */},
-  {(bigint) 367 /* 8: AbstractArray < RemovableCollection: superclass typecheck marker */},
-  {(bigint) 2779 /* 9: AbstractArray < SimpleCollection: superclass typecheck marker */},
-  {(bigint) 3039 /* 10: AbstractArray < AbstractArrayRead: superclass typecheck marker */},
-  {(bigint) 3187 /* 11: AbstractArray < Sequence: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 3567 /* 13: AbstractArray < AbstractArray: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AbstractArray < Object: superclass init_table position */},
+  {(bigint) 2 /* 19: EOF < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___collection___array___AbstractArrayRead_____eqeq},
+  {(bigint) standard___kernel___Object_____eqeq},
   {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___collection___array___AbstractArrayRead___output},
+  {(bigint) standard___kernel___Object___output},
   {(bigint) standard___kernel___Object___output_class_name},
   {(bigint) standard___kernel___Object___exit},
   {(bigint) standard___kernel___Object___sys},
@@ -18710,7 +50230,9 @@ const classtable_elt_t VFT_standard___collection___array___AbstractArray[122] =
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Collection___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___EOF___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -18723,173 +50245,146 @@ const classtable_elt_t VFT_standard___collection___array___AbstractArray[122] =
   {(bigint) standard___math___Object___srand},
   {(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 :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) standard___string___Collection___join},
-  {(bigint) standard___collection___array___Collection___to_a},
-  {(bigint) 1 /* 65: AbstractArray < Collection: superclass init_table position */},
-  {(bigint) standard___collection___array___AbstractArrayRead___iterator},
-  {(bigint) standard___collection___abstract_collection___Collection___iterate},
-  {(bigint) standard___collection___array___AbstractArrayRead___is_empty},
-  {(bigint) standard___collection___array___AbstractArrayRead___length},
-  {(bigint) standard___collection___array___AbstractArrayRead___has},
-  {(bigint) standard___collection___array___AbstractArrayRead___has_only},
-  {(bigint) standard___collection___array___AbstractArrayRead___count},
-  {(bigint) standard___collection___abstract_collection___SequenceRead___first},
-  {(bigint) standard___math___Collection___rand},
-  {(bigint) 0 /* 75: AbstractArray < SequenceRead: superclass init_table position */},
-  {(bigint) standard___collection___abstract_collection___SequenceRead_____bra},
-  {(bigint) standard___collection___abstract_collection___SequenceRead___last},
-  {(bigint) standard___collection___array___AbstractArrayRead___index_of},
-  {(bigint) 6 /* 79: AbstractArray < RemovableCollection: superclass init_table position */},
-  {(bigint) standard___collection___array___AbstractArray___clear},
-  {(bigint) standard___collection___array___AbstractArray___remove},
-  {(bigint) standard___collection___array___AbstractArray___remove_all},
-  {(bigint) 3 /* 83: AbstractArray < AbstractArrayRead: superclass init_table position */},
-  {(bigint) standard___collection___array___AbstractArrayRead___last_index_of},
-  {(bigint) standard___collection___array___AbstractArrayRead___index_of_from},
-  {(bigint) standard___collection___array___AbstractArrayRead___last_index_of_from},
-  {(bigint) standard___collection___array___AbstractArrayRead___reversed},
-  {(bigint) standard___collection___array___AbstractArrayRead___copy_to},
-  {(bigint) standard___collection___array___AbstractArrayRead___init},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 5 /* 93: AbstractArray < SimpleCollection: superclass init_table position */},
-  {(bigint) standard___collection___array___AbstractArray___add},
-  {(bigint) standard___collection___abstract_collection___SimpleCollection___add_all},
-  {(bigint) 4 /* 96: AbstractArray < Sequence: superclass init_table position */},
-  {(bigint) standard___collection___abstract_collection___Sequence___first__eq},
-  {(bigint) standard___collection___abstract_collection___Sequence___last__eq},
-  {(bigint) standard___collection___array___AbstractArray___push},
-  {(bigint) standard___collection___abstract_collection___Sequence___append},
-  {(bigint) standard___collection___array___AbstractArray___pop},
-  {(bigint) standard___collection___array___AbstractArray___unshift},
-  {(bigint) standard___collection___array___AbstractArray___shift},
-  {(bigint) standard___collection___abstract_collection___Sequence_____braeq},
-  {(bigint) standard___collection___array___AbstractArray___remove_at},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 7 /* 118: AbstractArray < AbstractArray: superclass init_table position */},
-  {(bigint) standard___collection___array___AbstractArray___enlarge},
-  {(bigint) standard___collection___array___AbstractArray___insert},
-  {(bigint) standard___collection___array___AbstractArray___swap_at},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 1 /* 63: EOF < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___EOF___parser_index},
+  {(bigint) 0 /* 73: EOF < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) parser___lexer___EOF___init_tk},
+  {(bigint) 3 /* 77: EOF < EOF: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AbstractArray::_length */
-void INIT_ATTRIBUTES__standard___collection___array___AbstractArray(val_t p0){
+/* 2: Attribute EOF::_parent */
+/* 3: Attribute EOF::_location */
+/* 4: Attribute EOF::_symbol_cache */
+/* 5: Attribute EOF::_text */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___EOF[] = "init var of EOF";
+void INIT_ATTRIBUTES__parser___parser_nodes___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_INIT_ATTRIBUTES__standard___collection___array___AbstractArray;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___EOF;
   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_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___collection___array___AbstractArray(void)
+val_t NEW_parser___parser_nodes___EOF(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_standard___collection___array___AbstractArray;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___EOF;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___collection___array___AbstractArray(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___EOF[] = "check new EOF";
+void CHECKNEW_parser___parser_nodes___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_standard___collection___array___AbstractArray;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___EOF;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_EOF_parser___lexer___EOF___init_tk[] = "new EOF lexer::EOF::init_tk";
+val_t NEW_EOF_parser___lexer___EOF___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 = 1151;
+  fra.me.meth = LOCATE_NEW_EOF_parser___lexer___EOF___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_nitc, 0);
-  }
+  /* parser/lexer.nit:1151 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___EOF();
+  INIT_ATTRIBUTES__parser___parser_nodes___EOF(fra.me.REG[1]);
+  parser___lexer___EOF___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___EOF(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
 }
-val_t NEW_AbstractArray_standard___collection___array___AbstractArrayRead___init(void){
+static const char LOCATE_NEW_EOF_parser___parser_nodes___ANode___init[] = "new EOF parser_nodes::ANode::init";
+val_t NEW_EOF_parser___parser_nodes___ANode___init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[8] = {0, 0, 0, 0, 0, 0, 0, 0};
+  int init_table[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_AbstractArray_standard___collection___array___AbstractArrayRead___init;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_EOF_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = NEW_standard___collection___array___AbstractArray();
-  INIT_ATTRIBUTES__standard___collection___array___AbstractArray(fra.me.REG[0]);
-  standard___collection___array___AbstractArrayRead___init(fra.me.REG[0], init_table);
-  CHECKNEW_standard___collection___array___AbstractArray(fra.me.REG[0]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___EOF();
+  INIT_ATTRIBUTES__parser___parser_nodes___EOF(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___EOF(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___collection___array___Array[122] = {
-  {(bigint) 3747 /* 0: Identity */},
-  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "Array" /* 2: Class Name */},
-  {(bigint) 3 /* 3: Array < Object: superclass typecheck marker */},
-  {(bigint) 3747 /* 4: Array < Array: superclass typecheck marker */},
-  {(bigint) 295 /* 5: Array < ArrayCapable: superclass typecheck marker */},
-  {(bigint) 283 /* 6: Array < Collection: superclass typecheck marker */},
-  {(bigint) 351 /* 7: Array < SequenceRead: superclass typecheck marker */},
-  {(bigint) 367 /* 8: Array < RemovableCollection: superclass typecheck marker */},
-  {(bigint) 2779 /* 9: Array < SimpleCollection: superclass typecheck marker */},
-  {(bigint) 3039 /* 10: Array < AbstractArrayRead: superclass typecheck marker */},
-  {(bigint) 3187 /* 11: Array < Sequence: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___parser_nodes___AError[81] = {
+  {(bigint) 4499 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AError" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AError < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AError < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: AError < Token: superclass typecheck marker */},
+  {(bigint) 3675 /* 6: AError < EOF: superclass typecheck marker */},
+  {(bigint) 4499 /* 7: AError < AError: 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) 3567 /* 13: Array < AbstractArray: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: Array < Object: superclass init_table position */},
+  {(bigint) 2 /* 19: AError < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___collection___array___AbstractArrayRead_____eqeq},
+  {(bigint) standard___kernel___Object_____eqeq},
   {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___collection___array___AbstractArrayRead___output},
+  {(bigint) standard___kernel___Object___output},
   {(bigint) standard___kernel___Object___output_class_name},
   {(bigint) standard___kernel___Object___exit},
   {(bigint) standard___kernel___Object___sys},
@@ -18900,7 +50395,9 @@ const classtable_elt_t VFT_standard___collection___array___Array[122] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Array___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___EOF___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -18913,260 +50410,167 @@ const classtable_elt_t VFT_standard___collection___array___Array[122] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 9 /* 47: Array < Array: superclass init_table position */},
-  {(bigint) standard___collection___array___Array___init},
-  {(bigint) standard___collection___array___Array___with_items},
-  {(bigint) standard___collection___array___Array___with_capacity},
-  {(bigint) standard___collection___array___Array___filled_with},
-  {(bigint) standard___collection___array___Array___with_native},
-  {(bigint) standard___collection___array___Array___intern_items},
-  {(bigint) standard___collection___array___Array___sort},
-  {(bigint) standard___collection___array___Array___sub_sort},
-  {(bigint) 8 /* 56: Array < ArrayCapable: superclass init_table position */},
-  {(bigint) standard___collection___array___ArrayCapable___calloc_array},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) standard___string___Collection___join},
-  {(bigint) standard___collection___array___Collection___to_a},
-  {(bigint) 1 /* 65: Array < Collection: superclass init_table position */},
-  {(bigint) standard___collection___array___AbstractArrayRead___iterator},
-  {(bigint) standard___collection___array___Array___iterate},
-  {(bigint) standard___collection___array___AbstractArrayRead___is_empty},
-  {(bigint) standard___collection___array___AbstractArrayRead___length},
-  {(bigint) standard___collection___array___AbstractArrayRead___has},
-  {(bigint) standard___collection___array___AbstractArrayRead___has_only},
-  {(bigint) standard___collection___array___AbstractArrayRead___count},
-  {(bigint) standard___collection___abstract_collection___SequenceRead___first},
-  {(bigint) standard___math___Collection___rand},
-  {(bigint) 0 /* 75: Array < SequenceRead: superclass init_table position */},
-  {(bigint) standard___collection___array___Array_____bra},
-  {(bigint) standard___collection___abstract_collection___SequenceRead___last},
-  {(bigint) standard___collection___array___AbstractArrayRead___index_of},
-  {(bigint) 6 /* 79: Array < RemovableCollection: superclass init_table position */},
-  {(bigint) standard___collection___array___AbstractArray___clear},
-  {(bigint) standard___collection___array___AbstractArray___remove},
-  {(bigint) standard___collection___array___AbstractArray___remove_all},
-  {(bigint) 3 /* 83: Array < AbstractArrayRead: superclass init_table position */},
-  {(bigint) standard___collection___array___AbstractArrayRead___last_index_of},
-  {(bigint) standard___collection___array___AbstractArrayRead___index_of_from},
-  {(bigint) standard___collection___array___AbstractArrayRead___last_index_of_from},
-  {(bigint) standard___collection___array___AbstractArrayRead___reversed},
-  {(bigint) standard___collection___array___AbstractArrayRead___copy_to},
-  {(bigint) standard___collection___array___AbstractArrayRead___init},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 5 /* 93: Array < SimpleCollection: superclass init_table position */},
-  {(bigint) standard___collection___array___Array___add},
-  {(bigint) standard___collection___abstract_collection___SimpleCollection___add_all},
-  {(bigint) 4 /* 96: Array < Sequence: superclass init_table position */},
-  {(bigint) standard___collection___abstract_collection___Sequence___first__eq},
-  {(bigint) standard___collection___abstract_collection___Sequence___last__eq},
-  {(bigint) standard___collection___array___AbstractArray___push},
-  {(bigint) standard___collection___abstract_collection___Sequence___append},
-  {(bigint) standard___collection___array___AbstractArray___pop},
-  {(bigint) standard___collection___array___AbstractArray___unshift},
-  {(bigint) standard___collection___array___AbstractArray___shift},
-  {(bigint) standard___collection___array___Array_____braeq},
-  {(bigint) standard___collection___array___AbstractArray___remove_at},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 7 /* 118: Array < AbstractArray: superclass init_table position */},
-  {(bigint) standard___collection___array___Array___enlarge},
-  {(bigint) standard___collection___array___AbstractArray___insert},
-  {(bigint) standard___collection___array___AbstractArray___swap_at},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 1 /* 63: AError < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___EOF___parser_index},
+  {(bigint) 0 /* 73: AError < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) parser___lexer___EOF___init_tk},
+  {(bigint) 3 /* 77: AError < EOF: superclass init_table position */},
+  {(bigint) parser___lexer___AError___message},
+  {(bigint) parser___lexer___AError___init_error},
+  {(bigint) 4 /* 80: AError < AError: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute Array::_length */
-/* 3: Attribute Array::_items */
-/* 4: Attribute Array::_capacity */
-void INIT_ATTRIBUTES__standard___collection___array___Array(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute AError::_parent */
+/* 3: Attribute AError::_location */
+/* 4: Attribute AError::_symbol_cache */
+/* 5: Attribute AError::_text */
+/* 6: Attribute AError::_message */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AError[] = "init var of AError";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__standard___collection___array___Array;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AError;
   fra.me.has_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:364 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_standard___collection___array___Array____items(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//collection//array.nit:372 */
-  REGB0 = TAG_Int(0);
-  ATTR_standard___collection___array___Array____capacity(fra.me.REG[0]) = REGB0;
-  /* ./../lib/standard//collection//array.nit:24 */
-  REGB0 = TAG_Int(0);
-  ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___collection___array___Array(void)
+val_t NEW_parser___parser_nodes___AError(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_standard___collection___array___Array;
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AError;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___collection___array___Array(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AError[] = "check new AError";
+void CHECKNEW_parser___parser_nodes___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_standard___collection___array___Array;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AError;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_standard___collection___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_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___lexer___AError____message(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_message", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_Array_standard___collection___array___Array___with_capacity(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  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 = 332;
-  fra.me.meth = LOCATE_NEW_Array_standard___collection___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:332 */
-  fra.me.REG[0] = NEW_standard___collection___array___Array();
-  INIT_ATTRIBUTES__standard___collection___array___Array(fra.me.REG[0]);
-  standard___collection___array___Array___with_capacity(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_standard___collection___array___Array(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-val_t NEW_Array_standard___collection___array___Array___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 = 317;
-  fra.me.meth = LOCATE_NEW_Array_standard___collection___array___Array___init;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  /* ./../lib/standard//collection//array.nit:317 */
-  fra.me.REG[0] = NEW_standard___collection___array___Array();
-  INIT_ATTRIBUTES__standard___collection___array___Array(fra.me.REG[0]);
-  standard___collection___array___Array___init(fra.me.REG[0], init_table);
-  CHECKNEW_standard___collection___array___Array(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-val_t NEW_Array_standard___collection___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;
+static const char LOCATE_NEW_AError_parser___lexer___AError___init_error[] = "new AError lexer::AError::init_error";
+val_t NEW_AError_parser___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[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  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 = 341;
-  fra.me.meth = LOCATE_NEW_Array_standard___collection___array___Array___filled_with;
+  fra.me.line = 1161;
+  fra.me.meth = LOCATE_NEW_AError_parser___lexer___AError___init_error;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   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;
-  /* ./../lib/standard//collection//array.nit:341 */
-  fra.me.REG[1] = NEW_standard___collection___array___Array();
-  INIT_ATTRIBUTES__standard___collection___array___Array(fra.me.REG[1]);
-  standard___collection___array___Array___filled_with(fra.me.REG[1], fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_standard___collection___array___Array(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  /* parser/lexer.nit:1161 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___AError();
+  INIT_ATTRIBUTES__parser___parser_nodes___AError(fra.me.REG[2]);
+  parser___lexer___AError___init_error(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___AError(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[2];
 }
-val_t NEW_Array_standard___collection___array___Array___with_items(val_t p0){
+static const char LOCATE_NEW_AError_parser___lexer___EOF___init_tk[] = "new AError lexer::EOF::init_tk";
+val_t NEW_AError_parser___lexer___EOF___init_tk(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};
+  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 = 324;
-  fra.me.meth = LOCATE_NEW_Array_standard___collection___array___Array___with_items;
+  fra.me.line = 1151;
+  fra.me.meth = LOCATE_NEW_AError_parser___lexer___EOF___init_tk;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//array.nit:324 */
-  fra.me.REG[1] = NEW_standard___collection___array___Array();
-  INIT_ATTRIBUTES__standard___collection___array___Array(fra.me.REG[1]);
-  standard___collection___array___Array___with_items(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_standard___collection___array___Array(fra.me.REG[1]);
+  /* parser/lexer.nit:1151 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___AError();
+  INIT_ATTRIBUTES__parser___parser_nodes___AError(fra.me.REG[1]);
+  parser___lexer___EOF___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AError(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-val_t NEW_Array_standard___collection___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;
+static const char LOCATE_NEW_AError_parser___parser_nodes___ANode___init[] = "new AError parser_nodes::ANode::init";
+val_t NEW_AError_parser___parser_nodes___ANode___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};
+  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 = 355;
-  fra.me.meth = LOCATE_NEW_Array_standard___collection___array___Array___with_native;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_AError_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  REGB0 = p1;
-  /* ./../lib/standard//collection//array.nit:355 */
-  fra.me.REG[1] = NEW_standard___collection___array___Array();
-  INIT_ATTRIBUTES__standard___collection___array___Array(fra.me.REG[1]);
-  standard___collection___array___Array___with_native(fra.me.REG[1], fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_standard___collection___array___Array(fra.me.REG[1]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AError();
+  INIT_ATTRIBUTES__parser___parser_nodes___AError(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AError(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___collection___array___ArrayIterator[56] = {
-  {(bigint) 3031 /* 0: Identity */},
-  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ArrayIterator" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ArrayIterator < Object: superclass typecheck marker */},
-  {(bigint) 199 /* 4: ArrayIterator < Iterator: superclass typecheck marker */},
-  {(bigint) 2223 /* 5: ArrayIterator < IndexedIterator: superclass typecheck marker */},
-  {(bigint) 3031 /* 6: ArrayIterator < ArrayIterator: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_parser___parser_nodes___ALexerError[84] = {
+  {(bigint) 4707 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ALexerError" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ALexerError < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: ALexerError < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: ALexerError < Token: superclass typecheck marker */},
+  {(bigint) 3675 /* 6: ALexerError < EOF: superclass typecheck marker */},
+  {(bigint) 4499 /* 7: ALexerError < AError: superclass typecheck marker */},
+  {(bigint) 4707 /* 8: ALexerError < ALexerError: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -19177,7 +50581,7 @@ const classtable_elt_t VFT_standard___collection___array___ArrayIterator[56] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: ArrayIterator < Object: superclass init_table position */},
+  {(bigint) 2 /* 19: ALexerError < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -19193,7 +50597,9 @@ const classtable_elt_t VFT_standard___collection___array___ArrayIterator[56] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___EOF___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -19206,103 +50612,206 @@ const classtable_elt_t VFT_standard___collection___array___ArrayIterator[56] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) standard___collection___array___Iterator___to_a},
-  {(bigint) 1 /* 48: ArrayIterator < Iterator: superclass init_table position */},
-  {(bigint) standard___collection___array___ArrayIterator___item},
-  {(bigint) standard___collection___array___ArrayIterator___next},
-  {(bigint) standard___collection___array___ArrayIterator___is_ok},
-  {(bigint) 0 /* 52: ArrayIterator < IndexedIterator: superclass init_table position */},
-  {(bigint) standard___collection___array___ArrayIterator___index},
-  {(bigint) 3 /* 54: ArrayIterator < ArrayIterator: superclass init_table position */},
-  {(bigint) standard___collection___array___ArrayIterator___init},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 1 /* 63: ALexerError < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___EOF___parser_index},
+  {(bigint) 0 /* 73: ALexerError < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) parser___lexer___EOF___init_tk},
+  {(bigint) 3 /* 77: ALexerError < EOF: superclass init_table position */},
+  {(bigint) parser___lexer___AError___message},
+  {(bigint) parser___lexer___AError___init_error},
+  {(bigint) 4 /* 80: ALexerError < AError: superclass init_table position */},
+  {(bigint) parser___lexer___ALexerError___string},
+  {(bigint) parser___lexer___ALexerError___init_lexer_error},
+  {(bigint) 5 /* 83: ALexerError < ALexerError: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ArrayIterator::_index */
-/* 3: Attribute ArrayIterator::_array */
-void INIT_ATTRIBUTES__standard___collection___array___ArrayIterator(val_t p0){
+/* 2: Attribute ALexerError::_parent */
+/* 3: Attribute ALexerError::_location */
+/* 4: Attribute ALexerError::_symbol_cache */
+/* 5: Attribute ALexerError::_text */
+/* 6: Attribute ALexerError::_message */
+/* 7: Attribute ALexerError::_string */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ALexerError[] = "init var of ALexerError";
+void INIT_ATTRIBUTES__parser___parser_nodes___ALexerError(val_t p0){
   struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__standard___collection___array___ArrayIterator;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ALexerError;
   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:445 */
-  REGB0 = TAG_Int(0);
-  ATTR_standard___collection___array___ArrayIterator____index(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___collection___array___ArrayIterator(void)
+val_t NEW_parser___parser_nodes___ALexerError(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_standard___collection___array___ArrayIterator;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ALexerError;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___collection___array___ArrayIterator(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___ALexerError[] = "check new ALexerError";
+void CHECKNEW_parser___parser_nodes___ALexerError(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_standard___collection___array___ArrayIterator;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___ALexerError;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayIterator____index(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___lexer___AError____message(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_index", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_message", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayIterator____array(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___lexer___ALexerError____string(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_array", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_string", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ArrayIterator_standard___collection___array___ArrayIterator___init(val_t p0){
+static const char LOCATE_NEW_ALexerError_parser___lexer___ALexerError___init_lexer_error[] = "new ALexerError lexer::ALexerError::init_lexer_error";
+val_t NEW_ALexerError_parser___lexer___ALexerError___init_lexer_error(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 = 1171;
+  fra.me.meth = LOCATE_NEW_ALexerError_parser___lexer___ALexerError___init_lexer_error;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  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/lexer.nit:1171 */
+  fra.me.REG[3] = NEW_parser___parser_nodes___ALexerError();
+  INIT_ATTRIBUTES__parser___parser_nodes___ALexerError(fra.me.REG[3]);
+  parser___lexer___ALexerError___init_lexer_error(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_parser___parser_nodes___ALexerError(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
+}
+static const char LOCATE_NEW_ALexerError_parser___lexer___AError___init_error[] = "new ALexerError lexer::AError::init_error";
+val_t NEW_ALexerError_parser___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[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 = 1161;
+  fra.me.meth = LOCATE_NEW_ALexerError_parser___lexer___AError___init_error;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  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:1161 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___ALexerError();
+  INIT_ATTRIBUTES__parser___parser_nodes___ALexerError(fra.me.REG[2]);
+  parser___lexer___AError___init_error(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___ALexerError(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+static const char LOCATE_NEW_ALexerError_parser___parser_nodes___ANode___init[] = "new ALexerError parser_nodes::ANode::init";
+val_t NEW_ALexerError_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_ALexerError_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ALexerError();
+  INIT_ATTRIBUTES__parser___parser_nodes___ALexerError(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ALexerError(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_ALexerError_parser___lexer___EOF___init_tk[] = "new ALexerError lexer::EOF::init_tk";
+val_t NEW_ALexerError_parser___lexer___EOF___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};
+  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 = 439;
-  fra.me.meth = LOCATE_NEW_ArrayIterator_standard___collection___array___ArrayIterator___init;
+  fra.me.line = 1151;
+  fra.me.meth = LOCATE_NEW_ALexerError_parser___lexer___EOF___init_tk;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//array.nit:439 */
-  fra.me.REG[1] = NEW_standard___collection___array___ArrayIterator();
-  INIT_ATTRIBUTES__standard___collection___array___ArrayIterator(fra.me.REG[1]);
-  standard___collection___array___ArrayIterator___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_standard___collection___array___ArrayIterator(fra.me.REG[1]);
+  /* parser/lexer.nit:1151 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___ALexerError();
+  INIT_ATTRIBUTES__parser___parser_nodes___ALexerError(fra.me.REG[1]);
+  parser___lexer___EOF___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ALexerError(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_standard___collection___array___ArraySet[101] = {
-  {(bigint) 3563 /* 0: Identity */},
-  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ArraySet" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ArraySet < Object: superclass typecheck marker */},
-  {(bigint) 3183 /* 4: ArraySet < Set: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___parser_nodes___AParserError[84] = {
+  {(bigint) 4667 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AParserError" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AParserError < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AParserError < ANode: superclass typecheck marker */},
+  {(bigint) 335 /* 5: AParserError < Token: superclass typecheck marker */},
+  {(bigint) 3675 /* 6: AParserError < EOF: superclass typecheck marker */},
+  {(bigint) 4499 /* 7: AParserError < AError: superclass typecheck marker */},
+  {(bigint) 4667 /* 8: AParserError < AParserError: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 283 /* 6: ArraySet < Collection: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 367 /* 8: ArraySet < RemovableCollection: superclass typecheck marker */},
-  {(bigint) 2779 /* 9: ArraySet < SimpleCollection: superclass typecheck marker */},
-  {(bigint) 3563 /* 10: ArraySet < ArraySet: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -19310,7 +50819,7 @@ const classtable_elt_t VFT_standard___collection___array___ArraySet[101] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 18: ArraySet < Object: superclass init_table position */},
+  {(bigint) 2 /* 19: AParserError < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -19326,7 +50835,9 @@ const classtable_elt_t VFT_standard___collection___array___ArraySet[101] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Collection___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) parser___parser_nodes___EOF___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -19339,150 +50850,201 @@ const classtable_elt_t VFT_standard___collection___array___ArraySet[101] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ArraySet < Set: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) standard___string___Collection___join},
-  {(bigint) standard___collection___array___Collection___to_a},
-  {(bigint) 3 /* 65: ArraySet < Collection: superclass init_table position */},
-  {(bigint) standard___collection___array___ArraySet___iterator},
-  {(bigint) standard___collection___abstract_collection___Collection___iterate},
-  {(bigint) standard___collection___array___ArraySet___is_empty},
-  {(bigint) standard___collection___array___ArraySet___length},
-  {(bigint) standard___collection___array___ArraySet___has},
-  {(bigint) standard___collection___abstract_collection___Set___has_only},
-  {(bigint) standard___collection___abstract_collection___Set___count},
-  {(bigint) standard___collection___array___ArraySet___first},
-  {(bigint) standard___math___Collection___rand},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 2 /* 79: ArraySet < RemovableCollection: superclass init_table position */},
-  {(bigint) standard___collection___array___ArraySet___clear},
-  {(bigint) standard___collection___array___ArraySet___remove},
-  {(bigint) standard___collection___array___ArraySet___remove_all},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* 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 /* 93: ArraySet < SimpleCollection: superclass init_table position */},
-  {(bigint) standard___collection___array___ArraySet___add},
-  {(bigint) standard___collection___abstract_collection___SimpleCollection___add_all},
-  {(bigint) 5 /* 96: ArraySet < ArraySet: superclass init_table position */},
-  {(bigint) standard___collection___array___ArraySet___enlarge},
-  {(bigint) standard___collection___array___ArraySet___remove_at},
-  {(bigint) standard___collection___array___ArraySet___init},
-  {(bigint) standard___collection___array___ArraySet___with_capacity},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___Token___replace_child},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) parser___parser_prod___Token___visit_all},
+  {(bigint) 1 /* 63: AParserError < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) syntax___syntax_base___Token___to_symbol},
+  {(bigint) parser___lexer___EOF___parser_index},
+  {(bigint) 0 /* 73: AParserError < Token: superclass init_table position */},
+  {(bigint) parser___lexer___Token___text},
+  {(bigint) parser___lexer___Token___text__eq},
+  {(bigint) parser___lexer___EOF___init_tk},
+  {(bigint) 3 /* 77: AParserError < EOF: superclass init_table position */},
+  {(bigint) parser___lexer___AError___message},
+  {(bigint) parser___lexer___AError___init_error},
+  {(bigint) 4 /* 80: AParserError < AError: superclass init_table position */},
+  {(bigint) parser___lexer___AParserError___token},
+  {(bigint) parser___lexer___AParserError___init_parser_error},
+  {(bigint) 5 /* 83: AParserError < AParserError: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ArraySet::_array */
-void INIT_ATTRIBUTES__standard___collection___array___ArraySet(val_t p0){
+/* 2: Attribute AParserError::_parent */
+/* 3: Attribute AParserError::_location */
+/* 4: Attribute AParserError::_symbol_cache */
+/* 5: Attribute AParserError::_text */
+/* 6: Attribute AParserError::_message */
+/* 7: Attribute AParserError::_token */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AParserError[] = "init var of AParserError";
+void INIT_ATTRIBUTES__parser___parser_nodes___AParserError(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__standard___collection___array___ArraySet;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AParserError;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___collection___array___ArraySet(void)
+val_t NEW_parser___parser_nodes___AParserError(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_standard___collection___array___ArraySet;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AParserError;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___collection___array___ArraySet(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AParserError[] = "check new AParserError";
+void CHECKNEW_parser___parser_nodes___AParserError(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_standard___collection___array___ArraySet;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AParserError;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___lexer___AError____message(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_array", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_message", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___lexer___AParserError____token(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_token", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ArraySet_standard___collection___array___ArraySet___init(void){
-  struct {struct stack_frame_t me;} fra;
+static const char LOCATE_NEW_AParserError_parser___lexer___AParserError___init_parser_error[] = "new AParserError lexer::AParserError::init_parser_error";
+val_t NEW_AParserError_parser___lexer___AParserError___init_parser_error(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 = 493;
-  fra.me.meth = LOCATE_NEW_ArraySet_standard___collection___array___ArraySet___init;
+  fra.me.line = 1181;
+  fra.me.meth = LOCATE_NEW_AParserError_parser___lexer___AParserError___init_parser_error;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./../lib/standard//collection//array.nit:493 */
-  fra.me.REG[0] = NEW_standard___collection___array___ArraySet();
-  INIT_ATTRIBUTES__standard___collection___array___ArraySet(fra.me.REG[0]);
-  standard___collection___array___ArraySet___init(fra.me.REG[0], init_table);
-  CHECKNEW_standard___collection___array___ArraySet(fra.me.REG[0]);
+  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/lexer.nit:1181 */
+  fra.me.REG[3] = NEW_parser___parser_nodes___AParserError();
+  INIT_ATTRIBUTES__parser___parser_nodes___AParserError(fra.me.REG[3]);
+  parser___lexer___AParserError___init_parser_error(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_parser___parser_nodes___AParserError(fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[3];
 }
-val_t NEW_ArraySet_standard___collection___array___ArraySet___with_capacity(val_t p0){
+static const char LOCATE_NEW_AParserError_parser___lexer___AError___init_error[] = "new AParserError lexer::AError::init_error";
+val_t NEW_AParserError_parser___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[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 = 1161;
+  fra.me.meth = LOCATE_NEW_AParserError_parser___lexer___AError___init_error;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  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:1161 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___AParserError();
+  INIT_ATTRIBUTES__parser___parser_nodes___AParserError(fra.me.REG[2]);
+  parser___lexer___AError___init_error(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___AParserError(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+static const char LOCATE_NEW_AParserError_parser___parser_nodes___ANode___init[] = "new AParserError parser_nodes::ANode::init";
+val_t NEW_AParserError_parser___parser_nodes___ANode___init(void){
   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 = 496;
-  fra.me.meth = LOCATE_NEW_ArraySet_standard___collection___array___ArraySet___with_capacity;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_AParserError_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  REGB0 = p0;
-  /* ./../lib/standard//collection//array.nit:496 */
-  fra.me.REG[0] = NEW_standard___collection___array___ArraySet();
-  INIT_ATTRIBUTES__standard___collection___array___ArraySet(fra.me.REG[0]);
-  standard___collection___array___ArraySet___with_capacity(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_standard___collection___array___ArraySet(fra.me.REG[0]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AParserError();
+  INIT_ATTRIBUTES__parser___parser_nodes___AParserError(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AParserError(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___collection___array___ArraySetIterator[54] = {
-  {(bigint) 2363 /* 0: Identity */},
-  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ArraySetIterator" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ArraySetIterator < Object: superclass typecheck marker */},
-  {(bigint) 199 /* 4: ArraySetIterator < Iterator: superclass typecheck marker */},
-  {(bigint) 2363 /* 5: ArraySetIterator < ArraySetIterator: superclass typecheck marker */},
+static const char LOCATE_NEW_AParserError_parser___lexer___EOF___init_tk[] = "new AParserError lexer::EOF::init_tk";
+val_t NEW_AParserError_parser___lexer___EOF___init_tk(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 = 1151;
+  fra.me.meth = LOCATE_NEW_AParserError_parser___lexer___EOF___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:1151 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___AParserError();
+  INIT_ATTRIBUTES__parser___parser_nodes___AParserError(fra.me.REG[1]);
+  parser___lexer___EOF___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AParserError(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_parser___parser_nodes___AModule[83] = {
+  {(bigint) 3767 /* 0: Identity */},
+  {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AModule" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AModule < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AModule < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AModule < Prod: superclass typecheck marker */},
+  {(bigint) 3767 /* 6: AModule < AModule: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -19495,7 +51057,7 @@ const classtable_elt_t VFT_standard___collection___array___ArraySetIterator[54]
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ArraySetIterator < Object: superclass init_table position */},
+  {(bigint) 2 /* 19: AModule < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -19511,6 +51073,8 @@ const classtable_elt_t VFT_standard___collection___array___ArraySetIterator[54]
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -19524,87 +51088,204 @@ const classtable_elt_t VFT_standard___collection___array___ArraySetIterator[54]
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) standard___collection___array___Iterator___to_a},
-  {(bigint) 0 /* 48: ArraySetIterator < Iterator: superclass init_table position */},
-  {(bigint) standard___collection___array___ArraySetIterator___item},
-  {(bigint) standard___collection___array___ArraySetIterator___next},
-  {(bigint) standard___collection___array___ArraySetIterator___is_ok},
-  {(bigint) 2 /* 52: ArraySetIterator < ArraySetIterator: superclass init_table position */},
-  {(bigint) standard___collection___array___ArraySetIterator___init},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___AModule___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AModule___visit_all},
+  {(bigint) 1 /* 63: AModule < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 72: AModule < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___mmbuilder___AModule___import_super_modules},
+  {(bigint) parser___parser_prod___AModule___empty_init},
+  {(bigint) parser___parser_prod___AModule___init_amodule},
+  {(bigint) 3 /* 78: AModule < AModule: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AModule___n_moduledecl},
+  {(bigint) parser___parser_nodes___AModule___n_imports},
+  {(bigint) parser___parser_nodes___AModule___n_extern_code_blocks},
+  {(bigint) parser___parser_nodes___AModule___n_classdefs},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ArraySetIterator::_iter */
-void INIT_ATTRIBUTES__standard___collection___array___ArraySetIterator(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AModule::_parent */
+/* 3: Attribute AModule::_location */
+/* 4: Attribute AModule::_first_location */
+/* 5: Attribute AModule::_last_location */
+/* 6: Attribute AModule::_n_annotations */
+/* 7: Attribute AModule::_n_moduledecl */
+/* 8: Attribute AModule::_n_imports */
+/* 9: Attribute AModule::_n_extern_code_blocks */
+/* 10: Attribute AModule::_n_classdefs */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AModule[] = "init var of AModule";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__standard___collection___array___ArraySetIterator;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AModule;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:401 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AModule____n_moduledecl(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:402 */
+  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  ATTR_parser___parser_nodes___AModule____n_imports(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:403 */
+  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  ATTR_parser___parser_nodes___AModule____n_extern_code_blocks(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:404 */
+  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  ATTR_parser___parser_nodes___AModule____n_classdefs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___collection___array___ArraySetIterator(void)
+val_t NEW_parser___parser_nodes___AModule(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_standard___collection___array___ArraySetIterator;
+  obj = alloc(sizeof(val_t) * 11);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AModule;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___collection___array___ArraySetIterator(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AModule[] = "check new AModule";
+void CHECKNEW_parser___parser_nodes___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_standard___collection___array___ArraySetIterator;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AModule;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArraySetIterator____iter(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AModule____n_imports(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_iter", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_imports", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AModule____n_extern_code_blocks(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_extern_code_blocks", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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;
 }
-val_t NEW_ArraySetIterator_standard___collection___array___ArraySetIterator___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AModule_parser___parser_prod___AModule___empty_init[] = "new AModule parser_prod::AModule::empty_init";
+val_t NEW_AModule_parser___parser_prod___AModule___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[3] = {0, 0, 0};
+  int init_table[4] = {0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 510;
-  fra.me.meth = LOCATE_NEW_ArraySetIterator_standard___collection___array___ArraySetIterator___init;
+  fra.me.line = 71;
+  fra.me.meth = LOCATE_NEW_AModule_parser___parser_prod___AModule___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:71 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AModule();
+  INIT_ATTRIBUTES__parser___parser_nodes___AModule(fra.me.REG[0]);
+  parser___parser_prod___AModule___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AModule(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AModule_parser___parser_prod___AModule___init_amodule[] = "new AModule parser_prod::AModule::init_amodule";
+val_t NEW_AModule_parser___parser_prod___AModule___init_amodule(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};
+  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___parser_prod___AModule___init_amodule;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
   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;
-  /* ./../lib/standard//collection//array.nit:510 */
-  fra.me.REG[1] = NEW_standard___collection___array___ArraySetIterator();
-  INIT_ATTRIBUTES__standard___collection___array___ArraySetIterator(fra.me.REG[1]);
-  standard___collection___array___ArraySetIterator___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_standard___collection___array___ArraySetIterator(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  /* parser/parser_prod.nit:73 */
+  fra.me.REG[4] = NEW_parser___parser_nodes___AModule();
+  INIT_ATTRIBUTES__parser___parser_nodes___AModule(fra.me.REG[4]);
+  parser___parser_prod___AModule___init_amodule(fra.me.REG[4], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], init_table);
+  CHECKNEW_parser___parser_nodes___AModule(fra.me.REG[4]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[4];
+}
+static const char LOCATE_NEW_AModule_parser___parser_nodes___ANode___init[] = "new AModule parser_nodes::ANode::init";
+val_t NEW_AModule_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AModule_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AModule();
+  INIT_ATTRIBUTES__parser___parser_nodes___AModule(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AModule(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___collection___array___ArrayMap[72] = {
-  {(bigint) 3235 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ArrayMap" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ArrayMap < Object: superclass typecheck marker */},
-  {(bigint) 135 /* 4: ArrayMap < MapRead: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___parser_nodes___AModuledecl[81] = {
+  {(bigint) 3759 /* 0: Identity */},
+  {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AModuledecl" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AModuledecl < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AModuledecl < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AModuledecl < Prod: superclass typecheck marker */},
+  {(bigint) 3759 /* 6: AModuledecl < AModuledecl: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2139 /* 6: ArrayMap < Map: superclass typecheck marker */},
-  {(bigint) 2991 /* 7: ArrayMap < CoupleMap: superclass typecheck marker */},
-  {(bigint) 3235 /* 8: ArrayMap < ArrayMap: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -19614,7 +51295,7 @@ const classtable_elt_t VFT_standard___collection___array___ArrayMap[72] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 18: ArrayMap < Object: superclass init_table position */},
+  {(bigint) 2 /* 19: AModuledecl < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -19630,6 +51311,8 @@ const classtable_elt_t VFT_standard___collection___array___ArrayMap[72] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -19643,137 +51326,188 @@ const classtable_elt_t VFT_standard___collection___array___ArrayMap[72] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 2 /* 47: ArrayMap < MapRead: superclass init_table position */},
-  {(bigint) standard___collection___array___ArrayMap_____bra},
-  {(bigint) standard___collection___abstract_collection___MapRead___has_key},
-  {(bigint) standard___collection___array___ArrayMap___iterator},
-  {(bigint) standard___collection___abstract_collection___MapRead___iterate},
-  {(bigint) standard___collection___array___ArrayMap___values},
-  {(bigint) standard___collection___array___ArrayMap___keys},
-  {(bigint) standard___collection___array___ArrayMap___is_empty},
-  {(bigint) standard___collection___array___ArrayMap___length},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) standard___string___Map___join},
-  {(bigint) 1 /* 59: ArrayMap < Map: superclass init_table position */},
-  {(bigint) standard___collection___array___ArrayMap_____braeq},
-  {(bigint) standard___collection___abstract_collection___Map___recover_with},
-  {(bigint) standard___collection___array___ArrayMap___clear},
-  {(bigint) 0 /* 63: ArrayMap < CoupleMap: superclass init_table position */},
-  {(bigint) standard___collection___array___ArrayMap___couple_at},
-  {(bigint) 4 /* 65: ArrayMap < ArrayMap: superclass init_table position */},
-  {(bigint) standard___collection___array___ArrayMap___keys__eq},
-  {(bigint) standard___collection___array___ArrayMap___values__eq},
-  {(bigint) standard___collection___array___ArrayMap___enlarge},
-  {(bigint) standard___collection___array___ArrayMap___remove_at_index},
-  {(bigint) standard___collection___array___ArrayMap___index},
-  {(bigint) standard___collection___array___ArrayMap___init},
+  {(bigint) syntax___mmbuilder___AModuledecl___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___AModuledecl___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AModuledecl___visit_all},
+  {(bigint) 1 /* 63: AModuledecl < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 72: AModuledecl < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_prod___AModuledecl___empty_init},
+  {(bigint) parser___parser_prod___AModuledecl___init_amoduledecl},
+  {(bigint) 3 /* 77: AModuledecl < AModuledecl: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AModuledecl___n_doc},
+  {(bigint) parser___parser_nodes___AModuledecl___n_kwmodule},
+  {(bigint) parser___parser_nodes___AModuledecl___n_name},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ArrayMap::@keys */
-/* 3: Attribute ArrayMap::@values */
-/* 4: Attribute ArrayMap::_items */
-/* 5: Attribute ArrayMap::_last_index */
-void INIT_ATTRIBUTES__standard___collection___array___ArrayMap(val_t p0){
+/* 2: Attribute AModuledecl::_parent */
+/* 3: Attribute AModuledecl::_location */
+/* 4: Attribute AModuledecl::_first_location */
+/* 5: Attribute AModuledecl::_last_location */
+/* 6: Attribute AModuledecl::_n_annotations */
+/* 7: Attribute AModuledecl::_n_doc */
+/* 8: Attribute AModuledecl::_n_kwmodule */
+/* 9: Attribute AModuledecl::_n_name */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AModuledecl[] = "init var of AModuledecl";
+void INIT_ATTRIBUTES__parser___parser_nodes___AModuledecl(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__standard___collection___array___ArrayMap;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AModuledecl;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//array.nit:542 */
-  fra.me.REG[1] = fra.me.REG[0];
-  fra.me.REG[1] = NEW_ArrayMapKeys_standard___collection___array___ArrayMapKeys___init(fra.me.REG[1]);
-  ATTR_standard___collection___array___ArrayMap_____atkeys(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//collection//array.nit:543 */
-  fra.me.REG[1] = fra.me.REG[0];
-  fra.me.REG[1] = NEW_ArrayMapValues_standard___collection___array___ArrayMapValues___init(fra.me.REG[1]);
-  ATTR_standard___collection___array___ArrayMap_____atvalues(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//collection//array.nit:578 */
-  REGB0 = TAG_Int(0);
-  ATTR_standard___collection___array___ArrayMap____last_index(fra.me.REG[0]) = REGB0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:408 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AModuledecl____n_doc(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___collection___array___ArrayMap(void)
+val_t NEW_parser___parser_nodes___AModuledecl(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_standard___collection___array___ArrayMap;
+  obj = alloc(sizeof(val_t) * 10);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AModuledecl;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___collection___array___ArrayMap(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AModuledecl[] = "check new AModuledecl";
+void CHECKNEW_parser___parser_nodes___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_standard___collection___array___ArrayMap;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AModuledecl;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMap_____atkeys(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "@keys", LOCATE_nitc, 0);
-  }
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMap_____atvalues(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "@values", LOCATE_nitc, 0);
-  }
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AModuledecl____n_kwmodule(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_kwmodule", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____last_index(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AModuledecl____n_name(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_last_index", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_name", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ArrayMap_standard___collection___array___ArrayMap___init(void){
+static const char LOCATE_NEW_AModuledecl_parser___parser_prod___AModuledecl___empty_init[] = "new AModuledecl parser_prod::AModuledecl::empty_init";
+val_t NEW_AModuledecl_parser___parser_prod___AModuledecl___empty_init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[5] = {0, 0, 0, 0, 0};
+  int init_table[4] = {0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 598;
-  fra.me.meth = LOCATE_NEW_ArrayMap_standard___collection___array___ArrayMap___init;
+  fra.me.line = 169;
+  fra.me.meth = LOCATE_NEW_AModuledecl_parser___parser_prod___AModuledecl___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./../lib/standard//collection//array.nit:598 */
-  fra.me.REG[0] = NEW_standard___collection___array___ArrayMap();
-  INIT_ATTRIBUTES__standard___collection___array___ArrayMap(fra.me.REG[0]);
-  standard___collection___array___ArrayMap___init(fra.me.REG[0], init_table);
-  CHECKNEW_standard___collection___array___ArrayMap(fra.me.REG[0]);
+  /* parser/parser_prod.nit:169 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AModuledecl();
+  INIT_ATTRIBUTES__parser___parser_nodes___AModuledecl(fra.me.REG[0]);
+  parser___parser_prod___AModuledecl___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AModuledecl(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___collection___array___ArrayMapKeys[87] = {
-  {(bigint) 3027 /* 0: Identity */},
-  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ArrayMapKeys" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ArrayMapKeys < Object: superclass typecheck marker */},
+static const char LOCATE_NEW_AModuledecl_parser___parser_prod___AModuledecl___init_amoduledecl[] = "new AModuledecl parser_prod::AModuledecl::init_amoduledecl";
+val_t NEW_AModuledecl_parser___parser_prod___AModuledecl___init_amoduledecl(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};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 171;
+  fra.me.meth = LOCATE_NEW_AModuledecl_parser___parser_prod___AModuledecl___init_amoduledecl;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
+  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:171 */
+  fra.me.REG[4] = NEW_parser___parser_nodes___AModuledecl();
+  INIT_ATTRIBUTES__parser___parser_nodes___AModuledecl(fra.me.REG[4]);
+  parser___parser_prod___AModuledecl___init_amoduledecl(fra.me.REG[4], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], init_table);
+  CHECKNEW_parser___parser_nodes___AModuledecl(fra.me.REG[4]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[4];
+}
+static const char LOCATE_NEW_AModuledecl_parser___parser_nodes___ANode___init[] = "new AModuledecl parser_nodes::ANode::init";
+val_t NEW_AModuledecl_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AModuledecl_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AModuledecl();
+  INIT_ATTRIBUTES__parser___parser_nodes___AModuledecl(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AModuledecl(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___AStdImport[84] = {
+  {(bigint) 4299 /* 0: Identity */},
+  {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AStdImport" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AStdImport < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AStdImport < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AStdImport < Prod: superclass typecheck marker */},
+  {(bigint) 3787 /* 6: AStdImport < AImport: superclass typecheck marker */},
+  {(bigint) 4299 /* 7: AStdImport < AStdImport: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 283 /* 6: ArrayMapKeys < Collection: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 367 /* 8: ArrayMapKeys < RemovableCollection: superclass typecheck marker */},
-  {(bigint) 3027 /* 9: ArrayMapKeys < ArrayMapKeys: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -19782,7 +51516,7 @@ const classtable_elt_t VFT_standard___collection___array___ArrayMapKeys[87] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: ArrayMapKeys < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: AStdImport < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -19798,7 +51532,9 @@ const classtable_elt_t VFT_standard___collection___array___ArrayMapKeys[87] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Collection___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -19811,120 +51547,193 @@ const classtable_elt_t VFT_standard___collection___array___ArrayMapKeys[87] = {
   {(bigint) standard___math___Object___srand},
   {(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 :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) standard___string___Collection___join},
-  {(bigint) standard___collection___array___Collection___to_a},
-  {(bigint) 1 /* 65: ArrayMapKeys < Collection: superclass init_table position */},
-  {(bigint) standard___collection___array___ArrayMapKeys___iterator},
-  {(bigint) standard___collection___abstract_collection___Collection___iterate},
-  {(bigint) standard___collection___array___ArrayMapKeys___is_empty},
-  {(bigint) standard___collection___array___ArrayMapKeys___length},
-  {(bigint) standard___collection___array___ArrayMapKeys___has},
-  {(bigint) standard___collection___array___ArrayMapKeys___has_only},
-  {(bigint) standard___collection___array___ArrayMapKeys___count},
-  {(bigint) standard___collection___array___ArrayMapKeys___first},
-  {(bigint) standard___math___Collection___rand},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 0 /* 79: ArrayMapKeys < RemovableCollection: superclass init_table position */},
-  {(bigint) standard___collection___array___ArrayMapKeys___clear},
-  {(bigint) standard___collection___array___ArrayMapKeys___remove},
-  {(bigint) standard___collection___array___ArrayMapKeys___remove_all},
-  {(bigint) 3 /* 83: ArrayMapKeys < ArrayMapKeys: superclass init_table position */},
-  {(bigint) standard___collection___array___ArrayMapKeys___map},
-  {(bigint) standard___collection___array___ArrayMapKeys___map__eq},
-  {(bigint) standard___collection___array___ArrayMapKeys___init},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___AStdImport___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AStdImport___visit_all},
+  {(bigint) 2 /* 63: AStdImport < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: AStdImport < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___mmbuilder___AStdImport___module_name},
+  {(bigint) syntax___mmbuilder___AStdImport___visibility_level},
+  {(bigint) 0 /* 77: AStdImport < AImport: superclass init_table position */},
+  {(bigint) parser___parser_prod___AStdImport___empty_init},
+  {(bigint) parser___parser_prod___AStdImport___init_astdimport},
+  {(bigint) 4 /* 80: AStdImport < AStdImport: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AStdImport___n_visibility},
+  {(bigint) parser___parser_nodes___AStdImport___n_kwimport},
+  {(bigint) parser___parser_nodes___AStdImport___n_name},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ArrayMapKeys::@map */
-void INIT_ATTRIBUTES__standard___collection___array___ArrayMapKeys(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AStdImport::_parent */
+/* 3: Attribute AStdImport::_location */
+/* 4: Attribute AStdImport::_first_location */
+/* 5: Attribute AStdImport::_last_location */
+/* 6: Attribute AStdImport::_n_annotations */
+/* 7: Attribute AStdImport::_n_visibility */
+/* 8: Attribute AStdImport::_n_kwimport */
+/* 9: Attribute AStdImport::_n_name */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AStdImport[] = "init var of AStdImport";
+void INIT_ATTRIBUTES__parser___parser_nodes___AStdImport(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__standard___collection___array___ArrayMapKeys;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AStdImport;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___collection___array___ArrayMapKeys(void)
+val_t NEW_parser___parser_nodes___AStdImport(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_standard___collection___array___ArrayMapKeys;
+  obj = alloc(sizeof(val_t) * 10);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AStdImport;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___collection___array___ArrayMapKeys(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AStdImport[] = "check new AStdImport";
+void CHECKNEW_parser___parser_nodes___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_standard___collection___array___ArrayMapKeys;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AStdImport;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMapKeys_____atmap(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStdImport____n_visibility(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "@map", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_visibility", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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___parser_nodes___AStdImport____n_name(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_name", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ArrayMapKeys_standard___collection___array___ArrayMapKeys___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AStdImport_parser___parser_prod___AStdImport___empty_init[] = "new AStdImport parser_prod::AStdImport::empty_init";
+val_t NEW_AStdImport_parser___parser_prod___AStdImport___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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_ArrayMapKeys_standard___collection___array___ArrayMapKeys___init;
+  fra.me.line = 250;
+  fra.me.meth = LOCATE_NEW_AStdImport_parser___parser_prod___AStdImport___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:250 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AStdImport();
+  INIT_ATTRIBUTES__parser___parser_nodes___AStdImport(fra.me.REG[0]);
+  parser___parser_prod___AStdImport___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AStdImport(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AStdImport_parser___parser_prod___AStdImport___init_astdimport[] = "new AStdImport parser_prod::AStdImport::init_astdimport";
+val_t NEW_AStdImport_parser___parser_prod___AStdImport___init_astdimport(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 = 252;
+  fra.me.meth = LOCATE_NEW_AStdImport_parser___parser_prod___AStdImport___init_astdimport;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
   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] = NEW_standard___collection___array___ArrayMapKeys();
-  INIT_ATTRIBUTES__standard___collection___array___ArrayMapKeys(fra.me.REG[1]);
-  standard___collection___array___ArrayMapKeys___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_standard___collection___array___ArrayMapKeys(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  /* parser/parser_prod.nit:252 */
+  fra.me.REG[4] = NEW_parser___parser_nodes___AStdImport();
+  INIT_ATTRIBUTES__parser___parser_nodes___AStdImport(fra.me.REG[4]);
+  parser___parser_prod___AStdImport___init_astdimport(fra.me.REG[4], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], init_table);
+  CHECKNEW_parser___parser_nodes___AStdImport(fra.me.REG[4]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[4];
 }
-const classtable_elt_t VFT_standard___collection___array___ArrayMapValues[87] = {
-  {(bigint) 3023 /* 0: Identity */},
-  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ArrayMapValues" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ArrayMapValues < Object: superclass typecheck marker */},
+static const char LOCATE_NEW_AStdImport_parser___parser_nodes___ANode___init[] = "new AStdImport parser_nodes::ANode::init";
+val_t NEW_AStdImport_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AStdImport_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AStdImport();
+  INIT_ATTRIBUTES__parser___parser_nodes___AStdImport(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AStdImport(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___ANoImport[84] = {
+  {(bigint) 4383 /* 0: Identity */},
+  {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ANoImport" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ANoImport < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: ANoImport < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: ANoImport < Prod: superclass typecheck marker */},
+  {(bigint) 3787 /* 6: ANoImport < AImport: superclass typecheck marker */},
+  {(bigint) 4383 /* 7: ANoImport < ANoImport: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 283 /* 6: ArrayMapValues < Collection: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 367 /* 8: ArrayMapValues < RemovableCollection: superclass typecheck marker */},
-  {(bigint) 3023 /* 9: ArrayMapValues < ArrayMapValues: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -19933,7 +51742,7 @@ const classtable_elt_t VFT_standard___collection___array___ArrayMapValues[87] =
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: ArrayMapValues < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: ANoImport < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -19949,7 +51758,9 @@ const classtable_elt_t VFT_standard___collection___array___ArrayMapValues[87] =
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Collection___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -19962,117 +51773,188 @@ const classtable_elt_t VFT_standard___collection___array___ArrayMapValues[87] =
   {(bigint) standard___math___Object___srand},
   {(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 :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) standard___string___Collection___join},
-  {(bigint) standard___collection___array___Collection___to_a},
-  {(bigint) 1 /* 65: ArrayMapValues < Collection: superclass init_table position */},
-  {(bigint) standard___collection___array___ArrayMapValues___iterator},
-  {(bigint) standard___collection___abstract_collection___Collection___iterate},
-  {(bigint) standard___collection___array___ArrayMapValues___is_empty},
-  {(bigint) standard___collection___array___ArrayMapValues___length},
-  {(bigint) standard___collection___array___ArrayMapValues___has},
-  {(bigint) standard___collection___array___ArrayMapValues___has_only},
-  {(bigint) standard___collection___array___ArrayMapValues___count},
-  {(bigint) standard___collection___array___ArrayMapValues___first},
-  {(bigint) standard___math___Collection___rand},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 0 /* 79: ArrayMapValues < RemovableCollection: superclass init_table position */},
-  {(bigint) standard___collection___array___ArrayMapValues___clear},
-  {(bigint) standard___collection___array___ArrayMapValues___remove},
-  {(bigint) standard___collection___array___ArrayMapValues___remove_all},
-  {(bigint) 3 /* 83: ArrayMapValues < ArrayMapValues: superclass init_table position */},
-  {(bigint) standard___collection___array___ArrayMapValues___map},
-  {(bigint) standard___collection___array___ArrayMapValues___map__eq},
-  {(bigint) standard___collection___array___ArrayMapValues___init},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___ANoImport___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___ANoImport___visit_all},
+  {(bigint) 2 /* 63: ANoImport < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: ANoImport < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___mmbuilder___ANoImport___module_name},
+  {(bigint) syntax___mmbuilder___AImport___visibility_level},
+  {(bigint) 0 /* 77: ANoImport < AImport: superclass init_table position */},
+  {(bigint) parser___parser_prod___ANoImport___empty_init},
+  {(bigint) parser___parser_prod___ANoImport___init_anoimport},
+  {(bigint) 4 /* 80: ANoImport < ANoImport: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANoImport___n_visibility},
+  {(bigint) parser___parser_nodes___ANoImport___n_kwimport},
+  {(bigint) parser___parser_nodes___ANoImport___n_kwend},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ArrayMapValues::@map */
-void INIT_ATTRIBUTES__standard___collection___array___ArrayMapValues(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute ANoImport::_parent */
+/* 3: Attribute ANoImport::_location */
+/* 4: Attribute ANoImport::_first_location */
+/* 5: Attribute ANoImport::_last_location */
+/* 6: Attribute ANoImport::_n_annotations */
+/* 7: Attribute ANoImport::_n_visibility */
+/* 8: Attribute ANoImport::_n_kwimport */
+/* 9: Attribute ANoImport::_n_kwend */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ANoImport[] = "init var of ANoImport";
+void INIT_ATTRIBUTES__parser___parser_nodes___ANoImport(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__standard___collection___array___ArrayMapValues;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ANoImport;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___collection___array___ArrayMapValues(void)
+val_t NEW_parser___parser_nodes___ANoImport(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_standard___collection___array___ArrayMapValues;
+  obj = alloc(sizeof(val_t) * 10);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ANoImport;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___collection___array___ArrayMapValues(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___ANoImport[] = "check new ANoImport";
+void CHECKNEW_parser___parser_nodes___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_standard___collection___array___ArrayMapValues;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___ANoImport;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMapValues_____atmap(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ANoImport____n_visibility(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "@map", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_visibility", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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___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;
 }
-val_t NEW_ArrayMapValues_standard___collection___array___ArrayMapValues___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ANoImport_parser___parser_prod___ANoImport___empty_init[] = "new ANoImport parser_prod::ANoImport::empty_init";
+val_t NEW_ANoImport_parser___parser_prod___ANoImport___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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_ArrayMapValues_standard___collection___array___ArrayMapValues___init;
+  fra.me.line = 327;
+  fra.me.meth = LOCATE_NEW_ANoImport_parser___parser_prod___ANoImport___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:327 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ANoImport();
+  INIT_ATTRIBUTES__parser___parser_nodes___ANoImport(fra.me.REG[0]);
+  parser___parser_prod___ANoImport___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ANoImport(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_ANoImport_parser___parser_prod___ANoImport___init_anoimport[] = "new ANoImport parser_prod::ANoImport::init_anoimport";
+val_t NEW_ANoImport_parser___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 = 329;
+  fra.me.meth = LOCATE_NEW_ANoImport_parser___parser_prod___ANoImport___init_anoimport;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   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] = NEW_standard___collection___array___ArrayMapValues();
-  INIT_ATTRIBUTES__standard___collection___array___ArrayMapValues(fra.me.REG[1]);
-  standard___collection___array___ArrayMapValues___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_standard___collection___array___ArrayMapValues(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* parser/parser_prod.nit:329 */
+  fra.me.REG[3] = NEW_parser___parser_nodes___ANoImport();
+  INIT_ATTRIBUTES__parser___parser_nodes___ANoImport(fra.me.REG[3]);
+  parser___parser_prod___ANoImport___init_anoimport(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_parser___parser_nodes___ANoImport(fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[3];
 }
-const classtable_elt_t VFT_standard___collection___array___NativeArray[51] = {
-  {(bigint) 123 /* 0: Identity */},
-  {(bigint) -1 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "NativeArray" /* 2: Class Name */},
-  {(bigint) 3 /* 3: NativeArray < Object: superclass typecheck marker */},
-  {(bigint) 123 /* 4: NativeArray < NativeArray: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+static const char LOCATE_NEW_ANoImport_parser___parser_nodes___ANode___init[] = "new ANoImport parser_nodes::ANode::init";
+val_t NEW_ANoImport_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_ANoImport_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ANoImport();
+  INIT_ATTRIBUTES__parser___parser_nodes___ANoImport(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ANoImport(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___APublicVisibility[80] = {
+  {(bigint) 4343 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "APublicVisibility" /* 2: Class Name */},
+  {(bigint) 3 /* 3: APublicVisibility < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: APublicVisibility < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: APublicVisibility < Prod: superclass typecheck marker */},
+  {(bigint) 3731 /* 6: APublicVisibility < AVisibility: superclass typecheck marker */},
+  {(bigint) 4343 /* 7: APublicVisibility < APublicVisibility: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -20084,7 +51966,7 @@ const classtable_elt_t VFT_standard___collection___array___NativeArray[51] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: NativeArray < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: APublicVisibility < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -20100,6 +51982,8 @@ const classtable_elt_t VFT_standard___collection___array___NativeArray[51] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -20113,30 +51997,157 @@ const classtable_elt_t VFT_standard___collection___array___NativeArray[51] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: NativeArray < NativeArray: superclass init_table position */},
-  {(bigint) standard___collection___array___NativeArray_____bra},
-  {(bigint) standard___collection___array___NativeArray_____braeq},
-  {(bigint) standard___collection___array___NativeArray___copy_to},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___APublicVisibility___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___APublicVisibility___visit_all},
+  {(bigint) 2 /* 63: APublicVisibility < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: APublicVisibility < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___mmbuilder___APublicVisibility___level},
+  {(bigint) 0 /* 76: APublicVisibility < AVisibility: superclass init_table position */},
+  {(bigint) parser___parser_prod___APublicVisibility___empty_init},
+  {(bigint) parser___parser_prod___APublicVisibility___init_apublicvisibility},
+  {(bigint) 4 /* 79: APublicVisibility < APublicVisibility: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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_standard___collection___array___NativeArray;
-  array->object_id = object_id_counter;
+/* 2: Attribute APublicVisibility::_parent */
+/* 3: Attribute APublicVisibility::_location */
+/* 4: Attribute APublicVisibility::_first_location */
+/* 5: Attribute APublicVisibility::_last_location */
+/* 6: Attribute APublicVisibility::_n_annotations */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___APublicVisibility[] = "init var of APublicVisibility";
+void INIT_ATTRIBUTES__parser___parser_nodes___APublicVisibility(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__parser___parser_nodes___APublicVisibility;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___APublicVisibility(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___APublicVisibility;
+  obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
-  array->size = length;
-  return OBJ2VAL(array);
+  return OBJ2VAL(obj);
 }
-const classtable_elt_t VFT_standard___collection___sorter___AbstractSorter[54] = {
-  {(bigint) 299 /* 0: Identity */},
-  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AbstractSorter" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AbstractSorter < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AbstractSorter < AbstractSorter: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+static const char LOCATE_CHECKNEW_parser___parser_nodes___APublicVisibility[] = "check new APublicVisibility";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___APublicVisibility;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_APublicVisibility_parser___parser_prod___APublicVisibility___empty_init[] = "new APublicVisibility parser_prod::APublicVisibility::empty_init";
+val_t NEW_APublicVisibility_parser___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 = 386;
+  fra.me.meth = LOCATE_NEW_APublicVisibility_parser___parser_prod___APublicVisibility___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:386 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___APublicVisibility();
+  INIT_ATTRIBUTES__parser___parser_nodes___APublicVisibility(fra.me.REG[0]);
+  parser___parser_prod___APublicVisibility___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___APublicVisibility(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_APublicVisibility_parser___parser_prod___APublicVisibility___init_apublicvisibility[] = "new APublicVisibility parser_prod::APublicVisibility::init_apublicvisibility";
+val_t NEW_APublicVisibility_parser___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 = 388;
+  fra.me.meth = LOCATE_NEW_APublicVisibility_parser___parser_prod___APublicVisibility___init_apublicvisibility;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:388 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___APublicVisibility();
+  INIT_ATTRIBUTES__parser___parser_nodes___APublicVisibility(fra.me.REG[0]);
+  parser___parser_prod___APublicVisibility___init_apublicvisibility(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___APublicVisibility(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_APublicVisibility_parser___parser_nodes___ANode___init[] = "new APublicVisibility parser_nodes::ANode::init";
+val_t NEW_APublicVisibility_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_APublicVisibility_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___APublicVisibility();
+  INIT_ATTRIBUTES__parser___parser_nodes___APublicVisibility(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___APublicVisibility(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___APrivateVisibility[81] = {
+  {(bigint) 4359 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "APrivateVisibility" /* 2: Class Name */},
+  {(bigint) 3 /* 3: APrivateVisibility < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: APrivateVisibility < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: APrivateVisibility < Prod: superclass typecheck marker */},
+  {(bigint) 3731 /* 6: APrivateVisibility < AVisibility: superclass typecheck marker */},
+  {(bigint) 4359 /* 7: APrivateVisibility < APrivateVisibility: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -20148,7 +52159,7 @@ const classtable_elt_t VFT_standard___collection___sorter___AbstractSorter[54] =
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: AbstractSorter < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: APrivateVisibility < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -20164,6 +52175,8 @@ const classtable_elt_t VFT_standard___collection___sorter___AbstractSorter[54] =
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -20177,73 +52190,169 @@ const classtable_elt_t VFT_standard___collection___sorter___AbstractSorter[54] =
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: AbstractSorter < AbstractSorter: superclass init_table position */},
-  {(bigint) standard___collection___sorter___AbstractSorter___compare},
-  {(bigint) standard___collection___sorter___AbstractSorter___sort},
-  {(bigint) standard___collection___sorter___AbstractSorter___sub_sort},
-  {(bigint) standard___collection___sorter___AbstractSorter___quick_sort},
-  {(bigint) standard___collection___sorter___AbstractSorter___bubble_sort},
-  {(bigint) standard___collection___sorter___AbstractSorter___init},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___APrivateVisibility___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___APrivateVisibility___visit_all},
+  {(bigint) 2 /* 63: APrivateVisibility < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: APrivateVisibility < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___mmbuilder___APrivateVisibility___level},
+  {(bigint) 0 /* 76: APrivateVisibility < AVisibility: superclass init_table position */},
+  {(bigint) parser___parser_prod___APrivateVisibility___empty_init},
+  {(bigint) parser___parser_prod___APrivateVisibility___init_aprivatevisibility},
+  {(bigint) 4 /* 79: APrivateVisibility < APrivateVisibility: superclass init_table position */},
+  {(bigint) parser___parser_nodes___APrivateVisibility___n_kwprivate},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-void INIT_ATTRIBUTES__standard___collection___sorter___AbstractSorter(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute APrivateVisibility::_parent */
+/* 3: Attribute APrivateVisibility::_location */
+/* 4: Attribute APrivateVisibility::_first_location */
+/* 5: Attribute APrivateVisibility::_last_location */
+/* 6: Attribute APrivateVisibility::_n_annotations */
+/* 7: Attribute APrivateVisibility::_n_kwprivate */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___APrivateVisibility[] = "init var of APrivateVisibility";
+void INIT_ATTRIBUTES__parser___parser_nodes___APrivateVisibility(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__standard___collection___sorter___AbstractSorter;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___APrivateVisibility;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___collection___sorter___AbstractSorter(void)
+val_t NEW_parser___parser_nodes___APrivateVisibility(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 2);
-  obj->vft = (classtable_elt_t*)VFT_standard___collection___sorter___AbstractSorter;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___APrivateVisibility;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___collection___sorter___AbstractSorter(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___APrivateVisibility[] = "check new APrivateVisibility";
+void CHECKNEW_parser___parser_nodes___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_standard___collection___sorter___AbstractSorter;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___APrivateVisibility;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___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;
 }
-val_t NEW_AbstractSorter_standard___collection___sorter___AbstractSorter___init(void){
+static const char LOCATE_NEW_APrivateVisibility_parser___parser_prod___APrivateVisibility___empty_init[] = "new APrivateVisibility parser_prod::APrivateVisibility::empty_init";
+val_t NEW_APrivateVisibility_parser___parser_prod___APrivateVisibility___empty_init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[2] = {0, 0};
+  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_AbstractSorter_standard___collection___sorter___AbstractSorter___init;
+  fra.me.line = 402;
+  fra.me.meth = LOCATE_NEW_APrivateVisibility_parser___parser_prod___APrivateVisibility___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = NEW_standard___collection___sorter___AbstractSorter();
-  INIT_ATTRIBUTES__standard___collection___sorter___AbstractSorter(fra.me.REG[0]);
-  standard___collection___sorter___AbstractSorter___init(fra.me.REG[0], init_table);
-  CHECKNEW_standard___collection___sorter___AbstractSorter(fra.me.REG[0]);
+  /* parser/parser_prod.nit:402 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___APrivateVisibility();
+  INIT_ATTRIBUTES__parser___parser_nodes___APrivateVisibility(fra.me.REG[0]);
+  parser___parser_prod___APrivateVisibility___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___APrivateVisibility(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___collection___sorter___ComparableSorter[56] = {
-  {(bigint) 2335 /* 0: Identity */},
-  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ComparableSorter" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ComparableSorter < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ComparableSorter < AbstractSorter: superclass typecheck marker */},
-  {(bigint) 2335 /* 5: ComparableSorter < ComparableSorter: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+static const char LOCATE_NEW_APrivateVisibility_parser___parser_prod___APrivateVisibility___init_aprivatevisibility[] = "new APrivateVisibility parser_prod::APrivateVisibility::init_aprivatevisibility";
+val_t NEW_APrivateVisibility_parser___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 = 404;
+  fra.me.meth = LOCATE_NEW_APrivateVisibility_parser___parser_prod___APrivateVisibility___init_aprivatevisibility;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_prod.nit:404 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___APrivateVisibility();
+  INIT_ATTRIBUTES__parser___parser_nodes___APrivateVisibility(fra.me.REG[1]);
+  parser___parser_prod___APrivateVisibility___init_aprivatevisibility(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___APrivateVisibility(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_APrivateVisibility_parser___parser_nodes___ANode___init[] = "new APrivateVisibility parser_nodes::ANode::init";
+val_t NEW_APrivateVisibility_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_APrivateVisibility_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___APrivateVisibility();
+  INIT_ATTRIBUTES__parser___parser_nodes___APrivateVisibility(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___APrivateVisibility(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___AProtectedVisibility[81] = {
+  {(bigint) 4351 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AProtectedVisibility" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AProtectedVisibility < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AProtectedVisibility < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AProtectedVisibility < Prod: superclass typecheck marker */},
+  {(bigint) 3731 /* 6: AProtectedVisibility < AVisibility: superclass typecheck marker */},
+  {(bigint) 4351 /* 7: AProtectedVisibility < AProtectedVisibility: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -20255,7 +52364,7 @@ const classtable_elt_t VFT_standard___collection___sorter___ComparableSorter[56]
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: ComparableSorter < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: AProtectedVisibility < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -20271,6 +52380,8 @@ const classtable_elt_t VFT_standard___collection___sorter___ComparableSorter[56]
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -20284,77 +52395,170 @@ const classtable_elt_t VFT_standard___collection___sorter___ComparableSorter[56]
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: ComparableSorter < AbstractSorter: superclass init_table position */},
-  {(bigint) standard___collection___sorter___ComparableSorter___compare},
-  {(bigint) standard___collection___sorter___AbstractSorter___sort},
-  {(bigint) standard___collection___sorter___AbstractSorter___sub_sort},
-  {(bigint) standard___collection___sorter___AbstractSorter___quick_sort},
-  {(bigint) standard___collection___sorter___AbstractSorter___bubble_sort},
-  {(bigint) standard___collection___sorter___AbstractSorter___init},
-  {(bigint) 2 /* 54: ComparableSorter < ComparableSorter: superclass init_table position */},
-  {(bigint) standard___collection___sorter___ComparableSorter___init},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___AProtectedVisibility___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AProtectedVisibility___visit_all},
+  {(bigint) 2 /* 63: AProtectedVisibility < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: AProtectedVisibility < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___mmbuilder___AProtectedVisibility___level},
+  {(bigint) 0 /* 76: AProtectedVisibility < AVisibility: superclass init_table position */},
+  {(bigint) parser___parser_prod___AProtectedVisibility___empty_init},
+  {(bigint) parser___parser_prod___AProtectedVisibility___init_aprotectedvisibility},
+  {(bigint) 4 /* 79: AProtectedVisibility < AProtectedVisibility: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AProtectedVisibility___n_kwprotected},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-void INIT_ATTRIBUTES__standard___collection___sorter___ComparableSorter(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AProtectedVisibility::_parent */
+/* 3: Attribute AProtectedVisibility::_location */
+/* 4: Attribute AProtectedVisibility::_first_location */
+/* 5: Attribute AProtectedVisibility::_last_location */
+/* 6: Attribute AProtectedVisibility::_n_annotations */
+/* 7: Attribute AProtectedVisibility::_n_kwprotected */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AProtectedVisibility[] = "init var of AProtectedVisibility";
+void INIT_ATTRIBUTES__parser___parser_nodes___AProtectedVisibility(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__standard___collection___sorter___ComparableSorter;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AProtectedVisibility;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___collection___sorter___ComparableSorter(void)
+val_t NEW_parser___parser_nodes___AProtectedVisibility(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 2);
-  obj->vft = (classtable_elt_t*)VFT_standard___collection___sorter___ComparableSorter;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AProtectedVisibility;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___collection___sorter___ComparableSorter(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AProtectedVisibility[] = "check new AProtectedVisibility";
+void CHECKNEW_parser___parser_nodes___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_standard___collection___sorter___ComparableSorter;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AProtectedVisibility;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___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;
 }
-val_t NEW_ComparableSorter_standard___collection___sorter___ComparableSorter___init(void){
+static const char LOCATE_NEW_AProtectedVisibility_parser___parser_prod___AProtectedVisibility___empty_init[] = "new AProtectedVisibility parser_prod::AProtectedVisibility::empty_init";
+val_t NEW_AProtectedVisibility_parser___parser_prod___AProtectedVisibility___empty_init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[3] = {0, 0, 0};
+  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 = 96;
-  fra.me.meth = LOCATE_NEW_ComparableSorter_standard___collection___sorter___ComparableSorter___init;
+  fra.me.line = 433;
+  fra.me.meth = LOCATE_NEW_AProtectedVisibility_parser___parser_prod___AProtectedVisibility___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./../lib/standard//collection//sorter.nit:96 */
-  fra.me.REG[0] = NEW_standard___collection___sorter___ComparableSorter();
-  INIT_ATTRIBUTES__standard___collection___sorter___ComparableSorter(fra.me.REG[0]);
-  standard___collection___sorter___ComparableSorter___init(fra.me.REG[0], init_table);
-  CHECKNEW_standard___collection___sorter___ComparableSorter(fra.me.REG[0]);
+  /* parser/parser_prod.nit:433 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AProtectedVisibility();
+  INIT_ATTRIBUTES__parser___parser_nodes___AProtectedVisibility(fra.me.REG[0]);
+  parser___parser_prod___AProtectedVisibility___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AProtectedVisibility(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___collection___hash_collection___HashCollection[93] = {
-  {(bigint) 2271 /* 0: Identity */},
-  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "HashCollection" /* 2: Class Name */},
-  {(bigint) 3 /* 3: HashCollection < Object: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 295 /* 5: HashCollection < ArrayCapable: superclass typecheck marker */},
+static const char LOCATE_NEW_AProtectedVisibility_parser___parser_prod___AProtectedVisibility___init_aprotectedvisibility[] = "new AProtectedVisibility parser_prod::AProtectedVisibility::init_aprotectedvisibility";
+val_t NEW_AProtectedVisibility_parser___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 = 435;
+  fra.me.meth = LOCATE_NEW_AProtectedVisibility_parser___parser_prod___AProtectedVisibility___init_aprotectedvisibility;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_prod.nit:435 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___AProtectedVisibility();
+  INIT_ATTRIBUTES__parser___parser_nodes___AProtectedVisibility(fra.me.REG[1]);
+  parser___parser_prod___AProtectedVisibility___init_aprotectedvisibility(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AProtectedVisibility(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_AProtectedVisibility_parser___parser_nodes___ANode___init[] = "new AProtectedVisibility parser_nodes::ANode::init";
+val_t NEW_AProtectedVisibility_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AProtectedVisibility_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AProtectedVisibility();
+  INIT_ATTRIBUTES__parser___parser_nodes___AProtectedVisibility(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AProtectedVisibility(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___AIntrudeVisibility[81] = {
+  {(bigint) 4443 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AIntrudeVisibility" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AIntrudeVisibility < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AIntrudeVisibility < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AIntrudeVisibility < Prod: superclass typecheck marker */},
+  {(bigint) 3731 /* 6: AIntrudeVisibility < AVisibility: superclass typecheck marker */},
+  {(bigint) 4443 /* 7: AIntrudeVisibility < AIntrudeVisibility: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 2271 /* 7: HashCollection < HashCollection: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -20365,7 +52569,7 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashCollect
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: HashCollection < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: AIntrudeVisibility < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -20381,6 +52585,8 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashCollect
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -20394,157 +52600,169 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashCollect
   {(bigint) standard___math___Object___srand},
   {(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) 0 /* 56: HashCollection < ArrayCapable: superclass init_table position */},
-  {(bigint) standard___collection___array___ArrayCapable___calloc_array},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 2 /* 83: HashCollection < HashCollection: superclass init_table position */},
-  {(bigint) standard___collection___hash_collection___HashCollection___first_item},
-  {(bigint) standard___collection___hash_collection___HashCollection___index_at},
-  {(bigint) standard___collection___hash_collection___HashCollection___node_at},
-  {(bigint) standard___collection___hash_collection___HashCollection___node_at_idx},
-  {(bigint) standard___collection___hash_collection___HashCollection___store},
-  {(bigint) standard___collection___hash_collection___HashCollection___remove_node},
-  {(bigint) standard___collection___hash_collection___HashCollection___raz},
-  {(bigint) standard___collection___hash_collection___HashCollection___enlarge},
-  {(bigint) standard___collection___hash_collection___HashCollection___init},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___AIntrudeVisibility___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AIntrudeVisibility___visit_all},
+  {(bigint) 2 /* 63: AIntrudeVisibility < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: AIntrudeVisibility < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___mmbuilder___AIntrudeVisibility___level},
+  {(bigint) 0 /* 76: AIntrudeVisibility < AVisibility: superclass init_table position */},
+  {(bigint) parser___parser_prod___AIntrudeVisibility___empty_init},
+  {(bigint) parser___parser_prod___AIntrudeVisibility___init_aintrudevisibility},
+  {(bigint) 4 /* 79: AIntrudeVisibility < AIntrudeVisibility: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AIntrudeVisibility___n_kwintrude},
 };
 /* 0: Pointer to the classtable */
 /* 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__standard___collection___hash_collection___HashCollection(val_t p0){
+/* 2: Attribute AIntrudeVisibility::_parent */
+/* 3: Attribute AIntrudeVisibility::_location */
+/* 4: Attribute AIntrudeVisibility::_first_location */
+/* 5: Attribute AIntrudeVisibility::_last_location */
+/* 6: Attribute AIntrudeVisibility::_n_annotations */
+/* 7: Attribute AIntrudeVisibility::_n_kwintrude */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AIntrudeVisibility[] = "init var of AIntrudeVisibility";
+void INIT_ATTRIBUTES__parser___parser_nodes___AIntrudeVisibility(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__standard___collection___hash_collection___HashCollection;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AIntrudeVisibility;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   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_standard___collection___hash_collection___HashCollection____array(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//collection//hash_collection.nit:24 */
-  REGB0 = TAG_Int(0);
-  ATTR_standard___collection___hash_collection___HashCollection____capacity(fra.me.REG[0]) = REGB0;
-  /* ./../lib/standard//collection//hash_collection.nit:25 */
-  REGB0 = TAG_Int(0);
-  ATTR_standard___collection___hash_collection___HashCollection____length(fra.me.REG[0]) = REGB0;
-  /* ./../lib/standard//collection//hash_collection.nit:27 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_standard___collection___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_standard___collection___hash_collection___HashCollection____last_item(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//collection//hash_collection.nit:30 */
+  /* parser/parser_nodes.nit:56 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_standard___collection___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_standard___collection___hash_collection___HashCollection____last_accessed_node(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___collection___hash_collection___HashCollection(void)
+val_t NEW_parser___parser_nodes___AIntrudeVisibility(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 9);
-  obj->vft = (classtable_elt_t*)VFT_standard___collection___hash_collection___HashCollection;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AIntrudeVisibility;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___collection___hash_collection___HashCollection(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AIntrudeVisibility[] = "check new AIntrudeVisibility";
+void CHECKNEW_parser___parser_nodes___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_standard___collection___hash_collection___HashCollection;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AIntrudeVisibility;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_standard___collection___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_standard___collection___hash_collection___HashCollection____length(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AIntrudeVisibility____n_kwintrude(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_kwintrude", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_HashCollection_standard___collection___hash_collection___HashCollection___init(void){
+static const char LOCATE_NEW_AIntrudeVisibility_parser___parser_prod___AIntrudeVisibility___empty_init[] = "new AIntrudeVisibility parser_prod::AIntrudeVisibility::empty_init";
+val_t NEW_AIntrudeVisibility_parser___parser_prod___AIntrudeVisibility___empty_init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[3] = {0, 0, 0};
+  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_HashCollection_standard___collection___hash_collection___HashCollection___init;
+  fra.me.line = 464;
+  fra.me.meth = LOCATE_NEW_AIntrudeVisibility_parser___parser_prod___AIntrudeVisibility___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = NEW_standard___collection___hash_collection___HashCollection();
-  INIT_ATTRIBUTES__standard___collection___hash_collection___HashCollection(fra.me.REG[0]);
-  standard___collection___hash_collection___HashCollection___init(fra.me.REG[0], init_table);
-  CHECKNEW_standard___collection___hash_collection___HashCollection(fra.me.REG[0]);
+  /* parser/parser_prod.nit:464 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AIntrudeVisibility();
+  INIT_ATTRIBUTES__parser___parser_nodes___AIntrudeVisibility(fra.me.REG[0]);
+  parser___parser_prod___AIntrudeVisibility___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AIntrudeVisibility(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___collection___hash_collection___HashNode[55] = {
-  {(bigint) 251 /* 0: Identity */},
-  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "HashNode" /* 2: Class Name */},
-  {(bigint) 3 /* 3: HashNode < Object: superclass typecheck marker */},
-  {(bigint) 251 /* 4: HashNode < HashNode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+static const char LOCATE_NEW_AIntrudeVisibility_parser___parser_prod___AIntrudeVisibility___init_aintrudevisibility[] = "new AIntrudeVisibility parser_prod::AIntrudeVisibility::init_aintrudevisibility";
+val_t NEW_AIntrudeVisibility_parser___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 = 466;
+  fra.me.meth = LOCATE_NEW_AIntrudeVisibility_parser___parser_prod___AIntrudeVisibility___init_aintrudevisibility;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_prod.nit:466 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___AIntrudeVisibility();
+  INIT_ATTRIBUTES__parser___parser_nodes___AIntrudeVisibility(fra.me.REG[1]);
+  parser___parser_prod___AIntrudeVisibility___init_aintrudevisibility(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AIntrudeVisibility(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_AIntrudeVisibility_parser___parser_nodes___ANode___init[] = "new AIntrudeVisibility parser_nodes::ANode::init";
+val_t NEW_AIntrudeVisibility_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AIntrudeVisibility_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AIntrudeVisibility();
+  INIT_ATTRIBUTES__parser___parser_nodes___AIntrudeVisibility(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AIntrudeVisibility(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___AStdClassdef[104] = {
+  {(bigint) 4303 /* 0: Identity */},
+  {(bigint) 19 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AStdClassdef" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AStdClassdef < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AStdClassdef < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AStdClassdef < Prod: superclass typecheck marker */},
+  {(bigint) 3831 /* 6: AStdClassdef < AClassdef: superclass typecheck marker */},
+  {(bigint) 4303 /* 7: AStdClassdef < AStdClassdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -20556,7 +52774,7 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashNode[55
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: HashNode < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: AStdClassdef < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -20572,6 +52790,8 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashNode[55
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -20585,107 +52805,274 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashNode[55
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: HashNode < HashNode: superclass init_table position */},
-  {(bigint) 251 /* 48: VT HashNode::N : id of HashNode */},
-  {(bigint) 4 /* 49: VT HashNode::N : color of HashNode */},
-  {(bigint) standard___collection___hash_collection___HashNode___next_item},
-  {(bigint) standard___collection___hash_collection___HashNode___next_item__eq},
-  {(bigint) standard___collection___hash_collection___HashNode___prev_item},
-  {(bigint) standard___collection___hash_collection___HashNode___prev_item__eq},
-  {(bigint) standard___collection___hash_collection___HashNode___init},
+  {(bigint) syntax___mmbuilder___AClassdef___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AStdClassdef___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___AStdClassdef___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___extern_inline___AStdClassdef___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AClassdef___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___AStdClassdef___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AStdClassdef___visit_all},
+  {(bigint) 2 /* 63: AStdClassdef < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___AStdClassdef___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___AClassdef___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: AStdClassdef < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___mmbuilder___AStdClassdef___name},
+  {(bigint) syntax___mmbuilder___AStdClassdef___arity},
+  {(bigint) syntax___mmbuilder___AStdClassdef___visibility_level},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AClassdef___build_class_introduction},
+  {(bigint) syntax___mmbuilder___AClassdef___build_class_refinement},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) syntax___mmbuilder___AClassdef___local_class},
+  {(bigint) syntax___syntax_base___AClassdef___next_node},
+  {(bigint) syntax___syntax_base___AClassdef___next_node__eq},
+  {(bigint) 0 /* 86: AStdClassdef < AClassdef: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AClassdef___n_propdefs},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___AClassdef___accept_class_verifier},
+  {(bigint) parser___parser_prod___AStdClassdef___empty_init},
+  {(bigint) parser___parser_prod___AStdClassdef___init_astdclassdef},
+  {(bigint) 4 /* 94: AStdClassdef < AStdClassdef: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AStdClassdef___n_doc},
+  {(bigint) parser___parser_nodes___AStdClassdef___n_kwredef},
+  {(bigint) parser___parser_nodes___AStdClassdef___n_visibility},
+  {(bigint) parser___parser_nodes___AStdClassdef___n_classkind},
+  {(bigint) parser___parser_nodes___AStdClassdef___n_id},
+  {(bigint) parser___parser_nodes___AStdClassdef___n_formaldefs},
+  {(bigint) parser___parser_nodes___AStdClassdef___n_extern_code_block},
+  {(bigint) parser___parser_nodes___AStdClassdef___n_superclasses},
+  {(bigint) parser___parser_nodes___AStdClassdef___n_kwend},
 };
 /* 0: Pointer to the classtable */
 /* 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__standard___collection___hash_collection___HashNode(val_t p0){
+/* 2: Attribute AStdClassdef::_parent */
+/* 3: Attribute AStdClassdef::_location */
+/* 4: Attribute AStdClassdef::_first_location */
+/* 5: Attribute AStdClassdef::_last_location */
+/* 6: Attribute AStdClassdef::_n_annotations */
+/* 7: Attribute AStdClassdef::_local_class */
+/* 8: Attribute AStdClassdef::_next_node */
+/* 9: Attribute AStdClassdef::_n_propdefs */
+/* 10: Attribute AStdClassdef::_n_doc */
+/* 11: Attribute AStdClassdef::_n_kwredef */
+/* 12: Attribute AStdClassdef::_n_visibility */
+/* 13: Attribute AStdClassdef::_n_classkind */
+/* 14: Attribute AStdClassdef::_n_id */
+/* 15: Attribute AStdClassdef::_n_formaldefs */
+/* 16: Attribute AStdClassdef::_n_extern_code_block */
+/* 17: Attribute AStdClassdef::_n_superclasses */
+/* 18: Attribute AStdClassdef::_n_kwend */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AStdClassdef[] = "init var of AStdClassdef";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__standard___collection___hash_collection___HashNode;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AStdClassdef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//hash_collection.nit:192 */
+  /* parser/parser_nodes.nit:56 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_standard___collection___hash_collection___HashNode____next_item(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//collection//hash_collection.nit:193 */
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:442 */
+  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  ATTR_parser___parser_nodes___AClassdef____n_propdefs(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/syntax_base.nit:533 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_standard___collection___hash_collection___HashNode____prev_item(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//collection//hash_collection.nit:194 */
+  ATTR_syntax___syntax_base___AClassdef____next_node(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:446 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_standard___collection___hash_collection___HashNode____prev_in_bucklet(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//collection//hash_collection.nit:195 */
+  ATTR_parser___parser_nodes___AStdClassdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:447 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_standard___collection___hash_collection___HashNode____next_in_bucklet(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AStdClassdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:450 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AStdClassdef____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:451 */
+  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  ATTR_parser___parser_nodes___AStdClassdef____n_formaldefs(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:452 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AStdClassdef____n_extern_code_block(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:453 */
+  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  ATTR_parser___parser_nodes___AStdClassdef____n_superclasses(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___collection___hash_collection___HashNode(void)
+val_t NEW_parser___parser_nodes___AStdClassdef(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_standard___collection___hash_collection___HashNode;
+  obj = alloc(sizeof(val_t) * 19);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AStdClassdef;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___collection___hash_collection___HashNode(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AStdClassdef[] = "check new AStdClassdef";
+void CHECKNEW_parser___parser_nodes___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_standard___collection___hash_collection___HashNode;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AStdClassdef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_standard___collection___hash_collection___HashNode____key(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AClassdef____n_propdefs(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_key", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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___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___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___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___parser_nodes___AStdClassdef____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;
 }
-val_t NEW_HashNode_standard___collection___hash_collection___HashNode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AStdClassdef_parser___parser_prod___AStdClassdef___empty_init[] = "new AStdClassdef parser_prod::AStdClassdef::empty_init";
+val_t NEW_AStdClassdef_parser___parser_prod___AStdClassdef___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[2] = {0, 0};
+  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 = 196;
-  fra.me.meth = LOCATE_NEW_HashNode_standard___collection___hash_collection___HashNode___init;
+  fra.me.line = 495;
+  fra.me.meth = LOCATE_NEW_AStdClassdef_parser___parser_prod___AStdClassdef___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:495 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AStdClassdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___AStdClassdef(fra.me.REG[0]);
+  parser___parser_prod___AStdClassdef___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AStdClassdef(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef[] = "new AStdClassdef parser_prod::AStdClassdef::init_astdclassdef";
+val_t NEW_AStdClassdef_parser___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, val_t p8, val_t p9, val_t p10){
+  struct {struct stack_frame_t me; val_t MORE_REG[11];} 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 = 497;
+  fra.me.meth = LOCATE_NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 12;
+  fra.me.nitni_local_ref_head = NULL;
   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[11] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//hash_collection.nit:196 */
-  fra.me.REG[1] = NEW_standard___collection___hash_collection___HashNode();
-  INIT_ATTRIBUTES__standard___collection___hash_collection___HashNode(fra.me.REG[1]);
-  standard___collection___hash_collection___HashNode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_standard___collection___hash_collection___HashNode(fra.me.REG[1]);
+  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;
+  fra.me.REG[10] = p10;
+  /* parser/parser_prod.nit:497 */
+  fra.me.REG[11] = NEW_parser___parser_nodes___AStdClassdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___AStdClassdef(fra.me.REG[11]);
+  parser___parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[11], 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], fra.me.REG[10], init_table);
+  CHECKNEW_parser___parser_nodes___AStdClassdef(fra.me.REG[11]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[11];
 }
-const classtable_elt_t VFT_standard___collection___hash_collection___HashMap[93] = {
-  {(bigint) 2971 /* 0: Identity */},
-  {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "HashMap" /* 2: Class Name */},
-  {(bigint) 3 /* 3: HashMap < Object: superclass typecheck marker */},
-  {(bigint) 135 /* 4: HashMap < MapRead: superclass typecheck marker */},
-  {(bigint) 295 /* 5: HashMap < ArrayCapable: superclass typecheck marker */},
-  {(bigint) 2139 /* 6: HashMap < Map: superclass typecheck marker */},
-  {(bigint) 2271 /* 7: HashMap < HashCollection: superclass typecheck marker */},
-  {(bigint) 2971 /* 8: HashMap < HashMap: superclass typecheck marker */},
+static const char LOCATE_NEW_AStdClassdef_parser___parser_nodes___ANode___init[] = "new AStdClassdef parser_nodes::ANode::init";
+val_t NEW_AStdClassdef_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AStdClassdef_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AStdClassdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___AStdClassdef(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AStdClassdef(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___ATopClassdef[92] = {
+  {(bigint) 4283 /* 0: Identity */},
+  {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ATopClassdef" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ATopClassdef < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: ATopClassdef < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: ATopClassdef < Prod: superclass typecheck marker */},
+  {(bigint) 3831 /* 6: ATopClassdef < AClassdef: superclass typecheck marker */},
+  {(bigint) 4283 /* 7: ATopClassdef < ATopClassdef: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -20695,7 +53082,7 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashMap[93]
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: HashMap < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: ATopClassdef < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -20711,6 +53098,8 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashMap[93]
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -20724,181 +53113,191 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashMap[93]
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: HashMap < MapRead: superclass init_table position */},
-  {(bigint) standard___collection___hash_collection___HashMap_____bra},
-  {(bigint) standard___collection___abstract_collection___MapRead___has_key},
-  {(bigint) standard___collection___hash_collection___HashMap___iterator},
-  {(bigint) standard___collection___hash_collection___HashMap___iterate},
-  {(bigint) standard___collection___hash_collection___HashMap___values},
-  {(bigint) standard___collection___hash_collection___HashMap___keys},
-  {(bigint) standard___collection___hash_collection___HashMap___is_empty},
-  {(bigint) standard___collection___hash_collection___HashMap___length},
-  {(bigint) 3 /* 56: HashMap < ArrayCapable: superclass init_table position */},
-  {(bigint) standard___collection___array___ArrayCapable___calloc_array},
-  {(bigint) standard___string___Map___join},
-  {(bigint) 0 /* 59: HashMap < Map: superclass init_table position */},
-  {(bigint) standard___collection___hash_collection___HashMap_____braeq},
-  {(bigint) standard___collection___abstract_collection___Map___recover_with},
-  {(bigint) standard___collection___hash_collection___HashMap___clear},
-  {(bigint) 5 /* 63: HashMap < HashMap: superclass init_table position */},
-  {(bigint) standard___collection___hash_collection___HashMap___init},
-  {(bigint) standard___collection___hash_collection___HashMap___keys__eq},
-  {(bigint) standard___collection___hash_collection___HashMap___values__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 :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 4 /* 83: HashMap < HashCollection: superclass init_table position */},
-  {(bigint) standard___collection___hash_collection___HashCollection___first_item},
-  {(bigint) standard___collection___hash_collection___HashCollection___index_at},
-  {(bigint) standard___collection___hash_collection___HashCollection___node_at},
-  {(bigint) standard___collection___hash_collection___HashCollection___node_at_idx},
-  {(bigint) standard___collection___hash_collection___HashCollection___store},
-  {(bigint) standard___collection___hash_collection___HashCollection___remove_node},
-  {(bigint) standard___collection___hash_collection___HashCollection___raz},
-  {(bigint) standard___collection___hash_collection___HashCollection___enlarge},
-  {(bigint) standard___collection___hash_collection___HashCollection___init},
+  {(bigint) syntax___mmbuilder___AClassdef___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___AClassdef___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AClassdef___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___ATopClassdef___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___ATopClassdef___visit_all},
+  {(bigint) 2 /* 63: ATopClassdef < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___AClassdef___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: ATopClassdef < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___mmbuilder___ATopClassdef___name},
+  {(bigint) syntax___mmbuilder___AClassdef___arity},
+  {(bigint) syntax___mmbuilder___AClassdef___visibility_level},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AClassdef___build_class_introduction},
+  {(bigint) syntax___mmbuilder___AClassdef___build_class_refinement},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) syntax___mmbuilder___AClassdef___local_class},
+  {(bigint) syntax___syntax_base___AClassdef___next_node},
+  {(bigint) syntax___syntax_base___AClassdef___next_node__eq},
+  {(bigint) 0 /* 86: ATopClassdef < AClassdef: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AClassdef___n_propdefs},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) parser___parser_prod___ATopClassdef___empty_init},
+  {(bigint) parser___parser_prod___ATopClassdef___init_atopclassdef},
+  {(bigint) 4 /* 91: ATopClassdef < ATopClassdef: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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 */
-/* 9: Attribute HashMap::@keys */
-/* 10: Attribute HashMap::@values */
-void INIT_ATTRIBUTES__standard___collection___hash_collection___HashMap(val_t p0){
+/* 2: Attribute ATopClassdef::_parent */
+/* 3: Attribute ATopClassdef::_location */
+/* 4: Attribute ATopClassdef::_first_location */
+/* 5: Attribute ATopClassdef::_last_location */
+/* 6: Attribute ATopClassdef::_n_annotations */
+/* 7: Attribute ATopClassdef::_local_class */
+/* 8: Attribute ATopClassdef::_next_node */
+/* 9: Attribute ATopClassdef::_n_propdefs */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ATopClassdef[] = "init var of ATopClassdef";
+void INIT_ATTRIBUTES__parser___parser_nodes___ATopClassdef(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__standard___collection___hash_collection___HashMap;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ATopClassdef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//hash_collection.nit:255 */
-  fra.me.REG[1] = fra.me.REG[0];
-  fra.me.REG[1] = NEW_HashMapKeys_standard___collection___hash_collection___HashMapKeys___init(fra.me.REG[1]);
-  ATTR_standard___collection___hash_collection___HashMap_____atkeys(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//collection//hash_collection.nit:256 */
-  fra.me.REG[1] = fra.me.REG[0];
-  fra.me.REG[1] = NEW_HashMapValues_standard___collection___hash_collection___HashMapValues___init(fra.me.REG[1]);
-  ATTR_standard___collection___hash_collection___HashMap_____atvalues(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//collection//hash_collection.nit:23 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_standard___collection___hash_collection___HashCollection____array(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//collection//hash_collection.nit:24 */
-  REGB0 = TAG_Int(0);
-  ATTR_standard___collection___hash_collection___HashCollection____capacity(fra.me.REG[0]) = REGB0;
-  /* ./../lib/standard//collection//hash_collection.nit:25 */
-  REGB0 = TAG_Int(0);
-  ATTR_standard___collection___hash_collection___HashCollection____length(fra.me.REG[0]) = REGB0;
-  /* ./../lib/standard//collection//hash_collection.nit:27 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_standard___collection___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_standard___collection___hash_collection___HashCollection____last_item(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//collection//hash_collection.nit:30 */
+  /* parser/parser_nodes.nit:56 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_standard___collection___hash_collection___HashCollection____last_accessed_key(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//collection//hash_collection.nit:33 */
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:442 */
+  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  ATTR_parser___parser_nodes___AClassdef____n_propdefs(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/syntax_base.nit:533 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_standard___collection___hash_collection___HashCollection____last_accessed_node(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_syntax___syntax_base___AClassdef____next_node(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___collection___hash_collection___HashMap(void)
+val_t NEW_parser___parser_nodes___ATopClassdef(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 11);
-  obj->vft = (classtable_elt_t*)VFT_standard___collection___hash_collection___HashMap;
+  obj = alloc(sizeof(val_t) * 10);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ATopClassdef;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___collection___hash_collection___HashMap(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___ATopClassdef[] = "check new ATopClassdef";
+void CHECKNEW_parser___parser_nodes___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_standard___collection___hash_collection___HashMap;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___ATopClassdef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_standard___collection___hash_collection___HashMap_____atkeys(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "@keys", LOCATE_nitc, 0);
-  }
-  REGB0 = TAG_Bool(ATTR_standard___collection___hash_collection___HashMap_____atvalues(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "@values", LOCATE_nitc, 0);
-  }
-  REGB0 = TAG_Bool(ATTR_standard___collection___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_standard___collection___hash_collection___HashCollection____length(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AClassdef____n_propdefs(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_HashMap_standard___collection___hash_collection___HashMap___init(void){
+static const char LOCATE_NEW_ATopClassdef_parser___parser_prod___ATopClassdef___empty_init[] = "new ATopClassdef parser_prod::ATopClassdef::empty_init";
+val_t NEW_ATopClassdef_parser___parser_prod___ATopClassdef___empty_init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  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 = 248;
-  fra.me.meth = LOCATE_NEW_HashMap_standard___collection___hash_collection___HashMap___init;
+  fra.me.line = 707;
+  fra.me.meth = LOCATE_NEW_ATopClassdef_parser___parser_prod___ATopClassdef___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./../lib/standard//collection//hash_collection.nit:248 */
-  fra.me.REG[0] = NEW_standard___collection___hash_collection___HashMap();
-  INIT_ATTRIBUTES__standard___collection___hash_collection___HashMap(fra.me.REG[0]);
-  standard___collection___hash_collection___HashMap___init(fra.me.REG[0], init_table);
-  CHECKNEW_standard___collection___hash_collection___HashMap(fra.me.REG[0]);
+  /* parser/parser_prod.nit:707 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ATopClassdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___ATopClassdef(fra.me.REG[0]);
+  parser___parser_prod___ATopClassdef___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ATopClassdef(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___collection___hash_collection___HashMapKeys[87] = {
-  {(bigint) 2967 /* 0: Identity */},
-  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "HashMapKeys" /* 2: Class Name */},
-  {(bigint) 3 /* 3: HashMapKeys < Object: superclass typecheck marker */},
+static const char LOCATE_NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef[] = "new ATopClassdef parser_prod::ATopClassdef::init_atopclassdef";
+val_t NEW_ATopClassdef_parser___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 = 709;
+  fra.me.meth = LOCATE_NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_prod.nit:709 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___ATopClassdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___ATopClassdef(fra.me.REG[1]);
+  parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ATopClassdef(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_ATopClassdef_parser___parser_nodes___ANode___init[] = "new ATopClassdef parser_nodes::ANode::init";
+val_t NEW_ATopClassdef_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_ATopClassdef_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ATopClassdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___ATopClassdef(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ATopClassdef(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___AMainClassdef[92] = {
+  {(bigint) 4403 /* 0: Identity */},
+  {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AMainClassdef" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AMainClassdef < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AMainClassdef < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AMainClassdef < Prod: superclass typecheck marker */},
+  {(bigint) 3831 /* 6: AMainClassdef < AClassdef: superclass typecheck marker */},
+  {(bigint) 4403 /* 7: AMainClassdef < AMainClassdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 283 /* 6: HashMapKeys < Collection: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 367 /* 8: HashMapKeys < RemovableCollection: superclass typecheck marker */},
-  {(bigint) 2967 /* 9: HashMapKeys < HashMapKeys: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -20907,7 +53306,7 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashMapKeys
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: HashMapKeys < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: AMainClassdef < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -20923,7 +53322,9 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashMapKeys
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Collection___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -20936,120 +53337,191 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashMapKeys
   {(bigint) standard___math___Object___srand},
   {(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 :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) standard___string___Collection___join},
-  {(bigint) standard___collection___array___Collection___to_a},
-  {(bigint) 1 /* 65: HashMapKeys < Collection: superclass init_table position */},
-  {(bigint) standard___collection___hash_collection___HashMapKeys___iterator},
-  {(bigint) standard___collection___abstract_collection___Collection___iterate},
-  {(bigint) standard___collection___hash_collection___HashMapKeys___is_empty},
-  {(bigint) standard___collection___hash_collection___HashMapKeys___length},
-  {(bigint) standard___collection___hash_collection___HashMapKeys___has},
-  {(bigint) standard___collection___hash_collection___HashMapKeys___has_only},
-  {(bigint) standard___collection___hash_collection___HashMapKeys___count},
-  {(bigint) standard___collection___hash_collection___HashMapKeys___first},
-  {(bigint) standard___math___Collection___rand},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 0 /* 79: HashMapKeys < RemovableCollection: superclass init_table position */},
-  {(bigint) standard___collection___hash_collection___HashMapKeys___clear},
-  {(bigint) standard___collection___hash_collection___HashMapKeys___remove},
-  {(bigint) standard___collection___hash_collection___HashMapKeys___remove_all},
-  {(bigint) 3 /* 83: HashMapKeys < HashMapKeys: superclass init_table position */},
-  {(bigint) standard___collection___hash_collection___HashMapKeys___map},
-  {(bigint) standard___collection___hash_collection___HashMapKeys___map__eq},
-  {(bigint) standard___collection___hash_collection___HashMapKeys___init},
+  {(bigint) syntax___mmbuilder___AClassdef___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___AClassdef___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AClassdef___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___AMainClassdef___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AMainClassdef___visit_all},
+  {(bigint) 2 /* 63: AMainClassdef < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___AClassdef___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: AMainClassdef < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___mmbuilder___AMainClassdef___name},
+  {(bigint) syntax___mmbuilder___AClassdef___arity},
+  {(bigint) syntax___mmbuilder___AClassdef___visibility_level},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AClassdef___build_class_introduction},
+  {(bigint) syntax___mmbuilder___AClassdef___build_class_refinement},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) syntax___mmbuilder___AClassdef___local_class},
+  {(bigint) syntax___syntax_base___AClassdef___next_node},
+  {(bigint) syntax___syntax_base___AClassdef___next_node__eq},
+  {(bigint) 0 /* 86: AMainClassdef < AClassdef: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AClassdef___n_propdefs},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) parser___parser_prod___AMainClassdef___empty_init},
+  {(bigint) parser___parser_prod___AMainClassdef___init_amainclassdef},
+  {(bigint) 4 /* 91: AMainClassdef < AMainClassdef: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute HashMapKeys::@map */
-void INIT_ATTRIBUTES__standard___collection___hash_collection___HashMapKeys(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AMainClassdef::_parent */
+/* 3: Attribute AMainClassdef::_location */
+/* 4: Attribute AMainClassdef::_first_location */
+/* 5: Attribute AMainClassdef::_last_location */
+/* 6: Attribute AMainClassdef::_n_annotations */
+/* 7: Attribute AMainClassdef::_local_class */
+/* 8: Attribute AMainClassdef::_next_node */
+/* 9: Attribute AMainClassdef::_n_propdefs */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AMainClassdef[] = "init var of AMainClassdef";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__standard___collection___hash_collection___HashMapKeys;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AMainClassdef;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:442 */
+  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  ATTR_parser___parser_nodes___AClassdef____n_propdefs(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/syntax_base.nit:533 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_syntax___syntax_base___AClassdef____next_node(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___collection___hash_collection___HashMapKeys(void)
+val_t NEW_parser___parser_nodes___AMainClassdef(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_standard___collection___hash_collection___HashMapKeys;
+  obj = alloc(sizeof(val_t) * 10);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AMainClassdef;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___collection___hash_collection___HashMapKeys(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AMainClassdef[] = "check new AMainClassdef";
+void CHECKNEW_parser___parser_nodes___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_standard___collection___hash_collection___HashMapKeys;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AMainClassdef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_standard___collection___hash_collection___HashMapKeys_____atmap(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AClassdef____n_propdefs(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "@map", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_HashMapKeys_standard___collection___hash_collection___HashMapKeys___init(val_t p0){
+static const char LOCATE_NEW_AMainClassdef_parser___parser_prod___AMainClassdef___empty_init[] = "new AMainClassdef parser_prod::AMainClassdef::empty_init";
+val_t NEW_AMainClassdef_parser___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 = 745;
+  fra.me.meth = LOCATE_NEW_AMainClassdef_parser___parser_prod___AMainClassdef___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:745 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AMainClassdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___AMainClassdef(fra.me.REG[0]);
+  parser___parser_prod___AMainClassdef___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AMainClassdef(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AMainClassdef_parser___parser_prod___AMainClassdef___init_amainclassdef[] = "new AMainClassdef parser_prod::AMainClassdef::init_amainclassdef";
+val_t NEW_AMainClassdef_parser___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[4] = {0, 0, 0, 0};
+  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_HashMapKeys_standard___collection___hash_collection___HashMapKeys___init;
+  fra.me.line = 747;
+  fra.me.meth = LOCATE_NEW_AMainClassdef_parser___parser_prod___AMainClassdef___init_amainclassdef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_standard___collection___hash_collection___HashMapKeys();
-  INIT_ATTRIBUTES__standard___collection___hash_collection___HashMapKeys(fra.me.REG[1]);
-  standard___collection___hash_collection___HashMapKeys___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_standard___collection___hash_collection___HashMapKeys(fra.me.REG[1]);
+  /* parser/parser_prod.nit:747 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___AMainClassdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___AMainClassdef(fra.me.REG[1]);
+  parser___parser_prod___AMainClassdef___init_amainclassdef(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AMainClassdef(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_standard___collection___hash_collection___HashMapValues[87] = {
-  {(bigint) 2963 /* 0: Identity */},
-  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "HashMapValues" /* 2: Class Name */},
-  {(bigint) 3 /* 3: HashMapValues < Object: superclass typecheck marker */},
+static const char LOCATE_NEW_AMainClassdef_parser___parser_nodes___ANode___init[] = "new AMainClassdef parser_nodes::ANode::init";
+val_t NEW_AMainClassdef_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AMainClassdef_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AMainClassdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___AMainClassdef(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AMainClassdef(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___AConcreteClasskind[84] = {
+  {(bigint) 4515 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AConcreteClasskind" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AConcreteClasskind < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AConcreteClasskind < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AConcreteClasskind < Prod: superclass typecheck marker */},
+  {(bigint) 3827 /* 6: AConcreteClasskind < AClasskind: superclass typecheck marker */},
+  {(bigint) 4515 /* 7: AConcreteClasskind < AConcreteClasskind: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 283 /* 6: HashMapValues < Collection: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 367 /* 8: HashMapValues < RemovableCollection: superclass typecheck marker */},
-  {(bigint) 2963 /* 9: HashMapValues < HashMapValues: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -21058,7 +53530,7 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashMapValu
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: HashMapValues < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: AConcreteClasskind < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -21074,7 +53546,9 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashMapValu
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Collection___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -21087,117 +53561,172 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashMapValu
   {(bigint) standard___math___Object___srand},
   {(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 :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) standard___string___Collection___join},
-  {(bigint) standard___collection___array___Collection___to_a},
-  {(bigint) 1 /* 65: HashMapValues < Collection: superclass init_table position */},
-  {(bigint) standard___collection___hash_collection___HashMapValues___iterator},
-  {(bigint) standard___collection___abstract_collection___Collection___iterate},
-  {(bigint) standard___collection___hash_collection___HashMapValues___is_empty},
-  {(bigint) standard___collection___hash_collection___HashMapValues___length},
-  {(bigint) standard___collection___hash_collection___HashMapValues___has},
-  {(bigint) standard___collection___hash_collection___HashMapValues___has_only},
-  {(bigint) standard___collection___hash_collection___HashMapValues___count},
-  {(bigint) standard___collection___hash_collection___HashMapValues___first},
-  {(bigint) standard___math___Collection___rand},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 0 /* 79: HashMapValues < RemovableCollection: superclass init_table position */},
-  {(bigint) standard___collection___hash_collection___HashMapValues___clear},
-  {(bigint) standard___collection___hash_collection___HashMapValues___remove},
-  {(bigint) standard___collection___hash_collection___HashMapValues___remove_all},
-  {(bigint) 3 /* 83: HashMapValues < HashMapValues: superclass init_table position */},
-  {(bigint) standard___collection___hash_collection___HashMapValues___map},
-  {(bigint) standard___collection___hash_collection___HashMapValues___map__eq},
-  {(bigint) standard___collection___hash_collection___HashMapValues___init},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___AConcreteClasskind___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AConcreteClasskind___visit_all},
+  {(bigint) 2 /* 63: AConcreteClasskind < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: AConcreteClasskind < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___mmbuilder___AClasskind___is_interface},
+  {(bigint) syntax___mmbuilder___AClasskind___is_enum},
+  {(bigint) syntax___mmbuilder___AClasskind___is_abstract},
+  {(bigint) syntax___mmbuilder___AClasskind___is_extern},
+  {(bigint) 0 /* 79: AConcreteClasskind < AClasskind: superclass init_table position */},
+  {(bigint) parser___parser_prod___AConcreteClasskind___empty_init},
+  {(bigint) parser___parser_prod___AConcreteClasskind___init_aconcreteclasskind},
+  {(bigint) 4 /* 82: AConcreteClasskind < AConcreteClasskind: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AConcreteClasskind___n_kwclass},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute HashMapValues::@map */
-void INIT_ATTRIBUTES__standard___collection___hash_collection___HashMapValues(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AConcreteClasskind::_parent */
+/* 3: Attribute AConcreteClasskind::_location */
+/* 4: Attribute AConcreteClasskind::_first_location */
+/* 5: Attribute AConcreteClasskind::_last_location */
+/* 6: Attribute AConcreteClasskind::_n_annotations */
+/* 7: Attribute AConcreteClasskind::_n_kwclass */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AConcreteClasskind[] = "init var of AConcreteClasskind";
+void INIT_ATTRIBUTES__parser___parser_nodes___AConcreteClasskind(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__standard___collection___hash_collection___HashMapValues;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AConcreteClasskind;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___collection___hash_collection___HashMapValues(void)
+val_t NEW_parser___parser_nodes___AConcreteClasskind(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_standard___collection___hash_collection___HashMapValues;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AConcreteClasskind;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___collection___hash_collection___HashMapValues(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AConcreteClasskind[] = "check new AConcreteClasskind";
+void CHECKNEW_parser___parser_nodes___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_standard___collection___hash_collection___HashMapValues;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AConcreteClasskind;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_standard___collection___hash_collection___HashMapValues_____atmap(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AConcreteClasskind____n_kwclass(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "@map", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_kwclass", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_HashMapValues_standard___collection___hash_collection___HashMapValues___init(val_t p0){
+static const char LOCATE_NEW_AConcreteClasskind_parser___parser_prod___AConcreteClasskind___empty_init[] = "new AConcreteClasskind parser_prod::AConcreteClasskind::empty_init";
+val_t NEW_AConcreteClasskind_parser___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 = 783;
+  fra.me.meth = LOCATE_NEW_AConcreteClasskind_parser___parser_prod___AConcreteClasskind___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:783 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AConcreteClasskind();
+  INIT_ATTRIBUTES__parser___parser_nodes___AConcreteClasskind(fra.me.REG[0]);
+  parser___parser_prod___AConcreteClasskind___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AConcreteClasskind(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AConcreteClasskind_parser___parser_prod___AConcreteClasskind___init_aconcreteclasskind[] = "new AConcreteClasskind parser_prod::AConcreteClasskind::init_aconcreteclasskind";
+val_t NEW_AConcreteClasskind_parser___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[4] = {0, 0, 0, 0};
+  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_HashMapValues_standard___collection___hash_collection___HashMapValues___init;
+  fra.me.line = 785;
+  fra.me.meth = LOCATE_NEW_AConcreteClasskind_parser___parser_prod___AConcreteClasskind___init_aconcreteclasskind;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_standard___collection___hash_collection___HashMapValues();
-  INIT_ATTRIBUTES__standard___collection___hash_collection___HashMapValues(fra.me.REG[1]);
-  standard___collection___hash_collection___HashMapValues___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_standard___collection___hash_collection___HashMapValues(fra.me.REG[1]);
+  /* parser/parser_prod.nit:785 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___AConcreteClasskind();
+  INIT_ATTRIBUTES__parser___parser_nodes___AConcreteClasskind(fra.me.REG[1]);
+  parser___parser_prod___AConcreteClasskind___init_aconcreteclasskind(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AConcreteClasskind(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_standard___collection___hash_collection___HashMapNode[57] = {
-  {(bigint) 2263 /* 0: Identity */},
-  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "HashMapNode" /* 2: Class Name */},
-  {(bigint) 3 /* 3: HashMapNode < Object: superclass typecheck marker */},
-  {(bigint) 251 /* 4: HashMapNode < HashNode: superclass typecheck marker */},
-  {(bigint) 2263 /* 5: HashMapNode < HashMapNode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+static const char LOCATE_NEW_AConcreteClasskind_parser___parser_nodes___ANode___init[] = "new AConcreteClasskind parser_nodes::ANode::init";
+val_t NEW_AConcreteClasskind_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AConcreteClasskind_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AConcreteClasskind();
+  INIT_ATTRIBUTES__parser___parser_nodes___AConcreteClasskind(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AConcreteClasskind(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___AAbstractClasskind[85] = {
+  {(bigint) 4587 /* 0: Identity */},
+  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AAbstractClasskind" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AAbstractClasskind < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AAbstractClasskind < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AAbstractClasskind < Prod: superclass typecheck marker */},
+  {(bigint) 3827 /* 6: AAbstractClasskind < AClasskind: superclass typecheck marker */},
+  {(bigint) 4587 /* 7: AAbstractClasskind < AAbstractClasskind: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -21209,7 +53738,7 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashMapNode
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: HashMapNode < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: AAbstractClasskind < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -21225,6 +53754,8 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashMapNode
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -21238,110 +53769,181 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashMapNode
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: HashMapNode < HashNode: superclass init_table position */},
-  {(bigint) 2263 /* 48: VT HashMapNode::N : id of HashMapNode */},
-  {(bigint) 5 /* 49: VT HashMapNode::N : color of HashMapNode */},
-  {(bigint) standard___collection___hash_collection___HashNode___next_item},
-  {(bigint) standard___collection___hash_collection___HashNode___next_item__eq},
-  {(bigint) standard___collection___hash_collection___HashNode___prev_item},
-  {(bigint) standard___collection___hash_collection___HashNode___prev_item__eq},
-  {(bigint) standard___collection___hash_collection___HashNode___init},
-  {(bigint) 2 /* 55: HashMapNode < HashMapNode: superclass init_table position */},
-  {(bigint) standard___collection___hash_collection___HashMapNode___init},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___AAbstractClasskind___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AAbstractClasskind___visit_all},
+  {(bigint) 2 /* 63: AAbstractClasskind < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: AAbstractClasskind < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___mmbuilder___AClasskind___is_interface},
+  {(bigint) syntax___mmbuilder___AClasskind___is_enum},
+  {(bigint) syntax___mmbuilder___AAbstractClasskind___is_abstract},
+  {(bigint) syntax___mmbuilder___AClasskind___is_extern},
+  {(bigint) 0 /* 79: AAbstractClasskind < AClasskind: superclass init_table position */},
+  {(bigint) parser___parser_prod___AAbstractClasskind___empty_init},
+  {(bigint) parser___parser_prod___AAbstractClasskind___init_aabstractclasskind},
+  {(bigint) 4 /* 82: AAbstractClasskind < AAbstractClasskind: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AAbstractClasskind___n_kwabstract},
+  {(bigint) parser___parser_nodes___AAbstractClasskind___n_kwclass},
 };
 /* 0: Pointer to the classtable */
 /* 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__standard___collection___hash_collection___HashMapNode(val_t p0){
+/* 2: Attribute AAbstractClasskind::_parent */
+/* 3: Attribute AAbstractClasskind::_location */
+/* 4: Attribute AAbstractClasskind::_first_location */
+/* 5: Attribute AAbstractClasskind::_last_location */
+/* 6: Attribute AAbstractClasskind::_n_annotations */
+/* 7: Attribute AAbstractClasskind::_n_kwabstract */
+/* 8: Attribute AAbstractClasskind::_n_kwclass */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AAbstractClasskind[] = "init var of AAbstractClasskind";
+void INIT_ATTRIBUTES__parser___parser_nodes___AAbstractClasskind(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__standard___collection___hash_collection___HashMapNode;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AAbstractClasskind;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//hash_collection.nit:192 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_standard___collection___hash_collection___HashNode____next_item(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//collection//hash_collection.nit:193 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_standard___collection___hash_collection___HashNode____prev_item(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//collection//hash_collection.nit:194 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_standard___collection___hash_collection___HashNode____prev_in_bucklet(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//collection//hash_collection.nit:195 */
+  /* parser/parser_nodes.nit:56 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_standard___collection___hash_collection___HashNode____next_in_bucklet(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___collection___hash_collection___HashMapNode(void)
+val_t NEW_parser___parser_nodes___AAbstractClasskind(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 8);
-  obj->vft = (classtable_elt_t*)VFT_standard___collection___hash_collection___HashMapNode;
+  obj = alloc(sizeof(val_t) * 9);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AAbstractClasskind;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___collection___hash_collection___HashMapNode(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AAbstractClasskind[] = "check new AAbstractClasskind";
+void CHECKNEW_parser___parser_nodes___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_standard___collection___hash_collection___HashMapNode;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AAbstractClasskind;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_standard___collection___hash_collection___HashNode____key(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAbstractClasskind____n_kwabstract(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_key", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_kwabstract", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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;
 }
-val_t NEW_HashMapNode_standard___collection___hash_collection___HashMapNode___init(val_t p0, val_t p1){
+static const char LOCATE_NEW_AAbstractClasskind_parser___parser_prod___AAbstractClasskind___empty_init[] = "new AAbstractClasskind parser_prod::AAbstractClasskind::empty_init";
+val_t NEW_AAbstractClasskind_parser___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 = 814;
+  fra.me.meth = LOCATE_NEW_AAbstractClasskind_parser___parser_prod___AAbstractClasskind___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:814 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AAbstractClasskind();
+  INIT_ATTRIBUTES__parser___parser_nodes___AAbstractClasskind(fra.me.REG[0]);
+  parser___parser_prod___AAbstractClasskind___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AAbstractClasskind(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AAbstractClasskind_parser___parser_prod___AAbstractClasskind___init_aabstractclasskind[] = "new AAbstractClasskind parser_prod::AAbstractClasskind::init_aabstractclasskind";
+val_t NEW_AAbstractClasskind_parser___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[3] = {0, 0, 0};
+  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 = 356;
-  fra.me.meth = LOCATE_NEW_HashMapNode_standard___collection___hash_collection___HashMapNode___init;
+  fra.me.line = 816;
+  fra.me.meth = LOCATE_NEW_AAbstractClasskind_parser___parser_prod___AAbstractClasskind___init_aabstractclasskind;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   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:356 */
-  fra.me.REG[2] = NEW_standard___collection___hash_collection___HashMapNode();
-  INIT_ATTRIBUTES__standard___collection___hash_collection___HashMapNode(fra.me.REG[2]);
-  standard___collection___hash_collection___HashMapNode___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_standard___collection___hash_collection___HashMapNode(fra.me.REG[2]);
+  /* parser/parser_prod.nit:816 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___AAbstractClasskind();
+  INIT_ATTRIBUTES__parser___parser_nodes___AAbstractClasskind(fra.me.REG[2]);
+  parser___parser_prod___AAbstractClasskind___init_aabstractclasskind(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___AAbstractClasskind(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_standard___collection___hash_collection___HashMapIterator[54] = {
-  {(bigint) 2267 /* 0: Identity */},
-  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "HashMapIterator" /* 2: Class Name */},
-  {(bigint) 3 /* 3: HashMapIterator < Object: superclass typecheck marker */},
-  {(bigint) 139 /* 4: HashMapIterator < MapIterator: superclass typecheck marker */},
-  {(bigint) 2267 /* 5: HashMapIterator < HashMapIterator: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+static const char LOCATE_NEW_AAbstractClasskind_parser___parser_nodes___ANode___init[] = "new AAbstractClasskind parser_nodes::ANode::init";
+val_t NEW_AAbstractClasskind_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AAbstractClasskind_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AAbstractClasskind();
+  INIT_ATTRIBUTES__parser___parser_nodes___AAbstractClasskind(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AAbstractClasskind(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___AInterfaceClasskind[84] = {
+  {(bigint) 4447 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AInterfaceClasskind" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AInterfaceClasskind < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AInterfaceClasskind < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AInterfaceClasskind < Prod: superclass typecheck marker */},
+  {(bigint) 3827 /* 6: AInterfaceClasskind < AClasskind: superclass typecheck marker */},
+  {(bigint) 4447 /* 7: AInterfaceClasskind < AInterfaceClasskind: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -21353,7 +53955,7 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashMapIter
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: HashMapIterator < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: AInterfaceClasskind < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -21369,6 +53971,8 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashMapIter
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -21382,90 +53986,176 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashMapIter
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: HashMapIterator < MapIterator: superclass init_table position */},
-  {(bigint) standard___collection___hash_collection___HashMapIterator___item},
-  {(bigint) standard___collection___hash_collection___HashMapIterator___key},
-  {(bigint) standard___collection___hash_collection___HashMapIterator___next},
-  {(bigint) standard___collection___hash_collection___HashMapIterator___is_ok},
-  {(bigint) 2 /* 52: HashMapIterator < HashMapIterator: superclass init_table position */},
-  {(bigint) standard___collection___hash_collection___HashMapIterator___init},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___AInterfaceClasskind___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AInterfaceClasskind___visit_all},
+  {(bigint) 2 /* 63: AInterfaceClasskind < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: AInterfaceClasskind < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___mmbuilder___AInterfaceClasskind___is_interface},
+  {(bigint) syntax___mmbuilder___AClasskind___is_enum},
+  {(bigint) syntax___mmbuilder___AClasskind___is_abstract},
+  {(bigint) syntax___mmbuilder___AClasskind___is_extern},
+  {(bigint) 0 /* 79: AInterfaceClasskind < AClasskind: superclass init_table position */},
+  {(bigint) parser___parser_prod___AInterfaceClasskind___empty_init},
+  {(bigint) parser___parser_prod___AInterfaceClasskind___init_ainterfaceclasskind},
+  {(bigint) 4 /* 82: AInterfaceClasskind < AInterfaceClasskind: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AInterfaceClasskind___n_kwinterface},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute HashMapIterator::_map */
-/* 3: Attribute HashMapIterator::_node */
-void INIT_ATTRIBUTES__standard___collection___hash_collection___HashMapIterator(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AInterfaceClasskind::_parent */
+/* 3: Attribute AInterfaceClasskind::_location */
+/* 4: Attribute AInterfaceClasskind::_first_location */
+/* 5: Attribute AInterfaceClasskind::_last_location */
+/* 6: Attribute AInterfaceClasskind::_n_annotations */
+/* 7: Attribute AInterfaceClasskind::_n_kwinterface */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AInterfaceClasskind[] = "init var of AInterfaceClasskind";
+void INIT_ATTRIBUTES__parser___parser_nodes___AInterfaceClasskind(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__standard___collection___hash_collection___HashMapIterator;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AInterfaceClasskind;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___collection___hash_collection___HashMapIterator(void)
+val_t NEW_parser___parser_nodes___AInterfaceClasskind(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_standard___collection___hash_collection___HashMapIterator;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AInterfaceClasskind;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___collection___hash_collection___HashMapIterator(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AInterfaceClasskind[] = "check new AInterfaceClasskind";
+void CHECKNEW_parser___parser_nodes___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_standard___collection___hash_collection___HashMapIterator;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AInterfaceClasskind;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_standard___collection___hash_collection___HashMapIterator____map(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AInterfaceClasskind____n_kwinterface(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_map", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_kwinterface", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_HashMapIterator_standard___collection___hash_collection___HashMapIterator___init(val_t p0){
+static const char LOCATE_NEW_AInterfaceClasskind_parser___parser_prod___AInterfaceClasskind___empty_init[] = "new AInterfaceClasskind parser_prod::AInterfaceClasskind::empty_init";
+val_t NEW_AInterfaceClasskind_parser___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 = 859;
+  fra.me.meth = LOCATE_NEW_AInterfaceClasskind_parser___parser_prod___AInterfaceClasskind___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:859 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AInterfaceClasskind();
+  INIT_ATTRIBUTES__parser___parser_nodes___AInterfaceClasskind(fra.me.REG[0]);
+  parser___parser_prod___AInterfaceClasskind___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AInterfaceClasskind(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AInterfaceClasskind_parser___parser_prod___AInterfaceClasskind___init_ainterfaceclasskind[] = "new AInterfaceClasskind parser_prod::AInterfaceClasskind::init_ainterfaceclasskind";
+val_t NEW_AInterfaceClasskind_parser___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[3] = {0, 0, 0};
+  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 = 397;
-  fra.me.meth = LOCATE_NEW_HashMapIterator_standard___collection___hash_collection___HashMapIterator___init;
+  fra.me.line = 861;
+  fra.me.meth = LOCATE_NEW_AInterfaceClasskind_parser___parser_prod___AInterfaceClasskind___init_ainterfaceclasskind;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//hash_collection.nit:397 */
-  fra.me.REG[1] = NEW_standard___collection___hash_collection___HashMapIterator();
-  INIT_ATTRIBUTES__standard___collection___hash_collection___HashMapIterator(fra.me.REG[1]);
-  standard___collection___hash_collection___HashMapIterator___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_standard___collection___hash_collection___HashMapIterator(fra.me.REG[1]);
+  /* parser/parser_prod.nit:861 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___AInterfaceClasskind();
+  INIT_ATTRIBUTES__parser___parser_nodes___AInterfaceClasskind(fra.me.REG[1]);
+  parser___parser_prod___AInterfaceClasskind___init_ainterfaceclasskind(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AInterfaceClasskind(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_standard___collection___hash_collection___HashSet[96] = {
-  {(bigint) 3559 /* 0: Identity */},
-  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "HashSet" /* 2: Class Name */},
-  {(bigint) 3 /* 3: HashSet < Object: superclass typecheck marker */},
-  {(bigint) 3183 /* 4: HashSet < Set: superclass typecheck marker */},
-  {(bigint) 295 /* 5: HashSet < ArrayCapable: superclass typecheck marker */},
-  {(bigint) 283 /* 6: HashSet < Collection: superclass typecheck marker */},
-  {(bigint) 2271 /* 7: HashSet < HashCollection: superclass typecheck marker */},
-  {(bigint) 367 /* 8: HashSet < RemovableCollection: superclass typecheck marker */},
-  {(bigint) 2779 /* 9: HashSet < SimpleCollection: superclass typecheck marker */},
-  {(bigint) 3559 /* 10: HashSet < HashSet: superclass typecheck marker */},
+static const char LOCATE_NEW_AInterfaceClasskind_parser___parser_nodes___ANode___init[] = "new AInterfaceClasskind parser_nodes::ANode::init";
+val_t NEW_AInterfaceClasskind_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AInterfaceClasskind_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AInterfaceClasskind();
+  INIT_ATTRIBUTES__parser___parser_nodes___AInterfaceClasskind(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AInterfaceClasskind(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___AEnumClasskind[84] = {
+  {(bigint) 4507 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AEnumClasskind" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AEnumClasskind < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AEnumClasskind < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AEnumClasskind < Prod: superclass typecheck marker */},
+  {(bigint) 3827 /* 6: AEnumClasskind < AClasskind: superclass typecheck marker */},
+  {(bigint) 4507 /* 7: AEnumClasskind < AEnumClasskind: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -21473,7 +54163,7 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashSet[96]
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 18: HashSet < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: AEnumClasskind < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -21489,7 +54179,9 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashSet[96]
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Collection___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -21502,161 +54194,172 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashSet[96]
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: HashSet < Set: superclass init_table position */},
-  {(bigint) 7 /* 48: HashSet < HashSet: superclass init_table position */},
-  {(bigint) standard___collection___hash_collection___HashSet___init},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 5 /* 56: HashSet < ArrayCapable: superclass init_table position */},
-  {(bigint) standard___collection___array___ArrayCapable___calloc_array},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) standard___string___Collection___join},
-  {(bigint) standard___collection___array___Collection___to_a},
-  {(bigint) 3 /* 65: HashSet < Collection: superclass init_table position */},
-  {(bigint) standard___collection___hash_collection___HashSet___iterator},
-  {(bigint) standard___collection___abstract_collection___Collection___iterate},
-  {(bigint) standard___collection___hash_collection___HashSet___is_empty},
-  {(bigint) standard___collection___hash_collection___HashSet___length},
-  {(bigint) standard___collection___hash_collection___HashSet___has},
-  {(bigint) standard___collection___abstract_collection___Set___has_only},
-  {(bigint) standard___collection___abstract_collection___Set___count},
-  {(bigint) standard___collection___hash_collection___HashSet___first},
-  {(bigint) standard___math___Collection___rand},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 2 /* 79: HashSet < RemovableCollection: superclass init_table position */},
-  {(bigint) standard___collection___hash_collection___HashSet___clear},
-  {(bigint) standard___collection___hash_collection___HashSet___remove},
-  {(bigint) standard___collection___abstract_collection___Set___remove_all},
-  {(bigint) 6 /* 83: HashSet < HashCollection: superclass init_table position */},
-  {(bigint) standard___collection___hash_collection___HashCollection___first_item},
-  {(bigint) standard___collection___hash_collection___HashCollection___index_at},
-  {(bigint) standard___collection___hash_collection___HashCollection___node_at},
-  {(bigint) standard___collection___hash_collection___HashCollection___node_at_idx},
-  {(bigint) standard___collection___hash_collection___HashCollection___store},
-  {(bigint) standard___collection___hash_collection___HashCollection___remove_node},
-  {(bigint) standard___collection___hash_collection___HashCollection___raz},
-  {(bigint) standard___collection___hash_collection___HashCollection___enlarge},
-  {(bigint) standard___collection___hash_collection___HashCollection___init},
-  {(bigint) 1 /* 93: HashSet < SimpleCollection: superclass init_table position */},
-  {(bigint) standard___collection___hash_collection___HashSet___add},
-  {(bigint) standard___collection___abstract_collection___SimpleCollection___add_all},
-};
-/* 0: Pointer to the classtable */
-/* 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__standard___collection___hash_collection___HashSet(val_t p0){
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___AEnumClasskind___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AEnumClasskind___visit_all},
+  {(bigint) 2 /* 63: AEnumClasskind < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: AEnumClasskind < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___mmbuilder___AClasskind___is_interface},
+  {(bigint) syntax___mmbuilder___AEnumClasskind___is_enum},
+  {(bigint) syntax___mmbuilder___AClasskind___is_abstract},
+  {(bigint) syntax___mmbuilder___AClasskind___is_extern},
+  {(bigint) 0 /* 79: AEnumClasskind < AClasskind: superclass init_table position */},
+  {(bigint) parser___parser_prod___AEnumClasskind___empty_init},
+  {(bigint) parser___parser_prod___AEnumClasskind___init_aenumclasskind},
+  {(bigint) 4 /* 82: AEnumClasskind < AEnumClasskind: superclass init_table position */},
+  {(bigint) parser___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_annotations */
+/* 7: Attribute AEnumClasskind::_n_kwenum */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AEnumClasskind[] = "init var of AEnumClasskind";
+void INIT_ATTRIBUTES__parser___parser_nodes___AEnumClasskind(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__standard___collection___hash_collection___HashSet;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AEnumClasskind;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   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_standard___collection___hash_collection___HashCollection____array(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//collection//hash_collection.nit:24 */
-  REGB0 = TAG_Int(0);
-  ATTR_standard___collection___hash_collection___HashCollection____capacity(fra.me.REG[0]) = REGB0;
-  /* ./../lib/standard//collection//hash_collection.nit:25 */
-  REGB0 = TAG_Int(0);
-  ATTR_standard___collection___hash_collection___HashCollection____length(fra.me.REG[0]) = REGB0;
-  /* ./../lib/standard//collection//hash_collection.nit:27 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_standard___collection___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_standard___collection___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_standard___collection___hash_collection___HashCollection____last_accessed_key(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//collection//hash_collection.nit:33 */
+  /* parser/parser_nodes.nit:56 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_standard___collection___hash_collection___HashCollection____last_accessed_node(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___collection___hash_collection___HashSet(void)
+val_t NEW_parser___parser_nodes___AEnumClasskind(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 9);
-  obj->vft = (classtable_elt_t*)VFT_standard___collection___hash_collection___HashSet;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AEnumClasskind;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___collection___hash_collection___HashSet(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AEnumClasskind[] = "check new AEnumClasskind";
+void CHECKNEW_parser___parser_nodes___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_standard___collection___hash_collection___HashSet;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AEnumClasskind;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_standard___collection___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_standard___collection___hash_collection___HashCollection____length(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AEnumClasskind____n_kwenum(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_kwenum", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_HashSet_standard___collection___hash_collection___HashSet___init(void){
+static const char LOCATE_NEW_AEnumClasskind_parser___parser_prod___AEnumClasskind___empty_init[] = "new AEnumClasskind parser_prod::AEnumClasskind::empty_init";
+val_t NEW_AEnumClasskind_parser___parser_prod___AEnumClasskind___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};
+  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 = 442;
-  fra.me.meth = LOCATE_NEW_HashSet_standard___collection___hash_collection___HashSet___init;
+  fra.me.line = 890;
+  fra.me.meth = LOCATE_NEW_AEnumClasskind_parser___parser_prod___AEnumClasskind___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./../lib/standard//collection//hash_collection.nit:442 */
-  fra.me.REG[0] = NEW_standard___collection___hash_collection___HashSet();
-  INIT_ATTRIBUTES__standard___collection___hash_collection___HashSet(fra.me.REG[0]);
-  standard___collection___hash_collection___HashSet___init(fra.me.REG[0], init_table);
-  CHECKNEW_standard___collection___hash_collection___HashSet(fra.me.REG[0]);
+  /* parser/parser_prod.nit:890 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AEnumClasskind();
+  INIT_ATTRIBUTES__parser___parser_nodes___AEnumClasskind(fra.me.REG[0]);
+  parser___parser_prod___AEnumClasskind___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AEnumClasskind(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___collection___hash_collection___HashSetNode[57] = {
-  {(bigint) 2255 /* 0: Identity */},
-  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "HashSetNode" /* 2: Class Name */},
-  {(bigint) 3 /* 3: HashSetNode < Object: superclass typecheck marker */},
-  {(bigint) 251 /* 4: HashSetNode < HashNode: superclass typecheck marker */},
-  {(bigint) 2255 /* 5: HashSetNode < HashSetNode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+static const char LOCATE_NEW_AEnumClasskind_parser___parser_prod___AEnumClasskind___init_aenumclasskind[] = "new AEnumClasskind parser_prod::AEnumClasskind::init_aenumclasskind";
+val_t NEW_AEnumClasskind_parser___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 = 892;
+  fra.me.meth = LOCATE_NEW_AEnumClasskind_parser___parser_prod___AEnumClasskind___init_aenumclasskind;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_prod.nit:892 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___AEnumClasskind();
+  INIT_ATTRIBUTES__parser___parser_nodes___AEnumClasskind(fra.me.REG[1]);
+  parser___parser_prod___AEnumClasskind___init_aenumclasskind(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AEnumClasskind(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_AEnumClasskind_parser___parser_nodes___ANode___init[] = "new AEnumClasskind parser_nodes::ANode::init";
+val_t NEW_AEnumClasskind_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AEnumClasskind_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AEnumClasskind();
+  INIT_ATTRIBUTES__parser___parser_nodes___AEnumClasskind(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AEnumClasskind(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___AExternClasskind[85] = {
+  {(bigint) 4487 /* 0: Identity */},
+  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AExternClasskind" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AExternClasskind < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AExternClasskind < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AExternClasskind < Prod: superclass typecheck marker */},
+  {(bigint) 3827 /* 6: AExternClasskind < AClasskind: superclass typecheck marker */},
+  {(bigint) 4487 /* 7: AExternClasskind < AExternClasskind: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -21668,7 +54371,7 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashSetNode
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: HashSetNode < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: AExternClasskind < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -21684,6 +54387,8 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashSetNode
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -21697,106 +54402,178 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashSetNode
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: HashSetNode < HashNode: superclass init_table position */},
-  {(bigint) 2255 /* 48: VT HashSetNode::N : id of HashSetNode */},
-  {(bigint) 5 /* 49: VT HashSetNode::N : color of HashSetNode */},
-  {(bigint) standard___collection___hash_collection___HashNode___next_item},
-  {(bigint) standard___collection___hash_collection___HashNode___next_item__eq},
-  {(bigint) standard___collection___hash_collection___HashNode___prev_item},
-  {(bigint) standard___collection___hash_collection___HashNode___prev_item__eq},
-  {(bigint) standard___collection___hash_collection___HashNode___init},
-  {(bigint) 2 /* 55: HashSetNode < HashSetNode: superclass init_table position */},
-  {(bigint) standard___collection___hash_collection___HashSetNode___init},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___AExternClasskind___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AExternClasskind___visit_all},
+  {(bigint) 2 /* 63: AExternClasskind < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: AExternClasskind < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___mmbuilder___AClasskind___is_interface},
+  {(bigint) syntax___mmbuilder___AClasskind___is_enum},
+  {(bigint) syntax___mmbuilder___AClasskind___is_abstract},
+  {(bigint) syntax___mmbuilder___AExternClasskind___is_extern},
+  {(bigint) 0 /* 79: AExternClasskind < AClasskind: superclass init_table position */},
+  {(bigint) parser___parser_prod___AExternClasskind___empty_init},
+  {(bigint) parser___parser_prod___AExternClasskind___init_aexternclasskind},
+  {(bigint) 4 /* 82: AExternClasskind < AExternClasskind: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AExternClasskind___n_kwextern},
+  {(bigint) parser___parser_nodes___AExternClasskind___n_kwclass},
 };
 /* 0: Pointer to the classtable */
 /* 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__standard___collection___hash_collection___HashSetNode(val_t p0){
+/* 2: Attribute AExternClasskind::_parent */
+/* 3: Attribute AExternClasskind::_location */
+/* 4: Attribute AExternClasskind::_first_location */
+/* 5: Attribute AExternClasskind::_last_location */
+/* 6: Attribute AExternClasskind::_n_annotations */
+/* 7: Attribute AExternClasskind::_n_kwextern */
+/* 8: Attribute AExternClasskind::_n_kwclass */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AExternClasskind[] = "init var of AExternClasskind";
+void INIT_ATTRIBUTES__parser___parser_nodes___AExternClasskind(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__standard___collection___hash_collection___HashSetNode;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AExternClasskind;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//hash_collection.nit:192 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_standard___collection___hash_collection___HashNode____next_item(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//collection//hash_collection.nit:193 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_standard___collection___hash_collection___HashNode____prev_item(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//collection//hash_collection.nit:194 */
+  /* parser/parser_nodes.nit:56 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_standard___collection___hash_collection___HashNode____prev_in_bucklet(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//collection//hash_collection.nit:195 */
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:484 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_standard___collection___hash_collection___HashNode____next_in_bucklet(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AExternClasskind____n_kwclass(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___collection___hash_collection___HashSetNode(void)
+val_t NEW_parser___parser_nodes___AExternClasskind(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_standard___collection___hash_collection___HashSetNode;
+  obj = alloc(sizeof(val_t) * 9);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AExternClasskind;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___collection___hash_collection___HashSetNode(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AExternClasskind[] = "check new AExternClasskind";
+void CHECKNEW_parser___parser_nodes___AExternClasskind(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_standard___collection___hash_collection___HashSetNode;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AExternClasskind;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_standard___collection___hash_collection___HashNode____key(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AExternClasskind____n_kwextern(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_key", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_kwextern", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_HashSetNode_standard___collection___hash_collection___HashSetNode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AExternClasskind_parser___parser_prod___AExternClasskind___empty_init[] = "new AExternClasskind parser_prod::AExternClasskind::empty_init";
+val_t NEW_AExternClasskind_parser___parser_prod___AExternClasskind___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[3] = {0, 0, 0};
+  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 = 454;
-  fra.me.meth = LOCATE_NEW_HashSetNode_standard___collection___hash_collection___HashSetNode___init;
+  fra.me.line = 921;
+  fra.me.meth = LOCATE_NEW_AExternClasskind_parser___parser_prod___AExternClasskind___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:921 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AExternClasskind();
+  INIT_ATTRIBUTES__parser___parser_nodes___AExternClasskind(fra.me.REG[0]);
+  parser___parser_prod___AExternClasskind___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AExternClasskind(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AExternClasskind_parser___parser_prod___AExternClasskind___init_aexternclasskind[] = "new AExternClasskind parser_prod::AExternClasskind::init_aexternclasskind";
+val_t NEW_AExternClasskind_parser___parser_prod___AExternClasskind___init_aexternclasskind(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 = 923;
+  fra.me.meth = LOCATE_NEW_AExternClasskind_parser___parser_prod___AExternClasskind___init_aexternclasskind;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//hash_collection.nit:454 */
-  fra.me.REG[1] = NEW_standard___collection___hash_collection___HashSetNode();
-  INIT_ATTRIBUTES__standard___collection___hash_collection___HashSetNode(fra.me.REG[1]);
-  standard___collection___hash_collection___HashSetNode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_standard___collection___hash_collection___HashSetNode(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:923 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___AExternClasskind();
+  INIT_ATTRIBUTES__parser___parser_nodes___AExternClasskind(fra.me.REG[2]);
+  parser___parser_prod___AExternClasskind___init_aexternclasskind(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___AExternClasskind(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[2];
 }
-const classtable_elt_t VFT_standard___collection___hash_collection___HashSetIterator[54] = {
-  {(bigint) 2259 /* 0: Identity */},
-  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "HashSetIterator" /* 2: Class Name */},
-  {(bigint) 3 /* 3: HashSetIterator < Object: superclass typecheck marker */},
-  {(bigint) 199 /* 4: HashSetIterator < Iterator: superclass typecheck marker */},
-  {(bigint) 2259 /* 5: HashSetIterator < HashSetIterator: superclass typecheck marker */},
+static const char LOCATE_NEW_AExternClasskind_parser___parser_nodes___ANode___init[] = "new AExternClasskind parser_nodes::ANode::init";
+val_t NEW_AExternClasskind_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AExternClasskind_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AExternClasskind();
+  INIT_ATTRIBUTES__parser___parser_nodes___AExternClasskind(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AExternClasskind(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___AFormaldef[82] = {
+  {(bigint) 3791 /* 0: Identity */},
+  {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AFormaldef" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AFormaldef < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AFormaldef < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AFormaldef < Prod: superclass typecheck marker */},
+  {(bigint) 3791 /* 6: AFormaldef < AFormaldef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -21809,7 +54586,7 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashSetIter
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: HashSetIterator < Object: superclass init_table position */},
+  {(bigint) 2 /* 19: AFormaldef < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -21825,6 +54602,8 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashSetIter
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -21838,103 +54617,196 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashSetIter
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) standard___collection___array___Iterator___to_a},
-  {(bigint) 0 /* 48: HashSetIterator < Iterator: superclass init_table position */},
-  {(bigint) standard___collection___hash_collection___HashSetIterator___item},
-  {(bigint) standard___collection___hash_collection___HashSetIterator___next},
-  {(bigint) standard___collection___hash_collection___HashSetIterator___is_ok},
-  {(bigint) 2 /* 52: HashSetIterator < HashSetIterator: superclass init_table position */},
-  {(bigint) standard___collection___hash_collection___HashSetIterator___init},
+  {(bigint) syntax___mmbuilder___AFormaldef___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___AFormaldef___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___AFormaldef___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AFormaldef___visit_all},
+  {(bigint) 1 /* 63: AFormaldef < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 72: AFormaldef < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) parser___parser_prod___AFormaldef___empty_init},
+  {(bigint) parser___parser_prod___AFormaldef___init_aformaldef},
+  {(bigint) 3 /* 79: AFormaldef < AFormaldef: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AFormaldef___n_id},
+  {(bigint) parser___parser_nodes___AFormaldef___n_type},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute HashSetIterator::_set */
-/* 3: Attribute HashSetIterator::_node */
-void INIT_ATTRIBUTES__standard___collection___hash_collection___HashSetIterator(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AFormaldef::_parent */
+/* 3: Attribute AFormaldef::_location */
+/* 4: Attribute AFormaldef::_first_location */
+/* 5: Attribute AFormaldef::_last_location */
+/* 6: Attribute AFormaldef::_n_annotations */
+/* 7: Attribute AFormaldef::_formal */
+/* 8: Attribute AFormaldef::_n_id */
+/* 9: Attribute AFormaldef::_n_type */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AFormaldef[] = "init var of AFormaldef";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__standard___collection___hash_collection___HashSetIterator;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AFormaldef;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:489 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AFormaldef____n_type(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___collection___hash_collection___HashSetIterator(void)
+val_t NEW_parser___parser_nodes___AFormaldef(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_standard___collection___hash_collection___HashSetIterator;
+  obj = alloc(sizeof(val_t) * 10);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AFormaldef;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___collection___hash_collection___HashSetIterator(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AFormaldef[] = "check new AFormaldef";
+void CHECKNEW_parser___parser_nodes___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_standard___collection___hash_collection___HashSetIterator;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AFormaldef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_standard___collection___hash_collection___HashSetIterator____set(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AFormaldef____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_set", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_HashSetIterator_standard___collection___hash_collection___HashSetIterator___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AFormaldef_parser___parser_prod___AFormaldef___empty_init[] = "new AFormaldef parser_prod::AFormaldef::empty_init";
+val_t NEW_AFormaldef_parser___parser_prod___AFormaldef___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[3] = {0, 0, 0};
+  int init_table[4] = {0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 482;
-  fra.me.meth = LOCATE_NEW_HashSetIterator_standard___collection___hash_collection___HashSetIterator___init;
+  fra.me.line = 970;
+  fra.me.meth = LOCATE_NEW_AFormaldef_parser___parser_prod___AFormaldef___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:970 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AFormaldef();
+  INIT_ATTRIBUTES__parser___parser_nodes___AFormaldef(fra.me.REG[0]);
+  parser___parser_prod___AFormaldef___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AFormaldef(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AFormaldef_parser___parser_prod___AFormaldef___init_aformaldef[] = "new AFormaldef parser_prod::AFormaldef::init_aformaldef";
+val_t NEW_AFormaldef_parser___parser_prod___AFormaldef___init_aformaldef(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 = 972;
+  fra.me.meth = LOCATE_NEW_AFormaldef_parser___parser_prod___AFormaldef___init_aformaldef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   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;
-  /* ./../lib/standard//collection//hash_collection.nit:482 */
-  fra.me.REG[1] = NEW_standard___collection___hash_collection___HashSetIterator();
-  INIT_ATTRIBUTES__standard___collection___hash_collection___HashSetIterator(fra.me.REG[1]);
-  standard___collection___hash_collection___HashSetIterator___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_standard___collection___hash_collection___HashSetIterator(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* parser/parser_prod.nit:972 */
+  fra.me.REG[3] = NEW_parser___parser_nodes___AFormaldef();
+  INIT_ATTRIBUTES__parser___parser_nodes___AFormaldef(fra.me.REG[3]);
+  parser___parser_prod___AFormaldef___init_aformaldef(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_parser___parser_nodes___AFormaldef(fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[3];
 }
-const classtable_elt_t VFT_standard___string___String[142] = {
-  {(bigint) 3535 /* 0: Identity */},
-  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "String" /* 2: Class Name */},
-  {(bigint) 3 /* 3: String < Object: superclass typecheck marker */},
-  {(bigint) 103 /* 4: String < Pattern: superclass typecheck marker */},
-  {(bigint) 275 /* 5: String < Comparable: superclass typecheck marker */},
-  {(bigint) 283 /* 6: String < Collection: superclass typecheck marker */},
-  {(bigint) 351 /* 7: String < SequenceRead: superclass typecheck marker */},
-  {(bigint) 3535 /* 8: String < String: superclass typecheck marker */},
+static const char LOCATE_NEW_AFormaldef_parser___parser_nodes___ANode___init[] = "new AFormaldef parser_nodes::ANode::init";
+val_t NEW_AFormaldef_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AFormaldef_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AFormaldef();
+  INIT_ATTRIBUTES__parser___parser_nodes___AFormaldef(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AFormaldef(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___ASuperclass[84] = {
+  {(bigint) 3739 /* 0: Identity */},
+  {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ASuperclass" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ASuperclass < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: ASuperclass < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: ASuperclass < Prod: superclass typecheck marker */},
+  {(bigint) 3739 /* 6: ASuperclass < ASuperclass: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 3039 /* 10: String < AbstractArrayRead: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 3239 /* 12: String < AbstractString: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: String < Object: superclass init_table position */},
+  {(bigint) 2 /* 19: ASuperclass < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___string___String_____eqeq},
+  {(bigint) standard___kernel___Object_____eqeq},
   {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___string___AbstractString___output},
+  {(bigint) standard___kernel___Object___output},
   {(bigint) standard___kernel___Object___output_class_name},
   {(bigint) standard___kernel___Object___exit},
   {(bigint) standard___kernel___Object___sys},
@@ -21945,238 +54817,215 @@ const classtable_elt_t VFT_standard___string___String[142] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___String___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
-  {(bigint) standard___string___String___hash},
+  {(bigint) standard___hash___Object___hash},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 6 /* 47: String < Pattern: superclass init_table position */},
-  {(bigint) standard___string_search___String___search_index_in},
-  {(bigint) standard___string_search___String___search_in},
-  {(bigint) standard___string_search___Pattern___search_all_in},
-  {(bigint) standard___string_search___Pattern___split_in},
-  {(bigint) 0 /* 52: String < Comparable: superclass init_table position */},
-  {(bigint) 3535 /* 53: VT String::OTHER : id of String */},
-  {(bigint) 8 /* 54: VT String::OTHER : color of String */},
-  {(bigint) standard___string___String_____l},
-  {(bigint) standard___kernel___Comparable_____leq},
-  {(bigint) standard___kernel___Comparable_____geq},
-  {(bigint) standard___kernel___Comparable_____g},
-  {(bigint) standard___kernel___Comparable_____leqg},
-  {(bigint) standard___kernel___Comparable___is_between},
-  {(bigint) standard___kernel___Comparable___max},
-  {(bigint) standard___kernel___Comparable___min},
-  {(bigint) standard___string___Collection___join},
-  {(bigint) standard___collection___array___Collection___to_a},
-  {(bigint) 4 /* 65: String < Collection: superclass init_table position */},
-  {(bigint) standard___collection___array___AbstractArrayRead___iterator},
-  {(bigint) standard___collection___abstract_collection___Collection___iterate},
-  {(bigint) standard___collection___array___AbstractArrayRead___is_empty},
-  {(bigint) standard___collection___array___AbstractArrayRead___length},
-  {(bigint) standard___collection___array___AbstractArrayRead___has},
-  {(bigint) standard___collection___array___AbstractArrayRead___has_only},
-  {(bigint) standard___collection___array___AbstractArrayRead___count},
-  {(bigint) standard___collection___abstract_collection___SequenceRead___first},
-  {(bigint) standard___math___Collection___rand},
-  {(bigint) 3 /* 75: String < SequenceRead: superclass init_table position */},
-  {(bigint) standard___string___AbstractString_____bra},
-  {(bigint) standard___collection___abstract_collection___SequenceRead___last},
-  {(bigint) standard___collection___array___AbstractArrayRead___index_of},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 5 /* 83: String < AbstractArrayRead: superclass init_table position */},
-  {(bigint) standard___collection___array___AbstractArrayRead___last_index_of},
-  {(bigint) standard___collection___array___AbstractArrayRead___index_of_from},
-  {(bigint) standard___collection___array___AbstractArrayRead___last_index_of_from},
-  {(bigint) standard___collection___array___AbstractArrayRead___reversed},
-  {(bigint) standard___collection___array___AbstractArrayRead___copy_to},
-  {(bigint) standard___collection___array___AbstractArrayRead___init},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 2 /* 106: String < AbstractString: superclass init_table position */},
-  {(bigint) standard___string___AbstractString___items},
-  {(bigint) standard___string___AbstractString___substring},
-  {(bigint) standard___string___AbstractString___substring_from},
-  {(bigint) standard___string___AbstractString___has_substring},
-  {(bigint) standard___string___AbstractString___has_prefix},
-  {(bigint) standard___string___AbstractString___has_suffix},
-  {(bigint) standard___string___AbstractString___to_i},
-  {(bigint) standard___string___AbstractString___to_hex},
-  {(bigint) standard___string___AbstractString___a_to},
-  {(bigint) standard___string___AbstractString___to_upper},
-  {(bigint) standard___string___AbstractString___to_lower},
-  {(bigint) native_interface___frontier___String___path_from_parent},
-  {(bigint) standard___symbol___String___to_symbol},
-  {(bigint) 7 /* 120: String < String: superclass init_table position */},
-  {(bigint) standard___string___String___with_native},
-  {(bigint) standard___string___String___from_cstring},
-  {(bigint) standard___string___String___to_cstring},
-  {(bigint) standard___string___String_____plus},
-  {(bigint) standard___string___String_____star},
-  {(bigint) standard___file___String___file_exists},
-  {(bigint) standard___file___String___file_stat},
-  {(bigint) standard___file___String___file_delete},
-  {(bigint) standard___file___String___strip_extension},
-  {(bigint) standard___file___String___basename},
-  {(bigint) standard___file___String___dirname},
-  {(bigint) standard___file___String___simplify_path},
-  {(bigint) standard___file___String___mkdir},
-  {(bigint) standard___file___String___file_extension},
-  {(bigint) standard___string_search___String___search},
-  {(bigint) standard___string_search___String___search_from},
-  {(bigint) standard___string_search___String___search_all},
-  {(bigint) standard___string_search___String___split_with},
-  {(bigint) standard___string_search___String___split},
-  {(bigint) standard___string_search___String___replace},
-  {(bigint) standard___string_search___String___html_escape},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ASuperclass___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ASuperclass___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ASuperclass___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___ASuperclass___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___ASuperclass___visit_all},
+  {(bigint) 1 /* 63: ASuperclass < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 72: ASuperclass < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___mmbuilder___ASuperclass___ancestor},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) parser___parser_prod___ASuperclass___empty_init},
+  {(bigint) parser___parser_prod___ASuperclass___init_asuperclass},
+  {(bigint) 3 /* 81: ASuperclass < ASuperclass: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ASuperclass___n_kwsuper},
+  {(bigint) parser___parser_nodes___ASuperclass___n_type},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute String::_length */
-/* 3: Attribute String::_items */
-void INIT_ATTRIBUTES__standard___string___String(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
+/* 2: Attribute ASuperclass::_parent */
+/* 3: Attribute ASuperclass::_location */
+/* 4: Attribute ASuperclass::_first_location */
+/* 5: Attribute ASuperclass::_last_location */
+/* 6: Attribute ASuperclass::_n_annotations */
+/* 7: Attribute ASuperclass::_ancestor */
+/* 8: Attribute ASuperclass::_n_kwsuper */
+/* 9: Attribute ASuperclass::_n_type */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ASuperclass[] = "init var of ASuperclass";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__standard___string___String;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ASuperclass;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//array.nit:24 */
-  REGB0 = TAG_Int(0);
-  ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]) = REGB0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___string___String(void)
+val_t NEW_parser___parser_nodes___ASuperclass(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_standard___string___String;
+  obj = alloc(sizeof(val_t) * 10);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ASuperclass;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___string___String(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___ASuperclass[] = "check new ASuperclass";
+void CHECKNEW_parser___parser_nodes___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_standard___string___String;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___ASuperclass;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_standard___string___AbstractString____items(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASuperclass____n_kwsuper(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_kwsuper", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASuperclass____n_type(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_String_standard___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;
+static const char LOCATE_NEW_ASuperclass_parser___parser_prod___ASuperclass___empty_init[] = "new ASuperclass parser_prod::ASuperclass::empty_init";
+val_t NEW_ASuperclass_parser___parser_prod___ASuperclass___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};
+  int init_table[4] = {0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 170;
-  fra.me.meth = LOCATE_NEW_String_standard___string___String___with_native;
+  fra.me.line = 1037;
+  fra.me.meth = LOCATE_NEW_ASuperclass_parser___parser_prod___ASuperclass___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  REGB0 = p1;
-  /* ./../lib/standard//string.nit:170 */
-  fra.me.REG[1] = NEW_standard___string___String();
-  INIT_ATTRIBUTES__standard___string___String(fra.me.REG[1]);
-  standard___string___String___with_native(fra.me.REG[1], fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_standard___string___String(fra.me.REG[1]);
+  /* parser/parser_prod.nit:1037 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ASuperclass();
+  INIT_ATTRIBUTES__parser___parser_nodes___ASuperclass(fra.me.REG[0]);
+  parser___parser_prod___ASuperclass___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ASuperclass(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-val_t NEW_String_standard___string___String___from_cstring(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ASuperclass_parser___parser_prod___ASuperclass___init_asuperclass[] = "new ASuperclass parser_prod::ASuperclass::init_asuperclass";
+val_t NEW_ASuperclass_parser___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[8] = {0, 0, 0, 0, 0, 0, 0, 0};
+  int init_table[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_String_standard___string___String___from_cstring;
+  fra.me.line = 1039;
+  fra.me.meth = LOCATE_NEW_ASuperclass_parser___parser_prod___ASuperclass___init_asuperclass;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   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;
-  /* ./../lib/standard//string.nit:178 */
-  fra.me.REG[1] = NEW_standard___string___String();
-  INIT_ATTRIBUTES__standard___string___String(fra.me.REG[1]);
-  standard___string___String___from_cstring(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_standard___string___String(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* parser/parser_prod.nit:1039 */
+  fra.me.REG[3] = NEW_parser___parser_nodes___ASuperclass();
+  INIT_ATTRIBUTES__parser___parser_nodes___ASuperclass(fra.me.REG[3]);
+  parser___parser_prod___ASuperclass___init_asuperclass(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_parser___parser_nodes___ASuperclass(fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[3];
 }
-const classtable_elt_t VFT_standard___string___Buffer[128] = {
-  {(bigint) 3743 /* 0: Identity */},
-  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "Buffer" /* 2: Class Name */},
-  {(bigint) 3 /* 3: Buffer < Object: superclass typecheck marker */},
-  {(bigint) 35 /* 4: Buffer < StringCapable: superclass typecheck marker */},
-  {(bigint) 275 /* 5: Buffer < Comparable: superclass typecheck marker */},
-  {(bigint) 283 /* 6: Buffer < Collection: superclass typecheck marker */},
-  {(bigint) 351 /* 7: Buffer < SequenceRead: superclass typecheck marker */},
-  {(bigint) 367 /* 8: Buffer < RemovableCollection: superclass typecheck marker */},
-  {(bigint) 2779 /* 9: Buffer < SimpleCollection: superclass typecheck marker */},
-  {(bigint) 3039 /* 10: Buffer < AbstractArrayRead: superclass typecheck marker */},
-  {(bigint) 3187 /* 11: Buffer < Sequence: superclass typecheck marker */},
-  {(bigint) 3239 /* 12: Buffer < AbstractString: superclass typecheck marker */},
-  {(bigint) 3567 /* 13: Buffer < AbstractArray: superclass typecheck marker */},
-  {(bigint) 3743 /* 14: Buffer < Buffer: superclass typecheck marker */},
+static const char LOCATE_NEW_ASuperclass_parser___parser_nodes___ANode___init[] = "new ASuperclass parser_nodes::ANode::init";
+val_t NEW_ASuperclass_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_ASuperclass_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ASuperclass();
+  INIT_ATTRIBUTES__parser___parser_nodes___ASuperclass(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ASuperclass(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___AAttrPropdef[102] = {
+  {(bigint) 4555 /* 0: Identity */},
+  {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AAttrPropdef" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AAttrPropdef < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AAttrPropdef < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AAttrPropdef < Prod: superclass typecheck marker */},
+  {(bigint) 3751 /* 6: AAttrPropdef < APropdef: superclass typecheck marker */},
+  {(bigint) 4555 /* 7: 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 :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 18: Buffer < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: AAttrPropdef < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___string___Buffer_____eqeq},
+  {(bigint) standard___kernel___Object_____eqeq},
   {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___string___AbstractString___output},
+  {(bigint) standard___kernel___Object___output},
   {(bigint) standard___kernel___Object___output_class_name},
   {(bigint) standard___kernel___Object___exit},
   {(bigint) standard___kernel___Object___sys},
@@ -22187,7 +55036,9 @@ const classtable_elt_t VFT_standard___string___Buffer[128] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Buffer___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -22200,218 +55051,247 @@ const classtable_elt_t VFT_standard___string___Buffer[128] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 6 /* 47: Buffer < StringCapable: superclass init_table position */},
-  {(bigint) standard___string___StringCapable___calloc_string},
-  {(bigint) standard___string___StringCapable___init},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 5 /* 52: Buffer < Comparable: superclass init_table position */},
-  {(bigint) 3535 /* 53: VT Buffer::OTHER : id of String */},
-  {(bigint) 8 /* 54: VT Buffer::OTHER : color of String */},
-  {(bigint) standard___string___Buffer_____l},
-  {(bigint) standard___kernel___Comparable_____leq},
-  {(bigint) standard___kernel___Comparable_____geq},
-  {(bigint) standard___kernel___Comparable_____g},
-  {(bigint) standard___kernel___Comparable_____leqg},
-  {(bigint) standard___kernel___Comparable___is_between},
-  {(bigint) standard___kernel___Comparable___max},
-  {(bigint) standard___kernel___Comparable___min},
-  {(bigint) standard___string___Collection___join},
-  {(bigint) standard___collection___array___Collection___to_a},
-  {(bigint) 2 /* 65: Buffer < Collection: superclass init_table position */},
-  {(bigint) standard___collection___array___AbstractArrayRead___iterator},
-  {(bigint) standard___collection___abstract_collection___Collection___iterate},
-  {(bigint) standard___collection___array___AbstractArrayRead___is_empty},
-  {(bigint) standard___collection___array___AbstractArrayRead___length},
-  {(bigint) standard___collection___array___AbstractArrayRead___has},
-  {(bigint) standard___collection___array___AbstractArrayRead___has_only},
-  {(bigint) standard___collection___array___AbstractArrayRead___count},
-  {(bigint) standard___collection___abstract_collection___SequenceRead___first},
-  {(bigint) standard___math___Collection___rand},
-  {(bigint) 1 /* 75: Buffer < SequenceRead: superclass init_table position */},
-  {(bigint) standard___string___AbstractString_____bra},
-  {(bigint) standard___collection___abstract_collection___SequenceRead___last},
-  {(bigint) standard___collection___array___AbstractArrayRead___index_of},
-  {(bigint) 9 /* 79: Buffer < RemovableCollection: superclass init_table position */},
-  {(bigint) standard___collection___array___AbstractArray___clear},
-  {(bigint) standard___collection___array___AbstractArray___remove},
-  {(bigint) standard___collection___array___AbstractArray___remove_all},
-  {(bigint) 4 /* 83: Buffer < AbstractArrayRead: superclass init_table position */},
-  {(bigint) standard___collection___array___AbstractArrayRead___last_index_of},
-  {(bigint) standard___collection___array___AbstractArrayRead___index_of_from},
-  {(bigint) standard___collection___array___AbstractArrayRead___last_index_of_from},
-  {(bigint) standard___collection___array___AbstractArrayRead___reversed},
-  {(bigint) standard___collection___array___AbstractArrayRead___copy_to},
-  {(bigint) standard___collection___array___AbstractArrayRead___init},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 8 /* 93: Buffer < SimpleCollection: superclass init_table position */},
-  {(bigint) standard___string___Buffer___add},
-  {(bigint) standard___collection___abstract_collection___SimpleCollection___add_all},
-  {(bigint) 7 /* 96: Buffer < Sequence: superclass init_table position */},
-  {(bigint) standard___collection___abstract_collection___Sequence___first__eq},
-  {(bigint) standard___collection___abstract_collection___Sequence___last__eq},
-  {(bigint) standard___collection___array___AbstractArray___push},
-  {(bigint) standard___string___Buffer___append},
-  {(bigint) standard___collection___array___AbstractArray___pop},
-  {(bigint) standard___collection___array___AbstractArray___unshift},
-  {(bigint) standard___collection___array___AbstractArray___shift},
-  {(bigint) standard___string___Buffer_____braeq},
-  {(bigint) standard___collection___array___AbstractArray___remove_at},
-  {(bigint) 0 /* 106: Buffer < AbstractString: superclass init_table position */},
-  {(bigint) standard___string___AbstractString___items},
-  {(bigint) standard___string___AbstractString___substring},
-  {(bigint) standard___string___AbstractString___substring_from},
-  {(bigint) standard___string___AbstractString___has_substring},
-  {(bigint) standard___string___AbstractString___has_prefix},
-  {(bigint) standard___string___AbstractString___has_suffix},
-  {(bigint) standard___string___AbstractString___to_i},
-  {(bigint) standard___string___AbstractString___to_hex},
-  {(bigint) standard___string___AbstractString___a_to},
-  {(bigint) standard___string___AbstractString___to_upper},
-  {(bigint) standard___string___AbstractString___to_lower},
-  {(bigint) 10 /* 118: Buffer < AbstractArray: superclass init_table position */},
-  {(bigint) standard___string___Buffer___enlarge},
-  {(bigint) standard___collection___array___AbstractArray___insert},
-  {(bigint) standard___collection___array___AbstractArray___swap_at},
-  {(bigint) 11 /* 122: Buffer < Buffer: superclass init_table position */},
-  {(bigint) standard___collection___abstract_collection___Sequence___append},
-  {(bigint) standard___string___Buffer___init},
-  {(bigint) standard___string___Buffer___from},
-  {(bigint) standard___string___Buffer___with_capacity},
-  {(bigint) standard___string___Buffer___capacity},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___AAttrPropdef___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AAttrPropdef___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AAttrPropdef___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___AAttrPropdef___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AAttrPropdef___visit_all},
+  {(bigint) 2 /* 63: AAttrPropdef < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___AAttrPropdef___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AAttrPropdef___accept_icode_generation},
+  {(bigint) syntax___typing___AAttrPropdef___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: AAttrPropdef < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___mmbuilder___APropdef___process_and_check},
+  {(bigint) syntax___mmbuilder___APropdef___do_and_check_intro},
+  {(bigint) syntax___mmbuilder___APropdef___inherit_signature},
+  {(bigint) syntax___mmbuilder___APropdef___do_and_check_redef},
+  {(bigint) syntax___typing___APropdef___self_var},
+  {(bigint) 0 /* 80: AAttrPropdef < APropdef: superclass init_table position */},
+  {(bigint) parser___parser_nodes___APropdef___n_doc},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) syntax___mmbuilder___AAttrPropdef___prop},
+  {(bigint) syntax___mmbuilder___AAttrPropdef___readmethod},
+  {(bigint) syntax___mmbuilder___AAttrPropdef___writemethod},
+  {(bigint) parser___parser_prod___AAttrPropdef___empty_init},
+  {(bigint) parser___parser_prod___AAttrPropdef___init_aattrpropdef},
+  {(bigint) 4 /* 90: AAttrPropdef < AAttrPropdef: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AAttrPropdef___n_kwredef},
+  {(bigint) parser___parser_nodes___AAttrPropdef___n_visibility},
+  {(bigint) parser___parser_nodes___AAttrPropdef___n_kwvar},
+  {(bigint) parser___parser_nodes___AAttrPropdef___n_id},
+  {(bigint) parser___parser_nodes___AAttrPropdef___n_id2},
+  {(bigint) parser___parser_nodes___AAttrPropdef___n_type},
+  {(bigint) parser___parser_nodes___AAttrPropdef___n_readable},
+  {(bigint) parser___parser_nodes___AAttrPropdef___n_writable},
+  {(bigint) parser___parser_nodes___AAttrPropdef___n_expr},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute Buffer::_length */
-/* 3: Attribute Buffer::_items */
-/* 4: Attribute Buffer::_capacity */
-void INIT_ATTRIBUTES__standard___string___Buffer(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
+/* 2: Attribute AAttrPropdef::_parent */
+/* 3: Attribute AAttrPropdef::_location */
+/* 4: Attribute AAttrPropdef::_first_location */
+/* 5: Attribute AAttrPropdef::_last_location */
+/* 6: Attribute AAttrPropdef::_n_annotations */
+/* 7: Attribute AAttrPropdef::_n_doc */
+/* 8: Attribute AAttrPropdef::_self_var */
+/* 9: Attribute AAttrPropdef::_readmethod */
+/* 10: Attribute AAttrPropdef::_writemethod */
+/* 11: Attribute AAttrPropdef::_prop */
+/* 12: Attribute AAttrPropdef::_n_kwredef */
+/* 13: Attribute AAttrPropdef::_n_visibility */
+/* 14: Attribute AAttrPropdef::_n_kwvar */
+/* 15: Attribute AAttrPropdef::_n_id */
+/* 16: Attribute AAttrPropdef::_n_id2 */
+/* 17: Attribute AAttrPropdef::_n_type */
+/* 18: Attribute AAttrPropdef::_n_readable */
+/* 19: Attribute AAttrPropdef::_n_writable */
+/* 20: Attribute AAttrPropdef::_n_expr */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AAttrPropdef[] = "init var of AAttrPropdef";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__standard___string___Buffer;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AAttrPropdef;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//array.nit:24 */
-  REGB0 = TAG_Int(0);
-  ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]) = REGB0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:497 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:501 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AAttrPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:506 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AAttrPropdef____n_type(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:507 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AAttrPropdef____n_readable(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:508 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AAttrPropdef____n_writable(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:509 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AAttrPropdef____n_expr(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___string___Buffer(void)
+val_t NEW_parser___parser_nodes___AAttrPropdef(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_standard___string___Buffer;
+  obj = alloc(sizeof(val_t) * 21);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AAttrPropdef;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___string___Buffer(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AAttrPropdef[] = "check new AAttrPropdef";
+void CHECKNEW_parser___parser_nodes___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_standard___string___Buffer;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AAttrPropdef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_standard___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_standard___string___AbstractString____items(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAttrPropdef____n_visibility(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_visibility", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAttrPropdef____n_kwvar(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_kwvar", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_Buffer_standard___string___Buffer___init(void){
+static const char LOCATE_NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___empty_init[] = "new AAttrPropdef parser_prod::AAttrPropdef::empty_init";
+val_t NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___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};
+  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 = 352;
-  fra.me.meth = LOCATE_NEW_Buffer_standard___string___Buffer___init;
+  fra.me.line = 1100;
+  fra.me.meth = LOCATE_NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./../lib/standard//string.nit:352 */
-  fra.me.REG[0] = NEW_standard___string___Buffer();
-  INIT_ATTRIBUTES__standard___string___Buffer(fra.me.REG[0]);
-  standard___string___Buffer___init(fra.me.REG[0], init_table);
-  CHECKNEW_standard___string___Buffer(fra.me.REG[0]);
+  /* parser/parser_prod.nit:1100 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AAttrPropdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___AAttrPropdef(fra.me.REG[0]);
+  parser___parser_prod___AAttrPropdef___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AAttrPropdef(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_Buffer_standard___string___Buffer___from(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef[] = "new AAttrPropdef parser_prod::AAttrPropdef::init_aattrpropdef";
+val_t NEW_AAttrPropdef_parser___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, val_t p10){
+  struct {struct stack_frame_t me; val_t MORE_REG[11];} fra;
   val_t tmp;
-  int init_table[12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  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 = 358;
-  fra.me.meth = LOCATE_NEW_Buffer_standard___string___Buffer___from;
+  fra.me.line = 1102;
+  fra.me.meth = LOCATE_NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___init_aattrpropdef;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 12;
+  fra.me.nitni_local_ref_head = NULL;
   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[11] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//string.nit:358 */
-  fra.me.REG[1] = NEW_standard___string___Buffer();
-  INIT_ATTRIBUTES__standard___string___Buffer(fra.me.REG[1]);
-  standard___string___Buffer___from(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_standard___string___Buffer(fra.me.REG[1]);
+  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;
+  fra.me.REG[10] = p10;
+  /* parser/parser_prod.nit:1102 */
+  fra.me.REG[11] = NEW_parser___parser_nodes___AAttrPropdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___AAttrPropdef(fra.me.REG[11]);
+  parser___parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[11], 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], fra.me.REG[10], init_table);
+  CHECKNEW_parser___parser_nodes___AAttrPropdef(fra.me.REG[11]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[11];
 }
-val_t NEW_Buffer_standard___string___Buffer___with_capacity(val_t p0){
+static const char LOCATE_NEW_AAttrPropdef_parser___parser_nodes___ANode___init[] = "new AAttrPropdef parser_nodes::ANode::init";
+val_t NEW_AAttrPropdef_parser___parser_nodes___ANode___init(void){
   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};
+  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 = 366;
-  fra.me.meth = LOCATE_NEW_Buffer_standard___string___Buffer___with_capacity;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_AAttrPropdef_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  REGB0 = p0;
-  /* ./../lib/standard//string.nit:366 */
-  fra.me.REG[0] = NEW_standard___string___Buffer();
-  INIT_ATTRIBUTES__standard___string___Buffer(fra.me.REG[0]);
-  standard___string___Buffer___with_capacity(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_standard___string___Buffer(fra.me.REG[0]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AAttrPropdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___AAttrPropdef(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AAttrPropdef(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___string___NativeString[60] = {
-  {(bigint) -5 /* 0: Identity */},
-  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "NativeString" /* 2: Class Name */},
-  {(bigint) 3 /* 3: NativeString < Object: superclass typecheck marker */},
-  {(bigint) -5 /* 4: NativeString < NativeString: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_parser___parser_nodes___ADeferredMethPropdef[101] = {
+  {(bigint) 4763 /* 0: Identity */},
+  {(bigint) 16 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ADeferredMethPropdef" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ADeferredMethPropdef < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: ADeferredMethPropdef < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: ADeferredMethPropdef < Prod: superclass typecheck marker */},
+  {(bigint) 3751 /* 6: ADeferredMethPropdef < APropdef: superclass typecheck marker */},
+  {(bigint) 4399 /* 7: ADeferredMethPropdef < AMethPropdef: superclass typecheck marker */},
+  {(bigint) 4763 /* 8: ADeferredMethPropdef < ADeferredMethPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -22422,7 +55302,7 @@ const classtable_elt_t VFT_standard___string___NativeString[60] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: NativeString < Object: superclass init_table position */},
+  {(bigint) 4 /* 19: ADeferredMethPropdef < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -22438,6 +55318,8 @@ const classtable_elt_t VFT_standard___string___NativeString[60] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -22451,39 +55333,271 @@ const classtable_elt_t VFT_standard___string___NativeString[60] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) standard___environ___NativeString___get_environ},
-  {(bigint) 1 /* 48: NativeString < NativeString: superclass init_table position */},
-  {(bigint) standard___string___NativeString_____bra},
-  {(bigint) standard___string___NativeString_____braeq},
-  {(bigint) standard___string___NativeString___copy_to},
-  {(bigint) standard___string___NativeString___cstring_length},
-  {(bigint) standard___string___NativeString___atoi},
-  {(bigint) standard___string___NativeString___init},
-  {(bigint) standard___file___NativeString___file_exists},
-  {(bigint) standard___file___NativeString___file_stat},
-  {(bigint) standard___file___NativeString___file_mkdir},
-  {(bigint) standard___file___NativeString___file_delete},
-  {(bigint) standard___exec___NativeString___system},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___AMethPropdef___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AMethPropdef___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AMethPropdef___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___ADeferredMethPropdef___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___ADeferredMethPropdef___visit_all},
+  {(bigint) 3 /* 63: ADeferredMethPropdef < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___AMethPropdef___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AMethPropdef___accept_icode_generation},
+  {(bigint) syntax___typing___AMethPropdef___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 2 /* 72: ADeferredMethPropdef < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___mmbuilder___APropdef___process_and_check},
+  {(bigint) syntax___mmbuilder___APropdef___do_and_check_intro},
+  {(bigint) syntax___mmbuilder___APropdef___inherit_signature},
+  {(bigint) syntax___mmbuilder___APropdef___do_and_check_redef},
+  {(bigint) syntax___typing___APropdef___self_var},
+  {(bigint) 1 /* 80: ADeferredMethPropdef < APropdef: superclass init_table position */},
+  {(bigint) parser___parser_nodes___APropdef___n_doc},
+  {(bigint) syntax___mmbuilder___AMethPropdef___name},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) syntax___mmbuilder___AMethPropdef___method},
+  {(bigint) parser___parser_prod___AMethPropdef___empty_init},
+  {(bigint) parser___parser_prod___AMethPropdef___init_amethpropdef},
+  {(bigint) 0 /* 89: ADeferredMethPropdef < AMethPropdef: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AMethPropdef___n_kwredef},
+  {(bigint) parser___parser_nodes___AMethPropdef___n_visibility},
+  {(bigint) parser___parser_nodes___AMethPropdef___n_methid},
+  {(bigint) parser___parser_nodes___AMethPropdef___n_signature},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___icode_generation___ADeferredMethPropdef___fill_iroutine},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) parser___parser_prod___ADeferredMethPropdef___empty_init},
+  {(bigint) parser___parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef},
+  {(bigint) 5 /* 99: ADeferredMethPropdef < ADeferredMethPropdef: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ADeferredMethPropdef___n_kwmeth},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-val_t BOX_NativeString(char * val) {
-  struct TBOX_NativeString *box = (struct TBOX_NativeString*)alloc(sizeof(struct TBOX_NativeString));
-  box->vft = VFT_standard___string___NativeString;
-  box->val = val;
-  box->object_id = object_id_counter;
+/* 2: Attribute ADeferredMethPropdef::_parent */
+/* 3: Attribute ADeferredMethPropdef::_location */
+/* 4: Attribute ADeferredMethPropdef::_first_location */
+/* 5: Attribute ADeferredMethPropdef::_last_location */
+/* 6: Attribute ADeferredMethPropdef::_n_annotations */
+/* 7: Attribute ADeferredMethPropdef::_n_doc */
+/* 8: Attribute ADeferredMethPropdef::_self_var */
+/* 9: Attribute ADeferredMethPropdef::_name */
+/* 10: Attribute ADeferredMethPropdef::_method */
+/* 11: Attribute ADeferredMethPropdef::_n_kwredef */
+/* 12: Attribute ADeferredMethPropdef::_n_visibility */
+/* 13: Attribute ADeferredMethPropdef::_n_methid */
+/* 14: Attribute ADeferredMethPropdef::_n_signature */
+/* 15: Attribute ADeferredMethPropdef::_n_kwmeth */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ADeferredMethPropdef[] = "init var of ADeferredMethPropdef";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___ADeferredMethPropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:497 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:517 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:519 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___ADeferredMethPropdef(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 16);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ADeferredMethPropdef;
+  obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
-  return OBJ2VAL(box);
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___ADeferredMethPropdef[] = "check new ADeferredMethPropdef";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___ADeferredMethPropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___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;
+}
+static const char LOCATE_NEW_ADeferredMethPropdef_parser___parser_prod___AMethPropdef___empty_init[] = "new ADeferredMethPropdef parser_prod::AMethPropdef::empty_init";
+val_t NEW_ADeferredMethPropdef_parser___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 = 1307;
+  fra.me.meth = LOCATE_NEW_ADeferredMethPropdef_parser___parser_prod___AMethPropdef___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:1307 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ADeferredMethPropdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___ADeferredMethPropdef(fra.me.REG[0]);
+  parser___parser_prod___AMethPropdef___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ADeferredMethPropdef(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_ADeferredMethPropdef_parser___parser_prod___ADeferredMethPropdef___empty_init[] = "new ADeferredMethPropdef parser_prod::ADeferredMethPropdef::empty_init";
+val_t NEW_ADeferredMethPropdef_parser___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 = 1402;
+  fra.me.meth = LOCATE_NEW_ADeferredMethPropdef_parser___parser_prod___ADeferredMethPropdef___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:1402 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ADeferredMethPropdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___ADeferredMethPropdef(fra.me.REG[0]);
+  parser___parser_prod___ADeferredMethPropdef___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ADeferredMethPropdef(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_ADeferredMethPropdef_parser___parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef[] = "new ADeferredMethPropdef parser_prod::ADeferredMethPropdef::init_adeferredmethpropdef";
+val_t NEW_ADeferredMethPropdef_parser___parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef(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 = 1404;
+  fra.me.meth = LOCATE_NEW_ADeferredMethPropdef_parser___parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  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:1404 */
+  fra.me.REG[7] = NEW_parser___parser_nodes___ADeferredMethPropdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___ADeferredMethPropdef(fra.me.REG[7]);
+  parser___parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef(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_parser___parser_nodes___ADeferredMethPropdef(fra.me.REG[7]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[7];
+}
+static const char LOCATE_NEW_ADeferredMethPropdef_parser___parser_nodes___ANode___init[] = "new ADeferredMethPropdef parser_nodes::ANode::init";
+val_t NEW_ADeferredMethPropdef_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_ADeferredMethPropdef_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ADeferredMethPropdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___ADeferredMethPropdef(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ADeferredMethPropdef(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___string___StringCapable[50] = {
-  {(bigint) 35 /* 0: Identity */},
-  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "StringCapable" /* 2: Class Name */},
-  {(bigint) 3 /* 3: StringCapable < Object: superclass typecheck marker */},
-  {(bigint) 35 /* 4: StringCapable < StringCapable: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+static const char LOCATE_NEW_ADeferredMethPropdef_parser___parser_prod___AMethPropdef___init_amethpropdef[] = "new ADeferredMethPropdef parser_prod::AMethPropdef::init_amethpropdef";
+val_t NEW_ADeferredMethPropdef_parser___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 = 1309;
+  fra.me.meth = LOCATE_NEW_ADeferredMethPropdef_parser___parser_prod___AMethPropdef___init_amethpropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  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:1309 */
+  fra.me.REG[5] = NEW_parser___parser_nodes___ADeferredMethPropdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___ADeferredMethPropdef(fra.me.REG[5]);
+  parser___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_parser___parser_nodes___ADeferredMethPropdef(fra.me.REG[5]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[5];
+}
+const classtable_elt_t VFT_parser___parser_nodes___AInternMethPropdef[101] = {
+  {(bigint) 4719 /* 0: Identity */},
+  {(bigint) 16 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AInternMethPropdef" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AInternMethPropdef < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AInternMethPropdef < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AInternMethPropdef < Prod: superclass typecheck marker */},
+  {(bigint) 3751 /* 6: AInternMethPropdef < APropdef: superclass typecheck marker */},
+  {(bigint) 4399 /* 7: AInternMethPropdef < AMethPropdef: superclass typecheck marker */},
+  {(bigint) 4719 /* 8: AInternMethPropdef < AInternMethPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -22494,7 +55608,7 @@ const classtable_elt_t VFT_standard___string___StringCapable[50] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: StringCapable < Object: superclass init_table position */},
+  {(bigint) 4 /* 19: AInternMethPropdef < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -22510,6 +55624,8 @@ const classtable_elt_t VFT_standard___string___StringCapable[50] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -22523,187 +55639,271 @@ const classtable_elt_t VFT_standard___string___StringCapable[50] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: StringCapable < StringCapable: superclass init_table position */},
-  {(bigint) standard___string___StringCapable___calloc_string},
-  {(bigint) standard___string___StringCapable___init},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___AMethPropdef___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AMethPropdef___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AMethPropdef___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___AInternMethPropdef___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AInternMethPropdef___visit_all},
+  {(bigint) 3 /* 63: AInternMethPropdef < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___AMethPropdef___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AMethPropdef___accept_icode_generation},
+  {(bigint) syntax___typing___AMethPropdef___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 2 /* 72: AInternMethPropdef < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___mmbuilder___APropdef___process_and_check},
+  {(bigint) syntax___mmbuilder___APropdef___do_and_check_intro},
+  {(bigint) syntax___mmbuilder___APropdef___inherit_signature},
+  {(bigint) syntax___mmbuilder___APropdef___do_and_check_redef},
+  {(bigint) syntax___typing___APropdef___self_var},
+  {(bigint) 1 /* 80: AInternMethPropdef < APropdef: superclass init_table position */},
+  {(bigint) parser___parser_nodes___APropdef___n_doc},
+  {(bigint) syntax___mmbuilder___AMethPropdef___name},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) syntax___mmbuilder___AMethPropdef___method},
+  {(bigint) parser___parser_prod___AMethPropdef___empty_init},
+  {(bigint) parser___parser_prod___AMethPropdef___init_amethpropdef},
+  {(bigint) 0 /* 89: AInternMethPropdef < AMethPropdef: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AMethPropdef___n_kwredef},
+  {(bigint) parser___parser_nodes___AMethPropdef___n_visibility},
+  {(bigint) parser___parser_nodes___AMethPropdef___n_methid},
+  {(bigint) parser___parser_nodes___AMethPropdef___n_signature},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___icode_generation___AInternMethPropdef___fill_iroutine},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) parser___parser_prod___AInternMethPropdef___empty_init},
+  {(bigint) parser___parser_prod___AInternMethPropdef___init_ainternmethpropdef},
+  {(bigint) 5 /* 99: AInternMethPropdef < AInternMethPropdef: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AInternMethPropdef___n_kwmeth},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-void INIT_ATTRIBUTES__standard___string___StringCapable(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AInternMethPropdef::_parent */
+/* 3: Attribute AInternMethPropdef::_location */
+/* 4: Attribute AInternMethPropdef::_first_location */
+/* 5: Attribute AInternMethPropdef::_last_location */
+/* 6: Attribute AInternMethPropdef::_n_annotations */
+/* 7: Attribute AInternMethPropdef::_n_doc */
+/* 8: Attribute AInternMethPropdef::_self_var */
+/* 9: Attribute AInternMethPropdef::_name */
+/* 10: Attribute AInternMethPropdef::_method */
+/* 11: Attribute AInternMethPropdef::_n_kwredef */
+/* 12: Attribute AInternMethPropdef::_n_visibility */
+/* 13: Attribute AInternMethPropdef::_n_methid */
+/* 14: Attribute AInternMethPropdef::_n_signature */
+/* 15: Attribute AInternMethPropdef::_n_kwmeth */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AInternMethPropdef[] = "init var of AInternMethPropdef";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__standard___string___StringCapable;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AInternMethPropdef;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:497 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:517 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:519 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___string___StringCapable(void)
+val_t NEW_parser___parser_nodes___AInternMethPropdef(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 2);
-  obj->vft = (classtable_elt_t*)VFT_standard___string___StringCapable;
+  obj = alloc(sizeof(val_t) * 16);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AInternMethPropdef;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___string___StringCapable(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AInternMethPropdef[] = "check new AInternMethPropdef";
+void CHECKNEW_parser___parser_nodes___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_standard___string___StringCapable;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AInternMethPropdef;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___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;
 }
-val_t NEW_StringCapable_standard___string___StringCapable___init(void){
+static const char LOCATE_NEW_AInternMethPropdef_parser___parser_prod___AMethPropdef___empty_init[] = "new AInternMethPropdef parser_prod::AMethPropdef::empty_init";
+val_t NEW_AInternMethPropdef_parser___parser_prod___AMethPropdef___empty_init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[2] = {0, 0};
+  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_StringCapable_standard___string___StringCapable___init;
+  fra.me.line = 1307;
+  fra.me.meth = LOCATE_NEW_AInternMethPropdef_parser___parser_prod___AMethPropdef___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = NEW_standard___string___StringCapable();
-  INIT_ATTRIBUTES__standard___string___StringCapable(fra.me.REG[0]);
-  standard___string___StringCapable___init(fra.me.REG[0], init_table);
-  CHECKNEW_standard___string___StringCapable(fra.me.REG[0]);
+  /* parser/parser_prod.nit:1307 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AInternMethPropdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___AInternMethPropdef(fra.me.REG[0]);
+  parser___parser_prod___AMethPropdef___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AInternMethPropdef(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___symbol___Symbol[50] = {
-  {(bigint) 31 /* 0: Identity */},
-  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "Symbol" /* 2: Class Name */},
-  {(bigint) 3 /* 3: Symbol < Object: superclass typecheck marker */},
-  {(bigint) 31 /* 4: 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 :( */,
-  {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: Symbol < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
-  {(bigint) standard___file___Object___printn},
-  {(bigint) standard___file___Object___print},
-  {(bigint) standard___file___Object___getc},
-  {(bigint) standard___file___Object___gets},
-  {(bigint) standard___file___Object___stdin},
-  {(bigint) standard___file___Object___stdout},
-  {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___symbol___Symbol___to_s},
-  {(bigint) standard___string___Object___native_class_name},
-  {(bigint) standard___string___Object___class_name},
-  {(bigint) standard___string___Object___inspect},
-  {(bigint) standard___string___Object___inspect_head},
-  {(bigint) standard___string___Object___args},
-  {(bigint) standard___hash___Object___hash},
-  {(bigint) standard___math___Object___atan2},
-  {(bigint) standard___math___Object___pi},
-  {(bigint) standard___math___Object___srand_from},
-  {(bigint) standard___math___Object___srand},
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) standard___environ___Symbol___environ},
-  {(bigint) 1 /* 48: Symbol < Symbol: superclass init_table position */},
-  {(bigint) standard___symbol___Symbol___init},
-};
-/* 0: Pointer to the classtable */
-/* 1: Object_id */
-/* 2: Attribute Symbol::_string */
-void INIT_ATTRIBUTES__standard___symbol___Symbol(val_t p0){
+static const char LOCATE_NEW_AInternMethPropdef_parser___parser_prod___AInternMethPropdef___empty_init[] = "new AInternMethPropdef parser_prod::AInternMethPropdef::empty_init";
+val_t NEW_AInternMethPropdef_parser___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 = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__standard___symbol___Symbol;
+  fra.me.line = 1529;
+  fra.me.meth = LOCATE_NEW_AInternMethPropdef_parser___parser_prod___AInternMethPropdef___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:1529 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AInternMethPropdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___AInternMethPropdef(fra.me.REG[0]);
+  parser___parser_prod___AInternMethPropdef___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AInternMethPropdef(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-val_t NEW_standard___symbol___Symbol(void)
-{
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_standard___symbol___Symbol;
-  obj[1].object_id = object_id_counter;
-  object_id_counter = object_id_counter + 1;
-  return OBJ2VAL(obj);
+static const char LOCATE_NEW_AInternMethPropdef_parser___parser_prod___AInternMethPropdef___init_ainternmethpropdef[] = "new AInternMethPropdef parser_prod::AInternMethPropdef::init_ainternmethpropdef";
+val_t NEW_AInternMethPropdef_parser___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 = 1531;
+  fra.me.meth = LOCATE_NEW_AInternMethPropdef_parser___parser_prod___AInternMethPropdef___init_ainternmethpropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
+  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:1531 */
+  fra.me.REG[6] = NEW_parser___parser_nodes___AInternMethPropdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___AInternMethPropdef(fra.me.REG[6]);
+  parser___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_parser___parser_nodes___AInternMethPropdef(fra.me.REG[6]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[6];
 }
-void CHECKNEW_standard___symbol___Symbol(val_t p0){
+static const char LOCATE_NEW_AInternMethPropdef_parser___parser_nodes___ANode___init[] = "new AInternMethPropdef parser_nodes::ANode::init";
+val_t NEW_AInternMethPropdef_parser___parser_nodes___ANode___init(void){
   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 = 0;
-  fra.me.meth = LOCATE_CHECKNEW_standard___symbol___Symbol;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_AInternMethPropdef_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_standard___symbol___Symbol____string(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_string", LOCATE_nitc, 0);
-  }
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AInternMethPropdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___AInternMethPropdef(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AInternMethPropdef(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-val_t NEW_Symbol_standard___symbol___Symbol___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AInternMethPropdef_parser___parser_prod___AMethPropdef___init_amethpropdef[] = "new AInternMethPropdef parser_prod::AMethPropdef::init_amethpropdef";
+val_t NEW_AInternMethPropdef_parser___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[2] = {0, 0};
+  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 = 39;
-  fra.me.meth = LOCATE_NEW_Symbol_standard___symbol___Symbol___init;
+  fra.me.line = 1309;
+  fra.me.meth = LOCATE_NEW_AInternMethPropdef_parser___parser_prod___AMethPropdef___init_amethpropdef;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
   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;
-  /* ./../lib/standard//symbol.nit:39 */
-  fra.me.REG[1] = NEW_standard___symbol___Symbol();
-  INIT_ATTRIBUTES__standard___symbol___Symbol(fra.me.REG[1]);
-  standard___symbol___Symbol___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_standard___symbol___Symbol(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  /* parser/parser_prod.nit:1309 */
+  fra.me.REG[5] = NEW_parser___parser_nodes___AInternMethPropdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___AInternMethPropdef(fra.me.REG[5]);
+  parser___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_parser___parser_nodes___AInternMethPropdef(fra.me.REG[5]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[5];
 }
-const classtable_elt_t VFT_standard___stream___IOS[59] = {
-  {(bigint) 215 /* 0: Identity */},
-  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "IOS" /* 2: Class Name */},
-  {(bigint) 3 /* 3: IOS < Object: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 215 /* 5: IOS < IOS: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_parser___parser_nodes___AExternMethPropdef[109] = {
+  {(bigint) 4843 /* 0: Identity */},
+  {(bigint) 19 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AExternMethPropdef" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AExternMethPropdef < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AExternMethPropdef < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AExternMethPropdef < Prod: superclass typecheck marker */},
+  {(bigint) 3751 /* 6: AExternMethPropdef < APropdef: superclass typecheck marker */},
+  {(bigint) 4399 /* 7: AExternMethPropdef < AMethPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 4747 /* 9: AExternMethPropdef < AExternPropdef: superclass typecheck marker */},
+  {(bigint) 4843 /* 10: AExternMethPropdef < AExternMethPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -22712,7 +55912,7 @@ const classtable_elt_t VFT_standard___stream___IOS[59] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: IOS < Object: superclass init_table position */},
+  {(bigint) 5 /* 19: AExternMethPropdef < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -22728,6 +55928,8 @@ const classtable_elt_t VFT_standard___stream___IOS[59] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -22741,202 +55943,296 @@ const classtable_elt_t VFT_standard___stream___IOS[59] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___AMethPropdef___accept_property_builder},
+  {(bigint) syntax___extern_inline___AExternPropdef___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AMethPropdef___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___AExternMethPropdef___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AExternMethPropdef___visit_all},
+  {(bigint) 4 /* 63: AExternMethPropdef < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___AMethPropdef___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AMethPropdef___accept_icode_generation},
+  {(bigint) syntax___typing___AMethPropdef___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 3 /* 72: AExternMethPropdef < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___mmbuilder___APropdef___process_and_check},
+  {(bigint) syntax___mmbuilder___APropdef___do_and_check_intro},
+  {(bigint) syntax___mmbuilder___APropdef___inherit_signature},
+  {(bigint) syntax___mmbuilder___APropdef___do_and_check_redef},
+  {(bigint) syntax___typing___APropdef___self_var},
+  {(bigint) 2 /* 80: AExternMethPropdef < APropdef: superclass init_table position */},
+  {(bigint) parser___parser_nodes___APropdef___n_doc},
+  {(bigint) syntax___mmbuilder___AMethPropdef___name},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) syntax___mmbuilder___AMethPropdef___method},
+  {(bigint) parser___parser_prod___AMethPropdef___empty_init},
+  {(bigint) parser___parser_prod___AMethPropdef___init_amethpropdef},
+  {(bigint) 1 /* 89: AExternMethPropdef < AMethPropdef: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AMethPropdef___n_kwredef},
+  {(bigint) parser___parser_nodes___AMethPropdef___n_visibility},
+  {(bigint) parser___parser_nodes___AMethPropdef___n_methid},
+  {(bigint) parser___parser_nodes___AMethPropdef___n_signature},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___icode_generation___AExternMethPropdef___fill_iroutine},
+  {(bigint) syntax___typing___ANode___accept_typing},
   {0} /* Class Hole :( */,
-  {0} /* 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 /* 56: IOS < IOS: superclass init_table position */},
-  {(bigint) standard___stream___IOS___close},
-  {(bigint) standard___stream___IOS___init},
+  {(bigint) 0 /* 98: AExternMethPropdef < AExternPropdef: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AExternPropdef___n_extern},
+  {(bigint) parser___parser_nodes___AExternPropdef___n_extern_calls},
+  {(bigint) parser___parser_nodes___AExternPropdef___n_extern_code_block},
+  {(bigint) syntax___mmbuilder___AExternPropdef___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AMethPropdef___accept_property_verifier},
+  {(bigint) syntax___icode_generation___AExternPropdef___fill_iroutine},
+  {(bigint) parser___parser_prod___AExternMethPropdef___empty_init},
+  {(bigint) parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef},
+  {(bigint) 6 /* 107: AExternMethPropdef < AExternMethPropdef: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AExternMethPropdef___n_kwmeth},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-void INIT_ATTRIBUTES__standard___stream___IOS(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AExternMethPropdef::_parent */
+/* 3: Attribute AExternMethPropdef::_location */
+/* 4: Attribute AExternMethPropdef::_first_location */
+/* 5: Attribute AExternMethPropdef::_last_location */
+/* 6: Attribute AExternMethPropdef::_n_annotations */
+/* 7: Attribute AExternMethPropdef::_n_doc */
+/* 8: Attribute AExternMethPropdef::_self_var */
+/* 9: Attribute AExternMethPropdef::_name */
+/* 10: Attribute AExternMethPropdef::_method */
+/* 11: Attribute AExternMethPropdef::_n_kwredef */
+/* 12: Attribute AExternMethPropdef::_n_visibility */
+/* 13: Attribute AExternMethPropdef::_n_methid */
+/* 14: Attribute AExternMethPropdef::_n_signature */
+/* 15: Attribute AExternMethPropdef::_n_extern */
+/* 16: Attribute AExternMethPropdef::_n_extern_calls */
+/* 17: Attribute AExternMethPropdef::_n_extern_code_block */
+/* 18: Attribute AExternMethPropdef::_n_kwmeth */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AExternMethPropdef[] = "init var of AExternMethPropdef";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__standard___stream___IOS;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AExternMethPropdef;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:497 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:517 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:519 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:540 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AExternPropdef____n_extern(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:541 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AExternPropdef____n_extern_calls(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:542 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AExternPropdef____n_extern_code_block(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___stream___IOS(void)
+val_t NEW_parser___parser_nodes___AExternMethPropdef(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 2);
-  obj->vft = (classtable_elt_t*)VFT_standard___stream___IOS;
+  obj = alloc(sizeof(val_t) * 19);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AExternMethPropdef;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___stream___IOS(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AExternMethPropdef[] = "check new AExternMethPropdef";
+void CHECKNEW_parser___parser_nodes___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_standard___stream___IOS;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AExternMethPropdef;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___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;
 }
-val_t NEW_IOS_standard___stream___IOS___init(void){
+static const char LOCATE_NEW_AExternMethPropdef_parser___parser_prod___AMethPropdef___empty_init[] = "new AExternMethPropdef parser_prod::AMethPropdef::empty_init";
+val_t NEW_AExternMethPropdef_parser___parser_prod___AMethPropdef___empty_init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[2] = {0, 0};
+  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_IOS_standard___stream___IOS___init;
+  fra.me.line = 1307;
+  fra.me.meth = LOCATE_NEW_AExternMethPropdef_parser___parser_prod___AMethPropdef___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = NEW_standard___stream___IOS();
-  INIT_ATTRIBUTES__standard___stream___IOS(fra.me.REG[0]);
-  standard___stream___IOS___init(fra.me.REG[0], init_table);
-  CHECKNEW_standard___stream___IOS(fra.me.REG[0]);
+  /* parser/parser_prod.nit:1307 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AExternMethPropdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___AExternMethPropdef(fra.me.REG[0]);
+  parser___parser_prod___AMethPropdef___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AExternMethPropdef(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___stream___IStream[69] = {
-  {(bigint) 2227 /* 0: Identity */},
-  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "IStream" /* 2: Class Name */},
-  {(bigint) 3 /* 3: IStream < Object: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 215 /* 5: IStream < IOS: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2227 /* 7: 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 :( */,
-  {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: IStream < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
-  {(bigint) standard___file___Object___printn},
-  {(bigint) standard___file___Object___print},
-  {(bigint) standard___file___Object___getc},
-  {(bigint) standard___file___Object___gets},
-  {(bigint) standard___file___Object___stdin},
-  {(bigint) standard___file___Object___stdout},
-  {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
-  {(bigint) standard___string___Object___native_class_name},
-  {(bigint) standard___string___Object___class_name},
-  {(bigint) standard___string___Object___inspect},
-  {(bigint) standard___string___Object___inspect_head},
-  {(bigint) standard___string___Object___args},
-  {(bigint) standard___hash___Object___hash},
-  {(bigint) standard___math___Object___atan2},
-  {(bigint) standard___math___Object___pi},
-  {(bigint) standard___math___Object___srand_from},
-  {(bigint) standard___math___Object___srand},
-  {(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 /* 56: IStream < IOS: superclass init_table position */},
-  {(bigint) standard___stream___IOS___close},
-  {(bigint) standard___stream___IOS___init},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 2 /* 62: IStream < IStream: superclass init_table position */},
-  {(bigint) standard___stream___IStream___read_char},
-  {(bigint) standard___stream___IStream___read},
-  {(bigint) standard___stream___IStream___read_line},
-  {(bigint) standard___stream___IStream___read_all},
-  {(bigint) standard___stream___IStream___append_line_to},
-  {(bigint) standard___stream___IStream___eof},
-};
-/* 0: Pointer to the classtable */
-/* 1: Object_id */
-void INIT_ATTRIBUTES__standard___stream___IStream(val_t p0){
+static const char LOCATE_NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___empty_init[] = "new AExternMethPropdef parser_prod::AExternMethPropdef::empty_init";
+val_t NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___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 = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__standard___stream___IStream;
+  fra.me.line = 1638;
+  fra.me.meth = LOCATE_NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:1638 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AExternMethPropdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___AExternMethPropdef(fra.me.REG[0]);
+  parser___parser_prod___AExternMethPropdef___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AExternMethPropdef(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-val_t NEW_standard___stream___IStream(void)
-{
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 2);
-  obj->vft = (classtable_elt_t*)VFT_standard___stream___IStream;
-  obj[1].object_id = object_id_counter;
-  object_id_counter = object_id_counter + 1;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_standard___stream___IStream(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+static const char LOCATE_NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef[] = "new AExternMethPropdef parser_prod::AExternMethPropdef::init_aexternmethpropdef";
+val_t NEW_AExternMethPropdef_parser___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, val_t p7, val_t p8){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} 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_CHECKNEW_standard___stream___IStream;
+  fra.me.line = 1640;
+  fra.me.meth = LOCATE_NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  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[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;
+  /* parser/parser_prod.nit:1640 */
+  fra.me.REG[9] = NEW_parser___parser_nodes___AExternMethPropdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___AExternMethPropdef(fra.me.REG[9]);
+  parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[9], 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], init_table);
+  CHECKNEW_parser___parser_nodes___AExternMethPropdef(fra.me.REG[9]);
   stack_frame_head = fra.me.prev;
+  return fra.me.REG[9];
 }
-val_t NEW_IStream_standard___stream___IOS___init(void){
+static const char LOCATE_NEW_AExternMethPropdef_parser___parser_nodes___ANode___init[] = "new AExternMethPropdef parser_nodes::ANode::init";
+val_t NEW_AExternMethPropdef_parser___parser_nodes___ANode___init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[3] = {0, 0, 0};
+  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_IStream_standard___stream___IOS___init;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_AExternMethPropdef_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = NEW_standard___stream___IStream();
-  INIT_ATTRIBUTES__standard___stream___IStream(fra.me.REG[0]);
-  standard___stream___IOS___init(fra.me.REG[0], init_table);
-  CHECKNEW_standard___stream___IStream(fra.me.REG[0]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AExternMethPropdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___AExternMethPropdef(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AExternMethPropdef(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___stream___OStream[62] = {
-  {(bigint) 2107 /* 0: Identity */},
-  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "OStream" /* 2: Class Name */},
-  {(bigint) 3 /* 3: OStream < Object: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 215 /* 5: OStream < IOS: superclass typecheck marker */},
-  {(bigint) 2107 /* 6: OStream < OStream: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+static const char LOCATE_NEW_AExternMethPropdef_parser___parser_prod___AMethPropdef___init_amethpropdef[] = "new AExternMethPropdef parser_prod::AMethPropdef::init_amethpropdef";
+val_t NEW_AExternMethPropdef_parser___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 = 1309;
+  fra.me.meth = LOCATE_NEW_AExternMethPropdef_parser___parser_prod___AMethPropdef___init_amethpropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  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:1309 */
+  fra.me.REG[5] = NEW_parser___parser_nodes___AExternMethPropdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___AExternMethPropdef(fra.me.REG[5]);
+  parser___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_parser___parser_nodes___AExternMethPropdef(fra.me.REG[5]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[5];
+}
+const classtable_elt_t VFT_parser___parser_nodes___AConcreteMethPropdef[104] = {
+  {(bigint) 4775 /* 0: Identity */},
+  {(bigint) 17 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AConcreteMethPropdef" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AConcreteMethPropdef < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AConcreteMethPropdef < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AConcreteMethPropdef < Prod: superclass typecheck marker */},
+  {(bigint) 3751 /* 6: AConcreteMethPropdef < APropdef: superclass typecheck marker */},
+  {(bigint) 4399 /* 7: AConcreteMethPropdef < AMethPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 4775 /* 9: AConcreteMethPropdef < AConcreteMethPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -22946,7 +56242,7 @@ const classtable_elt_t VFT_standard___stream___OStream[62] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: OStream < Object: superclass init_table position */},
+  {(bigint) 4 /* 19: AConcreteMethPropdef < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -22962,6 +56258,8 @@ const classtable_elt_t VFT_standard___stream___OStream[62] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -22975,84 +56273,274 @@ const classtable_elt_t VFT_standard___stream___OStream[62] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___AMethPropdef___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AMethPropdef___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AMethPropdef___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___AConcreteMethPropdef___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AConcreteMethPropdef___visit_all},
+  {(bigint) 3 /* 63: AConcreteMethPropdef < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___AMethPropdef___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AMethPropdef___accept_icode_generation},
+  {(bigint) syntax___typing___AMethPropdef___accept_typing},
+  {(bigint) syntax___typing___AConcreteMethPropdef___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 2 /* 72: AConcreteMethPropdef < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___mmbuilder___APropdef___process_and_check},
+  {(bigint) syntax___mmbuilder___APropdef___do_and_check_intro},
+  {(bigint) syntax___mmbuilder___APropdef___inherit_signature},
+  {(bigint) syntax___mmbuilder___APropdef___do_and_check_redef},
+  {(bigint) syntax___typing___APropdef___self_var},
+  {(bigint) 1 /* 80: AConcreteMethPropdef < APropdef: superclass init_table position */},
+  {(bigint) parser___parser_nodes___APropdef___n_doc},
+  {(bigint) syntax___mmbuilder___AMethPropdef___name},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) syntax___mmbuilder___AMethPropdef___method},
+  {(bigint) parser___parser_prod___AMethPropdef___empty_init},
+  {(bigint) parser___parser_prod___AMethPropdef___init_amethpropdef},
+  {(bigint) 0 /* 89: AConcreteMethPropdef < AMethPropdef: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AMethPropdef___n_kwredef},
+  {(bigint) parser___parser_nodes___AMethPropdef___n_visibility},
+  {(bigint) parser___parser_nodes___AMethPropdef___n_methid},
+  {(bigint) parser___parser_nodes___AMethPropdef___n_signature},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___icode_generation___AConcreteMethPropdef___fill_iroutine},
+  {(bigint) syntax___typing___ANode___accept_typing},
   {0} /* Class Hole :( */,
-  {0} /* 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 /* 56: OStream < IOS: superclass init_table position */},
-  {(bigint) standard___stream___IOS___close},
-  {(bigint) standard___stream___IOS___init},
-  {(bigint) 2 /* 59: OStream < OStream: superclass init_table position */},
-  {(bigint) standard___stream___OStream___write},
-  {(bigint) standard___stream___OStream___is_writable},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) parser___parser_prod___AConcreteMethPropdef___empty_init},
+  {(bigint) parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef},
+  {(bigint) 5 /* 101: AConcreteMethPropdef < AConcreteMethPropdef: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AConcreteMethPropdef___n_kwmeth},
+  {(bigint) parser___parser_nodes___AConcreteMethPropdef___n_block},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-void INIT_ATTRIBUTES__standard___stream___OStream(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AConcreteMethPropdef::_parent */
+/* 3: Attribute AConcreteMethPropdef::_location */
+/* 4: Attribute AConcreteMethPropdef::_first_location */
+/* 5: Attribute AConcreteMethPropdef::_last_location */
+/* 6: Attribute AConcreteMethPropdef::_n_annotations */
+/* 7: Attribute AConcreteMethPropdef::_n_doc */
+/* 8: Attribute AConcreteMethPropdef::_self_var */
+/* 9: Attribute AConcreteMethPropdef::_name */
+/* 10: Attribute AConcreteMethPropdef::_method */
+/* 11: Attribute AConcreteMethPropdef::_n_kwredef */
+/* 12: Attribute AConcreteMethPropdef::_n_visibility */
+/* 13: Attribute AConcreteMethPropdef::_n_methid */
+/* 14: Attribute AConcreteMethPropdef::_n_signature */
+/* 15: Attribute AConcreteMethPropdef::_n_kwmeth */
+/* 16: Attribute AConcreteMethPropdef::_n_block */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AConcreteMethPropdef[] = "init var of AConcreteMethPropdef";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__standard___stream___OStream;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AConcreteMethPropdef;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:497 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:517 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:519 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:552 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___stream___OStream(void)
+val_t NEW_parser___parser_nodes___AConcreteMethPropdef(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 2);
-  obj->vft = (classtable_elt_t*)VFT_standard___stream___OStream;
+  obj = alloc(sizeof(val_t) * 17);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AConcreteMethPropdef;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___stream___OStream(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AConcreteMethPropdef[] = "check new AConcreteMethPropdef";
+void CHECKNEW_parser___parser_nodes___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_standard___stream___OStream;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AConcreteMethPropdef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_OStream_standard___stream___IOS___init(void){
+static const char LOCATE_NEW_AConcreteMethPropdef_parser___parser_prod___AMethPropdef___empty_init[] = "new AConcreteMethPropdef parser_prod::AMethPropdef::empty_init";
+val_t NEW_AConcreteMethPropdef_parser___parser_prod___AMethPropdef___empty_init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[3] = {0, 0, 0};
+  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_OStream_standard___stream___IOS___init;
+  fra.me.line = 1307;
+  fra.me.meth = LOCATE_NEW_AConcreteMethPropdef_parser___parser_prod___AMethPropdef___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:1307 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AConcreteMethPropdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___AConcreteMethPropdef(fra.me.REG[0]);
+  parser___parser_prod___AMethPropdef___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AConcreteMethPropdef(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AConcreteMethPropdef_parser___parser_prod___AConcreteMethPropdef___empty_init[] = "new AConcreteMethPropdef parser_prod::AConcreteMethPropdef::empty_init";
+val_t NEW_AConcreteMethPropdef_parser___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 = 1801;
+  fra.me.meth = LOCATE_NEW_AConcreteMethPropdef_parser___parser_prod___AConcreteMethPropdef___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = NEW_standard___stream___OStream();
-  INIT_ATTRIBUTES__standard___stream___OStream(fra.me.REG[0]);
-  standard___stream___IOS___init(fra.me.REG[0], init_table);
-  CHECKNEW_standard___stream___OStream(fra.me.REG[0]);
+  /* parser/parser_prod.nit:1801 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AConcreteMethPropdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___AConcreteMethPropdef(fra.me.REG[0]);
+  parser___parser_prod___AConcreteMethPropdef___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AConcreteMethPropdef(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___stream___BufferedIStream[73] = {
-  {(bigint) 3015 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "BufferedIStream" /* 2: Class Name */},
-  {(bigint) 3 /* 3: BufferedIStream < Object: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 215 /* 5: BufferedIStream < IOS: superclass typecheck marker */},
-  {(bigint) 3015 /* 6: BufferedIStream < BufferedIStream: superclass typecheck marker */},
-  {(bigint) 2227 /* 7: BufferedIStream < IStream: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+static const char LOCATE_NEW_AConcreteMethPropdef_parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef[] = "new AConcreteMethPropdef parser_prod::AConcreteMethPropdef::init_aconcretemethpropdef";
+val_t NEW_AConcreteMethPropdef_parser___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, val_t p7){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} 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 = 1803;
+  fra.me.meth = LOCATE_NEW_AConcreteMethPropdef_parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  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:1803 */
+  fra.me.REG[8] = NEW_parser___parser_nodes___AConcreteMethPropdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___AConcreteMethPropdef(fra.me.REG[8]);
+  parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(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_parser___parser_nodes___AConcreteMethPropdef(fra.me.REG[8]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[8];
+}
+static const char LOCATE_NEW_AConcreteMethPropdef_parser___parser_nodes___ANode___init[] = "new AConcreteMethPropdef parser_nodes::ANode::init";
+val_t NEW_AConcreteMethPropdef_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AConcreteMethPropdef_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AConcreteMethPropdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___AConcreteMethPropdef(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AConcreteMethPropdef(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AConcreteMethPropdef_parser___parser_prod___AMethPropdef___init_amethpropdef[] = "new AConcreteMethPropdef parser_prod::AMethPropdef::init_amethpropdef";
+val_t NEW_AConcreteMethPropdef_parser___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 = 1309;
+  fra.me.meth = LOCATE_NEW_AConcreteMethPropdef_parser___parser_prod___AMethPropdef___init_amethpropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  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:1309 */
+  fra.me.REG[5] = NEW_parser___parser_nodes___AConcreteMethPropdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___AConcreteMethPropdef(fra.me.REG[5]);
+  parser___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_parser___parser_nodes___AConcreteMethPropdef(fra.me.REG[5]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[5];
+}
+const classtable_elt_t VFT_parser___parser_nodes___AConcreteInitPropdef[112] = {
+  {(bigint) 4851 /* 0: Identity */},
+  {(bigint) 20 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AConcreteInitPropdef" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AConcreteInitPropdef < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AConcreteInitPropdef < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AConcreteInitPropdef < Prod: superclass typecheck marker */},
+  {(bigint) 3751 /* 6: AConcreteInitPropdef < APropdef: superclass typecheck marker */},
+  {(bigint) 4399 /* 7: AConcreteInitPropdef < AMethPropdef: superclass typecheck marker */},
+  {(bigint) 4723 /* 8: AConcreteInitPropdef < AInitPropdef: superclass typecheck marker */},
+  {(bigint) 4775 /* 9: AConcreteInitPropdef < AConcreteMethPropdef: superclass typecheck marker */},
+  {(bigint) 4851 /* 10: AConcreteInitPropdef < AConcreteInitPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -23061,7 +56549,7 @@ const classtable_elt_t VFT_standard___stream___BufferedIStream[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: BufferedIStream < Object: superclass init_table position */},
+  {(bigint) 4 /* 19: AConcreteInitPropdef < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -23077,6 +56565,8 @@ const classtable_elt_t VFT_standard___stream___BufferedIStream[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -23090,370 +56580,367 @@ const classtable_elt_t VFT_standard___stream___BufferedIStream[73] = {
   {(bigint) standard___math___Object___srand},
   {(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 /* 56: BufferedIStream < IOS: superclass init_table position */},
-  {(bigint) standard___stream___IOS___close},
-  {(bigint) standard___stream___IOS___init},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 2 /* 62: BufferedIStream < IStream: superclass init_table position */},
-  {(bigint) standard___stream___BufferedIStream___read_char},
-  {(bigint) standard___stream___BufferedIStream___read},
-  {(bigint) standard___stream___IStream___read_line},
-  {(bigint) standard___stream___BufferedIStream___read_all},
-  {(bigint) standard___stream___BufferedIStream___append_line_to},
-  {(bigint) standard___stream___BufferedIStream___eof},
-  {(bigint) 3 /* 69: BufferedIStream < BufferedIStream: superclass init_table position */},
-  {(bigint) standard___stream___BufferedIStream___fill_buffer},
-  {(bigint) standard___stream___BufferedIStream___end_reached},
-  {(bigint) standard___stream___BufferedIStream___prepare_buffer},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___AMethPropdef___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AMethPropdef___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AMethPropdef___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___AConcreteInitPropdef___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AConcreteInitPropdef___visit_all},
+  {(bigint) 3 /* 63: AConcreteInitPropdef < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___AConcreteInitPropdef___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AMethPropdef___accept_icode_generation},
+  {(bigint) syntax___typing___AConcreteInitPropdef___accept_typing},
+  {(bigint) syntax___typing___AConcreteInitPropdef___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 2 /* 72: AConcreteInitPropdef < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___mmbuilder___APropdef___process_and_check},
+  {(bigint) syntax___mmbuilder___APropdef___do_and_check_intro},
+  {(bigint) syntax___mmbuilder___APropdef___inherit_signature},
+  {(bigint) syntax___mmbuilder___APropdef___do_and_check_redef},
+  {(bigint) syntax___typing___APropdef___self_var},
+  {(bigint) 1 /* 80: AConcreteInitPropdef < APropdef: superclass init_table position */},
+  {(bigint) parser___parser_nodes___APropdef___n_doc},
+  {(bigint) syntax___mmbuilder___AMethPropdef___name},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) syntax___mmbuilder___AMethPropdef___method},
+  {(bigint) parser___parser_prod___AMethPropdef___empty_init},
+  {(bigint) parser___parser_prod___AMethPropdef___init_amethpropdef},
+  {(bigint) 0 /* 89: AConcreteInitPropdef < AMethPropdef: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AMethPropdef___n_kwredef},
+  {(bigint) parser___parser_nodes___AMethPropdef___n_visibility},
+  {(bigint) parser___parser_nodes___AMethPropdef___n_methid},
+  {(bigint) parser___parser_nodes___AMethPropdef___n_signature},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___icode_generation___AConcreteMethPropdef___fill_iroutine},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) 6 /* 97: AConcreteInitPropdef < AInitPropdef: superclass init_table position */},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) parser___parser_prod___AConcreteMethPropdef___empty_init},
+  {(bigint) parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef},
+  {(bigint) 5 /* 101: AConcreteInitPropdef < AConcreteMethPropdef: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AConcreteMethPropdef___n_kwmeth},
+  {(bigint) parser___parser_nodes___AConcreteMethPropdef___n_block},
+  {(bigint) syntax___typing___AMethPropdef___accept_typing},
+  {(bigint) syntax___typing___AConcreteMethPropdef___after_typing},
+  {(bigint) syntax___syntax_base___AConcreteInitPropdef___super_init_calls},
+  {(bigint) syntax___syntax_base___AConcreteInitPropdef___explicit_super_init_calls},
+  {(bigint) parser___parser_prod___AConcreteInitPropdef___empty_init},
+  {(bigint) parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef},
+  {(bigint) 7 /* 110: AConcreteInitPropdef < AConcreteInitPropdef: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AConcreteInitPropdef___n_kwinit},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* 4: Attribute BufferedIStream::_buffer */
-/* 5: Attribute BufferedIStream::_buffer_pos */
-void INIT_ATTRIBUTES__standard___stream___BufferedIStream(val_t p0){
+/* 2: Attribute AConcreteInitPropdef::_parent */
+/* 3: Attribute AConcreteInitPropdef::_location */
+/* 4: Attribute AConcreteInitPropdef::_first_location */
+/* 5: Attribute AConcreteInitPropdef::_last_location */
+/* 6: Attribute AConcreteInitPropdef::_n_annotations */
+/* 7: Attribute AConcreteInitPropdef::_n_doc */
+/* 8: Attribute AConcreteInitPropdef::_self_var */
+/* 9: Attribute AConcreteInitPropdef::_name */
+/* 10: Attribute AConcreteInitPropdef::_method */
+/* 11: Attribute AConcreteInitPropdef::_n_kwredef */
+/* 12: Attribute AConcreteInitPropdef::_n_visibility */
+/* 13: Attribute AConcreteInitPropdef::_n_methid */
+/* 14: Attribute AConcreteInitPropdef::_n_signature */
+/* 15: Attribute AConcreteInitPropdef::_n_kwmeth */
+/* 16: Attribute AConcreteInitPropdef::_n_block */
+/* 17: Attribute AConcreteInitPropdef::_super_init_calls */
+/* 18: Attribute AConcreteInitPropdef::_explicit_super_init_calls */
+/* 19: Attribute AConcreteInitPropdef::_n_kwinit */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AConcreteInitPropdef[] = "init var of AConcreteInitPropdef";
+void INIT_ATTRIBUTES__parser___parser_nodes___AConcreteInitPropdef(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__standard___stream___BufferedIStream;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AConcreteInitPropdef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//stream.nit:186 */
+  /* parser/parser_nodes.nit:56 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_standard___stream___BufferedIStream____buffer(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//stream.nit:190 */
-  REGB0 = TAG_Int(0);
-  ATTR_standard___stream___BufferedIStream____buffer_pos(fra.me.REG[0]) = REGB0;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:497 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:517 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:519 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:552 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/syntax_base.nit:554 */
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
+  ATTR_syntax___syntax_base___AConcreteInitPropdef____super_init_calls(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/syntax_base.nit:555 */
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
+  ATTR_syntax___syntax_base___AConcreteInitPropdef____explicit_super_init_calls(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___stream___BufferedIStream(void)
+val_t NEW_parser___parser_nodes___AConcreteInitPropdef(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_standard___stream___BufferedIStream;
+  obj = alloc(sizeof(val_t) * 20);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AConcreteInitPropdef;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___stream___BufferedIStream(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AConcreteInitPropdef[] = "check new AConcreteInitPropdef";
+void CHECKNEW_parser___parser_nodes___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_standard___stream___BufferedIStream;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AConcreteInitPropdef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_standard___stream___BufferedIStream____buffer_pos(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AConcreteInitPropdef____n_kwinit(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_buffer_pos", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_kwinit", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_syntax___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___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);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_BufferedIStream_standard___stream___IOS___init(void){
+static const char LOCATE_NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteMethPropdef___empty_init[] = "new AConcreteInitPropdef parser_prod::AConcreteMethPropdef::empty_init";
+val_t NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteMethPropdef___empty_init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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_BufferedIStream_standard___stream___IOS___init;
+  fra.me.line = 1801;
+  fra.me.meth = LOCATE_NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteMethPropdef___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = NEW_standard___stream___BufferedIStream();
-  INIT_ATTRIBUTES__standard___stream___BufferedIStream(fra.me.REG[0]);
-  standard___stream___IOS___init(fra.me.REG[0], init_table);
-  CHECKNEW_standard___stream___BufferedIStream(fra.me.REG[0]);
+  /* parser/parser_prod.nit:1801 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AConcreteInitPropdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___AConcreteInitPropdef(fra.me.REG[0]);
+  parser___parser_prod___AConcreteMethPropdef___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AConcreteInitPropdef(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___stream___IOStream[76] = {
-  {(bigint) 2879 /* 0: Identity */},
-  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "IOStream" /* 2: Class Name */},
-  {(bigint) 3 /* 3: IOStream < Object: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 215 /* 5: IOStream < IOS: superclass typecheck marker */},
-  {(bigint) 2107 /* 6: IOStream < OStream: superclass typecheck marker */},
-  {(bigint) 2227 /* 7: IOStream < IStream: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 2879 /* 10: IOStream < IOStream: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: IOStream < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
-  {(bigint) standard___file___Object___printn},
-  {(bigint) standard___file___Object___print},
-  {(bigint) standard___file___Object___getc},
-  {(bigint) standard___file___Object___gets},
-  {(bigint) standard___file___Object___stdin},
-  {(bigint) standard___file___Object___stdout},
-  {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
-  {(bigint) standard___string___Object___native_class_name},
-  {(bigint) standard___string___Object___class_name},
-  {(bigint) standard___string___Object___inspect},
-  {(bigint) standard___string___Object___inspect_head},
-  {(bigint) standard___string___Object___args},
-  {(bigint) standard___hash___Object___hash},
-  {(bigint) standard___math___Object___atan2},
-  {(bigint) standard___math___Object___pi},
-  {(bigint) standard___math___Object___srand_from},
-  {(bigint) standard___math___Object___srand},
-  {(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 /* 56: IOStream < IOS: superclass init_table position */},
-  {(bigint) standard___stream___IOS___close},
-  {(bigint) standard___stream___IOS___init},
-  {(bigint) 3 /* 59: IOStream < OStream: superclass init_table position */},
-  {(bigint) standard___stream___OStream___write},
-  {(bigint) standard___stream___OStream___is_writable},
-  {(bigint) 2 /* 62: IOStream < IStream: superclass init_table position */},
-  {(bigint) standard___stream___IStream___read_char},
-  {(bigint) standard___stream___IStream___read},
-  {(bigint) standard___stream___IStream___read_line},
-  {(bigint) standard___stream___IStream___read_all},
-  {(bigint) standard___stream___IStream___append_line_to},
-  {(bigint) standard___stream___IStream___eof},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 4 /* 75: IOStream < IOStream: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Object_id */
-void INIT_ATTRIBUTES__standard___stream___IOStream(val_t p0){
+static const char LOCATE_NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___empty_init[] = "new AConcreteInitPropdef parser_prod::AConcreteInitPropdef::empty_init";
+val_t NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___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 = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__standard___stream___IOStream;
+  fra.me.line = 1946;
+  fra.me.meth = LOCATE_NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:1946 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AConcreteInitPropdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___AConcreteInitPropdef(fra.me.REG[0]);
+  parser___parser_prod___AConcreteInitPropdef___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AConcreteInitPropdef(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-val_t NEW_standard___stream___IOStream(void)
-{
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 2);
-  obj->vft = (classtable_elt_t*)VFT_standard___stream___IOStream;
-  obj[1].object_id = object_id_counter;
-  object_id_counter = object_id_counter + 1;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_standard___stream___IOStream(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+static const char LOCATE_NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef[] = "new AConcreteInitPropdef parser_prod::AConcreteInitPropdef::init_aconcreteinitpropdef";
+val_t NEW_AConcreteInitPropdef_parser___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, val_t p7){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} 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_CHECKNEW_standard___stream___IOStream;
+  fra.me.line = 1948;
+  fra.me.meth = LOCATE_NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  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:1948 */
+  fra.me.REG[8] = NEW_parser___parser_nodes___AConcreteInitPropdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___AConcreteInitPropdef(fra.me.REG[8]);
+  parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(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_parser___parser_nodes___AConcreteInitPropdef(fra.me.REG[8]);
   stack_frame_head = fra.me.prev;
+  return fra.me.REG[8];
 }
-val_t NEW_IOStream_standard___stream___IOS___init(void){
+static const char LOCATE_NEW_AConcreteInitPropdef_parser___parser_nodes___ANode___init[] = "new AConcreteInitPropdef parser_nodes::ANode::init";
+val_t NEW_AConcreteInitPropdef_parser___parser_nodes___ANode___init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[5] = {0, 0, 0, 0, 0};
+  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_IOStream_standard___stream___IOS___init;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_AConcreteInitPropdef_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = NEW_standard___stream___IOStream();
-  INIT_ATTRIBUTES__standard___stream___IOStream(fra.me.REG[0]);
-  standard___stream___IOS___init(fra.me.REG[0], init_table);
-  CHECKNEW_standard___stream___IOStream(fra.me.REG[0]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AConcreteInitPropdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___AConcreteInitPropdef(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AConcreteInitPropdef(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___stream___FDStream[59] = {
-  {(bigint) 2287 /* 0: Identity */},
-  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "FDStream" /* 2: Class Name */},
-  {(bigint) 3 /* 3: FDStream < Object: superclass typecheck marker */},
-  {(bigint) 2287 /* 4: FDStream < FDStream: superclass typecheck marker */},
-  {(bigint) 215 /* 5: 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 :( */,
-  {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: FDStream < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
-  {(bigint) standard___file___Object___printn},
-  {(bigint) standard___file___Object___print},
-  {(bigint) standard___file___Object___getc},
-  {(bigint) standard___file___Object___gets},
-  {(bigint) standard___file___Object___stdin},
-  {(bigint) standard___file___Object___stdout},
-  {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
-  {(bigint) standard___string___Object___native_class_name},
-  {(bigint) standard___string___Object___class_name},
-  {(bigint) standard___string___Object___inspect},
-  {(bigint) standard___string___Object___inspect_head},
-  {(bigint) standard___string___Object___args},
-  {(bigint) standard___hash___Object___hash},
-  {(bigint) standard___math___Object___atan2},
-  {(bigint) standard___math___Object___pi},
-  {(bigint) standard___math___Object___srand_from},
-  {(bigint) standard___math___Object___srand},
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) 2 /* 47: FDStream < FDStream: superclass init_table position */},
-  {(bigint) standard___stream___FDStream___native_close},
-  {(bigint) standard___stream___FDStream___native_read_char},
-  {(bigint) standard___stream___FDStream___native_read},
-  {(bigint) standard___stream___FDStream___native_write},
-  {(bigint) standard___stream___FDStream___init},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 1 /* 56: FDStream < IOS: superclass init_table position */},
-  {(bigint) standard___stream___FDStream___close},
-  {(bigint) standard___stream___IOS___init},
-};
-/* 0: Pointer to the classtable */
-/* 1: Object_id */
-/* 2: Attribute FDStream::_fd */
-void INIT_ATTRIBUTES__standard___stream___FDStream(val_t p0){
+static const char LOCATE_NEW_AConcreteInitPropdef_parser___parser_prod___AMethPropdef___empty_init[] = "new AConcreteInitPropdef parser_prod::AMethPropdef::empty_init";
+val_t NEW_AConcreteInitPropdef_parser___parser_prod___AMethPropdef___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 = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__standard___stream___FDStream;
+  fra.me.line = 1307;
+  fra.me.meth = LOCATE_NEW_AConcreteInitPropdef_parser___parser_prod___AMethPropdef___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:1307 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AConcreteInitPropdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___AConcreteInitPropdef(fra.me.REG[0]);
+  parser___parser_prod___AMethPropdef___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AConcreteInitPropdef(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-val_t NEW_standard___stream___FDStream(void)
-{
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_standard___stream___FDStream;
-  obj[1].object_id = object_id_counter;
-  object_id_counter = object_id_counter + 1;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_standard___stream___FDStream(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
+static const char LOCATE_NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef[] = "new AConcreteInitPropdef parser_prod::AConcreteMethPropdef::init_aconcretemethpropdef";
+val_t NEW_AConcreteInitPropdef_parser___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, val_t p7){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} 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_CHECKNEW_standard___stream___FDStream;
+  fra.me.line = 1803;
+  fra.me.meth = LOCATE_NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
   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;
-  REGB0 = TAG_Bool(ATTR_standard___stream___FDStream____fd(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_fd", LOCATE_nitc, 0);
-  }
+  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:1803 */
+  fra.me.REG[8] = NEW_parser___parser_nodes___AConcreteInitPropdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___AConcreteInitPropdef(fra.me.REG[8]);
+  parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(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_parser___parser_nodes___AConcreteInitPropdef(fra.me.REG[8]);
   stack_frame_head = fra.me.prev;
+  return fra.me.REG[8];
 }
-val_t NEW_FDStream_standard___stream___FDStream___init(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
+static const char LOCATE_NEW_AConcreteInitPropdef_parser___parser_prod___AMethPropdef___init_amethpropdef[] = "new AConcreteInitPropdef parser_prod::AMethPropdef::init_amethpropdef";
+val_t NEW_AConcreteInitPropdef_parser___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[3] = {0, 0, 0};
+  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 = 225;
-  fra.me.meth = LOCATE_NEW_FDStream_standard___stream___FDStream___init;
+  fra.me.line = 1309;
+  fra.me.meth = LOCATE_NEW_AConcreteInitPropdef_parser___parser_prod___AMethPropdef___init_amethpropdef;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  REGB0 = p0;
-  /* ./../lib/standard//stream.nit:225 */
-  fra.me.REG[0] = NEW_standard___stream___FDStream();
-  INIT_ATTRIBUTES__standard___stream___FDStream(fra.me.REG[0]);
-  standard___stream___FDStream___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_standard___stream___FDStream(fra.me.REG[0]);
+  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:1309 */
+  fra.me.REG[5] = NEW_parser___parser_nodes___AConcreteInitPropdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___AConcreteInitPropdef(fra.me.REG[5]);
+  parser___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_parser___parser_nodes___AConcreteInitPropdef(fra.me.REG[5]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[5];
 }
-const classtable_elt_t VFT_standard___stream___FDIStream[71] = {
-  {(bigint) 2979 /* 0: Identity */},
-  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "FDIStream" /* 2: Class Name */},
-  {(bigint) 3 /* 3: FDIStream < Object: superclass typecheck marker */},
-  {(bigint) 2287 /* 4: FDIStream < FDStream: superclass typecheck marker */},
-  {(bigint) 215 /* 5: FDIStream < IOS: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2227 /* 7: FDIStream < IStream: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2979 /* 9: FDIStream < FDIStream: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___parser_nodes___AExternInitPropdef[111] = {
+  {(bigint) 4847 /* 0: Identity */},
+  {(bigint) 19 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AExternInitPropdef" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AExternInitPropdef < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AExternInitPropdef < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AExternInitPropdef < Prod: superclass typecheck marker */},
+  {(bigint) 3751 /* 6: AExternInitPropdef < APropdef: superclass typecheck marker */},
+  {(bigint) 4399 /* 7: AExternInitPropdef < AMethPropdef: superclass typecheck marker */},
+  {(bigint) 4723 /* 8: AExternInitPropdef < AInitPropdef: superclass typecheck marker */},
+  {(bigint) 4747 /* 9: AExternInitPropdef < AExternPropdef: superclass typecheck marker */},
+  {(bigint) 4847 /* 10: AExternInitPropdef < AExternInitPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -23462,7 +56949,7 @@ const classtable_elt_t VFT_standard___stream___FDIStream[71] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: FDIStream < Object: superclass init_table position */},
+  {(bigint) 5 /* 19: AExternInitPropdef < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -23478,6 +56965,8 @@ const classtable_elt_t VFT_standard___stream___FDIStream[71] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -23491,118 +56980,299 @@ const classtable_elt_t VFT_standard___stream___FDIStream[71] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 2 /* 47: FDIStream < FDStream: superclass init_table position */},
-  {(bigint) standard___stream___FDStream___native_close},
-  {(bigint) standard___stream___FDStream___native_read_char},
-  {(bigint) standard___stream___FDStream___native_read},
-  {(bigint) standard___stream___FDStream___native_write},
-  {(bigint) standard___stream___FDStream___init},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 1 /* 56: FDIStream < IOS: superclass init_table position */},
-  {(bigint) standard___stream___FDStream___close},
-  {(bigint) standard___stream___IOS___init},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 3 /* 62: FDIStream < IStream: superclass init_table position */},
-  {(bigint) standard___stream___FDIStream___read_char},
-  {(bigint) standard___stream___IStream___read},
-  {(bigint) standard___stream___IStream___read_line},
-  {(bigint) standard___stream___IStream___read_all},
-  {(bigint) standard___stream___IStream___append_line_to},
-  {(bigint) standard___stream___FDIStream___eof},
-  {(bigint) 4 /* 69: FDIStream < FDIStream: superclass init_table position */},
-  {(bigint) standard___stream___FDIStream___init},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___AMethPropdef___accept_property_builder},
+  {(bigint) syntax___extern_inline___AExternPropdef___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AMethPropdef___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___AExternInitPropdef___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AExternInitPropdef___visit_all},
+  {(bigint) 4 /* 63: AExternInitPropdef < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___AMethPropdef___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AMethPropdef___accept_icode_generation},
+  {(bigint) syntax___typing___AExternInitPropdef___accept_typing},
+  {(bigint) syntax___typing___AExternInitPropdef___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 3 /* 72: AExternInitPropdef < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___mmbuilder___APropdef___process_and_check},
+  {(bigint) syntax___mmbuilder___APropdef___do_and_check_intro},
+  {(bigint) syntax___mmbuilder___APropdef___inherit_signature},
+  {(bigint) syntax___mmbuilder___APropdef___do_and_check_redef},
+  {(bigint) syntax___typing___APropdef___self_var},
+  {(bigint) 2 /* 80: AExternInitPropdef < APropdef: superclass init_table position */},
+  {(bigint) parser___parser_nodes___APropdef___n_doc},
+  {(bigint) syntax___mmbuilder___AMethPropdef___name},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) syntax___mmbuilder___AMethPropdef___method},
+  {(bigint) parser___parser_prod___AMethPropdef___empty_init},
+  {(bigint) parser___parser_prod___AMethPropdef___init_amethpropdef},
+  {(bigint) 1 /* 89: AExternInitPropdef < AMethPropdef: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AMethPropdef___n_kwredef},
+  {(bigint) parser___parser_nodes___AMethPropdef___n_visibility},
+  {(bigint) parser___parser_nodes___AMethPropdef___n_methid},
+  {(bigint) parser___parser_nodes___AMethPropdef___n_signature},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___icode_generation___AExternInitPropdef___fill_iroutine},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) 6 /* 97: AExternInitPropdef < AInitPropdef: superclass init_table position */},
+  {(bigint) 0 /* 98: AExternInitPropdef < AExternPropdef: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AExternPropdef___n_extern},
+  {(bigint) parser___parser_nodes___AExternPropdef___n_extern_calls},
+  {(bigint) parser___parser_nodes___AExternPropdef___n_extern_code_block},
+  {(bigint) syntax___mmbuilder___AExternPropdef___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AMethPropdef___accept_property_verifier},
+  {(bigint) syntax___icode_generation___AExternPropdef___fill_iroutine},
+  {(bigint) syntax___typing___AMethPropdef___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) parser___parser_prod___AExternInitPropdef___empty_init},
+  {(bigint) parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef},
+  {(bigint) 7 /* 109: AExternInitPropdef < AExternInitPropdef: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AExternInitPropdef___n_kwnew},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute FDIStream::_fd */
-/* Instance Hole :( */
-/* 4: Attribute FDIStream::_eof */
-void INIT_ATTRIBUTES__standard___stream___FDIStream(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
+/* 2: Attribute AExternInitPropdef::_parent */
+/* 3: Attribute AExternInitPropdef::_location */
+/* 4: Attribute AExternInitPropdef::_first_location */
+/* 5: Attribute AExternInitPropdef::_last_location */
+/* 6: Attribute AExternInitPropdef::_n_annotations */
+/* 7: Attribute AExternInitPropdef::_n_doc */
+/* 8: Attribute AExternInitPropdef::_self_var */
+/* 9: Attribute AExternInitPropdef::_name */
+/* 10: Attribute AExternInitPropdef::_method */
+/* 11: Attribute AExternInitPropdef::_n_kwredef */
+/* 12: Attribute AExternInitPropdef::_n_visibility */
+/* 13: Attribute AExternInitPropdef::_n_methid */
+/* 14: Attribute AExternInitPropdef::_n_signature */
+/* 15: Attribute AExternInitPropdef::_n_extern */
+/* 16: Attribute AExternInitPropdef::_n_extern_calls */
+/* 17: Attribute AExternInitPropdef::_n_extern_code_block */
+/* 18: Attribute AExternInitPropdef::_n_kwnew */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AExternInitPropdef[] = "init var of AExternInitPropdef";
+void INIT_ATTRIBUTES__parser___parser_nodes___AExternInitPropdef(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__standard___stream___FDIStream;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AExternInitPropdef;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//stream.nit:231 */
-  REGB0 = TAG_Bool(false);
-  ATTR_standard___stream___FDIStream____eof(fra.me.REG[0]) = REGB0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:497 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:517 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:519 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:540 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AExternPropdef____n_extern(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:541 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AExternPropdef____n_extern_calls(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:542 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AExternPropdef____n_extern_code_block(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___stream___FDIStream(void)
+val_t NEW_parser___parser_nodes___AExternInitPropdef(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_standard___stream___FDIStream;
+  obj = alloc(sizeof(val_t) * 19);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AExternInitPropdef;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___stream___FDIStream(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AExternInitPropdef[] = "check new AExternInitPropdef";
+void CHECKNEW_parser___parser_nodes___AExternInitPropdef(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_standard___stream___FDIStream;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AExternInitPropdef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_standard___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_standard___stream___FDStream____fd(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AExternInitPropdef____n_kwnew(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_fd", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_kwnew", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_FDIStream_standard___stream___FDIStream___init(val_t p0){
+static const char LOCATE_NEW_AExternInitPropdef_parser___parser_prod___AMethPropdef___empty_init[] = "new AExternInitPropdef parser_prod::AMethPropdef::empty_init";
+val_t NEW_AExternInitPropdef_parser___parser_prod___AMethPropdef___empty_init(void){
   struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
   val_t tmp;
-  int init_table[5] = {0, 0, 0, 0, 0};
+  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 = 240;
-  fra.me.meth = LOCATE_NEW_FDIStream_standard___stream___FDIStream___init;
+  fra.me.line = 1307;
+  fra.me.meth = LOCATE_NEW_AExternInitPropdef_parser___parser_prod___AMethPropdef___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  REGB0 = p0;
-  /* ./../lib/standard//stream.nit:240 */
-  fra.me.REG[0] = NEW_standard___stream___FDIStream();
-  INIT_ATTRIBUTES__standard___stream___FDIStream(fra.me.REG[0]);
-  standard___stream___FDIStream___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_standard___stream___FDIStream(fra.me.REG[0]);
+  /* parser/parser_prod.nit:1307 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AExternInitPropdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___AExternInitPropdef(fra.me.REG[0]);
+  parser___parser_prod___AMethPropdef___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AExternInitPropdef(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___stream___FDOStream[62] = {
-  {(bigint) 2975 /* 0: Identity */},
-  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "FDOStream" /* 2: Class Name */},
-  {(bigint) 3 /* 3: FDOStream < Object: superclass typecheck marker */},
-  {(bigint) 2287 /* 4: FDOStream < FDStream: superclass typecheck marker */},
-  {(bigint) 215 /* 5: FDOStream < IOS: superclass typecheck marker */},
-  {(bigint) 2107 /* 6: FDOStream < OStream: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2975 /* 8: FDOStream < FDOStream: superclass typecheck marker */},
+static const char LOCATE_NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___empty_init[] = "new AExternInitPropdef parser_prod::AExternInitPropdef::empty_init";
+val_t NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___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 = 2095;
+  fra.me.meth = LOCATE_NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:2095 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AExternInitPropdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___AExternInitPropdef(fra.me.REG[0]);
+  parser___parser_prod___AExternInitPropdef___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AExternInitPropdef(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef[] = "new AExternInitPropdef parser_prod::AExternInitPropdef::init_aexterninitpropdef";
+val_t NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(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){
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} 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 = 2097;
+  fra.me.meth = LOCATE_NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
+  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[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;
+  /* parser/parser_prod.nit:2097 */
+  fra.me.REG[9] = NEW_parser___parser_nodes___AExternInitPropdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___AExternInitPropdef(fra.me.REG[9]);
+  parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(fra.me.REG[9], 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], init_table);
+  CHECKNEW_parser___parser_nodes___AExternInitPropdef(fra.me.REG[9]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[9];
+}
+static const char LOCATE_NEW_AExternInitPropdef_parser___parser_nodes___ANode___init[] = "new AExternInitPropdef parser_nodes::ANode::init";
+val_t NEW_AExternInitPropdef_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AExternInitPropdef_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AExternInitPropdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___AExternInitPropdef(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AExternInitPropdef(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AExternInitPropdef_parser___parser_prod___AMethPropdef___init_amethpropdef[] = "new AExternInitPropdef parser_prod::AMethPropdef::init_amethpropdef";
+val_t NEW_AExternInitPropdef_parser___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[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 = 1309;
+  fra.me.meth = LOCATE_NEW_AExternInitPropdef_parser___parser_prod___AMethPropdef___init_amethpropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  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:1309 */
+  fra.me.REG[5] = NEW_parser___parser_nodes___AExternInitPropdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___AExternInitPropdef(fra.me.REG[5]);
+  parser___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_parser___parser_nodes___AExternInitPropdef(fra.me.REG[5]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[5];
+}
+const classtable_elt_t VFT_parser___parser_nodes___AMainMethPropdef[107] = {
+  {(bigint) 4839 /* 0: Identity */},
+  {(bigint) 17 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AMainMethPropdef" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AMainMethPropdef < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AMainMethPropdef < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AMainMethPropdef < Prod: superclass typecheck marker */},
+  {(bigint) 3751 /* 6: AMainMethPropdef < APropdef: superclass typecheck marker */},
+  {(bigint) 4399 /* 7: AMainMethPropdef < AMethPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 4775 /* 9: AMainMethPropdef < AConcreteMethPropdef: superclass typecheck marker */},
+  {(bigint) 4839 /* 10: AMainMethPropdef < AMainMethPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -23611,7 +57281,7 @@ const classtable_elt_t VFT_standard___stream___FDOStream[62] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: FDOStream < Object: superclass init_table position */},
+  {(bigint) 4 /* 19: AMainMethPropdef < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -23627,6 +57297,8 @@ const classtable_elt_t VFT_standard___stream___FDOStream[62] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -23640,257 +57312,319 @@ const classtable_elt_t VFT_standard___stream___FDOStream[62] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 2 /* 47: FDOStream < FDStream: superclass init_table position */},
-  {(bigint) standard___stream___FDStream___native_close},
-  {(bigint) standard___stream___FDStream___native_read_char},
-  {(bigint) standard___stream___FDStream___native_read},
-  {(bigint) standard___stream___FDStream___native_write},
-  {(bigint) standard___stream___FDStream___init},
-  {(bigint) 4 /* 53: FDOStream < FDOStream: superclass init_table position */},
-  {(bigint) standard___stream___FDOStream___init},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___AMethPropdef___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AMethPropdef___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AMethPropdef___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___AMainMethPropdef___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AMainMethPropdef___visit_all},
+  {(bigint) 3 /* 63: AMainMethPropdef < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___AMethPropdef___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AMethPropdef___accept_icode_generation},
+  {(bigint) syntax___typing___AMethPropdef___accept_typing},
+  {(bigint) syntax___typing___AConcreteMethPropdef___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 2 /* 72: AMainMethPropdef < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___mmbuilder___AMainMethPropdef___process_and_check},
+  {(bigint) syntax___mmbuilder___APropdef___do_and_check_intro},
+  {(bigint) syntax___mmbuilder___APropdef___inherit_signature},
+  {(bigint) syntax___mmbuilder___APropdef___do_and_check_redef},
+  {(bigint) syntax___typing___APropdef___self_var},
+  {(bigint) 1 /* 80: AMainMethPropdef < APropdef: superclass init_table position */},
+  {(bigint) parser___parser_nodes___APropdef___n_doc},
+  {(bigint) syntax___mmbuilder___AMethPropdef___name},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) syntax___mmbuilder___AMethPropdef___method},
+  {(bigint) parser___parser_prod___AMethPropdef___empty_init},
+  {(bigint) parser___parser_prod___AMethPropdef___init_amethpropdef},
+  {(bigint) 0 /* 89: AMainMethPropdef < AMethPropdef: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AMethPropdef___n_kwredef},
+  {(bigint) parser___parser_nodes___AMethPropdef___n_visibility},
+  {(bigint) parser___parser_nodes___AMethPropdef___n_methid},
+  {(bigint) parser___parser_nodes___AMethPropdef___n_signature},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___icode_generation___AConcreteMethPropdef___fill_iroutine},
+  {(bigint) syntax___typing___ANode___accept_typing},
   {0} /* Class Hole :( */,
-  {(bigint) 1 /* 56: FDOStream < IOS: superclass init_table position */},
-  {(bigint) standard___stream___FDStream___close},
-  {(bigint) standard___stream___IOS___init},
-  {(bigint) 3 /* 59: FDOStream < OStream: superclass init_table position */},
-  {(bigint) standard___stream___FDOStream___write},
-  {(bigint) standard___stream___FDOStream___is_writable},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) parser___parser_prod___AConcreteMethPropdef___empty_init},
+  {(bigint) parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef},
+  {(bigint) 5 /* 101: AMainMethPropdef < AConcreteMethPropdef: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AConcreteMethPropdef___n_kwmeth},
+  {(bigint) parser___parser_nodes___AConcreteMethPropdef___n_block},
+  {(bigint) parser___parser_prod___AMainMethPropdef___empty_init},
+  {(bigint) parser___parser_prod___AMainMethPropdef___init_amainmethpropdef},
+  {(bigint) 6 /* 106: AMainMethPropdef < AMainMethPropdef: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute FDOStream::_fd */
-/* 3: Attribute FDOStream::_is_writable */
-void INIT_ATTRIBUTES__standard___stream___FDOStream(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AMainMethPropdef::_parent */
+/* 3: Attribute AMainMethPropdef::_location */
+/* 4: Attribute AMainMethPropdef::_first_location */
+/* 5: Attribute AMainMethPropdef::_last_location */
+/* 6: Attribute AMainMethPropdef::_n_annotations */
+/* 7: Attribute AMainMethPropdef::_n_doc */
+/* 8: Attribute AMainMethPropdef::_self_var */
+/* 9: Attribute AMainMethPropdef::_name */
+/* 10: Attribute AMainMethPropdef::_method */
+/* 11: Attribute AMainMethPropdef::_n_kwredef */
+/* 12: Attribute AMainMethPropdef::_n_visibility */
+/* 13: Attribute AMainMethPropdef::_n_methid */
+/* 14: Attribute AMainMethPropdef::_n_signature */
+/* 15: Attribute AMainMethPropdef::_n_kwmeth */
+/* 16: Attribute AMainMethPropdef::_n_block */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AMainMethPropdef[] = "init var of AMainMethPropdef";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__standard___stream___FDOStream;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AMainMethPropdef;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:497 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:517 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:519 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:552 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___stream___FDOStream(void)
+val_t NEW_parser___parser_nodes___AMainMethPropdef(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_standard___stream___FDOStream;
+  obj = alloc(sizeof(val_t) * 17);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AMainMethPropdef;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___stream___FDOStream(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AMainMethPropdef[] = "check new AMainMethPropdef";
+void CHECKNEW_parser___parser_nodes___AMainMethPropdef(val_t p0){
   struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_standard___stream___FDOStream;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AMainMethPropdef;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_standard___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_standard___stream___FDStream____fd(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_fd", LOCATE_nitc, 0);
-  }
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_FDOStream_standard___stream___FDOStream___init(val_t p0){
+static const char LOCATE_NEW_AMainMethPropdef_parser___parser_prod___AConcreteMethPropdef___empty_init[] = "new AMainMethPropdef parser_prod::AConcreteMethPropdef::empty_init";
+val_t NEW_AMainMethPropdef_parser___parser_prod___AConcreteMethPropdef___empty_init(void){
   struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
   val_t tmp;
-  int init_table[5] = {0, 0, 0, 0, 0};
+  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 = 254;
-  fra.me.meth = LOCATE_NEW_FDOStream_standard___stream___FDOStream___init;
+  fra.me.line = 1801;
+  fra.me.meth = LOCATE_NEW_AMainMethPropdef_parser___parser_prod___AConcreteMethPropdef___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  REGB0 = p0;
-  /* ./../lib/standard//stream.nit:254 */
-  fra.me.REG[0] = NEW_standard___stream___FDOStream();
-  INIT_ATTRIBUTES__standard___stream___FDOStream(fra.me.REG[0]);
-  standard___stream___FDOStream___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_standard___stream___FDOStream(fra.me.REG[0]);
+  /* parser/parser_prod.nit:1801 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AMainMethPropdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___AMainMethPropdef(fra.me.REG[0]);
+  parser___parser_prod___AConcreteMethPropdef___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AMainMethPropdef(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___stream___FDIOStream[76] = {
-  {(bigint) 3231 /* 0: Identity */},
-  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "FDIOStream" /* 2: Class Name */},
-  {(bigint) 3 /* 3: FDIOStream < Object: superclass typecheck marker */},
-  {(bigint) 2287 /* 4: FDIOStream < FDStream: superclass typecheck marker */},
-  {(bigint) 215 /* 5: FDIOStream < IOS: superclass typecheck marker */},
-  {(bigint) 2107 /* 6: FDIOStream < OStream: superclass typecheck marker */},
-  {(bigint) 2227 /* 7: FDIOStream < IStream: superclass typecheck marker */},
-  {(bigint) 2975 /* 8: FDIOStream < FDOStream: superclass typecheck marker */},
-  {(bigint) 2979 /* 9: FDIOStream < FDIStream: superclass typecheck marker */},
-  {(bigint) 2879 /* 10: FDIOStream < IOStream: superclass typecheck marker */},
-  {(bigint) 3231 /* 11: FDIOStream < FDIOStream: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: FDIOStream < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
-  {(bigint) standard___file___Object___printn},
-  {(bigint) standard___file___Object___print},
-  {(bigint) standard___file___Object___getc},
-  {(bigint) standard___file___Object___gets},
-  {(bigint) standard___file___Object___stdin},
-  {(bigint) standard___file___Object___stdout},
-  {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
-  {(bigint) standard___string___Object___native_class_name},
-  {(bigint) standard___string___Object___class_name},
-  {(bigint) standard___string___Object___inspect},
-  {(bigint) standard___string___Object___inspect_head},
-  {(bigint) standard___string___Object___args},
-  {(bigint) standard___hash___Object___hash},
-  {(bigint) standard___math___Object___atan2},
-  {(bigint) standard___math___Object___pi},
-  {(bigint) standard___math___Object___srand_from},
-  {(bigint) standard___math___Object___srand},
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) 2 /* 47: FDIOStream < FDStream: superclass init_table position */},
-  {(bigint) standard___stream___FDStream___native_close},
-  {(bigint) standard___stream___FDStream___native_read_char},
-  {(bigint) standard___stream___FDStream___native_read},
-  {(bigint) standard___stream___FDStream___native_write},
-  {(bigint) standard___stream___FDStream___init},
-  {(bigint) 6 /* 53: FDIOStream < FDOStream: superclass init_table position */},
-  {(bigint) standard___stream___FDOStream___init},
-  {0} /* Class Hole :( */,
-  {(bigint) 1 /* 56: FDIOStream < IOS: superclass init_table position */},
-  {(bigint) standard___stream___FDStream___close},
-  {(bigint) standard___stream___IOS___init},
-  {(bigint) 5 /* 59: FDIOStream < OStream: superclass init_table position */},
-  {(bigint) standard___stream___FDOStream___write},
-  {(bigint) standard___stream___FDOStream___is_writable},
-  {(bigint) 3 /* 62: FDIOStream < IStream: superclass init_table position */},
-  {(bigint) standard___stream___FDIStream___read_char},
-  {(bigint) standard___stream___IStream___read},
-  {(bigint) standard___stream___IStream___read_line},
-  {(bigint) standard___stream___IStream___read_all},
-  {(bigint) standard___stream___IStream___append_line_to},
-  {(bigint) standard___stream___FDIStream___eof},
-  {(bigint) 4 /* 69: FDIOStream < FDIStream: superclass init_table position */},
-  {(bigint) standard___stream___FDIStream___init},
-  {(bigint) 8 /* 71: FDIOStream < FDIOStream: superclass init_table position */},
-  {(bigint) standard___stream___FDIOStream___init},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 7 /* 75: FDIOStream < IOStream: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Object_id */
-/* 2: Attribute FDIOStream::_fd */
-/* 3: Attribute FDIOStream::_is_writable */
-/* 4: Attribute FDIOStream::_eof */
-void INIT_ATTRIBUTES__standard___stream___FDIOStream(val_t p0){
+static const char LOCATE_NEW_AMainMethPropdef_parser___parser_prod___AMainMethPropdef___empty_init[] = "new AMainMethPropdef parser_prod::AMainMethPropdef::empty_init";
+val_t NEW_AMainMethPropdef_parser___parser_prod___AMainMethPropdef___empty_init(void){
   struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
   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_INIT_ATTRIBUTES__standard___stream___FDIOStream;
+  fra.me.line = 2262;
+  fra.me.meth = LOCATE_NEW_AMainMethPropdef_parser___parser_prod___AMainMethPropdef___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./../lib/standard//stream.nit:231 */
-  REGB0 = TAG_Bool(false);
-  ATTR_standard___stream___FDIStream____eof(fra.me.REG[0]) = REGB0;
+  /* parser/parser_prod.nit:2262 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AMainMethPropdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___AMainMethPropdef(fra.me.REG[0]);
+  parser___parser_prod___AMainMethPropdef___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AMainMethPropdef(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-val_t NEW_standard___stream___FDIOStream(void)
-{
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_standard___stream___FDIOStream;
-  obj[1].object_id = object_id_counter;
-  object_id_counter = object_id_counter + 1;
-  return OBJ2VAL(obj);
+static const char LOCATE_NEW_AMainMethPropdef_parser___parser_prod___AMainMethPropdef___init_amainmethpropdef[] = "new AMainMethPropdef parser_prod::AMainMethPropdef::init_amainmethpropdef";
+val_t NEW_AMainMethPropdef_parser___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 = 2264;
+  fra.me.meth = LOCATE_NEW_AMainMethPropdef_parser___parser_prod___AMainMethPropdef___init_amainmethpropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  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:2264 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___AMainMethPropdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___AMainMethPropdef(fra.me.REG[2]);
+  parser___parser_prod___AMainMethPropdef___init_amainmethpropdef(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___AMainMethPropdef(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
 }
-void CHECKNEW_standard___stream___FDIOStream(val_t p0){
+static const char LOCATE_NEW_AMainMethPropdef_parser___parser_nodes___ANode___init[] = "new AMainMethPropdef parser_nodes::ANode::init";
+val_t NEW_AMainMethPropdef_parser___parser_nodes___ANode___init(void){
   struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
   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_CHECKNEW_standard___stream___FDIOStream;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_AMainMethPropdef_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_standard___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_standard___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_standard___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);
-  }
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AMainMethPropdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___AMainMethPropdef(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AMainMethPropdef(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-val_t NEW_FDIOStream_standard___stream___FDIOStream___init(val_t p0){
+static const char LOCATE_NEW_AMainMethPropdef_parser___parser_prod___AMethPropdef___empty_init[] = "new AMainMethPropdef parser_prod::AMethPropdef::empty_init";
+val_t NEW_AMainMethPropdef_parser___parser_prod___AMethPropdef___empty_init(void){
   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};
+  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 = 264;
-  fra.me.meth = LOCATE_NEW_FDIOStream_standard___stream___FDIOStream___init;
+  fra.me.line = 1307;
+  fra.me.meth = LOCATE_NEW_AMainMethPropdef_parser___parser_prod___AMethPropdef___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  REGB0 = p0;
-  /* ./../lib/standard//stream.nit:264 */
-  fra.me.REG[0] = NEW_standard___stream___FDIOStream();
-  INIT_ATTRIBUTES__standard___stream___FDIOStream(fra.me.REG[0]);
-  standard___stream___FDIOStream___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_standard___stream___FDIOStream(fra.me.REG[0]);
+  /* parser/parser_prod.nit:1307 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AMainMethPropdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___AMainMethPropdef(fra.me.REG[0]);
+  parser___parser_prod___AMethPropdef___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AMainMethPropdef(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___string_search___BM_Pattern[58] = {
-  {(bigint) 2355 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "BM_Pattern" /* 2: Class Name */},
-  {(bigint) 3 /* 3: BM_Pattern < Object: superclass typecheck marker */},
-  {(bigint) 103 /* 4: BM_Pattern < Pattern: superclass typecheck marker */},
-  {(bigint) 2355 /* 5: BM_Pattern < BM_Pattern: superclass typecheck marker */},
+static const char LOCATE_NEW_AMainMethPropdef_parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef[] = "new AMainMethPropdef parser_prod::AConcreteMethPropdef::init_aconcretemethpropdef";
+val_t NEW_AMainMethPropdef_parser___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, val_t p7){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} 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 = 1803;
+  fra.me.meth = LOCATE_NEW_AMainMethPropdef_parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
+  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:1803 */
+  fra.me.REG[8] = NEW_parser___parser_nodes___AMainMethPropdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___AMainMethPropdef(fra.me.REG[8]);
+  parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(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_parser___parser_nodes___AMainMethPropdef(fra.me.REG[8]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[8];
+}
+static const char LOCATE_NEW_AMainMethPropdef_parser___parser_prod___AMethPropdef___init_amethpropdef[] = "new AMainMethPropdef parser_prod::AMethPropdef::init_amethpropdef";
+val_t NEW_AMainMethPropdef_parser___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 = 1309;
+  fra.me.meth = LOCATE_NEW_AMainMethPropdef_parser___parser_prod___AMethPropdef___init_amethpropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  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:1309 */
+  fra.me.REG[5] = NEW_parser___parser_nodes___AMainMethPropdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___AMainMethPropdef(fra.me.REG[5]);
+  parser___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_parser___parser_nodes___AMainMethPropdef(fra.me.REG[5]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[5];
+}
+const classtable_elt_t VFT_parser___parser_nodes___AExternCalls[80] = {
+  {(bigint) 3799 /* 0: Identity */},
+  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AExternCalls" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AExternCalls < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AExternCalls < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AExternCalls < Prod: superclass typecheck marker */},
+  {(bigint) 3799 /* 6: AExternCalls < AExternCalls: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -23903,7 +57637,7 @@ const classtable_elt_t VFT_standard___string_search___BM_Pattern[58] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: BM_Pattern < Object: superclass init_table position */},
+  {(bigint) 2 /* 19: AExternCalls < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -23919,7 +57653,9 @@ const classtable_elt_t VFT_standard___string_search___BM_Pattern[58] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string_search___BM_Pattern___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -23932,108 +57668,180 @@ const classtable_elt_t VFT_standard___string_search___BM_Pattern[58] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: BM_Pattern < Pattern: superclass init_table position */},
-  {(bigint) standard___string_search___BM_Pattern___search_index_in},
-  {(bigint) standard___string_search___BM_Pattern___search_in},
-  {(bigint) standard___string_search___Pattern___search_all_in},
-  {(bigint) standard___string_search___Pattern___split_in},
-  {(bigint) 2 /* 52: BM_Pattern < BM_Pattern: superclass init_table position */},
-  {(bigint) standard___string_search___BM_Pattern___init},
-  {(bigint) standard___string_search___BM_Pattern___bc},
-  {(bigint) standard___string_search___BM_Pattern___compute_bc},
-  {(bigint) standard___string_search___BM_Pattern___suffixes},
-  {(bigint) standard___string_search___BM_Pattern___compute_gs},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___AExternCalls___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AExternCalls___visit_all},
+  {(bigint) 1 /* 63: AExternCalls < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 72: AExternCalls < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_prod___AExternCalls___empty_init},
+  {(bigint) parser___parser_prod___AExternCalls___init_aexterncalls},
+  {(bigint) 3 /* 77: AExternCalls < AExternCalls: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AExternCalls___n_kwimport},
+  {(bigint) parser___parser_nodes___AExternCalls___n_extern_calls},
 };
 /* 0: Pointer to the classtable */
 /* 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__standard___string_search___BM_Pattern(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AExternCalls::_parent */
+/* 3: Attribute AExternCalls::_location */
+/* 4: Attribute AExternCalls::_first_location */
+/* 5: Attribute AExternCalls::_last_location */
+/* 6: Attribute AExternCalls::_n_annotations */
+/* 7: Attribute AExternCalls::_n_kwimport */
+/* 8: Attribute AExternCalls::_n_extern_calls */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AExternCalls[] = "init var of AExternCalls";
+void INIT_ATTRIBUTES__parser___parser_nodes___AExternCalls(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__standard___string_search___BM_Pattern;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AExternCalls;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:574 */
+  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  ATTR_parser___parser_nodes___AExternCalls____n_extern_calls(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___string_search___BM_Pattern(void)
+val_t NEW_parser___parser_nodes___AExternCalls(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_standard___string_search___BM_Pattern;
+  obj = alloc(sizeof(val_t) * 9);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AExternCalls;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___string_search___BM_Pattern(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AExternCalls[] = "check new AExternCalls";
+void CHECKNEW_parser___parser_nodes___AExternCalls(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_standard___string_search___BM_Pattern;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AExternCalls;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_standard___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_standard___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_standard___string_search___BM_Pattern____gs(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AExternCalls____n_kwimport(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_gs", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_kwimport", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_standard___string_search___BM_Pattern____bc_table(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AExternCalls____n_extern_calls(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_bc_table", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_extern_calls", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_BM_Pattern_standard___string_search___BM_Pattern___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AExternCalls_parser___parser_prod___AExternCalls___empty_init[] = "new AExternCalls parser_prod::AExternCalls::empty_init";
+val_t NEW_AExternCalls_parser___parser_prod___AExternCalls___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[3] = {0, 0, 0};
+  int init_table[4] = {0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 108;
-  fra.me.meth = LOCATE_NEW_BM_Pattern_standard___string_search___BM_Pattern___init;
+  fra.me.line = 8470;
+  fra.me.meth = LOCATE_NEW_AExternCalls_parser___parser_prod___AExternCalls___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:8470 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AExternCalls();
+  INIT_ATTRIBUTES__parser___parser_nodes___AExternCalls(fra.me.REG[0]);
+  parser___parser_prod___AExternCalls___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AExternCalls(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AExternCalls_parser___parser_prod___AExternCalls___init_aexterncalls[] = "new AExternCalls parser_prod::AExternCalls::init_aexterncalls";
+val_t NEW_AExternCalls_parser___parser_prod___AExternCalls___init_aexterncalls(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 = 8472;
+  fra.me.meth = LOCATE_NEW_AExternCalls_parser___parser_prod___AExternCalls___init_aexterncalls;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//string_search.nit:108 */
-  fra.me.REG[1] = NEW_standard___string_search___BM_Pattern();
-  INIT_ATTRIBUTES__standard___string_search___BM_Pattern(fra.me.REG[1]);
-  standard___string_search___BM_Pattern___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_standard___string_search___BM_Pattern(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:8472 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___AExternCalls();
+  INIT_ATTRIBUTES__parser___parser_nodes___AExternCalls(fra.me.REG[2]);
+  parser___parser_prod___AExternCalls___init_aexterncalls(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___AExternCalls(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[2];
 }
-const classtable_elt_t VFT_standard___string_search___Match[53] = {
-  {(bigint) 131 /* 0: Identity */},
-  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "Match" /* 2: Class Name */},
-  {(bigint) 3 /* 3: Match < Object: superclass typecheck marker */},
-  {(bigint) 131 /* 4: Match < Match: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+static const char LOCATE_NEW_AExternCalls_parser___parser_nodes___ANode___init[] = "new AExternCalls parser_nodes::ANode::init";
+val_t NEW_AExternCalls_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AExternCalls_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AExternCalls();
+  INIT_ATTRIBUTES__parser___parser_nodes___AExternCalls(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AExternCalls(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___ALocalPropExternCall[85] = {
+  {(bigint) 4703 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ALocalPropExternCall" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ALocalPropExternCall < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: ALocalPropExternCall < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: ALocalPropExternCall < Prod: superclass typecheck marker */},
+  {(bigint) 3803 /* 6: ALocalPropExternCall < AExternCall: superclass typecheck marker */},
+  {(bigint) 4355 /* 7: ALocalPropExternCall < APropExternCall: superclass typecheck marker */},
+  {(bigint) 4703 /* 8: ALocalPropExternCall < ALocalPropExternCall: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -24044,7 +57852,7 @@ const classtable_elt_t VFT_standard___string_search___Match[53] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: Match < Object: superclass init_table position */},
+  {(bigint) 4 /* 19: ALocalPropExternCall < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -24060,7 +57868,9 @@ const classtable_elt_t VFT_standard___string_search___Match[53] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string_search___Match___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -24073,102 +57883,217 @@ const classtable_elt_t VFT_standard___string_search___Match[53] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: Match < Match: superclass init_table position */},
-  {(bigint) standard___string_search___Match___string},
-  {(bigint) standard___string_search___Match___from},
-  {(bigint) standard___string_search___Match___length},
-  {(bigint) standard___string_search___Match___after},
-  {(bigint) standard___string_search___Match___init},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___ALocalPropExternCall___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___ALocalPropExternCall___visit_all},
+  {(bigint) 3 /* 63: ALocalPropExternCall < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___AExternCall___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 2 /* 72: ALocalPropExternCall < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___typing___ALocalPropExternCall___target_class_name},
+  {(bigint) syntax___typing___ALocalPropExternCall___target_method_name},
+  {(bigint) parser___parser_prod___AExternCall___empty_init},
+  {(bigint) parser___parser_prod___AExternCall___init_aexterncall},
+  {(bigint) 1 /* 79: ALocalPropExternCall < AExternCall: superclass init_table position */},
+  {(bigint) 0 /* 80: ALocalPropExternCall < APropExternCall: superclass init_table position */},
+  {(bigint) parser___parser_prod___ALocalPropExternCall___empty_init},
+  {(bigint) parser___parser_prod___ALocalPropExternCall___init_alocalpropexterncall},
+  {(bigint) 5 /* 83: ALocalPropExternCall < ALocalPropExternCall: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ALocalPropExternCall___n_methid},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute Match::_string */
-/* 3: Attribute Match::_from */
-/* 4: Attribute Match::_length */
-void INIT_ATTRIBUTES__standard___string_search___Match(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute ALocalPropExternCall::_parent */
+/* 3: Attribute ALocalPropExternCall::_location */
+/* 4: Attribute ALocalPropExternCall::_first_location */
+/* 5: Attribute ALocalPropExternCall::_last_location */
+/* 6: Attribute ALocalPropExternCall::_n_annotations */
+/* 7: Attribute ALocalPropExternCall::_n_methid */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ALocalPropExternCall[] = "init var of ALocalPropExternCall";
+void INIT_ATTRIBUTES__parser___parser_nodes___ALocalPropExternCall(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__standard___string_search___Match;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ALocalPropExternCall;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___string_search___Match(void)
+val_t NEW_parser___parser_nodes___ALocalPropExternCall(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_standard___string_search___Match;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ALocalPropExternCall;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___string_search___Match(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___ALocalPropExternCall[] = "check new ALocalPropExternCall";
+void CHECKNEW_parser___parser_nodes___ALocalPropExternCall(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_standard___string_search___Match;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___ALocalPropExternCall;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_standard___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_standard___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_standard___string_search___Match____length(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ALocalPropExternCall____n_methid(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_methid", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_Match_standard___string_search___Match___init(val_t p0, val_t p1, val_t p2){
+static const char LOCATE_NEW_ALocalPropExternCall_parser___parser_prod___AExternCall___empty_init[] = "new ALocalPropExternCall parser_prod::AExternCall::empty_init";
+val_t NEW_ALocalPropExternCall_parser___parser_prod___AExternCall___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 = 8522;
+  fra.me.meth = LOCATE_NEW_ALocalPropExternCall_parser___parser_prod___AExternCall___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:8522 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ALocalPropExternCall();
+  INIT_ATTRIBUTES__parser___parser_nodes___ALocalPropExternCall(fra.me.REG[0]);
+  parser___parser_prod___AExternCall___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ALocalPropExternCall(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_ALocalPropExternCall_parser___parser_prod___ALocalPropExternCall___empty_init[] = "new ALocalPropExternCall parser_prod::ALocalPropExternCall::empty_init";
+val_t NEW_ALocalPropExternCall_parser___parser_prod___ALocalPropExternCall___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 = 8569;
+  fra.me.meth = LOCATE_NEW_ALocalPropExternCall_parser___parser_prod___ALocalPropExternCall___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:8569 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ALocalPropExternCall();
+  INIT_ATTRIBUTES__parser___parser_nodes___ALocalPropExternCall(fra.me.REG[0]);
+  parser___parser_prod___ALocalPropExternCall___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ALocalPropExternCall(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_ALocalPropExternCall_parser___parser_prod___ALocalPropExternCall___init_alocalpropexterncall[] = "new ALocalPropExternCall parser_prod::ALocalPropExternCall::init_alocalpropexterncall";
+val_t NEW_ALocalPropExternCall_parser___parser_prod___ALocalPropExternCall___init_alocalpropexterncall(val_t p0){
   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};
+  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 = 221;
-  fra.me.meth = LOCATE_NEW_Match_standard___string_search___Match___init;
+  fra.me.line = 8571;
+  fra.me.meth = LOCATE_NEW_ALocalPropExternCall_parser___parser_prod___ALocalPropExternCall___init_alocalpropexterncall;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   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:221 */
-  fra.me.REG[1] = NEW_standard___string_search___Match();
-  INIT_ATTRIBUTES__standard___string_search___Match(fra.me.REG[1]);
-  standard___string_search___Match___init(fra.me.REG[1], fra.me.REG[0], REGB0, REGB1, init_table);
-  CHECKNEW_standard___string_search___Match(fra.me.REG[1]);
+  /* parser/parser_prod.nit:8571 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___ALocalPropExternCall();
+  INIT_ATTRIBUTES__parser___parser_nodes___ALocalPropExternCall(fra.me.REG[1]);
+  parser___parser_prod___ALocalPropExternCall___init_alocalpropexterncall(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ALocalPropExternCall(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_standard___file___FStream[59] = {
-  {(bigint) 2283 /* 0: Identity */},
-  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "FStream" /* 2: Class Name */},
-  {(bigint) 3 /* 3: FStream < Object: superclass typecheck marker */},
-  {(bigint) 119 /* 4: FStream < NativeFileCapable: superclass typecheck marker */},
-  {(bigint) 215 /* 5: FStream < IOS: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+static const char LOCATE_NEW_ALocalPropExternCall_parser___parser_nodes___ANode___init[] = "new ALocalPropExternCall parser_nodes::ANode::init";
+val_t NEW_ALocalPropExternCall_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_ALocalPropExternCall_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ALocalPropExternCall();
+  INIT_ATTRIBUTES__parser___parser_nodes___ALocalPropExternCall(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ALocalPropExternCall(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_ALocalPropExternCall_parser___parser_prod___AExternCall___init_aexterncall[] = "new ALocalPropExternCall parser_prod::AExternCall::init_aexterncall";
+val_t NEW_ALocalPropExternCall_parser___parser_prod___AExternCall___init_aexterncall(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 = 8524;
+  fra.me.meth = LOCATE_NEW_ALocalPropExternCall_parser___parser_prod___AExternCall___init_aexterncall;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:8524 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ALocalPropExternCall();
+  INIT_ATTRIBUTES__parser___parser_nodes___ALocalPropExternCall(fra.me.REG[0]);
+  parser___parser_prod___AExternCall___init_aexterncall(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ALocalPropExternCall(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___AFullPropExternCall[87] = {
+  {(bigint) 4735 /* 0: Identity */},
+  {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AFullPropExternCall" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AFullPropExternCall < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AFullPropExternCall < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AFullPropExternCall < Prod: superclass typecheck marker */},
+  {(bigint) 3803 /* 6: AFullPropExternCall < AExternCall: superclass typecheck marker */},
+  {(bigint) 4355 /* 7: AFullPropExternCall < APropExternCall: superclass typecheck marker */},
+  {(bigint) 4735 /* 8: AFullPropExternCall < AFullPropExternCall: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 2283 /* 8: FStream < FStream: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -24178,7 +58103,7 @@ const classtable_elt_t VFT_standard___file___FStream[59] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: FStream < Object: superclass init_table position */},
+  {(bigint) 4 /* 19: AFullPropExternCall < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -24194,6 +58119,8 @@ const classtable_elt_t VFT_standard___file___FStream[59] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -24207,92 +58134,234 @@ const classtable_elt_t VFT_standard___file___FStream[59] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 2 /* 47: FStream < NativeFileCapable: superclass init_table position */},
-  {(bigint) standard___file___NativeFileCapable___io_open_read},
-  {(bigint) standard___file___NativeFileCapable___io_open_write},
-  {(bigint) standard___file___NativeFileCapable___native_stdin},
-  {(bigint) standard___file___NativeFileCapable___native_stdout},
-  {(bigint) standard___file___NativeFileCapable___native_stderr},
-  {(bigint) 3 /* 53: FStream < FStream: superclass init_table position */},
-  {(bigint) standard___file___FStream___path},
-  {(bigint) standard___file___FStream___file_stat},
-  {(bigint) 1 /* 56: FStream < IOS: superclass init_table position */},
-  {(bigint) standard___stream___IOS___close},
-  {(bigint) standard___stream___IOS___init},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___AFullPropExternCall___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AFullPropExternCall___visit_all},
+  {(bigint) 3 /* 63: AFullPropExternCall < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___AExternCall___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 2 /* 72: AFullPropExternCall < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___typing___AFullPropExternCall___target_class_name},
+  {(bigint) syntax___typing___AFullPropExternCall___target_method_name},
+  {(bigint) parser___parser_prod___AExternCall___empty_init},
+  {(bigint) parser___parser_prod___AExternCall___init_aexterncall},
+  {(bigint) 1 /* 79: AFullPropExternCall < AExternCall: superclass init_table position */},
+  {(bigint) 0 /* 80: AFullPropExternCall < APropExternCall: superclass init_table position */},
+  {(bigint) parser___parser_prod___AFullPropExternCall___empty_init},
+  {(bigint) parser___parser_prod___AFullPropExternCall___init_afullpropexterncall},
+  {(bigint) 5 /* 83: AFullPropExternCall < AFullPropExternCall: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AFullPropExternCall___n_classid},
+  {(bigint) parser___parser_nodes___AFullPropExternCall___n_quad},
+  {(bigint) parser___parser_nodes___AFullPropExternCall___n_methid},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute FStream::_path */
-/* 3: Attribute FStream::_file */
-void INIT_ATTRIBUTES__standard___file___FStream(val_t p0){
+/* 2: Attribute AFullPropExternCall::_parent */
+/* 3: Attribute AFullPropExternCall::_location */
+/* 4: Attribute AFullPropExternCall::_first_location */
+/* 5: Attribute AFullPropExternCall::_last_location */
+/* 6: Attribute AFullPropExternCall::_n_annotations */
+/* 7: Attribute AFullPropExternCall::_n_classid */
+/* 8: Attribute AFullPropExternCall::_n_quad */
+/* 9: Attribute AFullPropExternCall::_n_methid */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AFullPropExternCall[] = "init var of AFullPropExternCall";
+void INIT_ATTRIBUTES__parser___parser_nodes___AFullPropExternCall(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__standard___file___FStream;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AFullPropExternCall;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//file.nit:55 */
+  /* parser/parser_nodes.nit:56 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_standard___file___FStream____path(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//file.nit:58 */
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:589 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_standard___file___FStream____file(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AFullPropExternCall____n_quad(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___file___FStream(void)
+val_t NEW_parser___parser_nodes___AFullPropExternCall(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_standard___file___FStream;
+  obj = alloc(sizeof(val_t) * 10);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AFullPropExternCall;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___file___FStream(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AFullPropExternCall[] = "check new AFullPropExternCall";
+void CHECKNEW_parser___parser_nodes___AFullPropExternCall(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_standard___file___FStream;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AFullPropExternCall;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AFullPropExternCall____n_classid(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_classid", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AFullPropExternCall____n_methid(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_methid", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_AFullPropExternCall_parser___parser_prod___AExternCall___empty_init[] = "new AFullPropExternCall parser_prod::AExternCall::empty_init";
+val_t NEW_AFullPropExternCall_parser___parser_prod___AExternCall___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 = 8522;
+  fra.me.meth = LOCATE_NEW_AFullPropExternCall_parser___parser_prod___AExternCall___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:8522 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AFullPropExternCall();
+  INIT_ATTRIBUTES__parser___parser_nodes___AFullPropExternCall(fra.me.REG[0]);
+  parser___parser_prod___AExternCall___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AFullPropExternCall(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AFullPropExternCall_parser___parser_prod___AFullPropExternCall___empty_init[] = "new AFullPropExternCall parser_prod::AFullPropExternCall::empty_init";
+val_t NEW_AFullPropExternCall_parser___parser_prod___AFullPropExternCall___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 = 8600;
+  fra.me.meth = LOCATE_NEW_AFullPropExternCall_parser___parser_prod___AFullPropExternCall___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:8600 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AFullPropExternCall();
+  INIT_ATTRIBUTES__parser___parser_nodes___AFullPropExternCall(fra.me.REG[0]);
+  parser___parser_prod___AFullPropExternCall___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AFullPropExternCall(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AFullPropExternCall_parser___parser_prod___AFullPropExternCall___init_afullpropexterncall[] = "new AFullPropExternCall parser_prod::AFullPropExternCall::init_afullpropexterncall";
+val_t NEW_AFullPropExternCall_parser___parser_prod___AFullPropExternCall___init_afullpropexterncall(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 = 8602;
+  fra.me.meth = LOCATE_NEW_AFullPropExternCall_parser___parser_prod___AFullPropExternCall___init_afullpropexterncall;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  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:8602 */
+  fra.me.REG[3] = NEW_parser___parser_nodes___AFullPropExternCall();
+  INIT_ATTRIBUTES__parser___parser_nodes___AFullPropExternCall(fra.me.REG[3]);
+  parser___parser_prod___AFullPropExternCall___init_afullpropexterncall(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_parser___parser_nodes___AFullPropExternCall(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
+}
+static const char LOCATE_NEW_AFullPropExternCall_parser___parser_nodes___ANode___init[] = "new AFullPropExternCall parser_nodes::ANode::init";
+val_t NEW_AFullPropExternCall_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AFullPropExternCall_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AFullPropExternCall();
+  INIT_ATTRIBUTES__parser___parser_nodes___AFullPropExternCall(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AFullPropExternCall(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-val_t NEW_FStream_standard___stream___IOS___init(void){
+static const char LOCATE_NEW_AFullPropExternCall_parser___parser_prod___AExternCall___init_aexterncall[] = "new AFullPropExternCall parser_prod::AExternCall::init_aexterncall";
+val_t NEW_AFullPropExternCall_parser___parser_prod___AExternCall___init_aexterncall(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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_FStream_standard___stream___IOS___init;
+  fra.me.line = 8524;
+  fra.me.meth = LOCATE_NEW_AFullPropExternCall_parser___parser_prod___AExternCall___init_aexterncall;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = NEW_standard___file___FStream();
-  INIT_ATTRIBUTES__standard___file___FStream(fra.me.REG[0]);
-  standard___stream___IOS___init(fra.me.REG[0], init_table);
-  CHECKNEW_standard___file___FStream(fra.me.REG[0]);
+  /* parser/parser_prod.nit:8524 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AFullPropExternCall();
+  INIT_ATTRIBUTES__parser___parser_nodes___AFullPropExternCall(fra.me.REG[0]);
+  parser___parser_prod___AExternCall___init_aexterncall(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AFullPropExternCall(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___file___IFStream[78] = {
-  {(bigint) 3223 /* 0: Identity */},
-  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "IFStream" /* 2: Class Name */},
-  {(bigint) 3 /* 3: IFStream < Object: superclass typecheck marker */},
-  {(bigint) 119 /* 4: IFStream < NativeFileCapable: superclass typecheck marker */},
-  {(bigint) 215 /* 5: IFStream < IOS: superclass typecheck marker */},
-  {(bigint) 3015 /* 6: IFStream < BufferedIStream: superclass typecheck marker */},
-  {(bigint) 2227 /* 7: IFStream < IStream: superclass typecheck marker */},
-  {(bigint) 2283 /* 8: IFStream < FStream: superclass typecheck marker */},
-  {(bigint) 3223 /* 9: IFStream < IFStream: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___parser_nodes___AInitPropExternCall[85] = {
+  {(bigint) 4727 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AInitPropExternCall" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AInitPropExternCall < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AInitPropExternCall < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AInitPropExternCall < Prod: superclass typecheck marker */},
+  {(bigint) 3803 /* 6: AInitPropExternCall < AExternCall: superclass typecheck marker */},
+  {(bigint) 4355 /* 7: AInitPropExternCall < APropExternCall: superclass typecheck marker */},
+  {(bigint) 4727 /* 8: AInitPropExternCall < AInitPropExternCall: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -24301,7 +58370,7 @@ const classtable_elt_t VFT_standard___file___IFStream[78] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: IFStream < Object: superclass init_table position */},
+  {(bigint) 4 /* 19: AInitPropExternCall < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -24317,6 +58386,8 @@ const classtable_elt_t VFT_standard___file___IFStream[78] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -24330,177 +58401,217 @@ const classtable_elt_t VFT_standard___file___IFStream[78] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 2 /* 47: IFStream < NativeFileCapable: superclass init_table position */},
-  {(bigint) standard___file___NativeFileCapable___io_open_read},
-  {(bigint) standard___file___NativeFileCapable___io_open_write},
-  {(bigint) standard___file___NativeFileCapable___native_stdin},
-  {(bigint) standard___file___NativeFileCapable___native_stdout},
-  {(bigint) standard___file___NativeFileCapable___native_stderr},
-  {(bigint) 3 /* 53: IFStream < FStream: superclass init_table position */},
-  {(bigint) standard___file___FStream___path},
-  {(bigint) standard___file___FStream___file_stat},
-  {(bigint) 1 /* 56: IFStream < IOS: superclass init_table position */},
-  {(bigint) standard___file___IFStream___close},
-  {(bigint) standard___stream___IOS___init},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 4 /* 62: IFStream < IStream: superclass init_table position */},
-  {(bigint) standard___stream___BufferedIStream___read_char},
-  {(bigint) standard___stream___BufferedIStream___read},
-  {(bigint) standard___stream___IStream___read_line},
-  {(bigint) standard___stream___BufferedIStream___read_all},
-  {(bigint) standard___stream___BufferedIStream___append_line_to},
-  {(bigint) standard___stream___BufferedIStream___eof},
-  {(bigint) 5 /* 69: IFStream < BufferedIStream: superclass init_table position */},
-  {(bigint) standard___file___IFStream___fill_buffer},
-  {(bigint) standard___file___IFStream___end_reached},
-  {(bigint) standard___stream___BufferedIStream___prepare_buffer},
-  {(bigint) 6 /* 73: IFStream < IFStream: superclass init_table position */},
-  {(bigint) standard___file___IFStream___reopen},
-  {(bigint) standard___file___IFStream___open},
-  {(bigint) standard___file___IFStream___init},
-  {(bigint) standard___file___IFStream___without_file},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___AInitPropExternCall___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AInitPropExternCall___visit_all},
+  {(bigint) 3 /* 63: AInitPropExternCall < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___AExternCall___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 2 /* 72: AInitPropExternCall < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___typing___AInitPropExternCall___target_class_name},
+  {(bigint) syntax___typing___AInitPropExternCall___target_method_name},
+  {(bigint) parser___parser_prod___AExternCall___empty_init},
+  {(bigint) parser___parser_prod___AExternCall___init_aexterncall},
+  {(bigint) 1 /* 79: AInitPropExternCall < AExternCall: superclass init_table position */},
+  {(bigint) 0 /* 80: AInitPropExternCall < APropExternCall: superclass init_table position */},
+  {(bigint) parser___parser_prod___AInitPropExternCall___empty_init},
+  {(bigint) parser___parser_prod___AInitPropExternCall___init_ainitpropexterncall},
+  {(bigint) 5 /* 83: AInitPropExternCall < AInitPropExternCall: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AInitPropExternCall___n_classid},
 };
 /* 0: Pointer to the classtable */
 /* 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__standard___file___IFStream(val_t p0){
+/* 2: Attribute AInitPropExternCall::_parent */
+/* 3: Attribute AInitPropExternCall::_location */
+/* 4: Attribute AInitPropExternCall::_first_location */
+/* 5: Attribute AInitPropExternCall::_last_location */
+/* 6: Attribute AInitPropExternCall::_n_annotations */
+/* 7: Attribute AInitPropExternCall::_n_classid */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AInitPropExternCall[] = "init var of AInitPropExternCall";
+void INIT_ATTRIBUTES__parser___parser_nodes___AInitPropExternCall(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__standard___file___IFStream;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AInitPropExternCall;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//file.nit:100 */
-  REGB0 = TAG_Bool(false);
-  ATTR_standard___file___IFStream____end_reached(fra.me.REG[0]) = REGB0;
-  /* ./../lib/standard//file.nit:55 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_standard___file___FStream____path(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//file.nit:58 */
+  /* parser/parser_nodes.nit:56 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_standard___file___FStream____file(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//stream.nit:186 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_standard___stream___BufferedIStream____buffer(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//stream.nit:190 */
-  REGB0 = TAG_Int(0);
-  ATTR_standard___stream___BufferedIStream____buffer_pos(fra.me.REG[0]) = REGB0;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___file___IFStream(void)
+val_t NEW_parser___parser_nodes___AInitPropExternCall(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_standard___file___IFStream;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AInitPropExternCall;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___file___IFStream(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AInitPropExternCall[] = "check new AInitPropExternCall";
+void CHECKNEW_parser___parser_nodes___AInitPropExternCall(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_standard___file___IFStream;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AInitPropExternCall;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_standard___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_standard___stream___BufferedIStream____buffer_pos(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AInitPropExternCall____n_classid(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_buffer_pos", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_classid", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_IFStream_standard___file___IFStream___open(val_t p0){
+static const char LOCATE_NEW_AInitPropExternCall_parser___parser_prod___AExternCall___empty_init[] = "new AInitPropExternCall parser_prod::AExternCall::empty_init";
+val_t NEW_AInitPropExternCall_parser___parser_prod___AExternCall___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 = 8522;
+  fra.me.meth = LOCATE_NEW_AInitPropExternCall_parser___parser_prod___AExternCall___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:8522 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AInitPropExternCall();
+  INIT_ATTRIBUTES__parser___parser_nodes___AInitPropExternCall(fra.me.REG[0]);
+  parser___parser_prod___AExternCall___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AInitPropExternCall(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AInitPropExternCall_parser___parser_prod___AInitPropExternCall___empty_init[] = "new AInitPropExternCall parser_prod::AInitPropExternCall::empty_init";
+val_t NEW_AInitPropExternCall_parser___parser_prod___AInitPropExternCall___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 = 8663;
+  fra.me.meth = LOCATE_NEW_AInitPropExternCall_parser___parser_prod___AInitPropExternCall___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:8663 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AInitPropExternCall();
+  INIT_ATTRIBUTES__parser___parser_nodes___AInitPropExternCall(fra.me.REG[0]);
+  parser___parser_prod___AInitPropExternCall___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AInitPropExternCall(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AInitPropExternCall_parser___parser_prod___AInitPropExternCall___init_ainitpropexterncall[] = "new AInitPropExternCall parser_prod::AInitPropExternCall::init_ainitpropexterncall";
+val_t NEW_AInitPropExternCall_parser___parser_prod___AInitPropExternCall___init_ainitpropexterncall(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};
+  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 = 102;
-  fra.me.meth = LOCATE_NEW_IFStream_standard___file___IFStream___open;
+  fra.me.line = 8665;
+  fra.me.meth = LOCATE_NEW_AInitPropExternCall_parser___parser_prod___AInitPropExternCall___init_ainitpropexterncall;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//file.nit:102 */
-  fra.me.REG[1] = NEW_standard___file___IFStream();
-  INIT_ATTRIBUTES__standard___file___IFStream(fra.me.REG[1]);
-  standard___file___IFStream___open(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_standard___file___IFStream(fra.me.REG[1]);
+  /* parser/parser_prod.nit:8665 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___AInitPropExternCall();
+  INIT_ATTRIBUTES__parser___parser_nodes___AInitPropExternCall(fra.me.REG[1]);
+  parser___parser_prod___AInitPropExternCall___init_ainitpropexterncall(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AInitPropExternCall(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-val_t NEW_IFStream_standard___file___IFStream___init(void){
+static const char LOCATE_NEW_AInitPropExternCall_parser___parser_nodes___ANode___init[] = "new AInitPropExternCall parser_nodes::ANode::init";
+val_t NEW_AInitPropExternCall_parser___parser_nodes___ANode___init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  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 = 111;
-  fra.me.meth = LOCATE_NEW_IFStream_standard___file___IFStream___init;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_AInitPropExternCall_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./../lib/standard//file.nit:111 */
-  fra.me.REG[0] = NEW_standard___file___IFStream();
-  INIT_ATTRIBUTES__standard___file___IFStream(fra.me.REG[0]);
-  standard___file___IFStream___init(fra.me.REG[0], init_table);
-  CHECKNEW_standard___file___IFStream(fra.me.REG[0]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AInitPropExternCall();
+  INIT_ATTRIBUTES__parser___parser_nodes___AInitPropExternCall(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AInitPropExternCall(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_IFStream_standard___file___IFStream___without_file(void){
+static const char LOCATE_NEW_AInitPropExternCall_parser___parser_prod___AExternCall___init_aexterncall[] = "new AInitPropExternCall parser_prod::AExternCall::init_aexterncall";
+val_t NEW_AInitPropExternCall_parser___parser_prod___AExternCall___init_aexterncall(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  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 = 112;
-  fra.me.meth = LOCATE_NEW_IFStream_standard___file___IFStream___without_file;
+  fra.me.line = 8524;
+  fra.me.meth = LOCATE_NEW_AInitPropExternCall_parser___parser_prod___AExternCall___init_aexterncall;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./../lib/standard//file.nit:112 */
-  fra.me.REG[0] = NEW_standard___file___IFStream();
-  INIT_ATTRIBUTES__standard___file___IFStream(fra.me.REG[0]);
-  standard___file___IFStream___without_file(fra.me.REG[0], init_table);
-  CHECKNEW_standard___file___IFStream(fra.me.REG[0]);
+  /* parser/parser_prod.nit:8524 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AInitPropExternCall();
+  INIT_ATTRIBUTES__parser___parser_nodes___AInitPropExternCall(fra.me.REG[0]);
+  parser___parser_prod___AExternCall___init_aexterncall(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AInitPropExternCall(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___file___OFStream[67] = {
-  {(bigint) 2811 /* 0: Identity */},
-  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "OFStream" /* 2: Class Name */},
-  {(bigint) 3 /* 3: OFStream < Object: superclass typecheck marker */},
-  {(bigint) 119 /* 4: OFStream < NativeFileCapable: superclass typecheck marker */},
-  {(bigint) 215 /* 5: OFStream < IOS: superclass typecheck marker */},
-  {(bigint) 2107 /* 6: OFStream < OStream: superclass typecheck marker */},
-  {(bigint) 2811 /* 7: OFStream < OFStream: superclass typecheck marker */},
-  {(bigint) 2283 /* 8: OFStream < FStream: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___parser_nodes___ASuperExternCall[84] = {
+  {(bigint) 4291 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ASuperExternCall" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ASuperExternCall < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: ASuperExternCall < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: ASuperExternCall < Prod: superclass typecheck marker */},
+  {(bigint) 3803 /* 6: ASuperExternCall < AExternCall: superclass typecheck marker */},
+  {(bigint) 4291 /* 7: ASuperExternCall < ASuperExternCall: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -24510,7 +58621,7 @@ const classtable_elt_t VFT_standard___file___OFStream[67] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: OFStream < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: ASuperExternCall < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -24526,6 +58637,8 @@ const classtable_elt_t VFT_standard___file___OFStream[67] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -24539,151 +58652,218 @@ const classtable_elt_t VFT_standard___file___OFStream[67] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 2 /* 47: OFStream < NativeFileCapable: superclass init_table position */},
-  {(bigint) standard___file___NativeFileCapable___io_open_read},
-  {(bigint) standard___file___NativeFileCapable___io_open_write},
-  {(bigint) standard___file___NativeFileCapable___native_stdin},
-  {(bigint) standard___file___NativeFileCapable___native_stdout},
-  {(bigint) standard___file___NativeFileCapable___native_stderr},
-  {(bigint) 3 /* 53: OFStream < FStream: superclass init_table position */},
-  {(bigint) standard___file___FStream___path},
-  {(bigint) standard___file___FStream___file_stat},
-  {(bigint) 1 /* 56: OFStream < IOS: superclass init_table position */},
-  {(bigint) standard___file___OFStream___close},
-  {(bigint) standard___stream___IOS___init},
-  {(bigint) 4 /* 59: OFStream < OStream: superclass init_table position */},
-  {(bigint) standard___file___OFStream___write},
-  {(bigint) standard___file___OFStream___is_writable},
-  {(bigint) 5 /* 62: OFStream < OFStream: superclass init_table position */},
-  {(bigint) standard___file___OFStream___write_native},
-  {(bigint) standard___file___OFStream___open},
-  {(bigint) standard___file___OFStream___init},
-  {(bigint) standard___file___OFStream___without_file},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___ASuperExternCall___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___ASuperExternCall___visit_all},
+  {(bigint) 2 /* 63: ASuperExternCall < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ASuperExternCall___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: ASuperExternCall < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___typing___AExternCall___target_class_name},
+  {(bigint) syntax___typing___AExternCall___target_method_name},
+  {(bigint) parser___parser_prod___AExternCall___empty_init},
+  {(bigint) parser___parser_prod___AExternCall___init_aexterncall},
+  {(bigint) 0 /* 79: ASuperExternCall < AExternCall: superclass init_table position */},
+  {(bigint) parser___parser_prod___ASuperExternCall___empty_init},
+  {(bigint) parser___parser_prod___ASuperExternCall___init_asuperexterncall},
+  {(bigint) 4 /* 82: ASuperExternCall < ASuperExternCall: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ASuperExternCall___n_kwsuper},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute OFStream::_path */
-/* 3: Attribute OFStream::_file */
-/* 4: Attribute OFStream::_writable */
-void INIT_ATTRIBUTES__standard___file___OFStream(val_t p0){
+/* 2: Attribute ASuperExternCall::_parent */
+/* 3: Attribute ASuperExternCall::_location */
+/* 4: Attribute ASuperExternCall::_first_location */
+/* 5: Attribute ASuperExternCall::_last_location */
+/* 6: Attribute ASuperExternCall::_n_annotations */
+/* 7: Attribute ASuperExternCall::_n_kwsuper */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ASuperExternCall[] = "init var of ASuperExternCall";
+void INIT_ATTRIBUTES__parser___parser_nodes___ASuperExternCall(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__standard___file___OFStream;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ASuperExternCall;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   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_standard___file___FStream____path(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//file.nit:58 */
+  /* parser/parser_nodes.nit:56 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_standard___file___FStream____file(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___file___OFStream(void)
+val_t NEW_parser___parser_nodes___ASuperExternCall(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_standard___file___OFStream;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ASuperExternCall;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___file___OFStream(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___ASuperExternCall[] = "check new ASuperExternCall";
+void CHECKNEW_parser___parser_nodes___ASuperExternCall(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_standard___file___OFStream;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___ASuperExternCall;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_standard___file___OFStream____writable(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASuperExternCall____n_kwsuper(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_writable", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_kwsuper", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_OFStream_standard___file___OFStream___open(val_t p0){
+static const char LOCATE_NEW_ASuperExternCall_parser___parser_prod___AExternCall___empty_init[] = "new ASuperExternCall parser_prod::AExternCall::empty_init";
+val_t NEW_ASuperExternCall_parser___parser_prod___AExternCall___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 = 8522;
+  fra.me.meth = LOCATE_NEW_ASuperExternCall_parser___parser_prod___AExternCall___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:8522 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ASuperExternCall();
+  INIT_ATTRIBUTES__parser___parser_nodes___ASuperExternCall(fra.me.REG[0]);
+  parser___parser_prod___AExternCall___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ASuperExternCall(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_ASuperExternCall_parser___parser_prod___ASuperExternCall___empty_init[] = "new ASuperExternCall parser_prod::ASuperExternCall::empty_init";
+val_t NEW_ASuperExternCall_parser___parser_prod___ASuperExternCall___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 = 8538;
+  fra.me.meth = LOCATE_NEW_ASuperExternCall_parser___parser_prod___ASuperExternCall___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:8538 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ASuperExternCall();
+  INIT_ATTRIBUTES__parser___parser_nodes___ASuperExternCall(fra.me.REG[0]);
+  parser___parser_prod___ASuperExternCall___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ASuperExternCall(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_ASuperExternCall_parser___parser_prod___ASuperExternCall___init_asuperexterncall[] = "new ASuperExternCall parser_prod::ASuperExternCall::init_asuperexterncall";
+val_t NEW_ASuperExternCall_parser___parser_prod___ASuperExternCall___init_asuperexterncall(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};
+  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 = 148;
-  fra.me.meth = LOCATE_NEW_OFStream_standard___file___OFStream___open;
+  fra.me.line = 8540;
+  fra.me.meth = LOCATE_NEW_ASuperExternCall_parser___parser_prod___ASuperExternCall___init_asuperexterncall;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   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_standard___file___OFStream();
-  INIT_ATTRIBUTES__standard___file___OFStream(fra.me.REG[1]);
-  standard___file___OFStream___open(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_standard___file___OFStream(fra.me.REG[1]);
+  /* parser/parser_prod.nit:8540 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___ASuperExternCall();
+  INIT_ATTRIBUTES__parser___parser_nodes___ASuperExternCall(fra.me.REG[1]);
+  parser___parser_prod___ASuperExternCall___init_asuperexterncall(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ASuperExternCall(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-val_t NEW_OFStream_standard___file___OFStream___init(void){
+static const char LOCATE_NEW_ASuperExternCall_parser___parser_nodes___ANode___init[] = "new ASuperExternCall parser_nodes::ANode::init";
+val_t NEW_ASuperExternCall_parser___parser_nodes___ANode___init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  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 = 157;
-  fra.me.meth = LOCATE_NEW_OFStream_standard___file___OFStream___init;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_ASuperExternCall_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./../lib/standard//file.nit:157 */
-  fra.me.REG[0] = NEW_standard___file___OFStream();
-  INIT_ATTRIBUTES__standard___file___OFStream(fra.me.REG[0]);
-  standard___file___OFStream___init(fra.me.REG[0], init_table);
-  CHECKNEW_standard___file___OFStream(fra.me.REG[0]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ASuperExternCall();
+  INIT_ATTRIBUTES__parser___parser_nodes___ASuperExternCall(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ASuperExternCall(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_OFStream_standard___file___OFStream___without_file(void){
+static const char LOCATE_NEW_ASuperExternCall_parser___parser_prod___AExternCall___init_aexterncall[] = "new ASuperExternCall parser_prod::AExternCall::init_aexterncall";
+val_t NEW_ASuperExternCall_parser___parser_prod___AExternCall___init_aexterncall(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  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_OFStream_standard___file___OFStream___without_file;
+  fra.me.line = 8524;
+  fra.me.meth = LOCATE_NEW_ASuperExternCall_parser___parser_prod___AExternCall___init_aexterncall;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./../lib/standard//file.nit:158 */
-  fra.me.REG[0] = NEW_standard___file___OFStream();
-  INIT_ATTRIBUTES__standard___file___OFStream(fra.me.REG[0]);
-  standard___file___OFStream___without_file(fra.me.REG[0], init_table);
-  CHECKNEW_standard___file___OFStream(fra.me.REG[0]);
+  /* parser/parser_prod.nit:8524 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ASuperExternCall();
+  INIT_ATTRIBUTES__parser___parser_nodes___ASuperExternCall(fra.me.REG[0]);
+  parser___parser_prod___AExternCall___init_aexterncall(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ASuperExternCall(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___file___Stdin[80] = {
-  {(bigint) 3539 /* 0: Identity */},
-  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "Stdin" /* 2: Class Name */},
-  {(bigint) 3 /* 3: Stdin < Object: superclass typecheck marker */},
-  {(bigint) 119 /* 4: Stdin < NativeFileCapable: superclass typecheck marker */},
-  {(bigint) 215 /* 5: Stdin < IOS: superclass typecheck marker */},
-  {(bigint) 3015 /* 6: Stdin < BufferedIStream: superclass typecheck marker */},
-  {(bigint) 2227 /* 7: Stdin < IStream: superclass typecheck marker */},
-  {(bigint) 2283 /* 8: Stdin < FStream: superclass typecheck marker */},
-  {(bigint) 3223 /* 9: Stdin < IFStream: superclass typecheck marker */},
-  {(bigint) 3539 /* 10: Stdin < Stdin: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___parser_nodes___ACastAsExternCall[89] = {
+  {(bigint) 4783 /* 0: Identity */},
+  {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ACastAsExternCall" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ACastAsExternCall < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: ACastAsExternCall < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: ACastAsExternCall < Prod: superclass typecheck marker */},
+  {(bigint) 3803 /* 6: ACastAsExternCall < AExternCall: superclass typecheck marker */},
+  {(bigint) 4527 /* 7: ACastAsExternCall < ACastExternCall: superclass typecheck marker */},
+  {(bigint) 4783 /* 8: ACastAsExternCall < ACastAsExternCall: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -24691,7 +58871,7 @@ const classtable_elt_t VFT_standard___file___Stdin[80] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: Stdin < Object: superclass init_table position */},
+  {(bigint) 4 /* 19: ACastAsExternCall < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -24707,6 +58887,8 @@ const classtable_elt_t VFT_standard___file___Stdin[80] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -24720,283 +58902,238 @@ const classtable_elt_t VFT_standard___file___Stdin[80] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 2 /* 47: Stdin < NativeFileCapable: superclass init_table position */},
-  {(bigint) standard___file___NativeFileCapable___io_open_read},
-  {(bigint) standard___file___NativeFileCapable___io_open_write},
-  {(bigint) standard___file___NativeFileCapable___native_stdin},
-  {(bigint) standard___file___NativeFileCapable___native_stdout},
-  {(bigint) standard___file___NativeFileCapable___native_stderr},
-  {(bigint) 3 /* 53: Stdin < FStream: superclass init_table position */},
-  {(bigint) standard___file___FStream___path},
-  {(bigint) standard___file___FStream___file_stat},
-  {(bigint) 1 /* 56: Stdin < IOS: superclass init_table position */},
-  {(bigint) standard___file___IFStream___close},
-  {(bigint) standard___stream___IOS___init},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 4 /* 62: Stdin < IStream: superclass init_table position */},
-  {(bigint) standard___stream___BufferedIStream___read_char},
-  {(bigint) standard___stream___BufferedIStream___read},
-  {(bigint) standard___stream___IStream___read_line},
-  {(bigint) standard___stream___BufferedIStream___read_all},
-  {(bigint) standard___stream___BufferedIStream___append_line_to},
-  {(bigint) standard___stream___BufferedIStream___eof},
-  {(bigint) 5 /* 69: Stdin < BufferedIStream: superclass init_table position */},
-  {(bigint) standard___file___IFStream___fill_buffer},
-  {(bigint) standard___file___IFStream___end_reached},
-  {(bigint) standard___stream___BufferedIStream___prepare_buffer},
-  {(bigint) 6 /* 73: Stdin < IFStream: superclass init_table position */},
-  {(bigint) standard___file___IFStream___reopen},
-  {(bigint) standard___file___IFStream___open},
-  {(bigint) standard___file___IFStream___init},
-  {(bigint) standard___file___IFStream___without_file},
-  {(bigint) 7 /* 78: Stdin < Stdin: superclass init_table position */},
-  {(bigint) standard___file___Stdin___init},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___ACastAsExternCall___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___ACastAsExternCall___visit_all},
+  {(bigint) 3 /* 63: ACastAsExternCall < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ACastExternCall___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 2 /* 72: ACastAsExternCall < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___typing___AExternCall___target_class_name},
+  {(bigint) syntax___typing___AExternCall___target_method_name},
+  {(bigint) parser___parser_prod___AExternCall___empty_init},
+  {(bigint) parser___parser_prod___AExternCall___init_aexterncall},
+  {(bigint) 1 /* 79: ACastAsExternCall < AExternCall: superclass init_table position */},
+  {(bigint) syntax___typing___ACastAsExternCall___from_type},
+  {(bigint) syntax___typing___ACastAsExternCall___to_type},
+  {(bigint) 0 /* 82: ACastAsExternCall < ACastExternCall: superclass init_table position */},
+  {(bigint) parser___parser_prod___ACastAsExternCall___empty_init},
+  {(bigint) parser___parser_prod___ACastAsExternCall___init_acastasexterncall},
+  {(bigint) 5 /* 85: ACastAsExternCall < ACastAsExternCall: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ACastAsExternCall___n_from_type},
+  {(bigint) parser___parser_nodes___ACastAsExternCall___n_kwas},
+  {(bigint) parser___parser_nodes___ACastAsExternCall___n_to_type},
 };
 /* 0: Pointer to the classtable */
 /* 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__standard___file___Stdin(val_t p0){
+/* 2: Attribute ACastAsExternCall::_parent */
+/* 3: Attribute ACastAsExternCall::_location */
+/* 4: Attribute ACastAsExternCall::_first_location */
+/* 5: Attribute ACastAsExternCall::_last_location */
+/* 6: Attribute ACastAsExternCall::_n_annotations */
+/* 7: Attribute ACastAsExternCall::_n_from_type */
+/* 8: Attribute ACastAsExternCall::_n_kwas */
+/* 9: Attribute ACastAsExternCall::_n_to_type */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ACastAsExternCall[] = "init var of ACastAsExternCall";
+void INIT_ATTRIBUTES__parser___parser_nodes___ACastAsExternCall(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__standard___file___Stdin;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ACastAsExternCall;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//file.nit:100 */
-  REGB0 = TAG_Bool(false);
-  ATTR_standard___file___IFStream____end_reached(fra.me.REG[0]) = REGB0;
-  /* ./../lib/standard//file.nit:55 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_standard___file___FStream____path(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//file.nit:58 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_standard___file___FStream____file(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//stream.nit:186 */
+  /* parser/parser_nodes.nit:56 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_standard___stream___BufferedIStream____buffer(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//stream.nit:190 */
-  REGB0 = TAG_Int(0);
-  ATTR_standard___stream___BufferedIStream____buffer_pos(fra.me.REG[0]) = REGB0;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___file___Stdin(void)
+val_t NEW_parser___parser_nodes___ACastAsExternCall(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_standard___file___Stdin;
+  obj = alloc(sizeof(val_t) * 10);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ACastAsExternCall;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___file___Stdin(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___ACastAsExternCall[] = "check new ACastAsExternCall";
+void CHECKNEW_parser___parser_nodes___ACastAsExternCall(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_standard___file___Stdin;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___ACastAsExternCall;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_standard___file___IFStream____end_reached(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ACastAsExternCall____n_from_type(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_end_reached", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_from_type", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_standard___stream___BufferedIStream____buffer_pos(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ACastAsExternCall____n_kwas(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_buffer_pos", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_kwas", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ACastAsExternCall____n_to_type(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_to_type", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_Stdin_standard___file___Stdin___init(void){
+static const char LOCATE_NEW_ACastAsExternCall_parser___parser_prod___AExternCall___empty_init[] = "new ACastAsExternCall parser_prod::AExternCall::empty_init";
+val_t NEW_ACastAsExternCall_parser___parser_prod___AExternCall___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};
+  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 = 165;
-  fra.me.meth = LOCATE_NEW_Stdin_standard___file___Stdin___init;
+  fra.me.line = 8522;
+  fra.me.meth = LOCATE_NEW_ACastAsExternCall_parser___parser_prod___AExternCall___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./../lib/standard//file.nit:165 */
-  fra.me.REG[0] = NEW_standard___file___Stdin();
-  INIT_ATTRIBUTES__standard___file___Stdin(fra.me.REG[0]);
-  standard___file___Stdin___init(fra.me.REG[0], init_table);
-  CHECKNEW_standard___file___Stdin(fra.me.REG[0]);
+  /* parser/parser_prod.nit:8522 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ACastAsExternCall();
+  INIT_ATTRIBUTES__parser___parser_nodes___ACastAsExternCall(fra.me.REG[0]);
+  parser___parser_prod___AExternCall___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ACastAsExternCall(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___file___Stdout[69] = {
-  {(bigint) 3175 /* 0: Identity */},
-  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "Stdout" /* 2: Class Name */},
-  {(bigint) 3 /* 3: Stdout < Object: superclass typecheck marker */},
-  {(bigint) 119 /* 4: Stdout < NativeFileCapable: superclass typecheck marker */},
-  {(bigint) 215 /* 5: Stdout < IOS: superclass typecheck marker */},
-  {(bigint) 2107 /* 6: Stdout < OStream: superclass typecheck marker */},
-  {(bigint) 2811 /* 7: Stdout < OFStream: superclass typecheck marker */},
-  {(bigint) 2283 /* 8: Stdout < FStream: superclass typecheck marker */},
-  {(bigint) 3175 /* 9: Stdout < Stdout: superclass typecheck marker */},
-  {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) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: Stdout < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
-  {(bigint) standard___file___Object___printn},
-  {(bigint) standard___file___Object___print},
-  {(bigint) standard___file___Object___getc},
-  {(bigint) standard___file___Object___gets},
-  {(bigint) standard___file___Object___stdin},
-  {(bigint) standard___file___Object___stdout},
-  {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
-  {(bigint) standard___string___Object___native_class_name},
-  {(bigint) standard___string___Object___class_name},
-  {(bigint) standard___string___Object___inspect},
-  {(bigint) standard___string___Object___inspect_head},
-  {(bigint) standard___string___Object___args},
-  {(bigint) standard___hash___Object___hash},
-  {(bigint) standard___math___Object___atan2},
-  {(bigint) standard___math___Object___pi},
-  {(bigint) standard___math___Object___srand_from},
-  {(bigint) standard___math___Object___srand},
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) 2 /* 47: Stdout < NativeFileCapable: superclass init_table position */},
-  {(bigint) standard___file___NativeFileCapable___io_open_read},
-  {(bigint) standard___file___NativeFileCapable___io_open_write},
-  {(bigint) standard___file___NativeFileCapable___native_stdin},
-  {(bigint) standard___file___NativeFileCapable___native_stdout},
-  {(bigint) standard___file___NativeFileCapable___native_stderr},
-  {(bigint) 3 /* 53: Stdout < FStream: superclass init_table position */},
-  {(bigint) standard___file___FStream___path},
-  {(bigint) standard___file___FStream___file_stat},
-  {(bigint) 1 /* 56: Stdout < IOS: superclass init_table position */},
-  {(bigint) standard___file___OFStream___close},
-  {(bigint) standard___stream___IOS___init},
-  {(bigint) 4 /* 59: Stdout < OStream: superclass init_table position */},
-  {(bigint) standard___file___OFStream___write},
-  {(bigint) standard___file___OFStream___is_writable},
-  {(bigint) 5 /* 62: Stdout < OFStream: superclass init_table position */},
-  {(bigint) standard___file___OFStream___write_native},
-  {(bigint) standard___file___OFStream___open},
-  {(bigint) standard___file___OFStream___init},
-  {(bigint) standard___file___OFStream___without_file},
-  {(bigint) 6 /* 67: Stdout < Stdout: superclass init_table position */},
-  {(bigint) standard___file___Stdout___init},
-};
-/* 0: Pointer to the classtable */
-/* 1: Object_id */
-/* 2: Attribute Stdout::_path */
-/* 3: Attribute Stdout::_file */
-/* 4: Attribute Stdout::_writable */
-void INIT_ATTRIBUTES__standard___file___Stdout(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ACastAsExternCall_parser___parser_prod___ACastAsExternCall___empty_init[] = "new ACastAsExternCall parser_prod::ACastAsExternCall::empty_init";
+val_t NEW_ACastAsExternCall_parser___parser_prod___ACastAsExternCall___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 = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__standard___file___Stdout;
+  fra.me.line = 8694;
+  fra.me.meth = LOCATE_NEW_ACastAsExternCall_parser___parser_prod___ACastAsExternCall___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:8694 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ACastAsExternCall();
+  INIT_ATTRIBUTES__parser___parser_nodes___ACastAsExternCall(fra.me.REG[0]);
+  parser___parser_prod___ACastAsExternCall___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ACastAsExternCall(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_ACastAsExternCall_parser___parser_prod___ACastAsExternCall___init_acastasexterncall[] = "new ACastAsExternCall parser_prod::ACastAsExternCall::init_acastasexterncall";
+val_t NEW_ACastAsExternCall_parser___parser_prod___ACastAsExternCall___init_acastasexterncall(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 = 8696;
+  fra.me.meth = LOCATE_NEW_ACastAsExternCall_parser___parser_prod___ACastAsExternCall___init_acastasexterncall;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   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;
-  /* ./../lib/standard//file.nit:55 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_standard___file___FStream____path(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//file.nit:58 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_standard___file___FStream____file(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* parser/parser_prod.nit:8696 */
+  fra.me.REG[3] = NEW_parser___parser_nodes___ACastAsExternCall();
+  INIT_ATTRIBUTES__parser___parser_nodes___ACastAsExternCall(fra.me.REG[3]);
+  parser___parser_prod___ACastAsExternCall___init_acastasexterncall(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_parser___parser_nodes___ACastAsExternCall(fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
 }
-val_t NEW_standard___file___Stdout(void)
-{
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_standard___file___Stdout;
-  obj[1].object_id = object_id_counter;
-  object_id_counter = object_id_counter + 1;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_standard___file___Stdout(val_t p0){
+static const char LOCATE_NEW_ACastAsExternCall_parser___parser_nodes___ANode___init[] = "new ACastAsExternCall parser_nodes::ANode::init";
+val_t NEW_ACastAsExternCall_parser___parser_nodes___ANode___init(void){
   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 = 0;
-  fra.me.meth = LOCATE_CHECKNEW_standard___file___Stdout;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_ACastAsExternCall_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_standard___file___OFStream____writable(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_writable", LOCATE_nitc, 0);
-  }
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ACastAsExternCall();
+  INIT_ATTRIBUTES__parser___parser_nodes___ACastAsExternCall(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ACastAsExternCall(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-val_t NEW_Stdout_standard___file___Stdout___init(void){
+static const char LOCATE_NEW_ACastAsExternCall_parser___parser_prod___AExternCall___init_aexterncall[] = "new ACastAsExternCall parser_prod::AExternCall::init_aexterncall";
+val_t NEW_ACastAsExternCall_parser___parser_prod___AExternCall___init_aexterncall(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  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 = 174;
-  fra.me.meth = LOCATE_NEW_Stdout_standard___file___Stdout___init;
+  fra.me.line = 8524;
+  fra.me.meth = LOCATE_NEW_ACastAsExternCall_parser___parser_prod___AExternCall___init_aexterncall;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./../lib/standard//file.nit:174 */
-  fra.me.REG[0] = NEW_standard___file___Stdout();
-  INIT_ATTRIBUTES__standard___file___Stdout(fra.me.REG[0]);
-  standard___file___Stdout___init(fra.me.REG[0], init_table);
-  CHECKNEW_standard___file___Stdout(fra.me.REG[0]);
+  /* parser/parser_prod.nit:8524 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ACastAsExternCall();
+  INIT_ATTRIBUTES__parser___parser_nodes___ACastAsExternCall(fra.me.REG[0]);
+  parser___parser_prod___AExternCall___init_aexterncall(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ACastAsExternCall(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___file___Stderr[69] = {
-  {(bigint) 3179 /* 0: Identity */},
-  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "Stderr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: Stderr < Object: superclass typecheck marker */},
-  {(bigint) 119 /* 4: Stderr < NativeFileCapable: superclass typecheck marker */},
-  {(bigint) 215 /* 5: Stderr < IOS: superclass typecheck marker */},
-  {(bigint) 2107 /* 6: Stderr < OStream: superclass typecheck marker */},
-  {(bigint) 2811 /* 7: Stderr < OFStream: superclass typecheck marker */},
-  {(bigint) 2283 /* 8: Stderr < FStream: superclass typecheck marker */},
-  {(bigint) 3179 /* 9: Stderr < Stderr: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___parser_nodes___AAsNullableExternCall[89] = {
+  {(bigint) 4803 /* 0: Identity */},
+  {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AAsNullableExternCall" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AAsNullableExternCall < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AAsNullableExternCall < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AAsNullableExternCall < Prod: superclass typecheck marker */},
+  {(bigint) 3803 /* 6: AAsNullableExternCall < AExternCall: superclass typecheck marker */},
+  {(bigint) 4527 /* 7: AAsNullableExternCall < ACastExternCall: superclass typecheck marker */},
+  {(bigint) 4803 /* 8: AAsNullableExternCall < AAsNullableExternCall: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -25005,7 +59142,7 @@ const classtable_elt_t VFT_standard___file___Stderr[69] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: Stderr < Object: superclass init_table position */},
+  {(bigint) 4 /* 19: AAsNullableExternCall < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -25021,6 +59158,8 @@ const classtable_elt_t VFT_standard___file___Stderr[69] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -25034,241 +59173,236 @@ const classtable_elt_t VFT_standard___file___Stderr[69] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 2 /* 47: Stderr < NativeFileCapable: superclass init_table position */},
-  {(bigint) standard___file___NativeFileCapable___io_open_read},
-  {(bigint) standard___file___NativeFileCapable___io_open_write},
-  {(bigint) standard___file___NativeFileCapable___native_stdin},
-  {(bigint) standard___file___NativeFileCapable___native_stdout},
-  {(bigint) standard___file___NativeFileCapable___native_stderr},
-  {(bigint) 3 /* 53: Stderr < FStream: superclass init_table position */},
-  {(bigint) standard___file___FStream___path},
-  {(bigint) standard___file___FStream___file_stat},
-  {(bigint) 1 /* 56: Stderr < IOS: superclass init_table position */},
-  {(bigint) standard___file___OFStream___close},
-  {(bigint) standard___stream___IOS___init},
-  {(bigint) 4 /* 59: Stderr < OStream: superclass init_table position */},
-  {(bigint) standard___file___OFStream___write},
-  {(bigint) standard___file___OFStream___is_writable},
-  {(bigint) 5 /* 62: Stderr < OFStream: superclass init_table position */},
-  {(bigint) standard___file___OFStream___write_native},
-  {(bigint) standard___file___OFStream___open},
-  {(bigint) standard___file___OFStream___init},
-  {(bigint) standard___file___OFStream___without_file},
-  {(bigint) 6 /* 67: Stderr < Stderr: superclass init_table position */},
-  {(bigint) standard___file___Stderr___init},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___AAsNullableExternCall___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AAsNullableExternCall___visit_all},
+  {(bigint) 3 /* 63: AAsNullableExternCall < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ACastExternCall___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 2 /* 72: AAsNullableExternCall < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___typing___AExternCall___target_class_name},
+  {(bigint) syntax___typing___AExternCall___target_method_name},
+  {(bigint) parser___parser_prod___AExternCall___empty_init},
+  {(bigint) parser___parser_prod___AExternCall___init_aexterncall},
+  {(bigint) 1 /* 79: AAsNullableExternCall < AExternCall: superclass init_table position */},
+  {(bigint) syntax___typing___AAsNullableExternCall___from_type},
+  {(bigint) syntax___typing___AAsNullableExternCall___to_type},
+  {(bigint) 0 /* 82: AAsNullableExternCall < ACastExternCall: superclass init_table position */},
+  {(bigint) parser___parser_prod___AAsNullableExternCall___empty_init},
+  {(bigint) parser___parser_prod___AAsNullableExternCall___init_aasnullableexterncall},
+  {(bigint) 5 /* 85: AAsNullableExternCall < AAsNullableExternCall: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AAsNullableExternCall___n_type},
+  {(bigint) parser___parser_nodes___AAsNullableExternCall___n_kwas},
+  {(bigint) parser___parser_nodes___AAsNullableExternCall___n_kwnullable},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute Stderr::_path */
-/* 3: Attribute Stderr::_file */
-/* 4: Attribute Stderr::_writable */
-void INIT_ATTRIBUTES__standard___file___Stderr(val_t p0){
+/* 2: Attribute AAsNullableExternCall::_parent */
+/* 3: Attribute AAsNullableExternCall::_location */
+/* 4: Attribute AAsNullableExternCall::_first_location */
+/* 5: Attribute AAsNullableExternCall::_last_location */
+/* 6: Attribute AAsNullableExternCall::_n_annotations */
+/* 7: Attribute AAsNullableExternCall::_n_type */
+/* 8: Attribute AAsNullableExternCall::_n_kwas */
+/* 9: Attribute AAsNullableExternCall::_n_kwnullable */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AAsNullableExternCall[] = "init var of AAsNullableExternCall";
+void INIT_ATTRIBUTES__parser___parser_nodes___AAsNullableExternCall(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__standard___file___Stderr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AAsNullableExternCall;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   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_standard___file___FStream____path(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//file.nit:58 */
+  /* parser/parser_nodes.nit:56 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_standard___file___FStream____file(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___file___Stderr(void)
+val_t NEW_parser___parser_nodes___AAsNullableExternCall(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_standard___file___Stderr;
+  obj = alloc(sizeof(val_t) * 10);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AAsNullableExternCall;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___file___Stderr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AAsNullableExternCall[] = "check new AAsNullableExternCall";
+void CHECKNEW_parser___parser_nodes___AAsNullableExternCall(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_standard___file___Stderr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AAsNullableExternCall;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_standard___file___OFStream____writable(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsNullableExternCall____n_type(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_writable", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsNullableExternCall____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___parser_nodes___AAsNullableExternCall____n_kwnullable(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwnullable", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_Stderr_standard___file___Stderr___init(void){
+static const char LOCATE_NEW_AAsNullableExternCall_parser___parser_prod___AExternCall___empty_init[] = "new AAsNullableExternCall parser_prod::AExternCall::empty_init";
+val_t NEW_AAsNullableExternCall_parser___parser_prod___AExternCall___empty_init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  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 = 183;
-  fra.me.meth = LOCATE_NEW_Stderr_standard___file___Stderr___init;
+  fra.me.line = 8522;
+  fra.me.meth = LOCATE_NEW_AAsNullableExternCall_parser___parser_prod___AExternCall___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./../lib/standard//file.nit:183 */
-  fra.me.REG[0] = NEW_standard___file___Stderr();
-  INIT_ATTRIBUTES__standard___file___Stderr(fra.me.REG[0]);
-  standard___file___Stderr___init(fra.me.REG[0], init_table);
-  CHECKNEW_standard___file___Stderr(fra.me.REG[0]);
+  /* parser/parser_prod.nit:8522 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AAsNullableExternCall();
+  INIT_ATTRIBUTES__parser___parser_nodes___AAsNullableExternCall(fra.me.REG[0]);
+  parser___parser_prod___AExternCall___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AAsNullableExternCall(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___file___FileStat[54] = {
-  {(bigint) -25 /* 0: Identity */},
-  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "FileStat" /* 2: Class Name */},
-  {(bigint) 3 /* 3: FileStat < Object: superclass typecheck marker */},
-  {(bigint) -1 /* 4: FileStat < Pointer: superclass typecheck marker */},
-  {(bigint) -25 /* 5: 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 :( */,
-  {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: FileStat < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
-  {(bigint) standard___file___Object___printn},
-  {(bigint) standard___file___Object___print},
-  {(bigint) standard___file___Object___getc},
-  {(bigint) standard___file___Object___gets},
-  {(bigint) standard___file___Object___stdin},
-  {(bigint) standard___file___Object___stdout},
-  {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
-  {(bigint) standard___string___Object___native_class_name},
-  {(bigint) standard___string___Object___class_name},
-  {(bigint) standard___string___Object___inspect},
-  {(bigint) standard___string___Object___inspect_head},
-  {(bigint) standard___string___Object___args},
-  {(bigint) standard___hash___Object___hash},
-  {(bigint) standard___math___Object___atan2},
-  {(bigint) standard___math___Object___pi},
-  {(bigint) standard___math___Object___srand_from},
-  {(bigint) standard___math___Object___srand},
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: FileStat < Pointer: superclass init_table position */},
-  {(bigint) 2 /* 48: FileStat < FileStat: superclass init_table position */},
-  {(bigint) standard___file___FileStat___mode},
-  {(bigint) standard___file___FileStat___atime},
-  {(bigint) standard___file___FileStat___ctime},
-  {(bigint) standard___file___FileStat___mtime},
-  {(bigint) standard___file___FileStat___size},
-};
-/* 0: Pointer to the classtable */
-/* 1: Object_id */
-val_t BOX_FileStat(void * val) {
-  struct TBOX_FileStat *box = (struct TBOX_FileStat*)alloc(sizeof(struct TBOX_FileStat));
-  box->vft = VFT_standard___file___FileStat;
-  box->val = val;
-  box->object_id = object_id_counter;
-  object_id_counter = object_id_counter + 1;
-  return OBJ2VAL(box);
+static const char LOCATE_NEW_AAsNullableExternCall_parser___parser_prod___AAsNullableExternCall___empty_init[] = "new AAsNullableExternCall parser_prod::AAsNullableExternCall::empty_init";
+val_t NEW_AAsNullableExternCall_parser___parser_prod___AAsNullableExternCall___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 = 8753;
+  fra.me.meth = LOCATE_NEW_AAsNullableExternCall_parser___parser_prod___AAsNullableExternCall___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:8753 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AAsNullableExternCall();
+  INIT_ATTRIBUTES__parser___parser_nodes___AAsNullableExternCall(fra.me.REG[0]);
+  parser___parser_prod___AAsNullableExternCall___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AAsNullableExternCall(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___file___NativeFile[53] = {
-  {(bigint) -21 /* 0: Identity */},
-  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "NativeFile" /* 2: Class Name */},
-  {(bigint) 3 /* 3: NativeFile < Object: superclass typecheck marker */},
-  {(bigint) -1 /* 4: NativeFile < Pointer: superclass typecheck marker */},
-  {(bigint) -21 /* 5: 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 :( */,
-  {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: NativeFile < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
-  {(bigint) standard___file___Object___printn},
-  {(bigint) standard___file___Object___print},
-  {(bigint) standard___file___Object___getc},
-  {(bigint) standard___file___Object___gets},
-  {(bigint) standard___file___Object___stdin},
-  {(bigint) standard___file___Object___stdout},
-  {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
-  {(bigint) standard___string___Object___native_class_name},
-  {(bigint) standard___string___Object___class_name},
-  {(bigint) standard___string___Object___inspect},
-  {(bigint) standard___string___Object___inspect_head},
-  {(bigint) standard___string___Object___args},
-  {(bigint) standard___hash___Object___hash},
-  {(bigint) standard___math___Object___atan2},
-  {(bigint) standard___math___Object___pi},
-  {(bigint) standard___math___Object___srand_from},
-  {(bigint) standard___math___Object___srand},
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: NativeFile < Pointer: superclass init_table position */},
-  {(bigint) 2 /* 48: NativeFile < NativeFile: superclass init_table position */},
-  {(bigint) standard___file___NativeFile___io_read},
-  {(bigint) standard___file___NativeFile___io_write},
-  {(bigint) standard___file___NativeFile___io_close},
-  {(bigint) standard___file___NativeFile___file_stat},
-};
-/* 0: Pointer to the classtable */
-/* 1: Object_id */
-val_t BOX_NativeFile(void * val) {
-  struct TBOX_NativeFile *box = (struct TBOX_NativeFile*)alloc(sizeof(struct TBOX_NativeFile));
-  box->vft = VFT_standard___file___NativeFile;
-  box->val = val;
-  box->object_id = object_id_counter;
-  object_id_counter = object_id_counter + 1;
-  return OBJ2VAL(box);
+static const char LOCATE_NEW_AAsNullableExternCall_parser___parser_prod___AAsNullableExternCall___init_aasnullableexterncall[] = "new AAsNullableExternCall parser_prod::AAsNullableExternCall::init_aasnullableexterncall";
+val_t NEW_AAsNullableExternCall_parser___parser_prod___AAsNullableExternCall___init_aasnullableexterncall(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 = 8755;
+  fra.me.meth = LOCATE_NEW_AAsNullableExternCall_parser___parser_prod___AAsNullableExternCall___init_aasnullableexterncall;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  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:8755 */
+  fra.me.REG[3] = NEW_parser___parser_nodes___AAsNullableExternCall();
+  INIT_ATTRIBUTES__parser___parser_nodes___AAsNullableExternCall(fra.me.REG[3]);
+  parser___parser_prod___AAsNullableExternCall___init_aasnullableexterncall(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_parser___parser_nodes___AAsNullableExternCall(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
 }
-const classtable_elt_t VFT_standard___exec___Process[56] = {
-  {(bigint) 95 /* 0: Identity */},
-  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "Process" /* 2: Class Name */},
-  {(bigint) 3 /* 3: Process < Object: superclass typecheck marker */},
-  {(bigint) 95 /* 4: Process < Process: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+static const char LOCATE_NEW_AAsNullableExternCall_parser___parser_nodes___ANode___init[] = "new AAsNullableExternCall parser_nodes::ANode::init";
+val_t NEW_AAsNullableExternCall_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AAsNullableExternCall_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AAsNullableExternCall();
+  INIT_ATTRIBUTES__parser___parser_nodes___AAsNullableExternCall(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AAsNullableExternCall(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AAsNullableExternCall_parser___parser_prod___AExternCall___init_aexterncall[] = "new AAsNullableExternCall parser_prod::AExternCall::init_aexterncall";
+val_t NEW_AAsNullableExternCall_parser___parser_prod___AExternCall___init_aexterncall(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 = 8524;
+  fra.me.meth = LOCATE_NEW_AAsNullableExternCall_parser___parser_prod___AExternCall___init_aexterncall;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:8524 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AAsNullableExternCall();
+  INIT_ATTRIBUTES__parser___parser_nodes___AAsNullableExternCall(fra.me.REG[0]);
+  parser___parser_prod___AExternCall___init_aexterncall(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AAsNullableExternCall(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___AAsNotNullableExternCall[90] = {
+  {(bigint) 4807 /* 0: Identity */},
+  {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AAsNotNullableExternCall" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AAsNotNullableExternCall < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AAsNotNullableExternCall < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AAsNotNullableExternCall < Prod: superclass typecheck marker */},
+  {(bigint) 3803 /* 6: AAsNotNullableExternCall < AExternCall: superclass typecheck marker */},
+  {(bigint) 4527 /* 7: AAsNotNullableExternCall < ACastExternCall: superclass typecheck marker */},
+  {(bigint) 4807 /* 8: AAsNotNullableExternCall < AAsNotNullableExternCall: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -25279,7 +59413,7 @@ const classtable_elt_t VFT_standard___exec___Process[56] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: Process < Object: superclass init_table position */},
+  {(bigint) 4 /* 19: AAsNotNullableExternCall < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -25295,6 +59429,8 @@ const classtable_elt_t VFT_standard___exec___Process[56] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -25308,138 +59444,247 @@ const classtable_elt_t VFT_standard___exec___Process[56] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: Process < Process: superclass init_table position */},
-  {(bigint) standard___exec___Process___id},
-  {(bigint) standard___exec___Process___is_finished},
-  {(bigint) standard___exec___Process___wait},
-  {(bigint) standard___exec___Process___status},
-  {(bigint) standard___exec___Process___init},
-  {(bigint) standard___exec___Process___init_},
-  {(bigint) standard___exec___Process___execute},
-  {(bigint) standard___exec___Process___basic_exec_execute},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___AAsNotNullableExternCall___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AAsNotNullableExternCall___visit_all},
+  {(bigint) 3 /* 63: AAsNotNullableExternCall < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ACastExternCall___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 2 /* 72: AAsNotNullableExternCall < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___typing___AExternCall___target_class_name},
+  {(bigint) syntax___typing___AExternCall___target_method_name},
+  {(bigint) parser___parser_prod___AExternCall___empty_init},
+  {(bigint) parser___parser_prod___AExternCall___init_aexterncall},
+  {(bigint) 1 /* 79: AAsNotNullableExternCall < AExternCall: superclass init_table position */},
+  {(bigint) syntax___typing___AAsNotNullableExternCall___from_type},
+  {(bigint) syntax___typing___AAsNotNullableExternCall___to_type},
+  {(bigint) 0 /* 82: AAsNotNullableExternCall < ACastExternCall: superclass init_table position */},
+  {(bigint) parser___parser_prod___AAsNotNullableExternCall___empty_init},
+  {(bigint) parser___parser_prod___AAsNotNullableExternCall___init_aasnotnullableexterncall},
+  {(bigint) 5 /* 85: AAsNotNullableExternCall < AAsNotNullableExternCall: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AAsNotNullableExternCall___n_type},
+  {(bigint) parser___parser_nodes___AAsNotNullableExternCall___n_kwas},
+  {(bigint) parser___parser_nodes___AAsNotNullableExternCall___n_kwnot},
+  {(bigint) parser___parser_nodes___AAsNotNullableExternCall___n_kwnullable},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute Process::_data */
-void INIT_ATTRIBUTES__standard___exec___Process(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AAsNotNullableExternCall::_parent */
+/* 3: Attribute AAsNotNullableExternCall::_location */
+/* 4: Attribute AAsNotNullableExternCall::_first_location */
+/* 5: Attribute AAsNotNullableExternCall::_last_location */
+/* 6: Attribute AAsNotNullableExternCall::_n_annotations */
+/* 7: Attribute AAsNotNullableExternCall::_n_type */
+/* 8: Attribute AAsNotNullableExternCall::_n_kwas */
+/* 9: Attribute AAsNotNullableExternCall::_n_kwnot */
+/* 10: Attribute AAsNotNullableExternCall::_n_kwnullable */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AAsNotNullableExternCall[] = "init var of AAsNotNullableExternCall";
+void INIT_ATTRIBUTES__parser___parser_nodes___AAsNotNullableExternCall(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__standard___exec___Process;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AAsNotNullableExternCall;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___exec___Process(void)
+val_t NEW_parser___parser_nodes___AAsNotNullableExternCall(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_standard___exec___Process;
+  obj = alloc(sizeof(val_t) * 11);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AAsNotNullableExternCall;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___exec___Process(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AAsNotNullableExternCall[] = "check new AAsNotNullableExternCall";
+void CHECKNEW_parser___parser_nodes___AAsNotNullableExternCall(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_standard___exec___Process;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AAsNotNullableExternCall;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_standard___exec___Process____data(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsNotNullableExternCall____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___parser_nodes___AAsNotNullableExternCall____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___parser_nodes___AAsNotNullableExternCall____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___parser_nodes___AAsNotNullableExternCall____n_kwnullable(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_data", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_kwnullable", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_Process_standard___exec___Process___init(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_AAsNotNullableExternCall_parser___parser_prod___AExternCall___empty_init[] = "new AAsNotNullableExternCall parser_prod::AExternCall::empty_init";
+val_t NEW_AAsNotNullableExternCall_parser___parser_prod___AExternCall___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[2] = {0, 0};
+  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 = 43;
-  fra.me.meth = LOCATE_NEW_Process_standard___exec___Process___init;
+  fra.me.line = 8522;
+  fra.me.meth = LOCATE_NEW_AAsNotNullableExternCall_parser___parser_prod___AExternCall___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:8522 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AAsNotNullableExternCall();
+  INIT_ATTRIBUTES__parser___parser_nodes___AAsNotNullableExternCall(fra.me.REG[0]);
+  parser___parser_prod___AExternCall___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AAsNotNullableExternCall(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AAsNotNullableExternCall_parser___parser_prod___AAsNotNullableExternCall___empty_init[] = "new AAsNotNullableExternCall parser_prod::AAsNotNullableExternCall::empty_init";
+val_t NEW_AAsNotNullableExternCall_parser___parser_prod___AAsNotNullableExternCall___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 = 8812;
+  fra.me.meth = LOCATE_NEW_AAsNotNullableExternCall_parser___parser_prod___AAsNotNullableExternCall___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:8812 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AAsNotNullableExternCall();
+  INIT_ATTRIBUTES__parser___parser_nodes___AAsNotNullableExternCall(fra.me.REG[0]);
+  parser___parser_prod___AAsNotNullableExternCall___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AAsNotNullableExternCall(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AAsNotNullableExternCall_parser___parser_prod___AAsNotNullableExternCall___init_aasnotnullableexterncall[] = "new AAsNotNullableExternCall parser_prod::AAsNotNullableExternCall::init_aasnotnullableexterncall";
+val_t NEW_AAsNotNullableExternCall_parser___parser_prod___AAsNotNullableExternCall___init_aasnotnullableexterncall(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[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 = 8814;
+  fra.me.meth = LOCATE_NEW_AAsNotNullableExternCall_parser___parser_prod___AAsNotNullableExternCall___init_aasnotnullableexterncall;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
   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;
-  /* ./../lib/standard//exec.nit:43 */
-  fra.me.REG[2] = NEW_standard___exec___Process();
-  INIT_ATTRIBUTES__standard___exec___Process(fra.me.REG[2]);
-  standard___exec___Process___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_standard___exec___Process(fra.me.REG[2]);
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  /* parser/parser_prod.nit:8814 */
+  fra.me.REG[4] = NEW_parser___parser_nodes___AAsNotNullableExternCall();
+  INIT_ATTRIBUTES__parser___parser_nodes___AAsNotNullableExternCall(fra.me.REG[4]);
+  parser___parser_prod___AAsNotNullableExternCall___init_aasnotnullableexterncall(fra.me.REG[4], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], init_table);
+  CHECKNEW_parser___parser_nodes___AAsNotNullableExternCall(fra.me.REG[4]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[4];
 }
-val_t NEW_Process_standard___exec___Process___init_(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AAsNotNullableExternCall_parser___parser_nodes___ANode___init[] = "new AAsNotNullableExternCall parser_nodes::ANode::init";
+val_t NEW_AAsNotNullableExternCall_parser___parser_nodes___ANode___init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[2] = {0, 0};
+  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 = 49;
-  fra.me.meth = LOCATE_NEW_Process_standard___exec___Process___init_;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_AAsNotNullableExternCall_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_standard___exec___Process();
-  INIT_ATTRIBUTES__standard___exec___Process(fra.me.REG[1]);
-  standard___exec___Process___init_(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_standard___exec___Process(fra.me.REG[1]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AAsNotNullableExternCall();
+  INIT_ATTRIBUTES__parser___parser_nodes___AAsNotNullableExternCall(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AAsNotNullableExternCall(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-val_t NEW_Process_standard___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;
+static const char LOCATE_NEW_AAsNotNullableExternCall_parser___parser_prod___AExternCall___init_aexterncall[] = "new AAsNotNullableExternCall parser_prod::AExternCall::init_aexterncall";
+val_t NEW_AAsNotNullableExternCall_parser___parser_prod___AExternCall___init_aexterncall(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[2] = {0, 0};
+  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 = 55;
-  fra.me.meth = LOCATE_NEW_Process_standard___exec___Process___execute;
+  fra.me.line = 8524;
+  fra.me.meth = LOCATE_NEW_AAsNotNullableExternCall_parser___parser_prod___AExternCall___init_aexterncall;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_standard___exec___Process();
-  INIT_ATTRIBUTES__standard___exec___Process(fra.me.REG[2]);
-  standard___exec___Process___execute(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], REGB0, init_table);
-  CHECKNEW_standard___exec___Process(fra.me.REG[2]);
+  /* parser/parser_prod.nit:8524 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AAsNotNullableExternCall();
+  INIT_ATTRIBUTES__parser___parser_nodes___AAsNotNullableExternCall(fra.me.REG[0]);
+  parser___parser_prod___AExternCall___init_aexterncall(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AAsNotNullableExternCall(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___exec___IProcess[75] = {
-  {(bigint) 2871 /* 0: Identity */},
-  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "IProcess" /* 2: Class Name */},
-  {(bigint) 3 /* 3: IProcess < Object: superclass typecheck marker */},
-  {(bigint) 95 /* 4: IProcess < Process: superclass typecheck marker */},
-  {(bigint) 215 /* 5: IProcess < IOS: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___parser_nodes___ATypePropdef[94] = {
+  {(bigint) 4271 /* 0: Identity */},
+  {(bigint) 15 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ATypePropdef" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ATypePropdef < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: ATypePropdef < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: ATypePropdef < Prod: superclass typecheck marker */},
+  {(bigint) 3751 /* 6: ATypePropdef < APropdef: superclass typecheck marker */},
+  {(bigint) 4271 /* 7: ATypePropdef < ATypePropdef: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2227 /* 7: IProcess < IStream: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 2871 /* 9: IProcess < IProcess: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -25448,7 +59693,7 @@ const classtable_elt_t VFT_standard___exec___IProcess[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: IProcess < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: ATypePropdef < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -25464,6 +59709,8 @@ const classtable_elt_t VFT_standard___exec___IProcess[75] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -25477,138 +59724,224 @@ const classtable_elt_t VFT_standard___exec___IProcess[75] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: IProcess < Process: superclass init_table position */},
-  {(bigint) standard___exec___Process___id},
-  {(bigint) standard___exec___Process___is_finished},
-  {(bigint) standard___exec___Process___wait},
-  {(bigint) standard___exec___Process___status},
-  {(bigint) standard___exec___Process___init},
-  {(bigint) standard___exec___Process___init_},
-  {(bigint) standard___exec___Process___execute},
-  {(bigint) standard___exec___Process___basic_exec_execute},
-  {(bigint) 2 /* 56: IProcess < IOS: superclass init_table position */},
-  {(bigint) standard___exec___IProcess___close},
-  {(bigint) standard___stream___IOS___init},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 3 /* 62: IProcess < IStream: superclass init_table position */},
-  {(bigint) standard___exec___IProcess___read_char},
-  {(bigint) standard___stream___IStream___read},
-  {(bigint) standard___stream___IStream___read_line},
-  {(bigint) standard___stream___IStream___read_all},
-  {(bigint) standard___stream___IStream___append_line_to},
-  {(bigint) standard___exec___IProcess___eof},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 4 /* 72: IProcess < IProcess: superclass init_table position */},
-  {(bigint) standard___exec___IProcess___init},
-  {(bigint) standard___exec___IProcess___init_},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ATypePropdef___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ATypePropdef___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___ATypePropdef___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___ATypePropdef___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___ATypePropdef___visit_all},
+  {(bigint) 2 /* 63: ATypePropdef < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: ATypePropdef < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___mmbuilder___APropdef___process_and_check},
+  {(bigint) syntax___mmbuilder___APropdef___do_and_check_intro},
+  {(bigint) syntax___mmbuilder___APropdef___inherit_signature},
+  {(bigint) syntax___mmbuilder___APropdef___do_and_check_redef},
+  {(bigint) syntax___typing___APropdef___self_var},
+  {(bigint) 0 /* 80: ATypePropdef < APropdef: superclass init_table position */},
+  {(bigint) parser___parser_nodes___APropdef___n_doc},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) syntax___mmbuilder___ATypePropdef___prop},
+  {(bigint) parser___parser_prod___ATypePropdef___empty_init},
+  {(bigint) parser___parser_prod___ATypePropdef___init_atypepropdef},
+  {(bigint) 4 /* 88: ATypePropdef < ATypePropdef: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ATypePropdef___n_kwredef},
+  {(bigint) parser___parser_nodes___ATypePropdef___n_visibility},
+  {(bigint) parser___parser_nodes___ATypePropdef___n_kwtype},
+  {(bigint) parser___parser_nodes___ATypePropdef___n_id},
+  {(bigint) parser___parser_nodes___ATypePropdef___n_type},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute IProcess::_data */
-/* Instance Hole :( */
-/* 4: Attribute IProcess::_in */
-void INIT_ATTRIBUTES__standard___exec___IProcess(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute ATypePropdef::_parent */
+/* 3: Attribute ATypePropdef::_location */
+/* 4: Attribute ATypePropdef::_first_location */
+/* 5: Attribute ATypePropdef::_last_location */
+/* 6: Attribute ATypePropdef::_n_annotations */
+/* 7: Attribute ATypePropdef::_n_doc */
+/* 8: Attribute ATypePropdef::_self_var */
+/* 9: Attribute ATypePropdef::_prop */
+/* 10: Attribute ATypePropdef::_n_kwredef */
+/* 11: Attribute ATypePropdef::_n_visibility */
+/* 12: Attribute ATypePropdef::_n_kwtype */
+/* 13: Attribute ATypePropdef::_n_id */
+/* 14: Attribute ATypePropdef::_n_type */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ATypePropdef[] = "init var of ATypePropdef";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__standard___exec___IProcess;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ATypePropdef;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:497 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:624 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ATypePropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___exec___IProcess(void)
+val_t NEW_parser___parser_nodes___ATypePropdef(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_standard___exec___IProcess;
+  obj = alloc(sizeof(val_t) * 15);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ATypePropdef;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___exec___IProcess(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___ATypePropdef[] = "check new ATypePropdef";
+void CHECKNEW_parser___parser_nodes___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_standard___exec___IProcess;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___ATypePropdef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_standard___exec___IProcess____in(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___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___parser_nodes___ATypePropdef____n_kwtype(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_in", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_kwtype", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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_standard___exec___Process____data(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ATypePropdef____n_type(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_data", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_IProcess_standard___exec___IProcess___init(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_ATypePropdef_parser___parser_prod___ATypePropdef___empty_init[] = "new ATypePropdef parser_prod::ATypePropdef::empty_init";
+val_t NEW_ATypePropdef_parser___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 = 87;
-  fra.me.meth = LOCATE_NEW_IProcess_standard___exec___IProcess___init;
+  fra.me.line = 2315;
+  fra.me.meth = LOCATE_NEW_ATypePropdef_parser___parser_prod___ATypePropdef___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:2315 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ATypePropdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___ATypePropdef(fra.me.REG[0]);
+  parser___parser_prod___ATypePropdef___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ATypePropdef(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_ATypePropdef_parser___parser_prod___ATypePropdef___init_atypepropdef[] = "new ATypePropdef parser_prod::ATypePropdef::init_atypepropdef";
+val_t NEW_ATypePropdef_parser___parser_prod___ATypePropdef___init_atypepropdef(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[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 = 2317;
+  fra.me.meth = LOCATE_NEW_ATypePropdef_parser___parser_prod___ATypePropdef___init_atypepropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
   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;
-  /* ./../lib/standard//exec.nit:87 */
-  fra.me.REG[2] = NEW_standard___exec___IProcess();
-  INIT_ATTRIBUTES__standard___exec___IProcess(fra.me.REG[2]);
-  standard___exec___IProcess___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_standard___exec___IProcess(fra.me.REG[2]);
+  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:2317 */
+  fra.me.REG[7] = NEW_parser___parser_nodes___ATypePropdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___ATypePropdef(fra.me.REG[7]);
+  parser___parser_prod___ATypePropdef___init_atypepropdef(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_parser___parser_nodes___ATypePropdef(fra.me.REG[7]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[7];
 }
-val_t NEW_IProcess_standard___exec___IProcess___init_(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ATypePropdef_parser___parser_nodes___ANode___init[] = "new ATypePropdef parser_nodes::ANode::init";
+val_t NEW_ATypePropdef_parser___parser_nodes___ANode___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 = 93;
-  fra.me.meth = LOCATE_NEW_IProcess_standard___exec___IProcess___init_;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_ATypePropdef_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_standard___exec___IProcess();
-  INIT_ATTRIBUTES__standard___exec___IProcess(fra.me.REG[1]);
-  standard___exec___IProcess___init_(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_standard___exec___IProcess(fra.me.REG[1]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ATypePropdef();
+  INIT_ATTRIBUTES__parser___parser_nodes___ATypePropdef(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ATypePropdef(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___exec___OProcess[72] = {
-  {(bigint) 2807 /* 0: Identity */},
-  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "OProcess" /* 2: Class Name */},
-  {(bigint) 3 /* 3: OProcess < Object: superclass typecheck marker */},
-  {(bigint) 95 /* 4: OProcess < Process: superclass typecheck marker */},
-  {(bigint) 215 /* 5: OProcess < IOS: superclass typecheck marker */},
-  {(bigint) 2107 /* 6: OProcess < OStream: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___parser_nodes___AReadAble[82] = {
+  {(bigint) 4335 /* 0: Identity */},
+  {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AReadAble" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AReadAble < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AReadAble < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AReadAble < Prod: superclass typecheck marker */},
+  {(bigint) 3855 /* 6: AReadAble < AAble: superclass typecheck marker */},
+  {(bigint) 4335 /* 7: AReadAble < AReadAble: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2807 /* 8: OProcess < OProcess: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -25618,7 +59951,7 @@ const classtable_elt_t VFT_standard___exec___OProcess[72] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: OProcess < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: AReadAble < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -25634,6 +59967,8 @@ const classtable_elt_t VFT_standard___exec___OProcess[72] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -25647,144 +59982,192 @@ const classtable_elt_t VFT_standard___exec___OProcess[72] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: OProcess < Process: superclass init_table position */},
-  {(bigint) standard___exec___Process___id},
-  {(bigint) standard___exec___Process___is_finished},
-  {(bigint) standard___exec___Process___wait},
-  {(bigint) standard___exec___Process___status},
-  {(bigint) standard___exec___Process___init},
-  {(bigint) standard___exec___Process___init_},
-  {(bigint) standard___exec___Process___execute},
-  {(bigint) standard___exec___Process___basic_exec_execute},
-  {(bigint) 2 /* 56: OProcess < IOS: superclass init_table position */},
-  {(bigint) standard___exec___OProcess___close},
-  {(bigint) standard___stream___IOS___init},
-  {(bigint) 3 /* 59: OProcess < OStream: superclass init_table position */},
-  {(bigint) standard___exec___OProcess___write},
-  {(bigint) standard___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 /* 69: OProcess < OProcess: superclass init_table position */},
-  {(bigint) standard___exec___OProcess___init},
-  {(bigint) standard___exec___OProcess___init_},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___AReadAble___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AReadAble___visit_all},
+  {(bigint) 2 /* 63: AReadAble < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: AReadAble < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) 0 /* 75: AReadAble < AAble: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AAble___n_visibility},
+  {(bigint) parser___parser_nodes___AAble___n_kwredef},
+  {(bigint) parser___parser_prod___AReadAble___empty_init},
+  {(bigint) parser___parser_prod___AReadAble___init_areadable},
+  {(bigint) 4 /* 80: AReadAble < AReadAble: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AReadAble___n_kwreadable},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute OProcess::_data */
-/* 3: Attribute OProcess::_out */
-void INIT_ATTRIBUTES__standard___exec___OProcess(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AReadAble::_parent */
+/* 3: Attribute AReadAble::_location */
+/* 4: Attribute AReadAble::_first_location */
+/* 5: Attribute AReadAble::_last_location */
+/* 6: Attribute AReadAble::_n_annotations */
+/* 7: Attribute AReadAble::_n_visibility */
+/* 8: Attribute AReadAble::_n_kwredef */
+/* 9: Attribute AReadAble::_n_kwreadable */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AReadAble[] = "init var of AReadAble";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__standard___exec___OProcess;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AReadAble;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:631 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AAble____n_visibility(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:632 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AAble____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___exec___OProcess(void)
+val_t NEW_parser___parser_nodes___AReadAble(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_standard___exec___OProcess;
+  obj = alloc(sizeof(val_t) * 10);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AReadAble;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___exec___OProcess(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AReadAble[] = "check new AReadAble";
+void CHECKNEW_parser___parser_nodes___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_standard___exec___OProcess;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AReadAble;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_standard___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_standard___exec___Process____data(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AReadAble____n_kwreadable(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_data", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_kwreadable", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_OProcess_standard___exec___OProcess___init(val_t p0, val_t p1){
+static const char LOCATE_NEW_AReadAble_parser___parser_prod___AReadAble___empty_init[] = "new AReadAble parser_prod::AReadAble::empty_init";
+val_t NEW_AReadAble_parser___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 = 2442;
+  fra.me.meth = LOCATE_NEW_AReadAble_parser___parser_prod___AReadAble___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:2442 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AReadAble();
+  INIT_ATTRIBUTES__parser___parser_nodes___AReadAble(fra.me.REG[0]);
+  parser___parser_prod___AReadAble___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AReadAble(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AReadAble_parser___parser_prod___AReadAble___init_areadable[] = "new AReadAble parser_prod::AReadAble::init_areadable";
+val_t NEW_AReadAble_parser___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 = 112;
-  fra.me.meth = LOCATE_NEW_OProcess_standard___exec___OProcess___init;
+  fra.me.line = 2444;
+  fra.me.meth = LOCATE_NEW_AReadAble_parser___parser_prod___AReadAble___init_areadable;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   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_standard___exec___OProcess();
-  INIT_ATTRIBUTES__standard___exec___OProcess(fra.me.REG[2]);
-  standard___exec___OProcess___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_standard___exec___OProcess(fra.me.REG[2]);
+  /* parser/parser_prod.nit:2444 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___AReadAble();
+  INIT_ATTRIBUTES__parser___parser_nodes___AReadAble(fra.me.REG[2]);
+  parser___parser_prod___AReadAble___init_areadable(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___AReadAble(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-val_t NEW_OProcess_standard___exec___OProcess___init_(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AReadAble_parser___parser_nodes___ANode___init[] = "new AReadAble parser_nodes::ANode::init";
+val_t NEW_AReadAble_parser___parser_nodes___ANode___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 = 118;
-  fra.me.meth = LOCATE_NEW_OProcess_standard___exec___OProcess___init_;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_AReadAble_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_standard___exec___OProcess();
-  INIT_ATTRIBUTES__standard___exec___OProcess(fra.me.REG[1]);
-  standard___exec___OProcess___init_(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_standard___exec___OProcess(fra.me.REG[1]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AReadAble();
+  INIT_ATTRIBUTES__parser___parser_nodes___AReadAble(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AReadAble(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___exec___IOProcess[79] = {
-  {(bigint) 3211 /* 0: Identity */},
-  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "IOProcess" /* 2: Class Name */},
-  {(bigint) 3 /* 3: IOProcess < Object: superclass typecheck marker */},
-  {(bigint) 95 /* 4: IOProcess < Process: superclass typecheck marker */},
-  {(bigint) 215 /* 5: IOProcess < IOS: superclass typecheck marker */},
-  {(bigint) 2107 /* 6: IOProcess < OStream: superclass typecheck marker */},
-  {(bigint) 2227 /* 7: IOProcess < IStream: superclass typecheck marker */},
-  {(bigint) 2807 /* 8: IOProcess < OProcess: superclass typecheck marker */},
-  {(bigint) 2871 /* 9: IOProcess < IProcess: superclass typecheck marker */},
-  {(bigint) 2879 /* 10: IOProcess < IOStream: superclass typecheck marker */},
-  {(bigint) 3211 /* 11: IOProcess < IOProcess: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___parser_nodes___AWriteAble[82] = {
+  {(bigint) 4259 /* 0: Identity */},
+  {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AWriteAble" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AWriteAble < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AWriteAble < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AWriteAble < Prod: superclass typecheck marker */},
+  {(bigint) 3855 /* 6: AWriteAble < AAble: superclass typecheck marker */},
+  {(bigint) 4259 /* 7: 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 :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: IOProcess < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: AWriteAble < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -25800,6 +60183,8 @@ const classtable_elt_t VFT_standard___exec___IOProcess[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -25813,213 +60198,182 @@ const classtable_elt_t VFT_standard___exec___IOProcess[79] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: IOProcess < Process: superclass init_table position */},
-  {(bigint) standard___exec___Process___id},
-  {(bigint) standard___exec___Process___is_finished},
-  {(bigint) standard___exec___Process___wait},
-  {(bigint) standard___exec___Process___status},
-  {(bigint) standard___exec___Process___init},
-  {(bigint) standard___exec___Process___init_},
-  {(bigint) standard___exec___Process___execute},
-  {(bigint) standard___exec___Process___basic_exec_execute},
-  {(bigint) 2 /* 56: IOProcess < IOS: superclass init_table position */},
-  {(bigint) standard___exec___IOProcess___close},
-  {(bigint) standard___stream___IOS___init},
-  {(bigint) 5 /* 59: IOProcess < OStream: superclass init_table position */},
-  {(bigint) standard___exec___OProcess___write},
-  {(bigint) standard___exec___OProcess___is_writable},
-  {(bigint) 3 /* 62: IOProcess < IStream: superclass init_table position */},
-  {(bigint) standard___exec___IProcess___read_char},
-  {(bigint) standard___stream___IStream___read},
-  {(bigint) standard___stream___IStream___read_line},
-  {(bigint) standard___stream___IStream___read_all},
-  {(bigint) standard___stream___IStream___append_line_to},
-  {(bigint) standard___exec___IProcess___eof},
-  {(bigint) 6 /* 69: IOProcess < OProcess: superclass init_table position */},
-  {(bigint) standard___exec___OProcess___init},
-  {(bigint) standard___exec___OProcess___init_},
-  {(bigint) 4 /* 72: IOProcess < IProcess: superclass init_table position */},
-  {(bigint) standard___exec___IProcess___init},
-  {(bigint) standard___exec___IProcess___init_},
-  {(bigint) 7 /* 75: IOProcess < IOStream: superclass init_table position */},
-  {(bigint) 8 /* 76: IOProcess < IOProcess: superclass init_table position */},
-  {(bigint) standard___exec___IOProcess___init},
-  {(bigint) standard___exec___IOProcess___init_},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___AWriteAble___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AWriteAble___visit_all},
+  {(bigint) 2 /* 63: AWriteAble < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: AWriteAble < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) 0 /* 75: AWriteAble < AAble: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AAble___n_visibility},
+  {(bigint) parser___parser_nodes___AAble___n_kwredef},
+  {(bigint) parser___parser_prod___AWriteAble___empty_init},
+  {(bigint) parser___parser_prod___AWriteAble___init_awriteable},
+  {(bigint) 4 /* 80: AWriteAble < AWriteAble: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AWriteAble___n_kwwritable},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute IOProcess::_data */
-/* 3: Attribute IOProcess::_out */
-/* 4: Attribute IOProcess::_in */
-void INIT_ATTRIBUTES__standard___exec___IOProcess(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AWriteAble::_parent */
+/* 3: Attribute AWriteAble::_location */
+/* 4: Attribute AWriteAble::_first_location */
+/* 5: Attribute AWriteAble::_last_location */
+/* 6: Attribute AWriteAble::_n_annotations */
+/* 7: Attribute AWriteAble::_n_visibility */
+/* 8: Attribute AWriteAble::_n_kwredef */
+/* 9: Attribute AWriteAble::_n_kwwritable */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AWriteAble[] = "init var of AWriteAble";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__standard___exec___IOProcess;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AWriteAble;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:631 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AAble____n_visibility(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:632 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AAble____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___exec___IOProcess(void)
+val_t NEW_parser___parser_nodes___AWriteAble(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_standard___exec___IOProcess;
+  obj = alloc(sizeof(val_t) * 10);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AWriteAble;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___exec___IOProcess(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AWriteAble[] = "check new AWriteAble";
+void CHECKNEW_parser___parser_nodes___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_standard___exec___IOProcess;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AWriteAble;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_standard___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_standard___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_standard___exec___OProcess____out(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AWriteAble____n_kwwritable(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_out", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_kwwritable", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_IOProcess_standard___exec___IOProcess___init(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_AWriteAble_parser___parser_prod___AWriteAble___empty_init[] = "new AWriteAble parser_prod::AWriteAble::empty_init";
+val_t NEW_AWriteAble_parser___parser_prod___AWriteAble___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};
+  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 = 137;
-  fra.me.meth = LOCATE_NEW_IOProcess_standard___exec___IOProcess___init;
+  fra.me.line = 2491;
+  fra.me.meth = LOCATE_NEW_AWriteAble_parser___parser_prod___AWriteAble___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:2491 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AWriteAble();
+  INIT_ATTRIBUTES__parser___parser_nodes___AWriteAble(fra.me.REG[0]);
+  parser___parser_prod___AWriteAble___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AWriteAble(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AWriteAble_parser___parser_prod___AWriteAble___init_awriteable[] = "new AWriteAble parser_prod::AWriteAble::init_awriteable";
+val_t NEW_AWriteAble_parser___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 = 2493;
+  fra.me.meth = LOCATE_NEW_AWriteAble_parser___parser_prod___AWriteAble___init_awriteable;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   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;
-  /* ./../lib/standard//exec.nit:137 */
-  fra.me.REG[2] = NEW_standard___exec___IOProcess();
-  INIT_ATTRIBUTES__standard___exec___IOProcess(fra.me.REG[2]);
-  standard___exec___IOProcess___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_standard___exec___IOProcess(fra.me.REG[2]);
+  fra.me.REG[2] = p2;
+  /* parser/parser_prod.nit:2493 */
+  fra.me.REG[3] = NEW_parser___parser_nodes___AWriteAble();
+  INIT_ATTRIBUTES__parser___parser_nodes___AWriteAble(fra.me.REG[3]);
+  parser___parser_prod___AWriteAble___init_awriteable(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_parser___parser_nodes___AWriteAble(fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[3];
 }
-val_t NEW_IOProcess_standard___exec___IOProcess___init_(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AWriteAble_parser___parser_nodes___ANode___init[] = "new AWriteAble parser_nodes::ANode::init";
+val_t NEW_AWriteAble_parser___parser_nodes___ANode___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};
+  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 = 144;
-  fra.me.meth = LOCATE_NEW_IOProcess_standard___exec___IOProcess___init_;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_AWriteAble_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_standard___exec___IOProcess();
-  INIT_ATTRIBUTES__standard___exec___IOProcess(fra.me.REG[1]);
-  standard___exec___IOProcess___init_(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_standard___exec___IOProcess(fra.me.REG[1]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AWriteAble();
+  INIT_ATTRIBUTES__parser___parser_nodes___AWriteAble(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AWriteAble(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_standard___exec___NativeProcess[56] = {
-  {(bigint) -17 /* 0: Identity */},
-  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "NativeProcess" /* 2: Class Name */},
-  {(bigint) 3 /* 3: NativeProcess < Object: superclass typecheck marker */},
-  {(bigint) -1 /* 4: NativeProcess < Pointer: superclass typecheck marker */},
-  {(bigint) -17 /* 5: 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 :( */,
-  {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: NativeProcess < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
-  {(bigint) standard___file___Object___printn},
-  {(bigint) standard___file___Object___print},
-  {(bigint) standard___file___Object___getc},
-  {(bigint) standard___file___Object___gets},
-  {(bigint) standard___file___Object___stdin},
-  {(bigint) standard___file___Object___stdout},
-  {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
-  {(bigint) standard___string___Object___native_class_name},
-  {(bigint) standard___string___Object___class_name},
-  {(bigint) standard___string___Object___inspect},
-  {(bigint) standard___string___Object___inspect_head},
-  {(bigint) standard___string___Object___args},
-  {(bigint) standard___hash___Object___hash},
-  {(bigint) standard___math___Object___atan2},
-  {(bigint) standard___math___Object___pi},
-  {(bigint) standard___math___Object___srand_from},
-  {(bigint) standard___math___Object___srand},
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: NativeProcess < Pointer: superclass init_table position */},
-  {(bigint) 2 /* 48: NativeProcess < NativeProcess: superclass init_table position */},
-  {(bigint) standard___exec___NativeProcess___id},
-  {(bigint) standard___exec___NativeProcess___is_finished},
-  {(bigint) standard___exec___NativeProcess___status},
-  {(bigint) standard___exec___NativeProcess___wait},
-  {(bigint) standard___exec___NativeProcess___in_fd},
-  {(bigint) standard___exec___NativeProcess___out_fd},
-  {(bigint) standard___exec___NativeProcess___err_fd},
-};
-/* 0: Pointer to the classtable */
-/* 1: Object_id */
-val_t BOX_NativeProcess(void * val) {
-  struct TBOX_NativeProcess *box = (struct TBOX_NativeProcess*)alloc(sizeof(struct TBOX_NativeProcess));
-  box->vft = VFT_standard___exec___NativeProcess;
-  box->val = val;
-  box->object_id = object_id_counter;
-  object_id_counter = object_id_counter + 1;
-  return OBJ2VAL(box);
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_location___SourceFile[55] = {
-  {(bigint) 43 /* 0: Identity */},
-  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "SourceFile" /* 2: Class Name */},
-  {(bigint) 3 /* 3: SourceFile < Object: superclass typecheck marker */},
-  {(bigint) 43 /* 4: SourceFile < SourceFile: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_parser___parser_nodes___AIdMethid[82] = {
+  {(bigint) 4463 /* 0: Identity */},
+  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AIdMethid" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AIdMethid < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AIdMethid < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AIdMethid < Prod: superclass typecheck marker */},
+  {(bigint) 3771 /* 6: AIdMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 4463 /* 7: AIdMethid < AIdMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -26031,7 +60385,7 @@ const classtable_elt_t VFT_location___SourceFile[55] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: SourceFile < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: AIdMethid < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -26047,6 +60401,8 @@ const classtable_elt_t VFT_location___SourceFile[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -26060,106 +60416,171 @@ const classtable_elt_t VFT_location___SourceFile[55] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: SourceFile < SourceFile: superclass init_table position */},
-  {(bigint) location___SourceFile___filename},
-  {(bigint) location___SourceFile___filename__eq},
-  {(bigint) location___SourceFile___string},
-  {(bigint) location___SourceFile___string__eq},
-  {(bigint) location___SourceFile___init},
-  {(bigint) location___SourceFile___line_starts},
-  {(bigint) location___SourceFile___line_starts__eq},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___AIdMethid___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AIdMethid___visit_all},
+  {(bigint) 2 /* 63: AIdMethid < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: AIdMethid < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AMethid___name},
+  {(bigint) 0 /* 77: AIdMethid < AMethid: superclass init_table position */},
+  {(bigint) parser___parser_prod___AIdMethid___empty_init},
+  {(bigint) parser___parser_prod___AIdMethid___init_aidmethid},
+  {(bigint) 4 /* 80: AIdMethid < AIdMethid: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AIdMethid___n_id},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute SourceFile::@filename */
-/* 3: Attribute SourceFile::@string */
-/* 4: Attribute SourceFile::@line_starts */
-void INIT_ATTRIBUTES__location___SourceFile(val_t p0){
+/* 2: Attribute AIdMethid::_parent */
+/* 3: Attribute AIdMethid::_location */
+/* 4: Attribute AIdMethid::_first_location */
+/* 5: Attribute AIdMethid::_last_location */
+/* 6: Attribute AIdMethid::_n_annotations */
+/* 7: Attribute AIdMethid::_name */
+/* 8: Attribute AIdMethid::_n_id */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AIdMethid[] = "init var of AIdMethid";
+void INIT_ATTRIBUTES__parser___parser_nodes___AIdMethid(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__location___SourceFile;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AIdMethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   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_Array_standard___collection___array___Array___init();
-  ATTR_location___SourceFile_____atline_starts(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_location___SourceFile(void)
+val_t NEW_parser___parser_nodes___AIdMethid(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_location___SourceFile;
+  obj = alloc(sizeof(val_t) * 9);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AIdMethid;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_location___SourceFile(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AIdMethid[] = "check new AIdMethid";
+void CHECKNEW_parser___parser_nodes___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_location___SourceFile;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AIdMethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_location___SourceFile_____atfilename(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "@filename", LOCATE_nitc, 0);
-  }
-  REGB0 = TAG_Bool(ATTR_location___SourceFile_____atstring(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "@string", LOCATE_nitc, 0);
-  }
-  REGB0 = TAG_Bool(ATTR_location___SourceFile_____atline_starts(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AIdMethid____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "@line_starts", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_SourceFile_location___SourceFile___init(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_AIdMethid_parser___parser_prod___AIdMethid___empty_init[] = "new AIdMethid parser_prod::AIdMethid::empty_init";
+val_t NEW_AIdMethid_parser___parser_prod___AIdMethid___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[2] = {0, 0};
+  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 = 28;
-  fra.me.meth = LOCATE_NEW_SourceFile_location___SourceFile___init;
+  fra.me.line = 2558;
+  fra.me.meth = LOCATE_NEW_AIdMethid_parser___parser_prod___AIdMethid___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:2558 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AIdMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___AIdMethid(fra.me.REG[0]);
+  parser___parser_prod___AIdMethid___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AIdMethid(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AIdMethid_parser___parser_prod___AIdMethid___init_aidmethid[] = "new AIdMethid parser_prod::AIdMethid::init_aidmethid";
+val_t NEW_AIdMethid_parser___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 = 2560;
+  fra.me.meth = LOCATE_NEW_AIdMethid_parser___parser_prod___AIdMethid___init_aidmethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   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;
-  /* ./location.nit:28 */
-  fra.me.REG[2] = NEW_location___SourceFile();
-  INIT_ATTRIBUTES__location___SourceFile(fra.me.REG[2]);
-  location___SourceFile___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_location___SourceFile(fra.me.REG[2]);
+  /* parser/parser_prod.nit:2560 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___AIdMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___AIdMethid(fra.me.REG[1]);
+  parser___parser_prod___AIdMethid___init_aidmethid(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AIdMethid(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[1];
 }
-const classtable_elt_t VFT_location___Location[73] = {
-  {(bigint) 2199 /* 0: Identity */},
-  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "Location" /* 2: Class Name */},
-  {(bigint) 3 /* 3: Location < Object: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 275 /* 5: Location < Comparable: superclass typecheck marker */},
-  {(bigint) 2199 /* 6: Location < Location: superclass typecheck marker */},
+static const char LOCATE_NEW_AIdMethid_parser___parser_nodes___ANode___init[] = "new AIdMethid parser_nodes::ANode::init";
+val_t NEW_AIdMethid_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AIdMethid_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AIdMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___AIdMethid(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AIdMethid(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___APlusMethid[82] = {
+  {(bigint) 4363 /* 0: Identity */},
+  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "APlusMethid" /* 2: Class Name */},
+  {(bigint) 3 /* 3: APlusMethid < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: APlusMethid < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: APlusMethid < Prod: superclass typecheck marker */},
+  {(bigint) 3771 /* 6: APlusMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 4363 /* 7: APlusMethid < APlusMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -26171,10 +60592,10 @@ const classtable_elt_t VFT_location___Location[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: Location < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: APlusMethid < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) location___Location_____eqeq},
+  {(bigint) standard___kernel___Object_____eqeq},
   {(bigint) standard___kernel___Object_____neq},
   {(bigint) standard___kernel___Object___output},
   {(bigint) standard___kernel___Object___output_class_name},
@@ -26187,7 +60608,9 @@ const classtable_elt_t VFT_location___Location[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) location___Location___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -26200,152 +60623,171 @@ const classtable_elt_t VFT_location___Location[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 0 /* 52: Location < Comparable: superclass init_table position */},
-  {(bigint) 2199 /* 53: VT Location::OTHER : id of Location */},
-  {(bigint) 6 /* 54: VT Location::OTHER : color of Location */},
-  {(bigint) location___Location_____l},
-  {(bigint) standard___kernel___Comparable_____leq},
-  {(bigint) standard___kernel___Comparable_____geq},
-  {(bigint) standard___kernel___Comparable_____g},
-  {(bigint) standard___kernel___Comparable_____leqg},
-  {(bigint) standard___kernel___Comparable___is_between},
-  {(bigint) standard___kernel___Comparable___max},
-  {(bigint) standard___kernel___Comparable___min},
-  {(bigint) 2 /* 63: 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},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___APlusMethid___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___APlusMethid___visit_all},
+  {(bigint) 2 /* 63: APlusMethid < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: APlusMethid < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AMethid___name},
+  {(bigint) 0 /* 77: APlusMethid < AMethid: superclass init_table position */},
+  {(bigint) parser___parser_prod___APlusMethid___empty_init},
+  {(bigint) parser___parser_prod___APlusMethid___init_aplusmethid},
+  {(bigint) 4 /* 80: APlusMethid < APlusMethid: superclass init_table position */},
+  {(bigint) parser___parser_nodes___APlusMethid___n_plus},
 };
 /* 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___Location(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute APlusMethid::_parent */
+/* 3: Attribute APlusMethid::_location */
+/* 4: Attribute APlusMethid::_first_location */
+/* 5: Attribute APlusMethid::_last_location */
+/* 6: Attribute APlusMethid::_n_annotations */
+/* 7: Attribute APlusMethid::_name */
+/* 8: Attribute APlusMethid::_n_plus */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___APlusMethid[] = "init var of APlusMethid";
+void INIT_ATTRIBUTES__parser___parser_nodes___APlusMethid(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__location___Location;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___APlusMethid;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_location___Location(void)
+val_t NEW_parser___parser_nodes___APlusMethid(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_location___Location;
+  obj = alloc(sizeof(val_t) * 9);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___APlusMethid;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_location___Location(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___APlusMethid[] = "check new APlusMethid";
+void CHECKNEW_parser___parser_nodes___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_location___Location;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___APlusMethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  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);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___APlusMethid____n_plus(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_column_end", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_plus", 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;
+static const char LOCATE_NEW_APlusMethid_parser___parser_prod___APlusMethid___empty_init[] = "new APlusMethid parser_prod::APlusMethid::empty_init";
+val_t NEW_APlusMethid_parser___parser_prod___APlusMethid___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[3] = {0, 0, 0};
+  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 = 51;
-  fra.me.meth = LOCATE_NEW_Location_location___Location___init;
+  fra.me.line = 2589;
+  fra.me.meth = LOCATE_NEW_APlusMethid_parser___parser_prod___APlusMethid___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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:51 */
-  fra.me.REG[1] = NEW_location___Location();
-  INIT_ATTRIBUTES__location___Location(fra.me.REG[1]);
-  location___Location___init(fra.me.REG[1], fra.me.REG[0], REGB0, REGB1, REGB2, REGB3, init_table);
-  CHECKNEW_location___Location(fra.me.REG[1]);
+  /* parser/parser_prod.nit:2589 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___APlusMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___APlusMethid(fra.me.REG[0]);
+  parser___parser_prod___APlusMethid___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___APlusMethid(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-val_t NEW_Location_location___Location___with_file(val_t p0){
+static const char LOCATE_NEW_APlusMethid_parser___parser_prod___APlusMethid___init_aplusmethid[] = "new APlusMethid parser_prod::APlusMethid::init_aplusmethid";
+val_t NEW_APlusMethid_parser___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[3] = {0, 0, 0};
+  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 = 59;
-  fra.me.meth = LOCATE_NEW_Location_location___Location___with_file;
+  fra.me.line = 2591;
+  fra.me.meth = LOCATE_NEW_APlusMethid_parser___parser_prod___APlusMethid___init_aplusmethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./location.nit:59 */
-  fra.me.REG[1] = NEW_location___Location();
-  INIT_ATTRIBUTES__location___Location(fra.me.REG[1]);
-  location___Location___with_file(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_location___Location(fra.me.REG[1]);
+  /* parser/parser_prod.nit:2591 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___APlusMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___APlusMethid(fra.me.REG[1]);
+  parser___parser_prod___APlusMethid___init_aplusmethid(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___APlusMethid(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TEol[73] = {
-  {(bigint) 2715 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TEol" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TEol < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TEol < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TEol < Token: superclass typecheck marker */},
-  {(bigint) 2715 /* 6: TEol < TEol: superclass typecheck marker */},
+static const char LOCATE_NEW_APlusMethid_parser___parser_nodes___ANode___init[] = "new APlusMethid parser_nodes::ANode::init";
+val_t NEW_APlusMethid_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_APlusMethid_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___APlusMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___APlusMethid(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___APlusMethid(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___AMinusMethid[82] = {
+  {(bigint) 4391 /* 0: Identity */},
+  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AMinusMethid" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AMinusMethid < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AMinusMethid < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AMinusMethid < Prod: superclass typecheck marker */},
+  {(bigint) 3771 /* 6: AMinusMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 4391 /* 7: AMinusMethid < AMinusMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -26357,7 +60799,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TEol[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TEol < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: AMinusMethid < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -26373,7 +60815,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TEol[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -26390,125 +60834,167 @@ const classtable_elt_t VFT_parser___parser_nodes___TEol[73] = {
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TEol < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AMinusMethid___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AMinusMethid___visit_all},
+  {(bigint) 2 /* 63: AMinusMethid < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TEol___parser_index},
-  {(bigint) 0 /* 70: TEol < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TEol___init_tk},
-  {(bigint) 3 /* 72: TEol < TEol: superclass init_table position */},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: AMinusMethid < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AMethid___name},
+  {(bigint) 0 /* 77: AMinusMethid < AMethid: superclass init_table position */},
+  {(bigint) parser___parser_prod___AMinusMethid___empty_init},
+  {(bigint) parser___parser_prod___AMinusMethid___init_aminusmethid},
+  {(bigint) 4 /* 80: AMinusMethid < AMinusMethid: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AMinusMethid___n_minus},
 };
 /* 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__parser___parser_nodes___TEol(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AMinusMethid::_parent */
+/* 3: Attribute AMinusMethid::_location */
+/* 4: Attribute AMinusMethid::_first_location */
+/* 5: Attribute AMinusMethid::_last_location */
+/* 6: Attribute AMinusMethid::_n_annotations */
+/* 7: Attribute AMinusMethid::_name */
+/* 8: Attribute AMinusMethid::_n_minus */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AMinusMethid[] = "init var of AMinusMethid";
+void INIT_ATTRIBUTES__parser___parser_nodes___AMinusMethid(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__parser___parser_nodes___TEol;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AMinusMethid;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TEol(void)
+val_t NEW_parser___parser_nodes___AMinusMethid(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TEol;
+  obj = alloc(sizeof(val_t) * 9);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AMinusMethid;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TEol(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AMinusMethid[] = "check new AMinusMethid";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TEol;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AMinusMethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AMinusMethid____n_minus(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_minus", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TEol_parser___lexer___TEol___init_tk(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_AMinusMethid_parser___parser_prod___AMinusMethid___empty_init[] = "new AMinusMethid parser_prod::AMinusMethid::empty_init";
+val_t NEW_AMinusMethid_parser___parser_prod___AMinusMethid___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 24;
-  fra.me.meth = LOCATE_NEW_TEol_parser___lexer___TEol___init_tk;
+  fra.me.line = 2620;
+  fra.me.meth = LOCATE_NEW_AMinusMethid_parser___parser_prod___AMinusMethid___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TEol();
-  INIT_ATTRIBUTES__parser___parser_nodes___TEol(fra.me.REG[2]);
-  parser___lexer___TEol___init_tk(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___TEol(fra.me.REG[2]);
+  /* parser/parser_prod.nit:2620 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AMinusMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___AMinusMethid(fra.me.REG[0]);
+  parser___parser_prod___AMinusMethid___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AMinusMethid(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[0];
 }
-val_t NEW_TEol_parser___parser_nodes___ANode___init(val_t p0){
+static const char LOCATE_NEW_AMinusMethid_parser___parser_prod___AMinusMethid___init_aminusmethid[] = "new AMinusMethid parser_prod::AMinusMethid::init_aminusmethid";
+val_t NEW_AMinusMethid_parser___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[4] = {0, 0, 0, 0};
+  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_TEol_parser___parser_nodes___ANode___init;
+  fra.me.line = 2622;
+  fra.me.meth = LOCATE_NEW_AMinusMethid_parser___parser_prod___AMinusMethid___init_aminusmethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___TEol();
-  INIT_ATTRIBUTES__parser___parser_nodes___TEol(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TEol(fra.me.REG[1]);
+  /* parser/parser_prod.nit:2622 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___AMinusMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___AMinusMethid(fra.me.REG[1]);
+  parser___parser_prod___AMinusMethid___init_aminusmethid(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AMinusMethid(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TComment[73] = {
-  {(bigint) 2739 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TComment" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TComment < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TComment < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TComment < Token: superclass typecheck marker */},
-  {(bigint) 2739 /* 6: TComment < TComment: superclass typecheck marker */},
+static const char LOCATE_NEW_AMinusMethid_parser___parser_nodes___ANode___init[] = "new AMinusMethid parser_nodes::ANode::init";
+val_t NEW_AMinusMethid_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AMinusMethid_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AMinusMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___AMinusMethid(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AMinusMethid(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___AStarMethid[82] = {
+  {(bigint) 4311 /* 0: Identity */},
+  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AStarMethid" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AStarMethid < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AStarMethid < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AStarMethid < Prod: superclass typecheck marker */},
+  {(bigint) 3771 /* 6: AStarMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 4311 /* 7: AStarMethid < AStarMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -26520,7 +61006,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TComment[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TComment < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: AStarMethid < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -26536,7 +61022,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TComment[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -26553,125 +61041,167 @@ const classtable_elt_t VFT_parser___parser_nodes___TComment[73] = {
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TComment < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___AStarMethid___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AStarMethid___visit_all},
+  {(bigint) 2 /* 63: AStarMethid < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TComment___parser_index},
-  {(bigint) 0 /* 70: TComment < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TComment___init_tk},
-  {(bigint) 3 /* 72: TComment < TComment: superclass init_table position */},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: AStarMethid < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AMethid___name},
+  {(bigint) 0 /* 77: AStarMethid < AMethid: superclass init_table position */},
+  {(bigint) parser___parser_prod___AStarMethid___empty_init},
+  {(bigint) parser___parser_prod___AStarMethid___init_astarmethid},
+  {(bigint) 4 /* 80: AStarMethid < AStarMethid: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AStarMethid___n_star},
 };
 /* 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__parser___parser_nodes___TComment(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AStarMethid::_parent */
+/* 3: Attribute AStarMethid::_location */
+/* 4: Attribute AStarMethid::_first_location */
+/* 5: Attribute AStarMethid::_last_location */
+/* 6: Attribute AStarMethid::_n_annotations */
+/* 7: Attribute AStarMethid::_name */
+/* 8: Attribute AStarMethid::_n_star */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AStarMethid[] = "init var of AStarMethid";
+void INIT_ATTRIBUTES__parser___parser_nodes___AStarMethid(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__parser___parser_nodes___TComment;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AStarMethid;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TComment(void)
+val_t NEW_parser___parser_nodes___AStarMethid(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TComment;
+  obj = alloc(sizeof(val_t) * 9);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AStarMethid;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TComment(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AStarMethid[] = "check new AStarMethid";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TComment;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AStarMethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStarMethid____n_star(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_star", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TComment_parser___lexer___TComment___init_tk(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_AStarMethid_parser___parser_prod___AStarMethid___empty_init[] = "new AStarMethid parser_prod::AStarMethid::empty_init";
+val_t NEW_AStarMethid_parser___parser_prod___AStarMethid___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 37;
-  fra.me.meth = LOCATE_NEW_TComment_parser___lexer___TComment___init_tk;
+  fra.me.line = 2651;
+  fra.me.meth = LOCATE_NEW_AStarMethid_parser___parser_prod___AStarMethid___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TComment();
-  INIT_ATTRIBUTES__parser___parser_nodes___TComment(fra.me.REG[2]);
-  parser___lexer___TComment___init_tk(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___TComment(fra.me.REG[2]);
+  /* parser/parser_prod.nit:2651 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AStarMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___AStarMethid(fra.me.REG[0]);
+  parser___parser_prod___AStarMethid___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AStarMethid(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[0];
 }
-val_t NEW_TComment_parser___parser_nodes___ANode___init(val_t p0){
+static const char LOCATE_NEW_AStarMethid_parser___parser_prod___AStarMethid___init_astarmethid[] = "new AStarMethid parser_prod::AStarMethid::init_astarmethid";
+val_t NEW_AStarMethid_parser___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[4] = {0, 0, 0, 0};
+  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_TComment_parser___parser_nodes___ANode___init;
+  fra.me.line = 2653;
+  fra.me.meth = LOCATE_NEW_AStarMethid_parser___parser_prod___AStarMethid___init_astarmethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___TComment();
-  INIT_ATTRIBUTES__parser___parser_nodes___TComment(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TComment(fra.me.REG[1]);
+  /* parser/parser_prod.nit:2653 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___AStarMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___AStarMethid(fra.me.REG[1]);
+  parser___parser_prod___AStarMethid___init_astarmethid(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AStarMethid(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwmodule[73] = {
-  {(bigint) 2575 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TKwmodule" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TKwmodule < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TKwmodule < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TKwmodule < Token: superclass typecheck marker */},
-  {(bigint) 2575 /* 6: TKwmodule < TKwmodule: superclass typecheck marker */},
+static const char LOCATE_NEW_AStarMethid_parser___parser_nodes___ANode___init[] = "new AStarMethid parser_nodes::ANode::init";
+val_t NEW_AStarMethid_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AStarMethid_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AStarMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___AStarMethid(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AStarMethid(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___ASlashMethid[82] = {
+  {(bigint) 4315 /* 0: Identity */},
+  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ASlashMethid" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ASlashMethid < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: ASlashMethid < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: ASlashMethid < Prod: superclass typecheck marker */},
+  {(bigint) 3771 /* 6: ASlashMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 4315 /* 7: ASlashMethid < ASlashMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -26683,7 +61213,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwmodule[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TKwmodule < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: ASlashMethid < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -26699,7 +61229,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwmodule[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -26716,125 +61248,167 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwmodule[73] = {
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TKwmodule < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___ASlashMethid___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___ASlashMethid___visit_all},
+  {(bigint) 2 /* 63: ASlashMethid < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TKwmodule___parser_index},
-  {(bigint) 0 /* 70: TKwmodule < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TKwmodule___init_tk},
-  {(bigint) 3 /* 72: TKwmodule < TKwmodule: superclass init_table position */},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: ASlashMethid < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AMethid___name},
+  {(bigint) 0 /* 77: ASlashMethid < AMethid: superclass init_table position */},
+  {(bigint) parser___parser_prod___ASlashMethid___empty_init},
+  {(bigint) parser___parser_prod___ASlashMethid___init_aslashmethid},
+  {(bigint) 4 /* 80: ASlashMethid < ASlashMethid: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ASlashMethid___n_slash},
 };
 /* 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__parser___parser_nodes___TKwmodule(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute ASlashMethid::_parent */
+/* 3: Attribute ASlashMethid::_location */
+/* 4: Attribute ASlashMethid::_first_location */
+/* 5: Attribute ASlashMethid::_last_location */
+/* 6: Attribute ASlashMethid::_n_annotations */
+/* 7: Attribute ASlashMethid::_name */
+/* 8: Attribute ASlashMethid::_n_slash */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ASlashMethid[] = "init var of ASlashMethid";
+void INIT_ATTRIBUTES__parser___parser_nodes___ASlashMethid(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__parser___parser_nodes___TKwmodule;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ASlashMethid;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TKwmodule(void)
+val_t NEW_parser___parser_nodes___ASlashMethid(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwmodule;
+  obj = alloc(sizeof(val_t) * 9);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ASlashMethid;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TKwmodule(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___ASlashMethid[] = "check new ASlashMethid";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TKwmodule;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___ASlashMethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASlashMethid____n_slash(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_slash", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TKwmodule_parser___lexer___TKwmodule___init_tk(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_ASlashMethid_parser___parser_prod___ASlashMethid___empty_init[] = "new ASlashMethid parser_prod::ASlashMethid::empty_init";
+val_t NEW_ASlashMethid_parser___parser_prod___ASlashMethid___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 50;
-  fra.me.meth = LOCATE_NEW_TKwmodule_parser___lexer___TKwmodule___init_tk;
+  fra.me.line = 2682;
+  fra.me.meth = LOCATE_NEW_ASlashMethid_parser___parser_prod___ASlashMethid___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TKwmodule();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwmodule(fra.me.REG[2]);
-  parser___lexer___TKwmodule___init_tk(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___TKwmodule(fra.me.REG[2]);
+  /* parser/parser_prod.nit:2682 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ASlashMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___ASlashMethid(fra.me.REG[0]);
+  parser___parser_prod___ASlashMethid___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ASlashMethid(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[0];
 }
-val_t NEW_TKwmodule_parser___parser_nodes___ANode___init(val_t p0){
+static const char LOCATE_NEW_ASlashMethid_parser___parser_prod___ASlashMethid___init_aslashmethid[] = "new ASlashMethid parser_prod::ASlashMethid::init_aslashmethid";
+val_t NEW_ASlashMethid_parser___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[4] = {0, 0, 0, 0};
+  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_TKwmodule_parser___parser_nodes___ANode___init;
+  fra.me.line = 2684;
+  fra.me.meth = LOCATE_NEW_ASlashMethid_parser___parser_prod___ASlashMethid___init_aslashmethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___TKwmodule();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwmodule(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwmodule(fra.me.REG[1]);
+  /* parser/parser_prod.nit:2684 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___ASlashMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___ASlashMethid(fra.me.REG[1]);
+  parser___parser_prod___ASlashMethid___init_aslashmethid(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ASlashMethid(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwimport[73] = {
-  {(bigint) 2623 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TKwimport" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TKwimport < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TKwimport < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TKwimport < Token: superclass typecheck marker */},
-  {(bigint) 2623 /* 6: TKwimport < TKwimport: superclass typecheck marker */},
+static const char LOCATE_NEW_ASlashMethid_parser___parser_nodes___ANode___init[] = "new ASlashMethid parser_nodes::ANode::init";
+val_t NEW_ASlashMethid_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_ASlashMethid_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ASlashMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___ASlashMethid(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ASlashMethid(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___APercentMethid[82] = {
+  {(bigint) 4371 /* 0: Identity */},
+  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "APercentMethid" /* 2: Class Name */},
+  {(bigint) 3 /* 3: APercentMethid < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: APercentMethid < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: APercentMethid < Prod: superclass typecheck marker */},
+  {(bigint) 3771 /* 6: APercentMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 4371 /* 7: APercentMethid < APercentMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -26846,7 +61420,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwimport[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TKwimport < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: APercentMethid < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -26862,7 +61436,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwimport[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -26879,123 +61455,167 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwimport[73] = {
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TKwimport < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___APercentMethid___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___APercentMethid___visit_all},
+  {(bigint) 2 /* 63: APercentMethid < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TKwimport___parser_index},
-  {(bigint) 0 /* 70: TKwimport < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TKwimport___init_tk},
-  {(bigint) 3 /* 72: TKwimport < TKwimport: superclass init_table position */},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: APercentMethid < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AMethid___name},
+  {(bigint) 0 /* 77: APercentMethid < AMethid: superclass init_table position */},
+  {(bigint) parser___parser_prod___APercentMethid___empty_init},
+  {(bigint) parser___parser_prod___APercentMethid___init_apercentmethid},
+  {(bigint) 4 /* 80: APercentMethid < APercentMethid: superclass init_table position */},
+  {(bigint) parser___parser_nodes___APercentMethid___n_percent},
 };
 /* 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__parser___parser_nodes___TKwimport(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute APercentMethid::_parent */
+/* 3: Attribute APercentMethid::_location */
+/* 4: Attribute APercentMethid::_first_location */
+/* 5: Attribute APercentMethid::_last_location */
+/* 6: Attribute APercentMethid::_n_annotations */
+/* 7: Attribute APercentMethid::_name */
+/* 8: Attribute APercentMethid::_n_percent */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___APercentMethid[] = "init var of APercentMethid";
+void INIT_ATTRIBUTES__parser___parser_nodes___APercentMethid(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__parser___parser_nodes___TKwimport;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___APercentMethid;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TKwimport(void)
+val_t NEW_parser___parser_nodes___APercentMethid(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwimport;
+  obj = alloc(sizeof(val_t) * 9);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___APercentMethid;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TKwimport(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___APercentMethid[] = "check new APercentMethid";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TKwimport;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___APercentMethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___APercentMethid____n_percent(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_percent", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TKwimport_parser___lexer___TKwimport___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_APercentMethid_parser___parser_prod___APercentMethid___empty_init[] = "new APercentMethid parser_prod::APercentMethid::empty_init";
+val_t NEW_APercentMethid_parser___parser_prod___APercentMethid___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 63;
-  fra.me.meth = LOCATE_NEW_TKwimport_parser___lexer___TKwimport___init_tk;
+  fra.me.line = 2713;
+  fra.me.meth = LOCATE_NEW_APercentMethid_parser___parser_prod___APercentMethid___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TKwimport();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwimport(fra.me.REG[1]);
-  parser___lexer___TKwimport___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwimport(fra.me.REG[1]);
+  /* parser/parser_prod.nit:2713 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___APercentMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___APercentMethid(fra.me.REG[0]);
+  parser___parser_prod___APercentMethid___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___APercentMethid(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-val_t NEW_TKwimport_parser___parser_nodes___ANode___init(val_t p0){
+static const char LOCATE_NEW_APercentMethid_parser___parser_prod___APercentMethid___init_apercentmethid[] = "new APercentMethid parser_prod::APercentMethid::init_apercentmethid";
+val_t NEW_APercentMethid_parser___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[4] = {0, 0, 0, 0};
+  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_TKwimport_parser___parser_nodes___ANode___init;
+  fra.me.line = 2715;
+  fra.me.meth = LOCATE_NEW_APercentMethid_parser___parser_prod___APercentMethid___init_apercentmethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___TKwimport();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwimport(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwimport(fra.me.REG[1]);
+  /* parser/parser_prod.nit:2715 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___APercentMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___APercentMethid(fra.me.REG[1]);
+  parser___parser_prod___APercentMethid___init_apercentmethid(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___APercentMethid(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwclass[73] = {
-  {(bigint) 2663 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TKwclass" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TKwclass < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TKwclass < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TKwclass < Token: superclass typecheck marker */},
-  {(bigint) 2663 /* 6: TKwclass < TKwclass: superclass typecheck marker */},
+static const char LOCATE_NEW_APercentMethid_parser___parser_nodes___ANode___init[] = "new APercentMethid parser_nodes::ANode::init";
+val_t NEW_APercentMethid_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_APercentMethid_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___APercentMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___APercentMethid(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___APercentMethid(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___AEqMethid[82] = {
+  {(bigint) 4503 /* 0: Identity */},
+  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AEqMethid" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AEqMethid < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AEqMethid < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AEqMethid < Prod: superclass typecheck marker */},
+  {(bigint) 3771 /* 6: AEqMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 4503 /* 7: AEqMethid < AEqMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -27007,7 +61627,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwclass[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TKwclass < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: AEqMethid < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -27023,7 +61643,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwclass[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -27040,123 +61662,167 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwclass[73] = {
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TKwclass < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AEqMethid___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AEqMethid___visit_all},
+  {(bigint) 2 /* 63: AEqMethid < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TKwclass___parser_index},
-  {(bigint) 0 /* 70: TKwclass < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TKwclass___init_tk},
-  {(bigint) 3 /* 72: TKwclass < TKwclass: superclass init_table position */},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: AEqMethid < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AMethid___name},
+  {(bigint) 0 /* 77: AEqMethid < AMethid: superclass init_table position */},
+  {(bigint) parser___parser_prod___AEqMethid___empty_init},
+  {(bigint) parser___parser_prod___AEqMethid___init_aeqmethid},
+  {(bigint) 4 /* 80: AEqMethid < AEqMethid: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AEqMethid___n_eq},
 };
 /* 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__parser___parser_nodes___TKwclass(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AEqMethid::_parent */
+/* 3: Attribute AEqMethid::_location */
+/* 4: Attribute AEqMethid::_first_location */
+/* 5: Attribute AEqMethid::_last_location */
+/* 6: Attribute AEqMethid::_n_annotations */
+/* 7: Attribute AEqMethid::_name */
+/* 8: Attribute AEqMethid::_n_eq */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AEqMethid[] = "init var of AEqMethid";
+void INIT_ATTRIBUTES__parser___parser_nodes___AEqMethid(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__parser___parser_nodes___TKwclass;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AEqMethid;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TKwclass(void)
+val_t NEW_parser___parser_nodes___AEqMethid(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwclass;
+  obj = alloc(sizeof(val_t) * 9);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AEqMethid;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TKwclass(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AEqMethid[] = "check new AEqMethid";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TKwclass;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AEqMethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AEqMethid____n_eq(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_eq", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TKwclass_parser___lexer___TKwclass___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AEqMethid_parser___parser_prod___AEqMethid___empty_init[] = "new AEqMethid parser_prod::AEqMethid::empty_init";
+val_t NEW_AEqMethid_parser___parser_prod___AEqMethid___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 76;
-  fra.me.meth = LOCATE_NEW_TKwclass_parser___lexer___TKwclass___init_tk;
+  fra.me.line = 2744;
+  fra.me.meth = LOCATE_NEW_AEqMethid_parser___parser_prod___AEqMethid___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TKwclass();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwclass(fra.me.REG[1]);
-  parser___lexer___TKwclass___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwclass(fra.me.REG[1]);
+  /* parser/parser_prod.nit:2744 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AEqMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___AEqMethid(fra.me.REG[0]);
+  parser___parser_prod___AEqMethid___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AEqMethid(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-val_t NEW_TKwclass_parser___parser_nodes___ANode___init(val_t p0){
+static const char LOCATE_NEW_AEqMethid_parser___parser_prod___AEqMethid___init_aeqmethid[] = "new AEqMethid parser_prod::AEqMethid::init_aeqmethid";
+val_t NEW_AEqMethid_parser___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[4] = {0, 0, 0, 0};
+  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_TKwclass_parser___parser_nodes___ANode___init;
+  fra.me.line = 2746;
+  fra.me.meth = LOCATE_NEW_AEqMethid_parser___parser_prod___AEqMethid___init_aeqmethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___TKwclass();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwclass(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwclass(fra.me.REG[1]);
+  /* parser/parser_prod.nit:2746 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___AEqMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___AEqMethid(fra.me.REG[1]);
+  parser___parser_prod___AEqMethid___init_aeqmethid(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AEqMethid(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwabstract[73] = {
-  {(bigint) 2683 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TKwabstract" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TKwabstract < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TKwabstract < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TKwabstract < Token: superclass typecheck marker */},
-  {(bigint) 2683 /* 6: TKwabstract < TKwabstract: superclass typecheck marker */},
+static const char LOCATE_NEW_AEqMethid_parser___parser_nodes___ANode___init[] = "new AEqMethid parser_nodes::ANode::init";
+val_t NEW_AEqMethid_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AEqMethid_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AEqMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___AEqMethid(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AEqMethid(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___ANeMethid[82] = {
+  {(bigint) 4387 /* 0: Identity */},
+  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ANeMethid" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ANeMethid < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: ANeMethid < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: ANeMethid < Prod: superclass typecheck marker */},
+  {(bigint) 3771 /* 6: ANeMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 4387 /* 7: ANeMethid < ANeMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -27168,7 +61834,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwabstract[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TKwabstract < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: ANeMethid < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -27184,7 +61850,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwabstract[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -27201,123 +61869,167 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwabstract[73] = {
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TKwabstract < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___ANeMethid___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___ANeMethid___visit_all},
+  {(bigint) 2 /* 63: ANeMethid < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TKwabstract___parser_index},
-  {(bigint) 0 /* 70: TKwabstract < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TKwabstract___init_tk},
-  {(bigint) 3 /* 72: TKwabstract < TKwabstract: superclass init_table position */},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: ANeMethid < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AMethid___name},
+  {(bigint) 0 /* 77: ANeMethid < AMethid: superclass init_table position */},
+  {(bigint) parser___parser_prod___ANeMethid___empty_init},
+  {(bigint) parser___parser_prod___ANeMethid___init_anemethid},
+  {(bigint) 4 /* 80: ANeMethid < ANeMethid: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANeMethid___n_ne},
 };
 /* 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__parser___parser_nodes___TKwabstract(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute ANeMethid::_parent */
+/* 3: Attribute ANeMethid::_location */
+/* 4: Attribute ANeMethid::_first_location */
+/* 5: Attribute ANeMethid::_last_location */
+/* 6: Attribute ANeMethid::_n_annotations */
+/* 7: Attribute ANeMethid::_name */
+/* 8: Attribute ANeMethid::_n_ne */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ANeMethid[] = "init var of ANeMethid";
+void INIT_ATTRIBUTES__parser___parser_nodes___ANeMethid(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__parser___parser_nodes___TKwabstract;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ANeMethid;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TKwabstract(void)
+val_t NEW_parser___parser_nodes___ANeMethid(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwabstract;
+  obj = alloc(sizeof(val_t) * 9);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ANeMethid;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TKwabstract(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___ANeMethid[] = "check new ANeMethid";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TKwabstract;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___ANeMethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ANeMethid____n_ne(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_ne", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TKwabstract_parser___lexer___TKwabstract___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ANeMethid_parser___parser_prod___ANeMethid___empty_init[] = "new ANeMethid parser_prod::ANeMethid::empty_init";
+val_t NEW_ANeMethid_parser___parser_prod___ANeMethid___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 89;
-  fra.me.meth = LOCATE_NEW_TKwabstract_parser___lexer___TKwabstract___init_tk;
+  fra.me.line = 2775;
+  fra.me.meth = LOCATE_NEW_ANeMethid_parser___parser_prod___ANeMethid___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TKwabstract();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwabstract(fra.me.REG[1]);
-  parser___lexer___TKwabstract___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwabstract(fra.me.REG[1]);
+  /* parser/parser_prod.nit:2775 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ANeMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___ANeMethid(fra.me.REG[0]);
+  parser___parser_prod___ANeMethid___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ANeMethid(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-val_t NEW_TKwabstract_parser___parser_nodes___ANode___init(val_t p0){
+static const char LOCATE_NEW_ANeMethid_parser___parser_prod___ANeMethid___init_anemethid[] = "new ANeMethid parser_prod::ANeMethid::init_anemethid";
+val_t NEW_ANeMethid_parser___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[4] = {0, 0, 0, 0};
+  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_TKwabstract_parser___parser_nodes___ANode___init;
+  fra.me.line = 2777;
+  fra.me.meth = LOCATE_NEW_ANeMethid_parser___parser_prod___ANeMethid___init_anemethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___TKwabstract();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwabstract(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwabstract(fra.me.REG[1]);
+  /* parser/parser_prod.nit:2777 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___ANeMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___ANeMethid(fra.me.REG[1]);
+  parser___parser_prod___ANeMethid___init_anemethid(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ANeMethid(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwinterface[73] = {
-  {(bigint) 2611 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TKwinterface" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TKwinterface < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TKwinterface < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TKwinterface < Token: superclass typecheck marker */},
-  {(bigint) 2611 /* 6: TKwinterface < TKwinterface: superclass typecheck marker */},
+static const char LOCATE_NEW_ANeMethid_parser___parser_nodes___ANode___init[] = "new ANeMethid parser_nodes::ANode::init";
+val_t NEW_ANeMethid_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_ANeMethid_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ANeMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___ANeMethid(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ANeMethid(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___ALeMethid[82] = {
+  {(bigint) 4419 /* 0: Identity */},
+  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ALeMethid" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ALeMethid < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: ALeMethid < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: ALeMethid < Prod: superclass typecheck marker */},
+  {(bigint) 3771 /* 6: ALeMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 4419 /* 7: ALeMethid < ALeMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -27329,7 +62041,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwinterface[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TKwinterface < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: ALeMethid < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -27345,7 +62057,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwinterface[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -27362,123 +62076,167 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwinterface[73] = {
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TKwinterface < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___ALeMethid___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___ALeMethid___visit_all},
+  {(bigint) 2 /* 63: ALeMethid < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TKwinterface___parser_index},
-  {(bigint) 0 /* 70: TKwinterface < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TKwinterface___init_tk},
-  {(bigint) 3 /* 72: TKwinterface < TKwinterface: superclass init_table position */},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: ALeMethid < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AMethid___name},
+  {(bigint) 0 /* 77: ALeMethid < AMethid: superclass init_table position */},
+  {(bigint) parser___parser_prod___ALeMethid___empty_init},
+  {(bigint) parser___parser_prod___ALeMethid___init_alemethid},
+  {(bigint) 4 /* 80: ALeMethid < ALeMethid: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ALeMethid___n_le},
 };
 /* 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__parser___parser_nodes___TKwinterface(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute ALeMethid::_parent */
+/* 3: Attribute ALeMethid::_location */
+/* 4: Attribute ALeMethid::_first_location */
+/* 5: Attribute ALeMethid::_last_location */
+/* 6: Attribute ALeMethid::_n_annotations */
+/* 7: Attribute ALeMethid::_name */
+/* 8: Attribute ALeMethid::_n_le */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ALeMethid[] = "init var of ALeMethid";
+void INIT_ATTRIBUTES__parser___parser_nodes___ALeMethid(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__parser___parser_nodes___TKwinterface;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ALeMethid;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TKwinterface(void)
+val_t NEW_parser___parser_nodes___ALeMethid(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwinterface;
+  obj = alloc(sizeof(val_t) * 9);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ALeMethid;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TKwinterface(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___ALeMethid[] = "check new ALeMethid";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TKwinterface;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___ALeMethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ALeMethid____n_le(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_le", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TKwinterface_parser___lexer___TKwinterface___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ALeMethid_parser___parser_prod___ALeMethid___empty_init[] = "new ALeMethid parser_prod::ALeMethid::empty_init";
+val_t NEW_ALeMethid_parser___parser_prod___ALeMethid___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 102;
-  fra.me.meth = LOCATE_NEW_TKwinterface_parser___lexer___TKwinterface___init_tk;
+  fra.me.line = 2806;
+  fra.me.meth = LOCATE_NEW_ALeMethid_parser___parser_prod___ALeMethid___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TKwinterface();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwinterface(fra.me.REG[1]);
-  parser___lexer___TKwinterface___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwinterface(fra.me.REG[1]);
+  /* parser/parser_prod.nit:2806 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ALeMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___ALeMethid(fra.me.REG[0]);
+  parser___parser_prod___ALeMethid___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ALeMethid(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-val_t NEW_TKwinterface_parser___parser_nodes___ANode___init(val_t p0){
+static const char LOCATE_NEW_ALeMethid_parser___parser_prod___ALeMethid___init_alemethid[] = "new ALeMethid parser_prod::ALeMethid::init_alemethid";
+val_t NEW_ALeMethid_parser___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[4] = {0, 0, 0, 0};
+  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_TKwinterface_parser___parser_nodes___ANode___init;
+  fra.me.line = 2808;
+  fra.me.meth = LOCATE_NEW_ALeMethid_parser___parser_prod___ALeMethid___init_alemethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___TKwinterface();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwinterface(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwinterface(fra.me.REG[1]);
+  /* parser/parser_prod.nit:2808 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___ALeMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___ALeMethid(fra.me.REG[1]);
+  parser___parser_prod___ALeMethid___init_alemethid(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ALeMethid(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwenum[73] = {
-  {(bigint) 2643 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TKwenum" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TKwenum < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TKwenum < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TKwenum < Token: superclass typecheck marker */},
-  {(bigint) 2643 /* 6: TKwenum < TKwenum: superclass typecheck marker */},
+static const char LOCATE_NEW_ALeMethid_parser___parser_nodes___ANode___init[] = "new ALeMethid parser_nodes::ANode::init";
+val_t NEW_ALeMethid_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_ALeMethid_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ALeMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___ALeMethid(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ALeMethid(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___AGeMethid[82] = {
+  {(bigint) 4479 /* 0: Identity */},
+  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AGeMethid" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AGeMethid < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AGeMethid < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AGeMethid < Prod: superclass typecheck marker */},
+  {(bigint) 3771 /* 6: AGeMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 4479 /* 7: AGeMethid < AGeMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -27490,7 +62248,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwenum[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TKwenum < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: AGeMethid < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -27506,7 +62264,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwenum[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -27523,125 +62283,167 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwenum[73] = {
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TKwenum < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AGeMethid___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AGeMethid___visit_all},
+  {(bigint) 2 /* 63: AGeMethid < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TKwenum___parser_index},
-  {(bigint) 0 /* 70: TKwenum < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TKwenum___init_tk},
-  {(bigint) 3 /* 72: TKwenum < TKwenum: superclass init_table position */},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: AGeMethid < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AMethid___name},
+  {(bigint) 0 /* 77: AGeMethid < AMethid: superclass init_table position */},
+  {(bigint) parser___parser_prod___AGeMethid___empty_init},
+  {(bigint) parser___parser_prod___AGeMethid___init_agemethid},
+  {(bigint) 4 /* 80: AGeMethid < AGeMethid: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AGeMethid___n_ge},
 };
 /* 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__parser___parser_nodes___TKwenum(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AGeMethid::_parent */
+/* 3: Attribute AGeMethid::_location */
+/* 4: Attribute AGeMethid::_first_location */
+/* 5: Attribute AGeMethid::_last_location */
+/* 6: Attribute AGeMethid::_n_annotations */
+/* 7: Attribute AGeMethid::_name */
+/* 8: Attribute AGeMethid::_n_ge */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AGeMethid[] = "init var of AGeMethid";
+void INIT_ATTRIBUTES__parser___parser_nodes___AGeMethid(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__parser___parser_nodes___TKwenum;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AGeMethid;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TKwenum(void)
+val_t NEW_parser___parser_nodes___AGeMethid(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwenum;
+  obj = alloc(sizeof(val_t) * 9);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AGeMethid;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TKwenum(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AGeMethid[] = "check new AGeMethid";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TKwenum;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AGeMethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AGeMethid____n_ge(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_ge", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TKwenum_parser___lexer___TKwenum___init_tk(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_AGeMethid_parser___parser_prod___AGeMethid___empty_init[] = "new AGeMethid parser_prod::AGeMethid::empty_init";
+val_t NEW_AGeMethid_parser___parser_prod___AGeMethid___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 115;
-  fra.me.meth = LOCATE_NEW_TKwenum_parser___lexer___TKwenum___init_tk;
+  fra.me.line = 2837;
+  fra.me.meth = LOCATE_NEW_AGeMethid_parser___parser_prod___AGeMethid___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TKwenum();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwenum(fra.me.REG[2]);
-  parser___lexer___TKwenum___init_tk(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___TKwenum(fra.me.REG[2]);
+  /* parser/parser_prod.nit:2837 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AGeMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___AGeMethid(fra.me.REG[0]);
+  parser___parser_prod___AGeMethid___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AGeMethid(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[0];
 }
-val_t NEW_TKwenum_parser___parser_nodes___ANode___init(val_t p0){
+static const char LOCATE_NEW_AGeMethid_parser___parser_prod___AGeMethid___init_agemethid[] = "new AGeMethid parser_prod::AGeMethid::init_agemethid";
+val_t NEW_AGeMethid_parser___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[4] = {0, 0, 0, 0};
+  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_TKwenum_parser___parser_nodes___ANode___init;
+  fra.me.line = 2839;
+  fra.me.meth = LOCATE_NEW_AGeMethid_parser___parser_prod___AGeMethid___init_agemethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___TKwenum();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwenum(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwenum(fra.me.REG[1]);
+  /* parser/parser_prod.nit:2839 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___AGeMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___AGeMethid(fra.me.REG[1]);
+  parser___parser_prod___AGeMethid___init_agemethid(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AGeMethid(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwspecial[73] = {
-  {(bigint) 2523 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TKwspecial" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TKwspecial < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TKwspecial < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TKwspecial < Token: superclass typecheck marker */},
-  {(bigint) 2523 /* 6: TKwspecial < TKwspecial: superclass typecheck marker */},
+static const char LOCATE_NEW_AGeMethid_parser___parser_nodes___ANode___init[] = "new AGeMethid parser_nodes::ANode::init";
+val_t NEW_AGeMethid_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AGeMethid_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AGeMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___AGeMethid(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AGeMethid(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___ALtMethid[82] = {
+  {(bigint) 4407 /* 0: Identity */},
+  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ALtMethid" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ALtMethid < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: ALtMethid < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: ALtMethid < Prod: superclass typecheck marker */},
+  {(bigint) 3771 /* 6: ALtMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 4407 /* 7: ALtMethid < ALtMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -27653,7 +62455,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwspecial[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TKwspecial < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: ALtMethid < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -27669,7 +62471,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwspecial[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -27686,123 +62490,167 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwspecial[73] = {
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TKwspecial < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___ALtMethid___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___ALtMethid___visit_all},
+  {(bigint) 2 /* 63: ALtMethid < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TKwspecial___parser_index},
-  {(bigint) 0 /* 70: TKwspecial < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TKwspecial___init_tk},
-  {(bigint) 3 /* 72: TKwspecial < TKwspecial: superclass init_table position */},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: ALtMethid < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AMethid___name},
+  {(bigint) 0 /* 77: ALtMethid < AMethid: superclass init_table position */},
+  {(bigint) parser___parser_prod___ALtMethid___empty_init},
+  {(bigint) parser___parser_prod___ALtMethid___init_altmethid},
+  {(bigint) 4 /* 80: ALtMethid < ALtMethid: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ALtMethid___n_lt},
 };
 /* 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__parser___parser_nodes___TKwspecial(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute ALtMethid::_parent */
+/* 3: Attribute ALtMethid::_location */
+/* 4: Attribute ALtMethid::_first_location */
+/* 5: Attribute ALtMethid::_last_location */
+/* 6: Attribute ALtMethid::_n_annotations */
+/* 7: Attribute ALtMethid::_name */
+/* 8: Attribute ALtMethid::_n_lt */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ALtMethid[] = "init var of ALtMethid";
+void INIT_ATTRIBUTES__parser___parser_nodes___ALtMethid(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__parser___parser_nodes___TKwspecial;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ALtMethid;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TKwspecial(void)
+val_t NEW_parser___parser_nodes___ALtMethid(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwspecial;
+  obj = alloc(sizeof(val_t) * 9);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ALtMethid;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TKwspecial(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___ALtMethid[] = "check new ALtMethid";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TKwspecial;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___ALtMethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ALtMethid____n_lt(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_lt", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TKwspecial_parser___lexer___TKwspecial___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ALtMethid_parser___parser_prod___ALtMethid___empty_init[] = "new ALtMethid parser_prod::ALtMethid::empty_init";
+val_t NEW_ALtMethid_parser___parser_prod___ALtMethid___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 128;
-  fra.me.meth = LOCATE_NEW_TKwspecial_parser___lexer___TKwspecial___init_tk;
+  fra.me.line = 2868;
+  fra.me.meth = LOCATE_NEW_ALtMethid_parser___parser_prod___ALtMethid___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TKwspecial();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwspecial(fra.me.REG[1]);
-  parser___lexer___TKwspecial___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwspecial(fra.me.REG[1]);
+  /* parser/parser_prod.nit:2868 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ALtMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___ALtMethid(fra.me.REG[0]);
+  parser___parser_prod___ALtMethid___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ALtMethid(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-val_t NEW_TKwspecial_parser___parser_nodes___ANode___init(val_t p0){
+static const char LOCATE_NEW_ALtMethid_parser___parser_prod___ALtMethid___init_altmethid[] = "new ALtMethid parser_prod::ALtMethid::init_altmethid";
+val_t NEW_ALtMethid_parser___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[4] = {0, 0, 0, 0};
+  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_TKwspecial_parser___parser_nodes___ANode___init;
+  fra.me.line = 2870;
+  fra.me.meth = LOCATE_NEW_ALtMethid_parser___parser_prod___ALtMethid___init_altmethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___TKwspecial();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwspecial(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwspecial(fra.me.REG[1]);
+  /* parser/parser_prod.nit:2870 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___ALtMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___ALtMethid(fra.me.REG[1]);
+  parser___parser_prod___ALtMethid___init_altmethid(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ALtMethid(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwend[73] = {
-  {(bigint) 2647 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TKwend" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TKwend < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TKwend < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TKwend < Token: superclass typecheck marker */},
-  {(bigint) 2647 /* 6: TKwend < TKwend: superclass typecheck marker */},
+static const char LOCATE_NEW_ALtMethid_parser___parser_nodes___ANode___init[] = "new ALtMethid parser_nodes::ANode::init";
+val_t NEW_ALtMethid_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_ALtMethid_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ALtMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___ALtMethid(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ALtMethid(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___AGtMethid[82] = {
+  {(bigint) 4471 /* 0: Identity */},
+  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AGtMethid" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AGtMethid < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AGtMethid < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AGtMethid < Prod: superclass typecheck marker */},
+  {(bigint) 3771 /* 6: AGtMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 4471 /* 7: AGtMethid < AGtMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -27814,7 +62662,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwend[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TKwend < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: AGtMethid < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -27830,7 +62678,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwend[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -27847,123 +62697,167 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwend[73] = {
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TKwend < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AGtMethid___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AGtMethid___visit_all},
+  {(bigint) 2 /* 63: AGtMethid < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TKwend___parser_index},
-  {(bigint) 0 /* 70: TKwend < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TKwend___init_tk},
-  {(bigint) 3 /* 72: TKwend < TKwend: superclass init_table position */},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: AGtMethid < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AMethid___name},
+  {(bigint) 0 /* 77: AGtMethid < AMethid: superclass init_table position */},
+  {(bigint) parser___parser_prod___AGtMethid___empty_init},
+  {(bigint) parser___parser_prod___AGtMethid___init_agtmethid},
+  {(bigint) 4 /* 80: AGtMethid < AGtMethid: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AGtMethid___n_gt},
 };
 /* 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__parser___parser_nodes___TKwend(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AGtMethid::_parent */
+/* 3: Attribute AGtMethid::_location */
+/* 4: Attribute AGtMethid::_first_location */
+/* 5: Attribute AGtMethid::_last_location */
+/* 6: Attribute AGtMethid::_n_annotations */
+/* 7: Attribute AGtMethid::_name */
+/* 8: Attribute AGtMethid::_n_gt */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AGtMethid[] = "init var of AGtMethid";
+void INIT_ATTRIBUTES__parser___parser_nodes___AGtMethid(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__parser___parser_nodes___TKwend;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AGtMethid;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TKwend(void)
+val_t NEW_parser___parser_nodes___AGtMethid(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwend;
+  obj = alloc(sizeof(val_t) * 9);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AGtMethid;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TKwend(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AGtMethid[] = "check new AGtMethid";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TKwend;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AGtMethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AGtMethid____n_gt(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_gt", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TKwend_parser___lexer___TKwend___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AGtMethid_parser___parser_prod___AGtMethid___empty_init[] = "new AGtMethid parser_prod::AGtMethid::empty_init";
+val_t NEW_AGtMethid_parser___parser_prod___AGtMethid___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 141;
-  fra.me.meth = LOCATE_NEW_TKwend_parser___lexer___TKwend___init_tk;
+  fra.me.line = 2899;
+  fra.me.meth = LOCATE_NEW_AGtMethid_parser___parser_prod___AGtMethid___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TKwend();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwend(fra.me.REG[1]);
-  parser___lexer___TKwend___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwend(fra.me.REG[1]);
+  /* parser/parser_prod.nit:2899 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AGtMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___AGtMethid(fra.me.REG[0]);
+  parser___parser_prod___AGtMethid___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AGtMethid(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-val_t NEW_TKwend_parser___parser_nodes___ANode___init(val_t p0){
+static const char LOCATE_NEW_AGtMethid_parser___parser_prod___AGtMethid___init_agtmethid[] = "new AGtMethid parser_prod::AGtMethid::init_agtmethid";
+val_t NEW_AGtMethid_parser___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[4] = {0, 0, 0, 0};
+  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_TKwend_parser___parser_nodes___ANode___init;
+  fra.me.line = 2901;
+  fra.me.meth = LOCATE_NEW_AGtMethid_parser___parser_prod___AGtMethid___init_agtmethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___TKwend();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwend(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwend(fra.me.REG[1]);
+  /* parser/parser_prod.nit:2901 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___AGtMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___AGtMethid(fra.me.REG[1]);
+  parser___parser_prod___AGtMethid___init_agtmethid(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AGtMethid(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwmeth[73] = {
-  {(bigint) 2579 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TKwmeth" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TKwmeth < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TKwmeth < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TKwmeth < Token: superclass typecheck marker */},
-  {(bigint) 2579 /* 6: TKwmeth < TKwmeth: superclass typecheck marker */},
+static const char LOCATE_NEW_AGtMethid_parser___parser_nodes___ANode___init[] = "new AGtMethid parser_nodes::ANode::init";
+val_t NEW_AGtMethid_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AGtMethid_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AGtMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___AGtMethid(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AGtMethid(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___ALlMethid[83] = {
+  {(bigint) 4411 /* 0: Identity */},
+  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ALlMethid" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ALlMethid < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: ALlMethid < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: ALlMethid < Prod: superclass typecheck marker */},
+  {(bigint) 3771 /* 6: ALlMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 4411 /* 7: ALlMethid < ALlMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -27975,7 +62869,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwmeth[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TKwmeth < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: ALlMethid < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -27991,7 +62885,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwmeth[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -28008,123 +62904,168 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwmeth[73] = {
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TKwmeth < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___ALlMethid___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___ALlMethid___visit_all},
+  {(bigint) 2 /* 63: ALlMethid < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TKwmeth___parser_index},
-  {(bigint) 0 /* 70: TKwmeth < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TKwmeth___init_tk},
-  {(bigint) 3 /* 72: TKwmeth < TKwmeth: superclass init_table position */},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: ALlMethid < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AMethid___name},
+  {(bigint) 0 /* 77: ALlMethid < AMethid: superclass init_table position */},
+  {(bigint) parser___parser_prod___ALlMethid___empty_init},
+  {(bigint) parser___parser_prod___ALlMethid___init_allmethid},
+  {(bigint) 4 /* 80: ALlMethid < ALlMethid: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ALlMethid___n_ll},
+  {(bigint) parser___parser_nodes___ALlMethid___n_ll__eq},
 };
 /* 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__parser___parser_nodes___TKwmeth(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute ALlMethid::_parent */
+/* 3: Attribute ALlMethid::_location */
+/* 4: Attribute ALlMethid::_first_location */
+/* 5: Attribute ALlMethid::_last_location */
+/* 6: Attribute ALlMethid::_n_annotations */
+/* 7: Attribute ALlMethid::_name */
+/* 8: Attribute ALlMethid::_n_ll */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ALlMethid[] = "init var of ALlMethid";
+void INIT_ATTRIBUTES__parser___parser_nodes___ALlMethid(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__parser___parser_nodes___TKwmeth;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ALlMethid;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TKwmeth(void)
+val_t NEW_parser___parser_nodes___ALlMethid(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwmeth;
+  obj = alloc(sizeof(val_t) * 9);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ALlMethid;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TKwmeth(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___ALlMethid[] = "check new ALlMethid";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TKwmeth;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___ALlMethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ALlMethid____n_ll(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_ll", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TKwmeth_parser___lexer___TKwmeth___init_tk(val_t p0){
+static const char LOCATE_NEW_ALlMethid_parser___parser_prod___ALlMethid___empty_init[] = "new ALlMethid parser_prod::ALlMethid::empty_init";
+val_t NEW_ALlMethid_parser___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 = 2930;
+  fra.me.meth = LOCATE_NEW_ALlMethid_parser___parser_prod___ALlMethid___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:2930 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ALlMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___ALlMethid(fra.me.REG[0]);
+  parser___parser_prod___ALlMethid___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ALlMethid(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_ALlMethid_parser___parser_prod___ALlMethid___init_allmethid[] = "new ALlMethid parser_prod::ALlMethid::init_allmethid";
+val_t NEW_ALlMethid_parser___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[4] = {0, 0, 0, 0};
+  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 = 154;
-  fra.me.meth = LOCATE_NEW_TKwmeth_parser___lexer___TKwmeth___init_tk;
+  fra.me.line = 2932;
+  fra.me.meth = LOCATE_NEW_ALlMethid_parser___parser_prod___ALlMethid___init_allmethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TKwmeth();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwmeth(fra.me.REG[1]);
-  parser___lexer___TKwmeth___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwmeth(fra.me.REG[1]);
+  /* parser/parser_prod.nit:2932 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___ALlMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___ALlMethid(fra.me.REG[1]);
+  parser___parser_prod___ALlMethid___init_allmethid(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ALlMethid(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-val_t NEW_TKwmeth_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ALlMethid_parser___parser_nodes___ANode___init[] = "new ALlMethid parser_nodes::ANode::init";
+val_t NEW_ALlMethid_parser___parser_nodes___ANode___init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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_TKwmeth_parser___parser_nodes___ANode___init;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_ALlMethid_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___TKwmeth();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwmeth(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwmeth(fra.me.REG[1]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ALlMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___ALlMethid(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ALlMethid(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwtype[73] = {
-  {(bigint) 2507 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TKwtype" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TKwtype < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TKwtype < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TKwtype < Token: superclass typecheck marker */},
-  {(bigint) 2507 /* 6: TKwtype < TKwtype: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___parser_nodes___AGgMethid[83] = {
+  {(bigint) 4475 /* 0: Identity */},
+  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AGgMethid" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AGgMethid < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AGgMethid < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AGgMethid < Prod: superclass typecheck marker */},
+  {(bigint) 3771 /* 6: AGgMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 4475 /* 7: AGgMethid < AGgMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -28136,7 +63077,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwtype[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TKwtype < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: AGgMethid < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -28152,7 +63093,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwtype[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -28169,123 +63112,168 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwtype[73] = {
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TKwtype < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AGgMethid___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AGgMethid___visit_all},
+  {(bigint) 2 /* 63: AGgMethid < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TKwtype___parser_index},
-  {(bigint) 0 /* 70: TKwtype < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TKwtype___init_tk},
-  {(bigint) 3 /* 72: TKwtype < TKwtype: superclass init_table position */},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: AGgMethid < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AMethid___name},
+  {(bigint) 0 /* 77: AGgMethid < AMethid: superclass init_table position */},
+  {(bigint) parser___parser_prod___AGgMethid___empty_init},
+  {(bigint) parser___parser_prod___AGgMethid___init_aggmethid},
+  {(bigint) 4 /* 80: AGgMethid < AGgMethid: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AGgMethid___n_gg},
+  {(bigint) parser___parser_nodes___AGgMethid___n_gg__eq},
 };
 /* 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__parser___parser_nodes___TKwtype(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AGgMethid::_parent */
+/* 3: Attribute AGgMethid::_location */
+/* 4: Attribute AGgMethid::_first_location */
+/* 5: Attribute AGgMethid::_last_location */
+/* 6: Attribute AGgMethid::_n_annotations */
+/* 7: Attribute AGgMethid::_name */
+/* 8: Attribute AGgMethid::_n_gg */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AGgMethid[] = "init var of AGgMethid";
+void INIT_ATTRIBUTES__parser___parser_nodes___AGgMethid(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__parser___parser_nodes___TKwtype;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AGgMethid;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TKwtype(void)
+val_t NEW_parser___parser_nodes___AGgMethid(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwtype;
+  obj = alloc(sizeof(val_t) * 9);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AGgMethid;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TKwtype(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AGgMethid[] = "check new AGgMethid";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TKwtype;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AGgMethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AGgMethid____n_gg(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_gg", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TKwtype_parser___lexer___TKwtype___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AGgMethid_parser___parser_prod___AGgMethid___empty_init[] = "new AGgMethid parser_prod::AGgMethid::empty_init";
+val_t NEW_AGgMethid_parser___parser_prod___AGgMethid___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 167;
-  fra.me.meth = LOCATE_NEW_TKwtype_parser___lexer___TKwtype___init_tk;
+  fra.me.line = 2961;
+  fra.me.meth = LOCATE_NEW_AGgMethid_parser___parser_prod___AGgMethid___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TKwtype();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwtype(fra.me.REG[1]);
-  parser___lexer___TKwtype___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwtype(fra.me.REG[1]);
+  /* parser/parser_prod.nit:2961 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AGgMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___AGgMethid(fra.me.REG[0]);
+  parser___parser_prod___AGgMethid___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AGgMethid(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-val_t NEW_TKwtype_parser___parser_nodes___ANode___init(val_t p0){
+static const char LOCATE_NEW_AGgMethid_parser___parser_prod___AGgMethid___init_aggmethid[] = "new AGgMethid parser_prod::AGgMethid::init_aggmethid";
+val_t NEW_AGgMethid_parser___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[4] = {0, 0, 0, 0};
+  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_TKwtype_parser___parser_nodes___ANode___init;
+  fra.me.line = 2963;
+  fra.me.meth = LOCATE_NEW_AGgMethid_parser___parser_prod___AGgMethid___init_aggmethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___TKwtype();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwtype(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwtype(fra.me.REG[1]);
+  /* parser/parser_prod.nit:2963 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___AGgMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___AGgMethid(fra.me.REG[1]);
+  parser___parser_prod___AGgMethid___init_aggmethid(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AGgMethid(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwinit[73] = {
-  {(bigint) 2615 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TKwinit" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TKwinit < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TKwinit < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TKwinit < Token: superclass typecheck marker */},
-  {(bigint) 2615 /* 6: TKwinit < TKwinit: superclass typecheck marker */},
+static const char LOCATE_NEW_AGgMethid_parser___parser_nodes___ANode___init[] = "new AGgMethid parser_nodes::ANode::init";
+val_t NEW_AGgMethid_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AGgMethid_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AGgMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___AGgMethid(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AGgMethid(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___ABraMethid[83] = {
+  {(bigint) 4539 /* 0: Identity */},
+  {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ABraMethid" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ABraMethid < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: ABraMethid < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: ABraMethid < Prod: superclass typecheck marker */},
+  {(bigint) 3771 /* 6: ABraMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 4539 /* 7: ABraMethid < ABraMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -28297,7 +63285,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwinit[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TKwinit < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: ABraMethid < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -28313,7 +63301,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwinit[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -28330,123 +63320,176 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwinit[73] = {
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TKwinit < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___ABraMethid___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___ABraMethid___visit_all},
+  {(bigint) 2 /* 63: ABraMethid < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TKwinit___parser_index},
-  {(bigint) 0 /* 70: TKwinit < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TKwinit___init_tk},
-  {(bigint) 3 /* 72: TKwinit < TKwinit: superclass init_table position */},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: ABraMethid < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AMethid___name},
+  {(bigint) 0 /* 77: ABraMethid < AMethid: superclass init_table position */},
+  {(bigint) parser___parser_prod___ABraMethid___empty_init},
+  {(bigint) parser___parser_prod___ABraMethid___init_abramethid},
+  {(bigint) 4 /* 80: ABraMethid < ABraMethid: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ABraMethid___n_obra},
+  {(bigint) parser___parser_nodes___ABraMethid___n_cbra},
 };
 /* 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__parser___parser_nodes___TKwinit(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute ABraMethid::_parent */
+/* 3: Attribute ABraMethid::_location */
+/* 4: Attribute ABraMethid::_first_location */
+/* 5: Attribute ABraMethid::_last_location */
+/* 6: Attribute ABraMethid::_n_annotations */
+/* 7: Attribute ABraMethid::_name */
+/* 8: Attribute ABraMethid::_n_obra */
+/* 9: Attribute ABraMethid::_n_cbra */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ABraMethid[] = "init var of ABraMethid";
+void INIT_ATTRIBUTES__parser___parser_nodes___ABraMethid(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__parser___parser_nodes___TKwinit;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ABraMethid;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TKwinit(void)
+val_t NEW_parser___parser_nodes___ABraMethid(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwinit;
+  obj = alloc(sizeof(val_t) * 10);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ABraMethid;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TKwinit(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___ABraMethid[] = "check new ABraMethid";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TKwinit;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___ABraMethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABraMethid____n_obra(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_obra", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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;
 }
-val_t NEW_TKwinit_parser___lexer___TKwinit___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ABraMethid_parser___parser_prod___ABraMethid___empty_init[] = "new ABraMethid parser_prod::ABraMethid::empty_init";
+val_t NEW_ABraMethid_parser___parser_prod___ABraMethid___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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_TKwinit_parser___lexer___TKwinit___init_tk;
+  fra.me.line = 2992;
+  fra.me.meth = LOCATE_NEW_ABraMethid_parser___parser_prod___ABraMethid___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TKwinit();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwinit(fra.me.REG[1]);
-  parser___lexer___TKwinit___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwinit(fra.me.REG[1]);
+  /* parser/parser_prod.nit:2992 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ABraMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___ABraMethid(fra.me.REG[0]);
+  parser___parser_prod___ABraMethid___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ABraMethid(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-val_t NEW_TKwinit_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ABraMethid_parser___parser_prod___ABraMethid___init_abramethid[] = "new ABraMethid parser_prod::ABraMethid::init_abramethid";
+val_t NEW_ABraMethid_parser___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[4] = {0, 0, 0, 0};
+  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_TKwinit_parser___parser_nodes___ANode___init;
+  fra.me.line = 2994;
+  fra.me.meth = LOCATE_NEW_ABraMethid_parser___parser_prod___ABraMethid___init_abramethid;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   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] = NEW_parser___parser_nodes___TKwinit();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwinit(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwinit(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:2994 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___ABraMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___ABraMethid(fra.me.REG[2]);
+  parser___parser_prod___ABraMethid___init_abramethid(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___ABraMethid(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[2];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwredef[73] = {
-  {(bigint) 2535 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TKwredef" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TKwredef < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TKwredef < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TKwredef < Token: superclass typecheck marker */},
-  {(bigint) 2535 /* 6: TKwredef < TKwredef: superclass typecheck marker */},
+static const char LOCATE_NEW_ABraMethid_parser___parser_nodes___ANode___init[] = "new ABraMethid parser_nodes::ANode::init";
+val_t NEW_ABraMethid_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_ABraMethid_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ABraMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___ABraMethid(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ABraMethid(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___AStarshipMethid[82] = {
+  {(bigint) 4307 /* 0: Identity */},
+  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AStarshipMethid" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AStarshipMethid < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AStarshipMethid < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AStarshipMethid < Prod: superclass typecheck marker */},
+  {(bigint) 3771 /* 6: AStarshipMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 4307 /* 7: AStarshipMethid < AStarshipMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -28458,7 +63501,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwredef[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TKwredef < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: AStarshipMethid < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -28474,7 +63517,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwredef[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -28491,123 +63536,167 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwredef[73] = {
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TKwredef < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AStarshipMethid___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AStarshipMethid___visit_all},
+  {(bigint) 2 /* 63: AStarshipMethid < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TKwredef___parser_index},
-  {(bigint) 0 /* 70: TKwredef < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TKwredef___init_tk},
-  {(bigint) 3 /* 72: TKwredef < TKwredef: superclass init_table position */},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: AStarshipMethid < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AMethid___name},
+  {(bigint) 0 /* 77: AStarshipMethid < AMethid: superclass init_table position */},
+  {(bigint) parser___parser_prod___AStarshipMethid___empty_init},
+  {(bigint) parser___parser_prod___AStarshipMethid___init_astarshipmethid},
+  {(bigint) 4 /* 80: AStarshipMethid < AStarshipMethid: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AStarshipMethid___n_starship},
 };
 /* 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__parser___parser_nodes___TKwredef(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AStarshipMethid::_parent */
+/* 3: Attribute AStarshipMethid::_location */
+/* 4: Attribute AStarshipMethid::_first_location */
+/* 5: Attribute AStarshipMethid::_last_location */
+/* 6: Attribute AStarshipMethid::_n_annotations */
+/* 7: Attribute AStarshipMethid::_name */
+/* 8: Attribute AStarshipMethid::_n_starship */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AStarshipMethid[] = "init var of AStarshipMethid";
+void INIT_ATTRIBUTES__parser___parser_nodes___AStarshipMethid(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__parser___parser_nodes___TKwredef;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AStarshipMethid;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TKwredef(void)
+val_t NEW_parser___parser_nodes___AStarshipMethid(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwredef;
+  obj = alloc(sizeof(val_t) * 9);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AStarshipMethid;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TKwredef(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AStarshipMethid[] = "check new AStarshipMethid";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TKwredef;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AStarshipMethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStarshipMethid____n_starship(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_starship", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TKwredef_parser___lexer___TKwredef___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AStarshipMethid_parser___parser_prod___AStarshipMethid___empty_init[] = "new AStarshipMethid parser_prod::AStarshipMethid::empty_init";
+val_t NEW_AStarshipMethid_parser___parser_prod___AStarshipMethid___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 193;
-  fra.me.meth = LOCATE_NEW_TKwredef_parser___lexer___TKwredef___init_tk;
+  fra.me.line = 3037;
+  fra.me.meth = LOCATE_NEW_AStarshipMethid_parser___parser_prod___AStarshipMethid___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TKwredef();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwredef(fra.me.REG[1]);
-  parser___lexer___TKwredef___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwredef(fra.me.REG[1]);
+  /* parser/parser_prod.nit:3037 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AStarshipMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___AStarshipMethid(fra.me.REG[0]);
+  parser___parser_prod___AStarshipMethid___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AStarshipMethid(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-val_t NEW_TKwredef_parser___parser_nodes___ANode___init(val_t p0){
+static const char LOCATE_NEW_AStarshipMethid_parser___parser_prod___AStarshipMethid___init_astarshipmethid[] = "new AStarshipMethid parser_prod::AStarshipMethid::init_astarshipmethid";
+val_t NEW_AStarshipMethid_parser___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[4] = {0, 0, 0, 0};
+  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_TKwredef_parser___parser_nodes___ANode___init;
+  fra.me.line = 3039;
+  fra.me.meth = LOCATE_NEW_AStarshipMethid_parser___parser_prod___AStarshipMethid___init_astarshipmethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___TKwredef();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwredef(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwredef(fra.me.REG[1]);
+  /* parser/parser_prod.nit:3039 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___AStarshipMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___AStarshipMethid(fra.me.REG[1]);
+  parser___parser_prod___AStarshipMethid___init_astarshipmethid(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AStarshipMethid(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwis[73] = {
-  {(bigint) 2599 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TKwis" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TKwis < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TKwis < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TKwis < Token: superclass typecheck marker */},
-  {(bigint) 2599 /* 6: TKwis < TKwis: superclass typecheck marker */},
+static const char LOCATE_NEW_AStarshipMethid_parser___parser_nodes___ANode___init[] = "new AStarshipMethid parser_nodes::ANode::init";
+val_t NEW_AStarshipMethid_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AStarshipMethid_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AStarshipMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___AStarshipMethid(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AStarshipMethid(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___AAssignMethid[83] = {
+  {(bigint) 4567 /* 0: Identity */},
+  {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AAssignMethid" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AAssignMethid < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AAssignMethid < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AAssignMethid < Prod: superclass typecheck marker */},
+  {(bigint) 3771 /* 6: AAssignMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 4567 /* 7: AAssignMethid < AAssignMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -28619,7 +63708,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwis[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TKwis < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: AAssignMethid < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -28635,7 +63724,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwis[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -28652,123 +63743,176 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwis[73] = {
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TKwis < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AAssignMethid___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AAssignMethid___visit_all},
+  {(bigint) 2 /* 63: AAssignMethid < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TKwis___parser_index},
-  {(bigint) 0 /* 70: TKwis < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TKwis___init_tk},
-  {(bigint) 3 /* 72: TKwis < TKwis: superclass init_table position */},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: AAssignMethid < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AMethid___name},
+  {(bigint) 0 /* 77: AAssignMethid < AMethid: superclass init_table position */},
+  {(bigint) parser___parser_prod___AAssignMethid___empty_init},
+  {(bigint) parser___parser_prod___AAssignMethid___init_aassignmethid},
+  {(bigint) 4 /* 80: AAssignMethid < AAssignMethid: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AAssignMethid___n_id},
+  {(bigint) parser___parser_nodes___AAssignMethid___n_assign},
 };
 /* 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__parser___parser_nodes___TKwis(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AAssignMethid::_parent */
+/* 3: Attribute AAssignMethid::_location */
+/* 4: Attribute AAssignMethid::_first_location */
+/* 5: Attribute AAssignMethid::_last_location */
+/* 6: Attribute AAssignMethid::_n_annotations */
+/* 7: Attribute AAssignMethid::_name */
+/* 8: Attribute AAssignMethid::_n_id */
+/* 9: Attribute AAssignMethid::_n_assign */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AAssignMethid[] = "init var of AAssignMethid";
+void INIT_ATTRIBUTES__parser___parser_nodes___AAssignMethid(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__parser___parser_nodes___TKwis;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AAssignMethid;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TKwis(void)
+val_t NEW_parser___parser_nodes___AAssignMethid(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwis;
+  obj = alloc(sizeof(val_t) * 10);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AAssignMethid;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TKwis(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AAssignMethid[] = "check new AAssignMethid";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TKwis;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AAssignMethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAssignMethid____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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;
 }
-val_t NEW_TKwis_parser___lexer___TKwis___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AAssignMethid_parser___parser_prod___AAssignMethid___empty_init[] = "new AAssignMethid parser_prod::AAssignMethid::empty_init";
+val_t NEW_AAssignMethid_parser___parser_prod___AAssignMethid___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 206;
-  fra.me.meth = LOCATE_NEW_TKwis_parser___lexer___TKwis___init_tk;
+  fra.me.line = 3068;
+  fra.me.meth = LOCATE_NEW_AAssignMethid_parser___parser_prod___AAssignMethid___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TKwis();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwis(fra.me.REG[1]);
-  parser___lexer___TKwis___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwis(fra.me.REG[1]);
+  /* parser/parser_prod.nit:3068 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AAssignMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___AAssignMethid(fra.me.REG[0]);
+  parser___parser_prod___AAssignMethid___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AAssignMethid(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-val_t NEW_TKwis_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AAssignMethid_parser___parser_prod___AAssignMethid___init_aassignmethid[] = "new AAssignMethid parser_prod::AAssignMethid::init_aassignmethid";
+val_t NEW_AAssignMethid_parser___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[4] = {0, 0, 0, 0};
+  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_TKwis_parser___parser_nodes___ANode___init;
+  fra.me.line = 3070;
+  fra.me.meth = LOCATE_NEW_AAssignMethid_parser___parser_prod___AAssignMethid___init_aassignmethid;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   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] = NEW_parser___parser_nodes___TKwis();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwis(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwis(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:3070 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___AAssignMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___AAssignMethid(fra.me.REG[2]);
+  parser___parser_prod___AAssignMethid___init_aassignmethid(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___AAssignMethid(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[2];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwdo[73] = {
-  {(bigint) 2655 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TKwdo" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TKwdo < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TKwdo < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TKwdo < Token: superclass typecheck marker */},
-  {(bigint) 2655 /* 6: TKwdo < TKwdo: superclass typecheck marker */},
+static const char LOCATE_NEW_AAssignMethid_parser___parser_nodes___ANode___init[] = "new AAssignMethid parser_nodes::ANode::init";
+val_t NEW_AAssignMethid_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AAssignMethid_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AAssignMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___AAssignMethid(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AAssignMethid(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___ABraassignMethid[84] = {
+  {(bigint) 4535 /* 0: Identity */},
+  {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ABraassignMethid" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ABraassignMethid < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: ABraassignMethid < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: ABraassignMethid < Prod: superclass typecheck marker */},
+  {(bigint) 3771 /* 6: ABraassignMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 4535 /* 7: ABraassignMethid < ABraassignMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -28780,7 +63924,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwdo[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TKwdo < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: ABraassignMethid < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -28796,7 +63940,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwdo[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -28813,123 +63959,185 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwdo[73] = {
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TKwdo < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___ABraassignMethid___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___ABraassignMethid___visit_all},
+  {(bigint) 2 /* 63: ABraassignMethid < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TKwdo___parser_index},
-  {(bigint) 0 /* 70: TKwdo < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TKwdo___init_tk},
-  {(bigint) 3 /* 72: TKwdo < TKwdo: superclass init_table position */},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: ABraassignMethid < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AMethid___name},
+  {(bigint) 0 /* 77: ABraassignMethid < AMethid: superclass init_table position */},
+  {(bigint) parser___parser_prod___ABraassignMethid___empty_init},
+  {(bigint) parser___parser_prod___ABraassignMethid___init_abraassignmethid},
+  {(bigint) 4 /* 80: ABraassignMethid < ABraassignMethid: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ABraassignMethid___n_obra},
+  {(bigint) parser___parser_nodes___ABraassignMethid___n_cbra},
+  {(bigint) parser___parser_nodes___ABraassignMethid___n_assign},
 };
 /* 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__parser___parser_nodes___TKwdo(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute ABraassignMethid::_parent */
+/* 3: Attribute ABraassignMethid::_location */
+/* 4: Attribute ABraassignMethid::_first_location */
+/* 5: Attribute ABraassignMethid::_last_location */
+/* 6: Attribute ABraassignMethid::_n_annotations */
+/* 7: Attribute ABraassignMethid::_name */
+/* 8: Attribute ABraassignMethid::_n_obra */
+/* 9: Attribute ABraassignMethid::_n_cbra */
+/* 10: Attribute ABraassignMethid::_n_assign */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ABraassignMethid[] = "init var of ABraassignMethid";
+void INIT_ATTRIBUTES__parser___parser_nodes___ABraassignMethid(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__parser___parser_nodes___TKwdo;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ABraassignMethid;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TKwdo(void)
+val_t NEW_parser___parser_nodes___ABraassignMethid(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwdo;
+  obj = alloc(sizeof(val_t) * 11);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ABraassignMethid;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TKwdo(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___ABraassignMethid[] = "check new ABraassignMethid";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TKwdo;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___ABraassignMethid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABraassignMethid____n_obra(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_obra", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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___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;
 }
-val_t NEW_TKwdo_parser___lexer___TKwdo___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ABraassignMethid_parser___parser_prod___ABraassignMethid___empty_init[] = "new ABraassignMethid parser_prod::ABraassignMethid::empty_init";
+val_t NEW_ABraassignMethid_parser___parser_prod___ABraassignMethid___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 219;
-  fra.me.meth = LOCATE_NEW_TKwdo_parser___lexer___TKwdo___init_tk;
+  fra.me.line = 3113;
+  fra.me.meth = LOCATE_NEW_ABraassignMethid_parser___parser_prod___ABraassignMethid___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TKwdo();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwdo(fra.me.REG[1]);
-  parser___lexer___TKwdo___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwdo(fra.me.REG[1]);
+  /* parser/parser_prod.nit:3113 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ABraassignMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___ABraassignMethid(fra.me.REG[0]);
+  parser___parser_prod___ABraassignMethid___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ABraassignMethid(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-val_t NEW_TKwdo_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ABraassignMethid_parser___parser_prod___ABraassignMethid___init_abraassignmethid[] = "new ABraassignMethid parser_prod::ABraassignMethid::init_abraassignmethid";
+val_t NEW_ABraassignMethid_parser___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[4] = {0, 0, 0, 0};
+  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_TKwdo_parser___parser_nodes___ANode___init;
+  fra.me.line = 3115;
+  fra.me.meth = LOCATE_NEW_ABraassignMethid_parser___parser_prod___ABraassignMethid___init_abraassignmethid;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   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] = NEW_parser___parser_nodes___TKwdo();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwdo(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwdo(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* parser/parser_prod.nit:3115 */
+  fra.me.REG[3] = NEW_parser___parser_nodes___ABraassignMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___ABraassignMethid(fra.me.REG[3]);
+  parser___parser_prod___ABraassignMethid___init_abraassignmethid(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_parser___parser_nodes___ABraassignMethid(fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[3];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwreadable[73] = {
-  {(bigint) 2539 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TKwreadable" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TKwreadable < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TKwreadable < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TKwreadable < Token: superclass typecheck marker */},
-  {(bigint) 2539 /* 6: TKwreadable < TKwreadable: superclass typecheck marker */},
+static const char LOCATE_NEW_ABraassignMethid_parser___parser_nodes___ANode___init[] = "new ABraassignMethid parser_nodes::ANode::init";
+val_t NEW_ABraassignMethid_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_ABraassignMethid_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ABraassignMethid();
+  INIT_ATTRIBUTES__parser___parser_nodes___ABraassignMethid(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ABraassignMethid(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___ASignature[86] = {
+  {(bigint) 3743 /* 0: Identity */},
+  {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ASignature" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ASignature < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: ASignature < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: ASignature < Prod: superclass typecheck marker */},
+  {(bigint) 3743 /* 6: ASignature < ASignature: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -28941,7 +64149,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwreadable[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TKwreadable < Object: superclass init_table position */},
+  {(bigint) 2 /* 19: ASignature < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -28957,7 +64165,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwreadable[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -28975,122 +64185,201 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwreadable[73] = {
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___ASignature___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TKwreadable < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___ASignature___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___ASignature___visit_all},
+  {(bigint) 1 /* 63: ASignature < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TKwreadable___parser_index},
-  {(bigint) 0 /* 70: TKwreadable < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TKwreadable___init_tk},
-  {(bigint) 3 /* 72: TKwreadable < TKwreadable: superclass init_table position */},
+  {(bigint) syntax___typing___ASignature___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 72: ASignature < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___ASignature___check_visibility},
+  {(bigint) parser___parser_prod___ASignature___empty_init},
+  {(bigint) parser___parser_prod___ASignature___init_asignature},
+  {(bigint) 3 /* 79: ASignature < ASignature: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ASignature___n_opar},
+  {(bigint) parser___parser_nodes___ASignature___n_params},
+  {(bigint) parser___parser_nodes___ASignature___n_cpar},
+  {(bigint) parser___parser_nodes___ASignature___n_type},
+  {(bigint) parser___parser_nodes___ASignature___n_closure_decls},
+  {(bigint) syntax___icode_generation___ASignature___fill_iroutine_parameters},
 };
 /* 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__parser___parser_nodes___TKwreadable(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute ASignature::_parent */
+/* 3: Attribute ASignature::_location */
+/* 4: Attribute ASignature::_first_location */
+/* 5: Attribute ASignature::_last_location */
+/* 6: Attribute ASignature::_n_annotations */
+/* 7: Attribute ASignature::_n_opar */
+/* 8: Attribute ASignature::_n_params */
+/* 9: Attribute ASignature::_n_cpar */
+/* 10: Attribute ASignature::_n_type */
+/* 11: Attribute ASignature::_n_closure_decls */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ASignature[] = "init var of ASignature";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwreadable;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ASignature;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:721 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ASignature____n_opar(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:722 */
+  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  ATTR_parser___parser_nodes___ASignature____n_params(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:723 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ASignature____n_cpar(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:724 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ASignature____n_type(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:725 */
+  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  ATTR_parser___parser_nodes___ASignature____n_closure_decls(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TKwreadable(void)
+val_t NEW_parser___parser_nodes___ASignature(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwreadable;
+  obj = alloc(sizeof(val_t) * 12);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ASignature;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TKwreadable(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___ASignature[] = "check new ASignature";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TKwreadable;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___ASignature;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASignature____n_params(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_params", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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;
 }
-val_t NEW_TKwreadable_parser___lexer___TKwreadable___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ASignature_parser___parser_prod___ASignature___empty_init[] = "new ASignature parser_prod::ASignature::empty_init";
+val_t NEW_ASignature_parser___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 = 232;
-  fra.me.meth = LOCATE_NEW_TKwreadable_parser___lexer___TKwreadable___init_tk;
+  fra.me.line = 3172;
+  fra.me.meth = LOCATE_NEW_ASignature_parser___parser_prod___ASignature___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TKwreadable();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwreadable(fra.me.REG[1]);
-  parser___lexer___TKwreadable___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwreadable(fra.me.REG[1]);
+  /* parser/parser_prod.nit:3172 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ASignature();
+  INIT_ATTRIBUTES__parser___parser_nodes___ASignature(fra.me.REG[0]);
+  parser___parser_prod___ASignature___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ASignature(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-val_t NEW_TKwreadable_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ASignature_parser___parser_prod___ASignature___init_asignature[] = "new ASignature parser_prod::ASignature::init_asignature";
+val_t NEW_ASignature_parser___parser_prod___ASignature___init_asignature(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 = 0;
-  fra.me.meth = LOCATE_NEW_TKwreadable_parser___parser_nodes___ANode___init;
+  fra.me.line = 3174;
+  fra.me.meth = LOCATE_NEW_ASignature_parser___parser_prod___ASignature___init_asignature;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
   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] = NEW_parser___parser_nodes___TKwreadable();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwreadable(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwreadable(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  /* parser/parser_prod.nit:3174 */
+  fra.me.REG[5] = NEW_parser___parser_nodes___ASignature();
+  INIT_ATTRIBUTES__parser___parser_nodes___ASignature(fra.me.REG[5]);
+  parser___parser_prod___ASignature___init_asignature(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_parser___parser_nodes___ASignature(fra.me.REG[5]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[5];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwwritable[73] = {
-  {(bigint) 2495 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TKwwritable" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TKwwritable < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TKwwritable < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TKwwritable < Token: superclass typecheck marker */},
-  {(bigint) 2495 /* 6: TKwwritable < TKwwritable: superclass typecheck marker */},
+static const char LOCATE_NEW_ASignature_parser___parser_nodes___ANode___init[] = "new ASignature parser_nodes::ANode::init";
+val_t NEW_ASignature_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_ASignature_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ASignature();
+  INIT_ATTRIBUTES__parser___parser_nodes___ASignature(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ASignature(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___AParam[87] = {
+  {(bigint) 3755 /* 0: Identity */},
+  {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AParam" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AParam < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AParam < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AParam < Prod: superclass typecheck marker */},
+  {(bigint) 3755 /* 6: AParam < AParam: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -29102,7 +64391,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwwritable[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TKwwritable < Object: superclass init_table position */},
+  {(bigint) 2 /* 19: AParam < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -29118,7 +64407,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwwritable[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -29136,122 +64427,196 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwwritable[73] = {
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AParam___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TKwwritable < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AParam___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AParam___visit_all},
+  {(bigint) 1 /* 63: AParam < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TKwwritable___parser_index},
-  {(bigint) 0 /* 70: TKwwritable < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TKwwritable___init_tk},
-  {(bigint) 3 /* 72: TKwwritable < TKwwritable: superclass init_table position */},
+  {(bigint) syntax___typing___AParam___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 72: AParam < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___mmbuilder___AParam___stype},
+  {(bigint) syntax___mmbuilder___AParam___stype__eq},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AParam___is_vararg},
+  {(bigint) syntax___mmbuilder___AParam___position},
+  {(bigint) syntax___mmbuilder___AParam___variable},
+  {(bigint) parser___parser_prod___AParam___empty_init},
+  {(bigint) parser___parser_prod___AParam___init_aparam},
+  {(bigint) 3 /* 83: AParam < AParam: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AParam___n_id},
+  {(bigint) parser___parser_nodes___AParam___n_type},
+  {(bigint) parser___parser_nodes___AParam___n_dotdotdot},
 };
 /* 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__parser___parser_nodes___TKwwritable(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AParam::_parent */
+/* 3: Attribute AParam::_location */
+/* 4: Attribute AParam::_first_location */
+/* 5: Attribute AParam::_last_location */
+/* 6: Attribute AParam::_n_annotations */
+/* 7: Attribute AParam::_position */
+/* 8: Attribute AParam::_variable */
+/* 9: Attribute AParam::_stype */
+/* 10: Attribute AParam::_n_id */
+/* 11: Attribute AParam::_n_type */
+/* 12: Attribute AParam::_n_dotdotdot */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AParam[] = "init var of AParam";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwwritable;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AParam;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:730 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AParam____n_type(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:731 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AParam____n_dotdotdot(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/mmbuilder.nit:1323 */
+  REGB0 = TAG_Int(0);
+  ATTR_syntax___mmbuilder___AParam____position(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TKwwritable(void)
+val_t NEW_parser___parser_nodes___AParam(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwwritable;
+  obj = alloc(sizeof(val_t) * 13);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AParam;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TKwwritable(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AParam[] = "check new AParam";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TKwwritable;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AParam;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AParam____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_syntax___mmbuilder___AParam____position(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_position", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TKwwritable_parser___lexer___TKwwritable___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AParam_parser___parser_prod___AParam___empty_init[] = "new AParam parser_prod::AParam::empty_init";
+val_t NEW_AParam_parser___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 = 245;
-  fra.me.meth = LOCATE_NEW_TKwwritable_parser___lexer___TKwwritable___init_tk;
+  fra.me.line = 3285;
+  fra.me.meth = LOCATE_NEW_AParam_parser___parser_prod___AParam___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TKwwritable();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwwritable(fra.me.REG[1]);
-  parser___lexer___TKwwritable___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwwritable(fra.me.REG[1]);
+  /* parser/parser_prod.nit:3285 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AParam();
+  INIT_ATTRIBUTES__parser___parser_nodes___AParam(fra.me.REG[0]);
+  parser___parser_prod___AParam___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AParam(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-val_t NEW_TKwwritable_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AParam_parser___parser_prod___AParam___init_aparam[] = "new AParam parser_prod::AParam::init_aparam";
+val_t NEW_AParam_parser___parser_prod___AParam___init_aparam(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};
   fra.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___parser_nodes___ANode___init;
+  fra.me.line = 3287;
+  fra.me.meth = LOCATE_NEW_AParam_parser___parser_prod___AParam___init_aparam;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
   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] = NEW_parser___parser_nodes___TKwwritable();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwwritable(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwwritable(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  /* parser/parser_prod.nit:3287 */
+  fra.me.REG[4] = NEW_parser___parser_nodes___AParam();
+  INIT_ATTRIBUTES__parser___parser_nodes___AParam(fra.me.REG[4]);
+  parser___parser_prod___AParam___init_aparam(fra.me.REG[4], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], init_table);
+  CHECKNEW_parser___parser_nodes___AParam(fra.me.REG[4]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[4];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwvar[73] = {
-  {(bigint) 2503 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TKwvar" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TKwvar < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TKwvar < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TKwvar < Token: superclass typecheck marker */},
-  {(bigint) 2503 /* 6: TKwvar < TKwvar: superclass typecheck marker */},
+static const char LOCATE_NEW_AParam_parser___parser_nodes___ANode___init[] = "new AParam parser_nodes::ANode::init";
+val_t NEW_AParam_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AParam_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AParam();
+  INIT_ATTRIBUTES__parser___parser_nodes___AParam(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AParam(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___AClosureDecl[88] = {
+  {(bigint) 3823 /* 0: Identity */},
+  {(bigint) 15 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AClosureDecl" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AClosureDecl < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AClosureDecl < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AClosureDecl < Prod: superclass typecheck marker */},
+  {(bigint) 3823 /* 6: AClosureDecl < AClosureDecl: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -29263,7 +64628,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwvar[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TKwvar < Object: superclass init_table position */},
+  {(bigint) 2 /* 19: AClosureDecl < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -29279,7 +64644,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwvar[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -29297,122 +64664,211 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwvar[73] = {
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AClosureDecl___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TKwvar < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AClosureDecl___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AClosureDecl___visit_all},
+  {(bigint) 1 /* 63: AClosureDecl < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AClosureDecl___accept_icode_generation},
+  {(bigint) syntax___typing___AClosureDecl___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TKwvar___parser_index},
-  {(bigint) 0 /* 70: TKwvar < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TKwvar___init_tk},
-  {(bigint) 3 /* 72: TKwvar < TKwvar: superclass init_table position */},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 72: AClosureDecl < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AClosureDecl___position},
+  {(bigint) syntax___mmbuilder___AClosureDecl___variable},
+  {(bigint) parser___parser_prod___AClosureDecl___empty_init},
+  {(bigint) parser___parser_prod___AClosureDecl___init_aclosuredecl},
+  {(bigint) 3 /* 80: AClosureDecl < AClosureDecl: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AClosureDecl___n_kwbreak},
+  {(bigint) parser___parser_nodes___AClosureDecl___n_bang},
+  {(bigint) parser___parser_nodes___AClosureDecl___n_id},
+  {(bigint) parser___parser_nodes___AClosureDecl___n_signature},
+  {(bigint) parser___parser_nodes___AClosureDecl___n_expr},
+  {(bigint) syntax___typing___AClosureDecl___escapable},
+  {(bigint) syntax___typing___ANode___accept_typing},
 };
 /* 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__parser___parser_nodes___TKwvar(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AClosureDecl::_parent */
+/* 3: Attribute AClosureDecl::_location */
+/* 4: Attribute AClosureDecl::_first_location */
+/* 5: Attribute AClosureDecl::_last_location */
+/* 6: Attribute AClosureDecl::_n_annotations */
+/* 7: Attribute AClosureDecl::_position */
+/* 8: Attribute AClosureDecl::_variable */
+/* 9: Attribute AClosureDecl::_n_kwbreak */
+/* 10: Attribute AClosureDecl::_n_bang */
+/* 11: Attribute AClosureDecl::_n_id */
+/* 12: Attribute AClosureDecl::_n_signature */
+/* 13: Attribute AClosureDecl::_n_expr */
+/* 14: Attribute AClosureDecl::_escapable */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AClosureDecl[] = "init var of AClosureDecl";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwvar;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AClosureDecl;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:735 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AClosureDecl____n_kwbreak(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:739 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AClosureDecl____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/mmbuilder.nit:1364 */
+  REGB0 = TAG_Int(0);
+  ATTR_syntax___mmbuilder___AClosureDecl____position(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TKwvar(void)
+val_t NEW_parser___parser_nodes___AClosureDecl(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwvar;
+  obj = alloc(sizeof(val_t) * 15);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AClosureDecl;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TKwvar(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AClosureDecl[] = "check new AClosureDecl";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TKwvar;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AClosureDecl;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AClosureDecl____n_bang(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_bang", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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___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);
+  }
+  REGB0 = TAG_Bool(ATTR_syntax___mmbuilder___AClosureDecl____position(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_position", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TKwvar_parser___lexer___TKwvar___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AClosureDecl_parser___parser_prod___AClosureDecl___empty_init[] = "new AClosureDecl parser_prod::AClosureDecl::empty_init";
+val_t NEW_AClosureDecl_parser___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 = 3370;
+  fra.me.meth = LOCATE_NEW_AClosureDecl_parser___parser_prod___AClosureDecl___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:3370 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AClosureDecl();
+  INIT_ATTRIBUTES__parser___parser_nodes___AClosureDecl(fra.me.REG[0]);
+  parser___parser_prod___AClosureDecl___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AClosureDecl(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AClosureDecl_parser___parser_prod___AClosureDecl___init_aclosuredecl[] = "new AClosureDecl parser_prod::AClosureDecl::init_aclosuredecl";
+val_t NEW_AClosureDecl_parser___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 = 258;
-  fra.me.meth = LOCATE_NEW_TKwvar_parser___lexer___TKwvar___init_tk;
+  fra.me.line = 3372;
+  fra.me.meth = LOCATE_NEW_AClosureDecl_parser___parser_prod___AClosureDecl___init_aclosuredecl;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
   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;
-  /* ./parser//lexer.nit:258 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___TKwvar();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwvar(fra.me.REG[1]);
-  parser___lexer___TKwvar___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwvar(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  /* parser/parser_prod.nit:3372 */
+  fra.me.REG[5] = NEW_parser___parser_nodes___AClosureDecl();
+  INIT_ATTRIBUTES__parser___parser_nodes___AClosureDecl(fra.me.REG[5]);
+  parser___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_parser___parser_nodes___AClosureDecl(fra.me.REG[5]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[5];
 }
-val_t NEW_TKwvar_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AClosureDecl_parser___parser_nodes___ANode___init[] = "new AClosureDecl parser_nodes::ANode::init";
+val_t NEW_AClosureDecl_parser___parser_nodes___ANode___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_TKwvar_parser___parser_nodes___ANode___init;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_AClosureDecl_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___TKwvar();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwvar(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwvar(fra.me.REG[1]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AClosureDecl();
+  INIT_ATTRIBUTES__parser___parser_nodes___AClosureDecl(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AClosureDecl(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwintern[73] = {
-  {(bigint) 2607 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TKwintern" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TKwintern < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TKwintern < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TKwintern < Token: superclass typecheck marker */},
-  {(bigint) 2607 /* 6: TKwintern < TKwintern: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___parser_nodes___AType[88] = {
+  {(bigint) 3735 /* 0: Identity */},
+  {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AType" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AType < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AType < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AType < Prod: superclass typecheck marker */},
+  {(bigint) 3735 /* 6: AType < AType: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -29424,7 +64880,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwintern[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TKwintern < Object: superclass init_table position */},
+  {(bigint) 2 /* 19: AType < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -29440,7 +64896,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwintern[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -29463,117 +64921,200 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwintern[73] = {
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TKwintern < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AType___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AType___visit_all},
+  {(bigint) 1 /* 63: AType < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TKwintern___parser_index},
-  {(bigint) 0 /* 70: TKwintern < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TKwintern___init_tk},
-  {(bigint) 3 /* 72: TKwintern < TKwintern: superclass init_table position */},
+  {(bigint) syntax___typing___AType___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 72: AType < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___mmbuilder___AType___check_visibility},
+  {(bigint) syntax___typing___AType___is_typed},
+  {(bigint) syntax___typing___AType___stype},
+  {(bigint) syntax___syntax_base___AType___get_local_class},
+  {(bigint) syntax___syntax_base___AType___get_unchecked_stype},
+  {(bigint) syntax___syntax_base___AType___get_stype},
+  {(bigint) syntax___syntax_base___AType___check_conform},
+  {(bigint) parser___parser_prod___AType___empty_init},
+  {(bigint) parser___parser_prod___AType___init_atype},
+  {(bigint) 3 /* 84: AType < AType: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AType___n_kwnullable},
+  {(bigint) parser___parser_nodes___AType___n_id},
+  {(bigint) parser___parser_nodes___AType___n_types},
 };
 /* 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__parser___parser_nodes___TKwintern(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AType::_parent */
+/* 3: Attribute AType::_location */
+/* 4: Attribute AType::_first_location */
+/* 5: Attribute AType::_last_location */
+/* 6: Attribute AType::_n_annotations */
+/* 7: Attribute AType::_stype_cache */
+/* 8: Attribute AType::_stype_cached */
+/* 9: Attribute AType::_n_kwnullable */
+/* 10: Attribute AType::_n_id */
+/* 11: Attribute AType::_n_types */
+/* 12: Attribute AType::_stype */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AType[] = "init var of AType";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwintern;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AType;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:743 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AType____n_kwnullable(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:745 */
+  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  ATTR_parser___parser_nodes___AType____n_types(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/syntax_base.nit:593 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_syntax___syntax_base___AType____stype_cache(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/syntax_base.nit:594 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___syntax_base___AType____stype_cached(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TKwintern(void)
+val_t NEW_parser___parser_nodes___AType(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwintern;
+  obj = alloc(sizeof(val_t) * 13);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AType;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TKwintern(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AType[] = "check new AType";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TKwintern;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AType;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AType____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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);
+  }
+  REGB0 = TAG_Bool(ATTR_syntax___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);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TKwintern_parser___lexer___TKwintern___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AType_parser___parser_prod___AType___empty_init[] = "new AType parser_prod::AType::empty_init";
+val_t NEW_AType_parser___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 = 271;
-  fra.me.meth = LOCATE_NEW_TKwintern_parser___lexer___TKwintern___init_tk;
+  fra.me.line = 3465;
+  fra.me.meth = LOCATE_NEW_AType_parser___parser_prod___AType___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TKwintern();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwintern(fra.me.REG[1]);
-  parser___lexer___TKwintern___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwintern(fra.me.REG[1]);
+  /* parser/parser_prod.nit:3465 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AType();
+  INIT_ATTRIBUTES__parser___parser_nodes___AType(fra.me.REG[0]);
+  parser___parser_prod___AType___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AType(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-val_t NEW_TKwintern_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AType_parser___parser_prod___AType___init_atype[] = "new AType parser_prod::AType::init_atype";
+val_t NEW_AType_parser___parser_prod___AType___init_atype(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};
   fra.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___parser_nodes___ANode___init;
+  fra.me.line = 3467;
+  fra.me.meth = LOCATE_NEW_AType_parser___parser_prod___AType___init_atype;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
   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] = NEW_parser___parser_nodes___TKwintern();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwintern(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwintern(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  /* parser/parser_prod.nit:3467 */
+  fra.me.REG[4] = NEW_parser___parser_nodes___AType();
+  INIT_ATTRIBUTES__parser___parser_nodes___AType(fra.me.REG[4]);
+  parser___parser_prod___AType___init_atype(fra.me.REG[4], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], init_table);
+  CHECKNEW_parser___parser_nodes___AType(fra.me.REG[4]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[4];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwextern[73] = {
-  {(bigint) 2639 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TKwextern" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TKwextern < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TKwextern < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TKwextern < Token: superclass typecheck marker */},
-  {(bigint) 2639 /* 6: TKwextern < TKwextern: superclass typecheck marker */},
+static const char LOCATE_NEW_AType_parser___parser_nodes___ANode___init[] = "new AType parser_nodes::ANode::init";
+val_t NEW_AType_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AType_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AType();
+  INIT_ATTRIBUTES__parser___parser_nodes___AType(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AType(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___ALabel[80] = {
+  {(bigint) 3779 /* 0: Identity */},
+  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ALabel" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ALabel < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: ALabel < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: ALabel < Prod: superclass typecheck marker */},
+  {(bigint) 3779 /* 6: ALabel < ALabel: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -29585,7 +65126,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwextern[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TKwextern < Object: superclass init_table position */},
+  {(bigint) 2 /* 19: ALabel < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -29601,7 +65142,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwextern[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -29624,118 +65167,167 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwextern[73] = {
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TKwextern < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___ALabel___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___ALabel___visit_all},
+  {(bigint) 1 /* 63: ALabel < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TKwextern___parser_index},
-  {(bigint) 0 /* 70: TKwextern < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TKwextern___init_tk},
-  {(bigint) 3 /* 72: TKwextern < TKwextern: superclass init_table position */},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 72: ALabel < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_prod___ALabel___empty_init},
+  {(bigint) parser___parser_prod___ALabel___init_alabel},
+  {(bigint) 3 /* 77: ALabel < ALabel: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ALabel___n_kwlabel},
+  {(bigint) parser___parser_nodes___ALabel___n_id},
 };
 /* 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__parser___parser_nodes___TKwextern(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute ALabel::_parent */
+/* 3: Attribute ALabel::_location */
+/* 4: Attribute ALabel::_first_location */
+/* 5: Attribute ALabel::_last_location */
+/* 6: Attribute ALabel::_n_annotations */
+/* 7: Attribute ALabel::_n_kwlabel */
+/* 8: Attribute ALabel::_n_id */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ALabel[] = "init var of ALabel";
+void INIT_ATTRIBUTES__parser___parser_nodes___ALabel(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__parser___parser_nodes___TKwextern;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ALabel;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TKwextern(void)
+val_t NEW_parser___parser_nodes___ALabel(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwextern;
+  obj = alloc(sizeof(val_t) * 9);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ALabel;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TKwextern(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___ALabel[] = "check new ALabel";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TKwextern;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___ALabel;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ALabel____n_kwlabel(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_kwlabel", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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;
 }
-val_t NEW_TKwextern_parser___lexer___TKwextern___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ALabel_parser___parser_prod___ALabel___empty_init[] = "new ALabel parser_prod::ALabel::empty_init";
+val_t NEW_ALabel_parser___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 = 284;
-  fra.me.meth = LOCATE_NEW_TKwextern_parser___lexer___TKwextern___init_tk;
+  fra.me.line = 3553;
+  fra.me.meth = LOCATE_NEW_ALabel_parser___parser_prod___ALabel___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TKwextern();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwextern(fra.me.REG[1]);
-  parser___lexer___TKwextern___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwextern(fra.me.REG[1]);
+  /* parser/parser_prod.nit:3553 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ALabel();
+  INIT_ATTRIBUTES__parser___parser_nodes___ALabel(fra.me.REG[0]);
+  parser___parser_prod___ALabel___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ALabel(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-val_t NEW_TKwextern_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ALabel_parser___parser_prod___ALabel___init_alabel[] = "new ALabel parser_prod::ALabel::init_alabel";
+val_t NEW_ALabel_parser___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 = 0;
-  fra.me.meth = LOCATE_NEW_TKwextern_parser___parser_nodes___ANode___init;
+  fra.me.line = 3555;
+  fra.me.meth = LOCATE_NEW_ALabel_parser___parser_prod___ALabel___init_alabel;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   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] = NEW_parser___parser_nodes___TKwextern();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwextern(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwextern(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:3555 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___ALabel();
+  INIT_ATTRIBUTES__parser___parser_nodes___ALabel(fra.me.REG[2]);
+  parser___parser_prod___ALabel___init_alabel(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___ALabel(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[2];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwprotected[73] = {
-  {(bigint) 2543 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TKwprotected" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TKwprotected < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TKwprotected < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TKwprotected < Token: superclass typecheck marker */},
-  {(bigint) 2543 /* 6: TKwprotected < TKwprotected: superclass typecheck marker */},
+static const char LOCATE_NEW_ALabel_parser___parser_nodes___ANode___init[] = "new ALabel parser_nodes::ANode::init";
+val_t NEW_ALabel_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_ALabel_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ALabel();
+  INIT_ATTRIBUTES__parser___parser_nodes___ALabel(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ALabel(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___ABlockExpr[94] = {
+  {(bigint) 4551 /* 0: Identity */},
+  {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ABlockExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ABlockExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: ABlockExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: ABlockExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3811 /* 7: ABlockExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 4551 /* 8: ABlockExpr < ABlockExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -29746,7 +65338,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwprotected[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TKwprotected < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: ABlockExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -29762,7 +65354,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwprotected[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -29775,128 +65369,206 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwprotected[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TKwprotected < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___ABlockExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___ABlockExpr___visit_all},
+  {(bigint) 2 /* 63: ABlockExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TKwprotected___parser_index},
-  {(bigint) 0 /* 70: TKwprotected < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TKwprotected___init_tk},
-  {(bigint) 3 /* 72: TKwprotected < TKwprotected: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
+  {(bigint) syntax___typing___ABlockExpr___accept_typing},
+  {(bigint) syntax___typing___AExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: ABlockExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 0 /* 81: ABlockExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___ABlockExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {(bigint) parser___parser_prod___ABlockExpr___empty_init},
+  {(bigint) parser___parser_prod___ABlockExpr___init_ablockexpr},
+  {(bigint) 4 /* 91: ABlockExpr < ABlockExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ABlockExpr___n_expr},
+  {(bigint) parser___parser_nodes___ABlockExpr___n_kwend},
 };
 /* 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__parser___parser_nodes___TKwprotected(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute ABlockExpr::_parent */
+/* 3: Attribute ABlockExpr::_location */
+/* 4: Attribute ABlockExpr::_first_location */
+/* 5: Attribute ABlockExpr::_last_location */
+/* 6: Attribute ABlockExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute ABlockExpr::_is_typed */
+/* 9: Attribute ABlockExpr::_stype */
+/* 10: Attribute ABlockExpr::_if_true_flow_ctx */
+/* 11: Attribute ABlockExpr::_if_false_flow_ctx */
+/* 12: Attribute ABlockExpr::_n_expr */
+/* 13: Attribute ABlockExpr::_n_kwend */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ABlockExpr[] = "init var of ABlockExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwprotected;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ABlockExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* parser/parser_nodes.nit:755 */
+  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  ATTR_parser___parser_nodes___ABlockExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:756 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ABlockExpr____n_kwend(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TKwprotected(void)
+val_t NEW_parser___parser_nodes___ABlockExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwprotected;
+  obj = alloc(sizeof(val_t) * 14);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ABlockExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TKwprotected(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___ABlockExpr[] = "check new ABlockExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TKwprotected;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___ABlockExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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;
 }
-val_t NEW_TKwprotected_parser___lexer___TKwprotected___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ABlockExpr_parser___parser_prod___ABlockExpr___empty_init[] = "new ABlockExpr parser_prod::ABlockExpr::empty_init";
+val_t NEW_ABlockExpr_parser___parser_prod___ABlockExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 297;
-  fra.me.meth = LOCATE_NEW_TKwprotected_parser___lexer___TKwprotected___init_tk;
+  fra.me.line = 3598;
+  fra.me.meth = LOCATE_NEW_ABlockExpr_parser___parser_prod___ABlockExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TKwprotected();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwprotected(fra.me.REG[1]);
-  parser___lexer___TKwprotected___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwprotected(fra.me.REG[1]);
+  /* parser/parser_prod.nit:3598 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ABlockExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ABlockExpr(fra.me.REG[0]);
+  parser___parser_prod___ABlockExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ABlockExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-val_t NEW_TKwprotected_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ABlockExpr_parser___parser_prod___ABlockExpr___init_ablockexpr[] = "new ABlockExpr parser_prod::ABlockExpr::init_ablockexpr";
+val_t NEW_ABlockExpr_parser___parser_prod___ABlockExpr___init_ablockexpr(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};
+  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_TKwprotected_parser___parser_nodes___ANode___init;
+  fra.me.line = 3600;
+  fra.me.meth = LOCATE_NEW_ABlockExpr_parser___parser_prod___ABlockExpr___init_ablockexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   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] = NEW_parser___parser_nodes___TKwprotected();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwprotected(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwprotected(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:3600 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___ABlockExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ABlockExpr(fra.me.REG[2]);
+  parser___parser_prod___ABlockExpr___init_ablockexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___ABlockExpr(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[2];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwprivate[73] = {
-  {(bigint) 2547 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TKwprivate" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TKwprivate < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TKwprivate < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TKwprivate < Token: superclass typecheck marker */},
-  {(bigint) 2547 /* 6: TKwprivate < TKwprivate: superclass typecheck marker */},
+static const char LOCATE_NEW_ABlockExpr_parser___parser_nodes___ANode___init[] = "new ABlockExpr parser_nodes::ANode::init";
+val_t NEW_ABlockExpr_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_ABlockExpr_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ABlockExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ABlockExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ABlockExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___AVardeclExpr[98] = {
+  {(bigint) 4263 /* 0: Identity */},
+  {(bigint) 18 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AVardeclExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AVardeclExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AVardeclExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AVardeclExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3811 /* 7: AVardeclExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 4263 /* 8: AVardeclExpr < AVardeclExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -29907,7 +65579,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwprivate[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TKwprivate < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: AVardeclExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -29923,7 +65595,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwprivate[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -29936,128 +65610,230 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwprivate[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TKwprivate < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AVardeclExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AVardeclExpr___visit_all},
+  {(bigint) 2 /* 63: AVardeclExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TKwprivate___parser_index},
-  {(bigint) 0 /* 70: TKwprivate < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TKwprivate___init_tk},
-  {(bigint) 3 /* 72: TKwprivate < TKwprivate: superclass init_table position */},
+  {(bigint) syntax___typing___AVardeclExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: AVardeclExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 0 /* 81: AVardeclExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___AVardeclExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {(bigint) syntax___typing___AVardeclExpr___variable},
+  {(bigint) parser___parser_prod___AVardeclExpr___empty_init},
+  {(bigint) parser___parser_prod___AVardeclExpr___init_avardeclexpr},
+  {(bigint) 4 /* 92: AVardeclExpr < AVardeclExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AVardeclExpr___n_kwvar},
+  {(bigint) parser___parser_nodes___AVardeclExpr___n_id},
+  {(bigint) parser___parser_nodes___AVardeclExpr___n_type},
+  {(bigint) parser___parser_nodes___AVardeclExpr___n_assign},
+  {(bigint) parser___parser_nodes___AVardeclExpr___n_expr},
 };
 /* 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__parser___parser_nodes___TKwprivate(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AVardeclExpr::_parent */
+/* 3: Attribute AVardeclExpr::_location */
+/* 4: Attribute AVardeclExpr::_first_location */
+/* 5: Attribute AVardeclExpr::_last_location */
+/* 6: Attribute AVardeclExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute AVardeclExpr::_is_typed */
+/* 9: Attribute AVardeclExpr::_stype */
+/* 10: Attribute AVardeclExpr::_if_true_flow_ctx */
+/* 11: Attribute AVardeclExpr::_if_false_flow_ctx */
+/* 12: Attribute AVardeclExpr::_variable */
+/* 13: Attribute AVardeclExpr::_n_kwvar */
+/* 14: Attribute AVardeclExpr::_n_id */
+/* 15: Attribute AVardeclExpr::_n_type */
+/* 16: Attribute AVardeclExpr::_n_assign */
+/* 17: Attribute AVardeclExpr::_n_expr */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AVardeclExpr[] = "init var of AVardeclExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwprivate;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AVardeclExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* parser/parser_nodes.nit:762 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AVardeclExpr____n_type(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:763 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AVardeclExpr____n_assign(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:764 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AVardeclExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TKwprivate(void)
+val_t NEW_parser___parser_nodes___AVardeclExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwprivate;
+  obj = alloc(sizeof(val_t) * 18);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AVardeclExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TKwprivate(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AVardeclExpr[] = "check new AVardeclExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TKwprivate;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AVardeclExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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___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;
 }
-val_t NEW_TKwprivate_parser___lexer___TKwprivate___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AVardeclExpr_parser___parser_prod___AVardeclExpr___empty_init[] = "new AVardeclExpr parser_prod::AVardeclExpr::empty_init";
+val_t NEW_AVardeclExpr_parser___parser_prod___AVardeclExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 310;
-  fra.me.meth = LOCATE_NEW_TKwprivate_parser___lexer___TKwprivate___init_tk;
+  fra.me.line = 3654;
+  fra.me.meth = LOCATE_NEW_AVardeclExpr_parser___parser_prod___AVardeclExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TKwprivate();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwprivate(fra.me.REG[1]);
-  parser___lexer___TKwprivate___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwprivate(fra.me.REG[1]);
+  /* parser/parser_prod.nit:3654 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AVardeclExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AVardeclExpr(fra.me.REG[0]);
+  parser___parser_prod___AVardeclExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AVardeclExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-val_t NEW_TKwprivate_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AVardeclExpr_parser___parser_prod___AVardeclExpr___init_avardeclexpr[] = "new AVardeclExpr parser_prod::AVardeclExpr::init_avardeclexpr";
+val_t NEW_AVardeclExpr_parser___parser_prod___AVardeclExpr___init_avardeclexpr(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[4] = {0, 0, 0, 0};
+  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_TKwprivate_parser___parser_nodes___ANode___init;
+  fra.me.line = 3656;
+  fra.me.meth = LOCATE_NEW_AVardeclExpr_parser___parser_prod___AVardeclExpr___init_avardeclexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
   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] = NEW_parser___parser_nodes___TKwprivate();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwprivate(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwprivate(fra.me.REG[1]);
+  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:3656 */
+  fra.me.REG[6] = NEW_parser___parser_nodes___AVardeclExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AVardeclExpr(fra.me.REG[6]);
+  parser___parser_prod___AVardeclExpr___init_avardeclexpr(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_parser___parser_nodes___AVardeclExpr(fra.me.REG[6]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[6];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwintrude[73] = {
-  {(bigint) 2603 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TKwintrude" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TKwintrude < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TKwintrude < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TKwintrude < Token: superclass typecheck marker */},
-  {(bigint) 2603 /* 6: TKwintrude < TKwintrude: superclass typecheck marker */},
+static const char LOCATE_NEW_AVardeclExpr_parser___parser_nodes___ANode___init[] = "new AVardeclExpr parser_nodes::ANode::init";
+val_t NEW_AVardeclExpr_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AVardeclExpr_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AVardeclExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AVardeclExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AVardeclExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___AReturnExpr[94] = {
+  {(bigint) 4327 /* 0: Identity */},
+  {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AReturnExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AReturnExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AReturnExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AReturnExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3811 /* 7: AReturnExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 4327 /* 8: AReturnExpr < AReturnExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -30068,7 +65844,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwintrude[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TKwintrude < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: AReturnExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -30084,7 +65860,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwintrude[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -30097,129 +65875,202 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwintrude[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TKwintrude < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AReturnExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AReturnExpr___visit_all},
+  {(bigint) 2 /* 63: AReturnExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TKwintrude___parser_index},
-  {(bigint) 0 /* 70: TKwintrude < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TKwintrude___init_tk},
-  {(bigint) 3 /* 72: TKwintrude < TKwintrude: superclass init_table position */},
+  {(bigint) syntax___typing___AReturnExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: AReturnExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 0 /* 81: AReturnExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___AReturnExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {(bigint) parser___parser_prod___AReturnExpr___empty_init},
+  {(bigint) parser___parser_prod___AReturnExpr___init_areturnexpr},
+  {(bigint) 4 /* 91: AReturnExpr < AReturnExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AReturnExpr___n_kwreturn},
+  {(bigint) parser___parser_nodes___AReturnExpr___n_expr},
 };
 /* 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__parser___parser_nodes___TKwintrude(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AReturnExpr::_parent */
+/* 3: Attribute AReturnExpr::_location */
+/* 4: Attribute AReturnExpr::_first_location */
+/* 5: Attribute AReturnExpr::_last_location */
+/* 6: Attribute AReturnExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute AReturnExpr::_is_typed */
+/* 9: Attribute AReturnExpr::_stype */
+/* 10: Attribute AReturnExpr::_if_true_flow_ctx */
+/* 11: Attribute AReturnExpr::_if_false_flow_ctx */
+/* 12: Attribute AReturnExpr::_n_kwreturn */
+/* 13: Attribute AReturnExpr::_n_expr */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AReturnExpr[] = "init var of AReturnExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwintrude;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AReturnExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* parser/parser_nodes.nit:768 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AReturnExpr____n_kwreturn(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:769 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AReturnExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TKwintrude(void)
+val_t NEW_parser___parser_nodes___AReturnExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwintrude;
+  obj = alloc(sizeof(val_t) * 14);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AReturnExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TKwintrude(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AReturnExpr[] = "check new AReturnExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TKwintrude;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AReturnExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TKwintrude_parser___lexer___TKwintrude___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AReturnExpr_parser___parser_prod___AReturnExpr___empty_init[] = "new AReturnExpr parser_prod::AReturnExpr::empty_init";
+val_t NEW_AReturnExpr_parser___parser_prod___AReturnExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 323;
-  fra.me.meth = LOCATE_NEW_TKwintrude_parser___lexer___TKwintrude___init_tk;
+  fra.me.line = 3771;
+  fra.me.meth = LOCATE_NEW_AReturnExpr_parser___parser_prod___AReturnExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TKwintrude();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwintrude(fra.me.REG[1]);
-  parser___lexer___TKwintrude___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwintrude(fra.me.REG[1]);
+  /* parser/parser_prod.nit:3771 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AReturnExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AReturnExpr(fra.me.REG[0]);
+  parser___parser_prod___AReturnExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AReturnExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-val_t NEW_TKwintrude_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AReturnExpr_parser___parser_prod___AReturnExpr___init_areturnexpr[] = "new AReturnExpr parser_prod::AReturnExpr::init_areturnexpr";
+val_t NEW_AReturnExpr_parser___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[4] = {0, 0, 0, 0};
+  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_TKwintrude_parser___parser_nodes___ANode___init;
+  fra.me.line = 3773;
+  fra.me.meth = LOCATE_NEW_AReturnExpr_parser___parser_prod___AReturnExpr___init_areturnexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   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] = NEW_parser___parser_nodes___TKwintrude();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwintrude(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwintrude(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:3773 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___AReturnExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AReturnExpr(fra.me.REG[2]);
+  parser___parser_prod___AReturnExpr___init_areturnexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___AReturnExpr(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[2];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwif[73] = {
-  {(bigint) 2627 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TKwif" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TKwif < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TKwif < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TKwif < Token: superclass typecheck marker */},
-  {(bigint) 2627 /* 6: TKwif < TKwif: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+static const char LOCATE_NEW_AReturnExpr_parser___parser_nodes___ANode___init[] = "new AReturnExpr parser_nodes::ANode::init";
+val_t NEW_AReturnExpr_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AReturnExpr_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AReturnExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AReturnExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AReturnExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___ABreakExpr[98] = {
+  {(bigint) 4787 /* 0: Identity */},
+  {(bigint) 15 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ABreakExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ABreakExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: ABreakExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: ABreakExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3775 /* 6: ABreakExpr < ALabelable: superclass typecheck marker */},
+  {(bigint) 3811 /* 7: ABreakExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 4495 /* 8: ABreakExpr < AEscapeExpr: superclass typecheck marker */},
+  {(bigint) 4787 /* 9: ABreakExpr < ABreakExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -30229,7 +66080,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwif[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TKwif < Object: superclass init_table position */},
+  {(bigint) 4 /* 19: ABreakExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -30245,7 +66096,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwif[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -30258,128 +66111,213 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwif[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TKwif < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___ABreakExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___ABreakExpr___visit_all},
+  {(bigint) 3 /* 63: ABreakExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TKwif___parser_index},
-  {(bigint) 0 /* 70: TKwif < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TKwif___init_tk},
-  {(bigint) 3 /* 72: TKwif < TKwif: superclass init_table position */},
+  {(bigint) syntax___typing___ABreakExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 2 /* 72: ABreakExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) 1 /* 75: ABreakExpr < ALabelable: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ALabelable___n_label},
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 5 /* 81: ABreakExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___ABreakExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {(bigint) 0 /* 89: ABreakExpr < AEscapeExpr: superclass init_table position */},
+  {(bigint) syntax___scope___AEscapeExpr___escapable},
+  {(bigint) syntax___scope___ABreakExpr___kwname},
+  {(bigint) syntax___scope___AEscapeExpr___compute_escapable_block},
+  {(bigint) parser___parser_prod___ABreakExpr___empty_init},
+  {(bigint) parser___parser_prod___ABreakExpr___init_abreakexpr},
+  {(bigint) 6 /* 95: ABreakExpr < ABreakExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ABreakExpr___n_kwbreak},
+  {(bigint) parser___parser_nodes___ABreakExpr___n_expr},
 };
 /* 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__parser___parser_nodes___TKwif(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute ABreakExpr::_parent */
+/* 3: Attribute ABreakExpr::_location */
+/* 4: Attribute ABreakExpr::_first_location */
+/* 5: Attribute ABreakExpr::_last_location */
+/* 6: Attribute ABreakExpr::_n_annotations */
+/* 7: Attribute ABreakExpr::_n_label */
+/* 8: Attribute ABreakExpr::_is_typed */
+/* 9: Attribute ABreakExpr::_stype */
+/* 10: Attribute ABreakExpr::_if_true_flow_ctx */
+/* 11: Attribute ABreakExpr::_if_false_flow_ctx */
+/* 12: Attribute ABreakExpr::_escapable */
+/* 13: Attribute ABreakExpr::_n_kwbreak */
+/* 14: Attribute ABreakExpr::_n_expr */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ABreakExpr[] = "init var of ABreakExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwif;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ABreakExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* parser/parser_nodes.nit:773 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:779 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ABreakExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TKwif(void)
+val_t NEW_parser___parser_nodes___ABreakExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwif;
+  obj = alloc(sizeof(val_t) * 15);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ABreakExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TKwif(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___ABreakExpr[] = "check new ABreakExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TKwif;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___ABreakExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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_TKwif_parser___lexer___TKwif___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ABreakExpr_parser___parser_prod___ABreakExpr___empty_init[] = "new ABreakExpr parser_prod::ABreakExpr::empty_init";
+val_t NEW_ABreakExpr_parser___parser_prod___ABreakExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 336;
-  fra.me.meth = LOCATE_NEW_TKwif_parser___lexer___TKwif___init_tk;
+  fra.me.line = 3824;
+  fra.me.meth = LOCATE_NEW_ABreakExpr_parser___parser_prod___ABreakExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TKwif();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwif(fra.me.REG[1]);
-  parser___lexer___TKwif___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwif(fra.me.REG[1]);
+  /* parser/parser_prod.nit:3824 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ABreakExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ABreakExpr(fra.me.REG[0]);
+  parser___parser_prod___ABreakExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ABreakExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-val_t NEW_TKwif_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ABreakExpr_parser___parser_prod___ABreakExpr___init_abreakexpr[] = "new ABreakExpr parser_prod::ABreakExpr::init_abreakexpr";
+val_t NEW_ABreakExpr_parser___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[4] = {0, 0, 0, 0};
+  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_TKwif_parser___parser_nodes___ANode___init;
+  fra.me.line = 3826;
+  fra.me.meth = LOCATE_NEW_ABreakExpr_parser___parser_prod___ABreakExpr___init_abreakexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   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] = NEW_parser___parser_nodes___TKwif();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwif(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwif(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* parser/parser_prod.nit:3826 */
+  fra.me.REG[3] = NEW_parser___parser_nodes___ABreakExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ABreakExpr(fra.me.REG[3]);
+  parser___parser_prod___ABreakExpr___init_abreakexpr(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_parser___parser_nodes___ABreakExpr(fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[3];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwthen[73] = {
-  {(bigint) 2515 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TKwthen" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TKwthen < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TKwthen < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TKwthen < Token: superclass typecheck marker */},
-  {(bigint) 2515 /* 6: TKwthen < TKwthen: superclass typecheck marker */},
+static const char LOCATE_NEW_ABreakExpr_parser___parser_nodes___ANode___init[] = "new ABreakExpr parser_nodes::ANode::init";
+val_t NEW_ABreakExpr_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_ABreakExpr_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ABreakExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ABreakExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ABreakExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___AAbortExpr[93] = {
+  {(bigint) 4599 /* 0: Identity */},
+  {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AAbortExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AAbortExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AAbortExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AAbortExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3811 /* 7: AAbortExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 4599 /* 8: AAbortExpr < AAbortExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -30390,7 +66328,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwthen[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TKwthen < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: AAbortExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -30406,7 +66344,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwthen[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -30419,129 +66359,197 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwthen[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TKwthen < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AAbortExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AAbortExpr___visit_all},
+  {(bigint) 2 /* 63: AAbortExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TKwthen___parser_index},
-  {(bigint) 0 /* 70: TKwthen < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TKwthen___init_tk},
-  {(bigint) 3 /* 72: TKwthen < TKwthen: superclass init_table position */},
+  {(bigint) syntax___typing___AAbortExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: AAbortExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 0 /* 81: AAbortExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___AAbortExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {(bigint) parser___parser_prod___AAbortExpr___empty_init},
+  {(bigint) parser___parser_prod___AAbortExpr___init_aabortexpr},
+  {(bigint) 4 /* 91: AAbortExpr < AAbortExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AAbortExpr___n_kwabort},
 };
 /* 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__parser___parser_nodes___TKwthen(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AAbortExpr::_parent */
+/* 3: Attribute AAbortExpr::_location */
+/* 4: Attribute AAbortExpr::_first_location */
+/* 5: Attribute AAbortExpr::_last_location */
+/* 6: Attribute AAbortExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute AAbortExpr::_is_typed */
+/* 9: Attribute AAbortExpr::_stype */
+/* 10: Attribute AAbortExpr::_if_true_flow_ctx */
+/* 11: Attribute AAbortExpr::_if_false_flow_ctx */
+/* 12: Attribute AAbortExpr::_n_kwabort */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AAbortExpr[] = "init var of AAbortExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___AAbortExpr(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__parser___parser_nodes___TKwthen;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AAbortExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TKwthen(void)
+val_t NEW_parser___parser_nodes___AAbortExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwthen;
+  obj = alloc(sizeof(val_t) * 13);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AAbortExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TKwthen(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AAbortExpr[] = "check new AAbortExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TKwthen;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AAbortExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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;
 }
-val_t NEW_TKwthen_parser___lexer___TKwthen___init_tk(val_t p0){
+static const char LOCATE_NEW_AAbortExpr_parser___parser_prod___AAbortExpr___empty_init[] = "new AAbortExpr parser_prod::AAbortExpr::empty_init";
+val_t NEW_AAbortExpr_parser___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 = 3891;
+  fra.me.meth = LOCATE_NEW_AAbortExpr_parser___parser_prod___AAbortExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:3891 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AAbortExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AAbortExpr(fra.me.REG[0]);
+  parser___parser_prod___AAbortExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AAbortExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AAbortExpr_parser___parser_prod___AAbortExpr___init_aabortexpr[] = "new AAbortExpr parser_prod::AAbortExpr::init_aabortexpr";
+val_t NEW_AAbortExpr_parser___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[4] = {0, 0, 0, 0};
+  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 = 349;
-  fra.me.meth = LOCATE_NEW_TKwthen_parser___lexer___TKwthen___init_tk;
+  fra.me.line = 3893;
+  fra.me.meth = LOCATE_NEW_AAbortExpr_parser___parser_prod___AAbortExpr___init_aabortexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TKwthen();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwthen(fra.me.REG[1]);
-  parser___lexer___TKwthen___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwthen(fra.me.REG[1]);
+  /* parser/parser_prod.nit:3893 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___AAbortExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AAbortExpr(fra.me.REG[1]);
+  parser___parser_prod___AAbortExpr___init_aabortexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AAbortExpr(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-val_t NEW_TKwthen_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AAbortExpr_parser___parser_nodes___ANode___init[] = "new AAbortExpr parser_nodes::ANode::init";
+val_t NEW_AAbortExpr_parser___parser_nodes___ANode___init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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_TKwthen_parser___parser_nodes___ANode___init;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_AAbortExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___TKwthen();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwthen(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwthen(fra.me.REG[1]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AAbortExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AAbortExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AAbortExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwelse[73] = {
-  {(bigint) 2651 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TKwelse" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TKwelse < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TKwelse < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TKwelse < Token: superclass typecheck marker */},
-  {(bigint) 2651 /* 6: TKwelse < TKwelse: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_parser___parser_nodes___AContinueExpr[98] = {
+  {(bigint) 4771 /* 0: Identity */},
+  {(bigint) 15 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AContinueExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AContinueExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AContinueExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AContinueExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3775 /* 6: AContinueExpr < ALabelable: superclass typecheck marker */},
+  {(bigint) 3811 /* 7: AContinueExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 4495 /* 8: AContinueExpr < AEscapeExpr: superclass typecheck marker */},
+  {(bigint) 4771 /* 9: AContinueExpr < AContinueExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -30551,7 +66559,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwelse[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TKwelse < Object: superclass init_table position */},
+  {(bigint) 4 /* 19: AContinueExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -30567,7 +66575,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwelse[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -30580,129 +66590,212 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwelse[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TKwelse < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AContinueExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AContinueExpr___visit_all},
+  {(bigint) 3 /* 63: AContinueExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TKwelse___parser_index},
-  {(bigint) 0 /* 70: TKwelse < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TKwelse___init_tk},
-  {(bigint) 3 /* 72: TKwelse < TKwelse: superclass init_table position */},
+  {(bigint) syntax___typing___AContinueExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 2 /* 72: AContinueExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) 1 /* 75: AContinueExpr < ALabelable: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ALabelable___n_label},
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 5 /* 81: AContinueExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___AContinueExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {(bigint) 0 /* 89: AContinueExpr < AEscapeExpr: superclass init_table position */},
+  {(bigint) syntax___scope___AEscapeExpr___escapable},
+  {(bigint) syntax___scope___AContinueExpr___kwname},
+  {(bigint) syntax___scope___AEscapeExpr___compute_escapable_block},
+  {(bigint) parser___parser_prod___AContinueExpr___empty_init},
+  {(bigint) parser___parser_prod___AContinueExpr___init_acontinueexpr},
+  {(bigint) 6 /* 95: AContinueExpr < AContinueExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AContinueExpr___n_kwcontinue},
+  {(bigint) parser___parser_nodes___AContinueExpr___n_expr},
 };
 /* 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__parser___parser_nodes___TKwelse(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AContinueExpr::_parent */
+/* 3: Attribute AContinueExpr::_location */
+/* 4: Attribute AContinueExpr::_first_location */
+/* 5: Attribute AContinueExpr::_last_location */
+/* 6: Attribute AContinueExpr::_n_annotations */
+/* 7: Attribute AContinueExpr::_n_label */
+/* 8: Attribute AContinueExpr::_is_typed */
+/* 9: Attribute AContinueExpr::_stype */
+/* 10: Attribute AContinueExpr::_if_true_flow_ctx */
+/* 11: Attribute AContinueExpr::_if_false_flow_ctx */
+/* 12: Attribute AContinueExpr::_escapable */
+/* 13: Attribute AContinueExpr::_n_kwcontinue */
+/* 14: Attribute AContinueExpr::_n_expr */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AContinueExpr[] = "init var of AContinueExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwelse;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AContinueExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* parser/parser_nodes.nit:773 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:788 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AContinueExpr____n_kwcontinue(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:789 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AContinueExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TKwelse(void)
+val_t NEW_parser___parser_nodes___AContinueExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwelse;
+  obj = alloc(sizeof(val_t) * 15);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AContinueExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TKwelse(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AContinueExpr[] = "check new AContinueExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TKwelse;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AContinueExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TKwelse_parser___lexer___TKwelse___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AContinueExpr_parser___parser_prod___AContinueExpr___empty_init[] = "new AContinueExpr parser_prod::AContinueExpr::empty_init";
+val_t NEW_AContinueExpr_parser___parser_prod___AContinueExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 362;
-  fra.me.meth = LOCATE_NEW_TKwelse_parser___lexer___TKwelse___init_tk;
+  fra.me.line = 3922;
+  fra.me.meth = LOCATE_NEW_AContinueExpr_parser___parser_prod___AContinueExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TKwelse();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwelse(fra.me.REG[1]);
-  parser___lexer___TKwelse___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwelse(fra.me.REG[1]);
+  /* parser/parser_prod.nit:3922 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AContinueExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AContinueExpr(fra.me.REG[0]);
+  parser___parser_prod___AContinueExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AContinueExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-val_t NEW_TKwelse_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AContinueExpr_parser___parser_prod___AContinueExpr___init_acontinueexpr[] = "new AContinueExpr parser_prod::AContinueExpr::init_acontinueexpr";
+val_t NEW_AContinueExpr_parser___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[4] = {0, 0, 0, 0};
+  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_TKwelse_parser___parser_nodes___ANode___init;
+  fra.me.line = 3924;
+  fra.me.meth = LOCATE_NEW_AContinueExpr_parser___parser_prod___AContinueExpr___init_acontinueexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   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] = NEW_parser___parser_nodes___TKwelse();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwelse(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwelse(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* parser/parser_prod.nit:3924 */
+  fra.me.REG[3] = NEW_parser___parser_nodes___AContinueExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AContinueExpr(fra.me.REG[3]);
+  parser___parser_prod___AContinueExpr___init_acontinueexpr(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_parser___parser_nodes___AContinueExpr(fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[3];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwwhile[73] = {
-  {(bigint) 2499 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TKwwhile" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TKwwhile < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TKwwhile < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TKwwhile < Token: superclass typecheck marker */},
-  {(bigint) 2499 /* 6: TKwwhile < TKwwhile: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+static const char LOCATE_NEW_AContinueExpr_parser___parser_nodes___ANode___init[] = "new AContinueExpr parser_nodes::ANode::init";
+val_t NEW_AContinueExpr_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AContinueExpr_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AContinueExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AContinueExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AContinueExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___ADoExpr[98] = {
+  {(bigint) 4759 /* 0: Identity */},
+  {(bigint) 15 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ADoExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ADoExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: ADoExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: ADoExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3775 /* 6: ADoExpr < ALabelable: superclass typecheck marker */},
+  {(bigint) 3811 /* 7: ADoExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 4591 /* 8: ADoExpr < AAbsControl: superclass typecheck marker */},
+  {(bigint) 4759 /* 9: ADoExpr < ADoExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -30712,7 +66805,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwwhile[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TKwwhile < Object: superclass init_table position */},
+  {(bigint) 4 /* 19: ADoExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -30728,7 +66821,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwwhile[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -30741,128 +66836,213 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwwhile[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TKwwhile < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___ADoExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___ADoExpr___visit_all},
+  {(bigint) 3 /* 63: ADoExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TKwwhile___parser_index},
-  {(bigint) 0 /* 70: TKwwhile < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TKwwhile___init_tk},
-  {(bigint) 3 /* 72: TKwwhile < TKwwhile: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
+  {(bigint) syntax___typing___ADoExpr___accept_typing},
+  {(bigint) syntax___typing___AExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 2 /* 72: ADoExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) 5 /* 75: ADoExpr < ALabelable: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ALabelable___n_label},
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 1 /* 81: ADoExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___ADoExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {(bigint) 0 /* 89: ADoExpr < AAbsControl: superclass init_table position */},
+  {(bigint) syntax___typing___AAbsControl___escapable},
+  {(bigint) syntax___typing___AAbsControl___process_control},
+  {(bigint) syntax___typing___ADoExpr___process_control_inside},
+  {(bigint) parser___parser_prod___ADoExpr___empty_init},
+  {(bigint) parser___parser_prod___ADoExpr___init_adoexpr},
+  {(bigint) 6 /* 95: ADoExpr < ADoExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ADoExpr___n_kwdo},
+  {(bigint) parser___parser_nodes___ADoExpr___n_block},
 };
 /* 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__parser___parser_nodes___TKwwhile(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute ADoExpr::_parent */
+/* 3: Attribute ADoExpr::_location */
+/* 4: Attribute ADoExpr::_first_location */
+/* 5: Attribute ADoExpr::_last_location */
+/* 6: Attribute ADoExpr::_n_annotations */
+/* 7: Attribute ADoExpr::_n_label */
+/* 8: Attribute ADoExpr::_is_typed */
+/* 9: Attribute ADoExpr::_stype */
+/* 10: Attribute ADoExpr::_if_true_flow_ctx */
+/* 11: Attribute ADoExpr::_if_false_flow_ctx */
+/* 12: Attribute ADoExpr::_escapable */
+/* 13: Attribute ADoExpr::_n_kwdo */
+/* 14: Attribute ADoExpr::_n_block */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ADoExpr[] = "init var of ADoExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwwhile;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ADoExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* parser/parser_nodes.nit:773 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:795 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ADoExpr____n_block(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TKwwhile(void)
+val_t NEW_parser___parser_nodes___ADoExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwwhile;
+  obj = alloc(sizeof(val_t) * 15);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ADoExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TKwwhile(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___ADoExpr[] = "check new ADoExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TKwwhile;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___ADoExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TKwwhile_parser___lexer___TKwwhile___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ADoExpr_parser___parser_prod___ADoExpr___empty_init[] = "new ADoExpr parser_prod::ADoExpr::empty_init";
+val_t NEW_ADoExpr_parser___parser_prod___ADoExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 375;
-  fra.me.meth = LOCATE_NEW_TKwwhile_parser___lexer___TKwwhile___init_tk;
+  fra.me.line = 3993;
+  fra.me.meth = LOCATE_NEW_ADoExpr_parser___parser_prod___ADoExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TKwwhile();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwwhile(fra.me.REG[1]);
-  parser___lexer___TKwwhile___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwwhile(fra.me.REG[1]);
+  /* parser/parser_prod.nit:3993 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ADoExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ADoExpr(fra.me.REG[0]);
+  parser___parser_prod___ADoExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ADoExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-val_t NEW_TKwwhile_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ADoExpr_parser___parser_prod___ADoExpr___init_adoexpr[] = "new ADoExpr parser_prod::ADoExpr::init_adoexpr";
+val_t NEW_ADoExpr_parser___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[4] = {0, 0, 0, 0};
+  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_TKwwhile_parser___parser_nodes___ANode___init;
+  fra.me.line = 3995;
+  fra.me.meth = LOCATE_NEW_ADoExpr_parser___parser_prod___ADoExpr___init_adoexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   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] = NEW_parser___parser_nodes___TKwwhile();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwwhile(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwwhile(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* parser/parser_prod.nit:3995 */
+  fra.me.REG[3] = NEW_parser___parser_nodes___ADoExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ADoExpr(fra.me.REG[3]);
+  parser___parser_prod___ADoExpr___init_adoexpr(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_parser___parser_nodes___ADoExpr(fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[3];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwloop[73] = {
-  {(bigint) 2583 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TKwloop" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TKwloop < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TKwloop < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TKwloop < Token: superclass typecheck marker */},
-  {(bigint) 2583 /* 6: TKwloop < TKwloop: superclass typecheck marker */},
+static const char LOCATE_NEW_ADoExpr_parser___parser_nodes___ANode___init[] = "new ADoExpr parser_nodes::ANode::init";
+val_t NEW_ADoExpr_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_ADoExpr_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ADoExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ADoExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ADoExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___AIfExpr[96] = {
+  {(bigint) 4459 /* 0: Identity */},
+  {(bigint) 16 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AIfExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AIfExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AIfExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AIfExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3811 /* 7: AIfExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 4459 /* 8: AIfExpr < AIfExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -30873,7 +67053,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwloop[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TKwloop < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: AIfExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -30889,7 +67069,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwloop[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -30902,128 +67084,219 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwloop[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TKwloop < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AIfExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AIfExpr___visit_all},
+  {(bigint) 2 /* 63: AIfExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TKwloop___parser_index},
-  {(bigint) 0 /* 70: TKwloop < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TKwloop___init_tk},
-  {(bigint) 3 /* 72: TKwloop < TKwloop: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
+  {(bigint) syntax___typing___AIfExpr___accept_typing},
+  {(bigint) syntax___typing___AExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: AIfExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 0 /* 81: AIfExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___AIfExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {(bigint) parser___parser_prod___AIfExpr___empty_init},
+  {(bigint) parser___parser_prod___AIfExpr___init_aifexpr},
+  {(bigint) 4 /* 91: AIfExpr < AIfExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AIfExpr___n_kwif},
+  {(bigint) parser___parser_nodes___AIfExpr___n_expr},
+  {(bigint) parser___parser_nodes___AIfExpr___n_then},
+  {(bigint) parser___parser_nodes___AIfExpr___n_else},
 };
 /* 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__parser___parser_nodes___TKwloop(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AIfExpr::_parent */
+/* 3: Attribute AIfExpr::_location */
+/* 4: Attribute AIfExpr::_first_location */
+/* 5: Attribute AIfExpr::_last_location */
+/* 6: Attribute AIfExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute AIfExpr::_is_typed */
+/* 9: Attribute AIfExpr::_stype */
+/* 10: Attribute AIfExpr::_if_true_flow_ctx */
+/* 11: Attribute AIfExpr::_if_false_flow_ctx */
+/* 12: Attribute AIfExpr::_n_kwif */
+/* 13: Attribute AIfExpr::_n_expr */
+/* 14: Attribute AIfExpr::_n_then */
+/* 15: Attribute AIfExpr::_n_else */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AIfExpr[] = "init var of AIfExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwloop;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AIfExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* parser/parser_nodes.nit:801 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AIfExpr____n_then(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:802 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AIfExpr____n_else(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TKwloop(void)
+val_t NEW_parser___parser_nodes___AIfExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwloop;
+  obj = alloc(sizeof(val_t) * 16);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AIfExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TKwloop(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AIfExpr[] = "check new AIfExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TKwloop;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AIfExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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___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;
 }
-val_t NEW_TKwloop_parser___lexer___TKwloop___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AIfExpr_parser___parser_prod___AIfExpr___empty_init[] = "new AIfExpr parser_prod::AIfExpr::empty_init";
+val_t NEW_AIfExpr_parser___parser_prod___AIfExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 388;
-  fra.me.meth = LOCATE_NEW_TKwloop_parser___lexer___TKwloop___init_tk;
+  fra.me.line = 4060;
+  fra.me.meth = LOCATE_NEW_AIfExpr_parser___parser_prod___AIfExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TKwloop();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwloop(fra.me.REG[1]);
-  parser___lexer___TKwloop___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwloop(fra.me.REG[1]);
+  /* parser/parser_prod.nit:4060 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AIfExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AIfExpr(fra.me.REG[0]);
+  parser___parser_prod___AIfExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AIfExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-val_t NEW_TKwloop_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AIfExpr_parser___parser_prod___AIfExpr___init_aifexpr[] = "new AIfExpr parser_prod::AIfExpr::init_aifexpr";
+val_t NEW_AIfExpr_parser___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[4] = {0, 0, 0, 0};
+  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_TKwloop_parser___parser_nodes___ANode___init;
+  fra.me.line = 4062;
+  fra.me.meth = LOCATE_NEW_AIfExpr_parser___parser_prod___AIfExpr___init_aifexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
   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] = NEW_parser___parser_nodes___TKwloop();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwloop(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwloop(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  /* parser/parser_prod.nit:4062 */
+  fra.me.REG[4] = NEW_parser___parser_nodes___AIfExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AIfExpr(fra.me.REG[4]);
+  parser___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_parser___parser_nodes___AIfExpr(fra.me.REG[4]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[4];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwfor[73] = {
-  {(bigint) 2631 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TKwfor" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TKwfor < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TKwfor < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TKwfor < Token: superclass typecheck marker */},
-  {(bigint) 2631 /* 6: TKwfor < TKwfor: superclass typecheck marker */},
+static const char LOCATE_NEW_AIfExpr_parser___parser_nodes___ANode___init[] = "new AIfExpr parser_nodes::ANode::init";
+val_t NEW_AIfExpr_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AIfExpr_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AIfExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AIfExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AIfExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___AIfexprExpr[98] = {
+  {(bigint) 4455 /* 0: Identity */},
+  {(bigint) 18 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AIfexprExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AIfexprExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AIfexprExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AIfexprExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3811 /* 7: AIfexprExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 4455 /* 8: AIfexprExpr < AIfexprExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -31034,7 +67307,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwfor[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TKwfor < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: AIfexprExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -31050,7 +67323,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwfor[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -31063,129 +67338,242 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwfor[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TKwfor < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AIfexprExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AIfexprExpr___visit_all},
+  {(bigint) 2 /* 63: AIfexprExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TKwfor___parser_index},
-  {(bigint) 0 /* 70: TKwfor < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TKwfor___init_tk},
-  {(bigint) 3 /* 72: TKwfor < TKwfor: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
+  {(bigint) syntax___typing___AIfexprExpr___accept_typing},
+  {(bigint) syntax___typing___AExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: AIfexprExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 0 /* 81: AIfexprExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___AIfexprExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {(bigint) parser___parser_prod___AIfexprExpr___empty_init},
+  {(bigint) parser___parser_prod___AIfexprExpr___init_aifexprexpr},
+  {(bigint) 4 /* 91: AIfexprExpr < AIfexprExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AIfexprExpr___n_kwif},
+  {(bigint) parser___parser_nodes___AIfexprExpr___n_expr},
+  {(bigint) parser___parser_nodes___AIfexprExpr___n_kwthen},
+  {(bigint) parser___parser_nodes___AIfexprExpr___n_then},
+  {(bigint) parser___parser_nodes___AIfexprExpr___n_kwelse},
+  {(bigint) parser___parser_nodes___AIfexprExpr___n_else},
 };
 /* 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__parser___parser_nodes___TKwfor(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AIfexprExpr::_parent */
+/* 3: Attribute AIfexprExpr::_location */
+/* 4: Attribute AIfexprExpr::_first_location */
+/* 5: Attribute AIfexprExpr::_last_location */
+/* 6: Attribute AIfexprExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute AIfexprExpr::_is_typed */
+/* 9: Attribute AIfexprExpr::_stype */
+/* 10: Attribute AIfexprExpr::_if_true_flow_ctx */
+/* 11: Attribute AIfexprExpr::_if_false_flow_ctx */
+/* 12: Attribute AIfexprExpr::_n_kwif */
+/* 13: Attribute AIfexprExpr::_n_expr */
+/* 14: Attribute AIfexprExpr::_n_kwthen */
+/* 15: Attribute AIfexprExpr::_n_then */
+/* 16: Attribute AIfexprExpr::_n_kwelse */
+/* 17: Attribute AIfexprExpr::_n_else */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AIfexprExpr[] = "init var of AIfexprExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___AIfexprExpr(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__parser___parser_nodes___TKwfor;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AIfexprExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TKwfor(void)
+val_t NEW_parser___parser_nodes___AIfexprExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwfor;
+  obj = alloc(sizeof(val_t) * 18);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AIfexprExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TKwfor(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AIfexprExpr[] = "check new AIfexprExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TKwfor;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AIfexprExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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___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___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___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___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___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;
 }
-val_t NEW_TKwfor_parser___lexer___TKwfor___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AIfexprExpr_parser___parser_prod___AIfexprExpr___empty_init[] = "new AIfexprExpr parser_prod::AIfexprExpr::empty_init";
+val_t NEW_AIfexprExpr_parser___parser_prod___AIfexprExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 401;
-  fra.me.meth = LOCATE_NEW_TKwfor_parser___lexer___TKwfor___init_tk;
+  fra.me.line = 4141;
+  fra.me.meth = LOCATE_NEW_AIfexprExpr_parser___parser_prod___AIfexprExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TKwfor();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwfor(fra.me.REG[1]);
-  parser___lexer___TKwfor___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwfor(fra.me.REG[1]);
+  /* parser/parser_prod.nit:4141 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AIfexprExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AIfexprExpr(fra.me.REG[0]);
+  parser___parser_prod___AIfexprExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AIfexprExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-val_t NEW_TKwfor_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AIfexprExpr_parser___parser_prod___AIfexprExpr___init_aifexprexpr[] = "new AIfexprExpr parser_prod::AIfexprExpr::init_aifexprexpr";
+val_t NEW_AIfexprExpr_parser___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[4] = {0, 0, 0, 0};
+  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_TKwfor_parser___parser_nodes___ANode___init;
+  fra.me.line = 4143;
+  fra.me.meth = LOCATE_NEW_AIfexprExpr_parser___parser_prod___AIfexprExpr___init_aifexprexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
   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] = NEW_parser___parser_nodes___TKwfor();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwfor(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwfor(fra.me.REG[1]);
+  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:4143 */
+  fra.me.REG[6] = NEW_parser___parser_nodes___AIfexprExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AIfexprExpr(fra.me.REG[6]);
+  parser___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_parser___parser_nodes___AIfexprExpr(fra.me.REG[6]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[6];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwin[73] = {
-  {(bigint) 2619 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TKwin" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TKwin < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TKwin < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TKwin < Token: superclass typecheck marker */},
-  {(bigint) 2619 /* 6: TKwin < TKwin: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+static const char LOCATE_NEW_AIfexprExpr_parser___parser_nodes___ANode___init[] = "new AIfexprExpr parser_nodes::ANode::init";
+val_t NEW_AIfexprExpr_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AIfexprExpr_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AIfexprExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AIfexprExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AIfexprExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___AWhileExpr[100] = {
+  {(bigint) 4639 /* 0: Identity */},
+  {(bigint) 17 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AWhileExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AWhileExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AWhileExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AWhileExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3775 /* 6: AWhileExpr < ALabelable: superclass typecheck marker */},
+  {(bigint) 3811 /* 7: AWhileExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 4591 /* 8: AWhileExpr < AAbsControl: superclass typecheck marker */},
+  {(bigint) 4639 /* 9: AWhileExpr < AWhileExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -31195,7 +67583,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwin[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TKwin < Object: superclass init_table position */},
+  {(bigint) 4 /* 19: AWhileExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -31211,7 +67599,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwin[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -31224,129 +67614,232 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwin[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TKwin < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AWhileExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AWhileExpr___visit_all},
+  {(bigint) 3 /* 63: AWhileExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TKwin___parser_index},
-  {(bigint) 0 /* 70: TKwin < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TKwin___init_tk},
-  {(bigint) 3 /* 72: TKwin < TKwin: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
+  {(bigint) syntax___typing___AWhileExpr___accept_typing},
+  {(bigint) syntax___typing___AExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 2 /* 72: AWhileExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) 5 /* 75: AWhileExpr < ALabelable: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ALabelable___n_label},
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 1 /* 81: AWhileExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___AWhileExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {(bigint) 0 /* 89: AWhileExpr < AAbsControl: superclass init_table position */},
+  {(bigint) syntax___typing___AAbsControl___escapable},
+  {(bigint) syntax___typing___AAbsControl___process_control},
+  {(bigint) syntax___typing___AWhileExpr___process_control_inside},
+  {(bigint) parser___parser_prod___AWhileExpr___empty_init},
+  {(bigint) parser___parser_prod___AWhileExpr___init_awhileexpr},
+  {(bigint) 6 /* 95: AWhileExpr < AWhileExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AWhileExpr___n_kwwhile},
+  {(bigint) parser___parser_nodes___AWhileExpr___n_expr},
+  {(bigint) parser___parser_nodes___AWhileExpr___n_kwdo},
+  {(bigint) parser___parser_nodes___AWhileExpr___n_block},
 };
 /* 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__parser___parser_nodes___TKwin(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AWhileExpr::_parent */
+/* 3: Attribute AWhileExpr::_location */
+/* 4: Attribute AWhileExpr::_first_location */
+/* 5: Attribute AWhileExpr::_last_location */
+/* 6: Attribute AWhileExpr::_n_annotations */
+/* 7: Attribute AWhileExpr::_n_label */
+/* 8: Attribute AWhileExpr::_is_typed */
+/* 9: Attribute AWhileExpr::_stype */
+/* 10: Attribute AWhileExpr::_if_true_flow_ctx */
+/* 11: Attribute AWhileExpr::_if_false_flow_ctx */
+/* 12: Attribute AWhileExpr::_escapable */
+/* 13: Attribute AWhileExpr::_n_kwwhile */
+/* 14: Attribute AWhileExpr::_n_expr */
+/* 15: Attribute AWhileExpr::_n_kwdo */
+/* 16: Attribute AWhileExpr::_n_block */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AWhileExpr[] = "init var of AWhileExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwin;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AWhileExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* parser/parser_nodes.nit:773 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:819 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AWhileExpr____n_block(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TKwin(void)
+val_t NEW_parser___parser_nodes___AWhileExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwin;
+  obj = alloc(sizeof(val_t) * 17);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AWhileExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TKwin(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AWhileExpr[] = "check new AWhileExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TKwin;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AWhileExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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___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___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);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TKwin_parser___lexer___TKwin___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AWhileExpr_parser___parser_prod___AWhileExpr___empty_init[] = "new AWhileExpr parser_prod::AWhileExpr::empty_init";
+val_t NEW_AWhileExpr_parser___parser_prod___AWhileExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 414;
-  fra.me.meth = LOCATE_NEW_TKwin_parser___lexer___TKwin___init_tk;
+  fra.me.line = 4242;
+  fra.me.meth = LOCATE_NEW_AWhileExpr_parser___parser_prod___AWhileExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TKwin();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwin(fra.me.REG[1]);
-  parser___lexer___TKwin___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwin(fra.me.REG[1]);
+  /* parser/parser_prod.nit:4242 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AWhileExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AWhileExpr(fra.me.REG[0]);
+  parser___parser_prod___AWhileExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AWhileExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-val_t NEW_TKwin_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AWhileExpr_parser___parser_prod___AWhileExpr___init_awhileexpr[] = "new AWhileExpr parser_prod::AWhileExpr::init_awhileexpr";
+val_t NEW_AWhileExpr_parser___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[4] = {0, 0, 0, 0};
+  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_TKwin_parser___parser_nodes___ANode___init;
+  fra.me.line = 4244;
+  fra.me.meth = LOCATE_NEW_AWhileExpr_parser___parser_prod___AWhileExpr___init_awhileexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
   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] = NEW_parser___parser_nodes___TKwin();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwin(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwin(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  /* parser/parser_prod.nit:4244 */
+  fra.me.REG[5] = NEW_parser___parser_nodes___AWhileExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AWhileExpr(fra.me.REG[5]);
+  parser___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_parser___parser_nodes___AWhileExpr(fra.me.REG[5]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[5];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwand[73] = {
-  {(bigint) 2679 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TKwand" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TKwand < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TKwand < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TKwand < Token: superclass typecheck marker */},
-  {(bigint) 2679 /* 6: TKwand < TKwand: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+static const char LOCATE_NEW_AWhileExpr_parser___parser_nodes___ANode___init[] = "new AWhileExpr parser_nodes::ANode::init";
+val_t NEW_AWhileExpr_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AWhileExpr_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AWhileExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AWhileExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AWhileExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___ALoopExpr[98] = {
+  {(bigint) 4699 /* 0: Identity */},
+  {(bigint) 15 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ALoopExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ALoopExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: ALoopExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: ALoopExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3775 /* 6: ALoopExpr < ALabelable: superclass typecheck marker */},
+  {(bigint) 3811 /* 7: ALoopExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 4591 /* 8: ALoopExpr < AAbsControl: superclass typecheck marker */},
+  {(bigint) 4699 /* 9: ALoopExpr < ALoopExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -31356,7 +67849,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwand[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TKwand < Object: superclass init_table position */},
+  {(bigint) 4 /* 19: ALoopExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -31372,7 +67865,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwand[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -31385,129 +67880,214 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwand[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TKwand < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___ALoopExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___ALoopExpr___visit_all},
+  {(bigint) 3 /* 63: ALoopExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TKwand___parser_index},
-  {(bigint) 0 /* 70: TKwand < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TKwand___init_tk},
-  {(bigint) 3 /* 72: TKwand < TKwand: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
+  {(bigint) syntax___typing___ALoopExpr___accept_typing},
+  {(bigint) syntax___typing___AExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 2 /* 72: ALoopExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) 5 /* 75: ALoopExpr < ALabelable: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ALabelable___n_label},
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 1 /* 81: ALoopExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___ALoopExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {(bigint) 0 /* 89: ALoopExpr < AAbsControl: superclass init_table position */},
+  {(bigint) syntax___typing___AAbsControl___escapable},
+  {(bigint) syntax___typing___AAbsControl___process_control},
+  {(bigint) syntax___typing___ALoopExpr___process_control_inside},
+  {(bigint) parser___parser_prod___ALoopExpr___empty_init},
+  {(bigint) parser___parser_prod___ALoopExpr___init_aloopexpr},
+  {(bigint) 6 /* 95: ALoopExpr < ALoopExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ALoopExpr___n_kwloop},
+  {(bigint) parser___parser_nodes___ALoopExpr___n_block},
 };
 /* 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__parser___parser_nodes___TKwand(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute ALoopExpr::_parent */
+/* 3: Attribute ALoopExpr::_location */
+/* 4: Attribute ALoopExpr::_first_location */
+/* 5: Attribute ALoopExpr::_last_location */
+/* 6: Attribute ALoopExpr::_n_annotations */
+/* 7: Attribute ALoopExpr::_n_label */
+/* 8: Attribute ALoopExpr::_is_typed */
+/* 9: Attribute ALoopExpr::_stype */
+/* 10: Attribute ALoopExpr::_if_true_flow_ctx */
+/* 11: Attribute ALoopExpr::_if_false_flow_ctx */
+/* 12: Attribute ALoopExpr::_escapable */
+/* 13: Attribute ALoopExpr::_n_kwloop */
+/* 14: Attribute ALoopExpr::_n_block */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ALoopExpr[] = "init var of ALoopExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwand;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ALoopExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* parser/parser_nodes.nit:773 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:825 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ALoopExpr____n_block(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TKwand(void)
+val_t NEW_parser___parser_nodes___ALoopExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwand;
+  obj = alloc(sizeof(val_t) * 15);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ALoopExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TKwand(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___ALoopExpr[] = "check new ALoopExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TKwand;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___ALoopExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TKwand_parser___lexer___TKwand___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ALoopExpr_parser___parser_prod___ALoopExpr___empty_init[] = "new ALoopExpr parser_prod::ALoopExpr::empty_init";
+val_t NEW_ALoopExpr_parser___parser_prod___ALoopExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 427;
-  fra.me.meth = LOCATE_NEW_TKwand_parser___lexer___TKwand___init_tk;
+  fra.me.line = 4337;
+  fra.me.meth = LOCATE_NEW_ALoopExpr_parser___parser_prod___ALoopExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TKwand();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwand(fra.me.REG[1]);
-  parser___lexer___TKwand___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwand(fra.me.REG[1]);
+  /* parser/parser_prod.nit:4337 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ALoopExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ALoopExpr(fra.me.REG[0]);
+  parser___parser_prod___ALoopExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ALoopExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-val_t NEW_TKwand_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ALoopExpr_parser___parser_prod___ALoopExpr___init_aloopexpr[] = "new ALoopExpr parser_prod::ALoopExpr::init_aloopexpr";
+val_t NEW_ALoopExpr_parser___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[4] = {0, 0, 0, 0};
+  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_TKwand_parser___parser_nodes___ANode___init;
+  fra.me.line = 4339;
+  fra.me.meth = LOCATE_NEW_ALoopExpr_parser___parser_prod___ALoopExpr___init_aloopexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   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] = NEW_parser___parser_nodes___TKwand();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwand(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwand(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* parser/parser_prod.nit:4339 */
+  fra.me.REG[3] = NEW_parser___parser_nodes___ALoopExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ALoopExpr(fra.me.REG[3]);
+  parser___parser_prod___ALoopExpr___init_aloopexpr(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_parser___parser_nodes___ALoopExpr(fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[3];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwor[73] = {
-  {(bigint) 2551 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TKwor" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TKwor < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TKwor < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TKwor < Token: superclass typecheck marker */},
-  {(bigint) 2551 /* 6: TKwor < TKwor: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+static const char LOCATE_NEW_ALoopExpr_parser___parser_nodes___ANode___init[] = "new ALoopExpr parser_nodes::ANode::init";
+val_t NEW_ALoopExpr_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_ALoopExpr_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ALoopExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ALoopExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ALoopExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___AForExpr[103] = {
+  {(bigint) 4739 /* 0: Identity */},
+  {(bigint) 19 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AForExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AForExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AForExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AForExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3775 /* 6: AForExpr < ALabelable: superclass typecheck marker */},
+  {(bigint) 3811 /* 7: AForExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 4591 /* 8: AForExpr < AAbsControl: superclass typecheck marker */},
+  {(bigint) 4739 /* 9: AForExpr < AForExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -31517,7 +68097,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwor[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TKwor < Object: superclass init_table position */},
+  {(bigint) 4 /* 19: AForExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -31533,7 +68113,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwor[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -31546,128 +68128,246 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwor[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TKwor < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AForExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AForExpr___visit_all},
+  {(bigint) 3 /* 63: AForExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TKwor___parser_index},
-  {(bigint) 0 /* 70: TKwor < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TKwor___init_tk},
-  {(bigint) 3 /* 72: TKwor < TKwor: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
+  {(bigint) syntax___typing___AForExpr___accept_typing},
+  {(bigint) syntax___typing___AExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 2 /* 72: AForExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) 5 /* 75: AForExpr < ALabelable: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ALabelable___n_label},
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 1 /* 81: AForExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___AForExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {(bigint) 0 /* 89: AForExpr < AAbsControl: superclass init_table position */},
+  {(bigint) syntax___typing___AAbsControl___escapable},
+  {(bigint) syntax___typing___AAbsControl___process_control},
+  {(bigint) syntax___typing___AForExpr___process_control_inside},
+  {(bigint) syntax___typing___AForExpr___do_typing},
+  {(bigint) syntax___typing___AForExpr___variables},
+  {(bigint) parser___parser_prod___AForExpr___empty_init},
+  {(bigint) parser___parser_prod___AForExpr___init_aforexpr},
+  {(bigint) 6 /* 97: AForExpr < AForExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AForExpr___n_kwfor},
+  {(bigint) parser___parser_nodes___AForExpr___n_ids},
+  {(bigint) parser___parser_nodes___AForExpr___n_expr},
+  {(bigint) parser___parser_nodes___AForExpr___n_kwdo},
+  {(bigint) parser___parser_nodes___AForExpr___n_block},
 };
 /* 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__parser___parser_nodes___TKwor(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AForExpr::_parent */
+/* 3: Attribute AForExpr::_location */
+/* 4: Attribute AForExpr::_first_location */
+/* 5: Attribute AForExpr::_last_location */
+/* 6: Attribute AForExpr::_n_annotations */
+/* 7: Attribute AForExpr::_n_label */
+/* 8: Attribute AForExpr::_is_typed */
+/* 9: Attribute AForExpr::_stype */
+/* 10: Attribute AForExpr::_if_true_flow_ctx */
+/* 11: Attribute AForExpr::_if_false_flow_ctx */
+/* 12: Attribute AForExpr::_escapable */
+/* 13: Attribute AForExpr::_variables */
+/* 14: Attribute AForExpr::_n_kwfor */
+/* 15: Attribute AForExpr::_n_ids */
+/* 16: Attribute AForExpr::_n_expr */
+/* 17: Attribute AForExpr::_n_kwdo */
+/* 18: Attribute AForExpr::_n_block */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AForExpr[] = "init var of AForExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwor;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AForExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* parser/parser_nodes.nit:773 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:831 */
+  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  ATTR_parser___parser_nodes___AForExpr____n_ids(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:834 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AForExpr____n_block(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TKwor(void)
+val_t NEW_parser___parser_nodes___AForExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwor;
+  obj = alloc(sizeof(val_t) * 19);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AForExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TKwor(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AForExpr[] = "check new AForExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TKwor;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AForExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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___parser_nodes___AForExpr____n_ids(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_ids", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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___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);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TKwor_parser___lexer___TKwor___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AForExpr_parser___parser_prod___AForExpr___empty_init[] = "new AForExpr parser_prod::AForExpr::empty_init";
+val_t NEW_AForExpr_parser___parser_prod___AForExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 440;
-  fra.me.meth = LOCATE_NEW_TKwor_parser___lexer___TKwor___init_tk;
+  fra.me.line = 4404;
+  fra.me.meth = LOCATE_NEW_AForExpr_parser___parser_prod___AForExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TKwor();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwor(fra.me.REG[1]);
-  parser___lexer___TKwor___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwor(fra.me.REG[1]);
+  /* parser/parser_prod.nit:4404 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AForExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AForExpr(fra.me.REG[0]);
+  parser___parser_prod___AForExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AForExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-val_t NEW_TKwor_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AForExpr_parser___parser_prod___AForExpr___init_aforexpr[] = "new AForExpr parser_prod::AForExpr::init_aforexpr";
+val_t NEW_AForExpr_parser___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[4] = {0, 0, 0, 0};
+  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_TKwor_parser___parser_nodes___ANode___init;
+  fra.me.line = 4406;
+  fra.me.meth = LOCATE_NEW_AForExpr_parser___parser_prod___AForExpr___init_aforexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
   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] = NEW_parser___parser_nodes___TKwor();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwor(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwor(fra.me.REG[1]);
+  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:4406 */
+  fra.me.REG[6] = NEW_parser___parser_nodes___AForExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AForExpr(fra.me.REG[6]);
+  parser___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_parser___parser_nodes___AForExpr(fra.me.REG[6]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[6];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwnot[73] = {
-  {(bigint) 2567 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TKwnot" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TKwnot < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TKwnot < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TKwnot < Token: superclass typecheck marker */},
-  {(bigint) 2567 /* 6: TKwnot < TKwnot: superclass typecheck marker */},
+static const char LOCATE_NEW_AForExpr_parser___parser_nodes___ANode___init[] = "new AForExpr parser_nodes::ANode::init";
+val_t NEW_AForExpr_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AForExpr_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AForExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AForExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AForExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___AAssertExpr[96] = {
+  {(bigint) 4575 /* 0: Identity */},
+  {(bigint) 16 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AAssertExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AAssertExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AAssertExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AAssertExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3811 /* 7: AAssertExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 4575 /* 8: AAssertExpr < AAssertExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -31678,7 +68378,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwnot[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TKwnot < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: AAssertExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -31694,7 +68394,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwnot[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -31707,129 +68409,220 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwnot[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TKwnot < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AAssertExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AAssertExpr___visit_all},
+  {(bigint) 2 /* 63: AAssertExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TKwnot___parser_index},
-  {(bigint) 0 /* 70: TKwnot < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TKwnot___init_tk},
-  {(bigint) 3 /* 72: TKwnot < TKwnot: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
+  {(bigint) syntax___typing___AAssertExpr___accept_typing},
+  {(bigint) syntax___typing___AExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: AAssertExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 0 /* 81: AAssertExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___AAssertExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {(bigint) parser___parser_prod___AAssertExpr___empty_init},
+  {(bigint) parser___parser_prod___AAssertExpr___init_aassertexpr},
+  {(bigint) 4 /* 91: AAssertExpr < AAssertExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AAssertExpr___n_kwassert},
+  {(bigint) parser___parser_nodes___AAssertExpr___n_id},
+  {(bigint) parser___parser_nodes___AAssertExpr___n_expr},
+  {(bigint) parser___parser_nodes___AAssertExpr___n_else},
 };
 /* 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__parser___parser_nodes___TKwnot(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AAssertExpr::_parent */
+/* 3: Attribute AAssertExpr::_location */
+/* 4: Attribute AAssertExpr::_first_location */
+/* 5: Attribute AAssertExpr::_last_location */
+/* 6: Attribute AAssertExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute AAssertExpr::_is_typed */
+/* 9: Attribute AAssertExpr::_stype */
+/* 10: Attribute AAssertExpr::_if_true_flow_ctx */
+/* 11: Attribute AAssertExpr::_if_false_flow_ctx */
+/* 12: Attribute AAssertExpr::_n_kwassert */
+/* 13: Attribute AAssertExpr::_n_id */
+/* 14: Attribute AAssertExpr::_n_expr */
+/* 15: Attribute AAssertExpr::_n_else */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AAssertExpr[] = "init var of AAssertExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwnot;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AAssertExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* parser/parser_nodes.nit:839 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AAssertExpr____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:841 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AAssertExpr____n_else(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TKwnot(void)
+val_t NEW_parser___parser_nodes___AAssertExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwnot;
+  obj = alloc(sizeof(val_t) * 16);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AAssertExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TKwnot(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AAssertExpr[] = "check new AAssertExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TKwnot;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AAssertExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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___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;
 }
-val_t NEW_TKwnot_parser___lexer___TKwnot___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AAssertExpr_parser___parser_prod___AAssertExpr___empty_init[] = "new AAssertExpr parser_prod::AAssertExpr::empty_init";
+val_t NEW_AAssertExpr_parser___parser_prod___AAssertExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 453;
-  fra.me.meth = LOCATE_NEW_TKwnot_parser___lexer___TKwnot___init_tk;
+  fra.me.line = 4520;
+  fra.me.meth = LOCATE_NEW_AAssertExpr_parser___parser_prod___AAssertExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TKwnot();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwnot(fra.me.REG[1]);
-  parser___lexer___TKwnot___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwnot(fra.me.REG[1]);
+  /* parser/parser_prod.nit:4520 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AAssertExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AAssertExpr(fra.me.REG[0]);
+  parser___parser_prod___AAssertExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AAssertExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-val_t NEW_TKwnot_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AAssertExpr_parser___parser_prod___AAssertExpr___init_aassertexpr[] = "new AAssertExpr parser_prod::AAssertExpr::init_aassertexpr";
+val_t NEW_AAssertExpr_parser___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[4] = {0, 0, 0, 0};
+  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_TKwnot_parser___parser_nodes___ANode___init;
+  fra.me.line = 4522;
+  fra.me.meth = LOCATE_NEW_AAssertExpr_parser___parser_prod___AAssertExpr___init_aassertexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
   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] = NEW_parser___parser_nodes___TKwnot();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwnot(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwnot(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  /* parser/parser_prod.nit:4522 */
+  fra.me.REG[4] = NEW_parser___parser_nodes___AAssertExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AAssertExpr(fra.me.REG[4]);
+  parser___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_parser___parser_nodes___AAssertExpr(fra.me.REG[4]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[4];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwreturn[73] = {
-  {(bigint) 2531 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TKwreturn" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TKwreturn < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TKwreturn < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TKwreturn < Token: superclass typecheck marker */},
-  {(bigint) 2531 /* 6: TKwreturn < TKwreturn: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+static const char LOCATE_NEW_AAssertExpr_parser___parser_nodes___ANode___init[] = "new AAssertExpr parser_nodes::ANode::init";
+val_t NEW_AAssertExpr_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AAssertExpr_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AAssertExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AAssertExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AAssertExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___AOnceExpr[96] = {
+  {(bigint) 4687 /* 0: Identity */},
+  {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AOnceExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AOnceExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AOnceExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AOnceExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3811 /* 7: AOnceExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 4347 /* 8: AOnceExpr < AProxyExpr: superclass typecheck marker */},
+  {(bigint) 4687 /* 9: AOnceExpr < AOnceExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -31839,7 +68632,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwreturn[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TKwreturn < Object: superclass init_table position */},
+  {(bigint) 4 /* 19: AOnceExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -31855,7 +68648,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwreturn[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -31868,129 +68663,208 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwreturn[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TKwreturn < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AOnceExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AOnceExpr___visit_all},
+  {(bigint) 3 /* 63: AOnceExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
+  {(bigint) syntax___typing___AOnceExpr___accept_typing},
+  {(bigint) syntax___typing___AProxyExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 2 /* 72: AOnceExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 1 /* 81: AOnceExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___AOnceExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AProxyExpr___is_self},
+  {(bigint) syntax___typing___AProxyExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {(bigint) 0 /* 89: AOnceExpr < AProxyExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AProxyExpr___n_expr},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TKwreturn___parser_index},
-  {(bigint) 0 /* 70: TKwreturn < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TKwreturn___init_tk},
-  {(bigint) 3 /* 72: TKwreturn < TKwreturn: superclass init_table position */},
+  {(bigint) parser___parser_prod___AOnceExpr___empty_init},
+  {(bigint) parser___parser_prod___AOnceExpr___init_aonceexpr},
+  {(bigint) 5 /* 94: AOnceExpr < AOnceExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AOnceExpr___n_kwonce},
 };
 /* 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__parser___parser_nodes___TKwreturn(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AOnceExpr::_parent */
+/* 3: Attribute AOnceExpr::_location */
+/* 4: Attribute AOnceExpr::_first_location */
+/* 5: Attribute AOnceExpr::_last_location */
+/* 6: Attribute AOnceExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute AOnceExpr::_is_typed */
+/* 9: Attribute AOnceExpr::_stype */
+/* 10: Attribute AOnceExpr::_if_true_flow_ctx */
+/* 11: Attribute AOnceExpr::_if_false_flow_ctx */
+/* 12: Attribute AOnceExpr::_n_expr */
+/* 13: Attribute AOnceExpr::_n_kwonce */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AOnceExpr[] = "init var of AOnceExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___AOnceExpr(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__parser___parser_nodes___TKwreturn;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AOnceExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TKwreturn(void)
+val_t NEW_parser___parser_nodes___AOnceExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwreturn;
+  obj = alloc(sizeof(val_t) * 14);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AOnceExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TKwreturn(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AOnceExpr[] = "check new AOnceExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TKwreturn;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AOnceExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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_parser___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);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TKwreturn_parser___lexer___TKwreturn___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AOnceExpr_parser___parser_prod___AOnceExpr___empty_init[] = "new AOnceExpr parser_prod::AOnceExpr::empty_init";
+val_t NEW_AOnceExpr_parser___parser_prod___AOnceExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 466;
-  fra.me.meth = LOCATE_NEW_TKwreturn_parser___lexer___TKwreturn___init_tk;
+  fra.me.line = 4601;
+  fra.me.meth = LOCATE_NEW_AOnceExpr_parser___parser_prod___AOnceExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TKwreturn();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwreturn(fra.me.REG[1]);
-  parser___lexer___TKwreturn___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwreturn(fra.me.REG[1]);
+  /* parser/parser_prod.nit:4601 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AOnceExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AOnceExpr(fra.me.REG[0]);
+  parser___parser_prod___AOnceExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AOnceExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-val_t NEW_TKwreturn_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AOnceExpr_parser___parser_prod___AOnceExpr___init_aonceexpr[] = "new AOnceExpr parser_prod::AOnceExpr::init_aonceexpr";
+val_t NEW_AOnceExpr_parser___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[4] = {0, 0, 0, 0};
+  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_TKwreturn_parser___parser_nodes___ANode___init;
+  fra.me.line = 4603;
+  fra.me.meth = LOCATE_NEW_AOnceExpr_parser___parser_prod___AOnceExpr___init_aonceexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   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] = NEW_parser___parser_nodes___TKwreturn();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwreturn(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwreturn(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:4603 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___AOnceExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AOnceExpr(fra.me.REG[2]);
+  parser___parser_prod___AOnceExpr___init_aonceexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___AOnceExpr(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[2];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwcontinue[73] = {
-  {(bigint) 2659 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TKwcontinue" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TKwcontinue < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TKwcontinue < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TKwcontinue < Token: superclass typecheck marker */},
-  {(bigint) 2659 /* 6: TKwcontinue < TKwcontinue: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+static const char LOCATE_NEW_AOnceExpr_parser___parser_nodes___ANode___init[] = "new AOnceExpr parser_nodes::ANode::init";
+val_t NEW_AOnceExpr_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AOnceExpr_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AOnceExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AOnceExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AOnceExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___AOrExpr[95] = {
+  {(bigint) 4679 /* 0: Identity */},
+  {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AOrExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AOrExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AOrExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AOrExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3811 /* 7: AOrExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 4547 /* 8: AOrExpr < ABoolExpr: superclass typecheck marker */},
+  {(bigint) 4679 /* 9: AOrExpr < AOrExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -32000,7 +68874,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwcontinue[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TKwcontinue < Object: superclass init_table position */},
+  {(bigint) 4 /* 19: AOrExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -32016,7 +68890,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwcontinue[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -32029,129 +68905,207 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwcontinue[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TKwcontinue < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AOrExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AOrExpr___visit_all},
+  {(bigint) 3 /* 63: AOrExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TKwcontinue___parser_index},
-  {(bigint) 0 /* 70: TKwcontinue < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TKwcontinue___init_tk},
-  {(bigint) 3 /* 72: TKwcontinue < TKwcontinue: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
+  {(bigint) syntax___typing___AOrExpr___accept_typing},
+  {(bigint) syntax___typing___ABoolExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 2 /* 72: AOrExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___mmbuilder___ABoolExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 1 /* 81: AOrExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___AOrExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {(bigint) 0 /* 89: AOrExpr < ABoolExpr: superclass init_table position */},
+  {(bigint) parser___parser_prod___AOrExpr___empty_init},
+  {(bigint) parser___parser_prod___AOrExpr___init_aorexpr},
+  {(bigint) 5 /* 92: AOrExpr < AOrExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AOrExpr___n_expr},
+  {(bigint) parser___parser_nodes___AOrExpr___n_expr2},
 };
 /* 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__parser___parser_nodes___TKwcontinue(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AOrExpr::_parent */
+/* 3: Attribute AOrExpr::_location */
+/* 4: Attribute AOrExpr::_first_location */
+/* 5: Attribute AOrExpr::_last_location */
+/* 6: Attribute AOrExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute AOrExpr::_is_typed */
+/* 9: Attribute AOrExpr::_stype */
+/* 10: Attribute AOrExpr::_if_true_flow_ctx */
+/* 11: Attribute AOrExpr::_if_false_flow_ctx */
+/* 12: Attribute AOrExpr::_n_expr */
+/* 13: Attribute AOrExpr::_n_expr2 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AOrExpr[] = "init var of AOrExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___AOrExpr(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__parser___parser_nodes___TKwcontinue;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AOrExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TKwcontinue(void)
+val_t NEW_parser___parser_nodes___AOrExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwcontinue;
+  obj = alloc(sizeof(val_t) * 14);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AOrExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TKwcontinue(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AOrExpr[] = "check new AOrExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TKwcontinue;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AOrExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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___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;
 }
-val_t NEW_TKwcontinue_parser___lexer___TKwcontinue___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AOrExpr_parser___parser_prod___AOrExpr___empty_init[] = "new AOrExpr parser_prod::AOrExpr::empty_init";
+val_t NEW_AOrExpr_parser___parser_prod___AOrExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 479;
-  fra.me.meth = LOCATE_NEW_TKwcontinue_parser___lexer___TKwcontinue___init_tk;
+  fra.me.line = 4722;
+  fra.me.meth = LOCATE_NEW_AOrExpr_parser___parser_prod___AOrExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TKwcontinue();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwcontinue(fra.me.REG[1]);
-  parser___lexer___TKwcontinue___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwcontinue(fra.me.REG[1]);
+  /* parser/parser_prod.nit:4722 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AOrExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AOrExpr(fra.me.REG[0]);
+  parser___parser_prod___AOrExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AOrExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-val_t NEW_TKwcontinue_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AOrExpr_parser___parser_prod___AOrExpr___init_aorexpr[] = "new AOrExpr parser_prod::AOrExpr::init_aorexpr";
+val_t NEW_AOrExpr_parser___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[4] = {0, 0, 0, 0};
+  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_TKwcontinue_parser___parser_nodes___ANode___init;
+  fra.me.line = 4724;
+  fra.me.meth = LOCATE_NEW_AOrExpr_parser___parser_prod___AOrExpr___init_aorexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   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] = NEW_parser___parser_nodes___TKwcontinue();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwcontinue(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwcontinue(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:4724 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___AOrExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AOrExpr(fra.me.REG[2]);
+  parser___parser_prod___AOrExpr___init_aorexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___AOrExpr(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[2];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwbreak[73] = {
-  {(bigint) 2667 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TKwbreak" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TKwbreak < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TKwbreak < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TKwbreak < Token: superclass typecheck marker */},
-  {(bigint) 2667 /* 6: TKwbreak < TKwbreak: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+static const char LOCATE_NEW_AOrExpr_parser___parser_nodes___ANode___init[] = "new AOrExpr parser_nodes::ANode::init";
+val_t NEW_AOrExpr_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AOrExpr_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AOrExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AOrExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AOrExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___AAndExpr[95] = {
+  {(bigint) 4815 /* 0: Identity */},
+  {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AAndExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AAndExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AAndExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AAndExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3811 /* 7: AAndExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 4547 /* 8: AAndExpr < ABoolExpr: superclass typecheck marker */},
+  {(bigint) 4815 /* 9: AAndExpr < AAndExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -32161,7 +69115,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwbreak[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TKwbreak < Object: superclass init_table position */},
+  {(bigint) 4 /* 19: AAndExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -32177,7 +69131,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwbreak[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -32190,129 +69146,207 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwbreak[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TKwbreak < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AAndExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AAndExpr___visit_all},
+  {(bigint) 3 /* 63: AAndExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TKwbreak___parser_index},
-  {(bigint) 0 /* 70: TKwbreak < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TKwbreak___init_tk},
-  {(bigint) 3 /* 72: TKwbreak < TKwbreak: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
+  {(bigint) syntax___typing___AAndExpr___accept_typing},
+  {(bigint) syntax___typing___ABoolExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 2 /* 72: AAndExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___mmbuilder___ABoolExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 1 /* 81: AAndExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___AAndExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {(bigint) 0 /* 89: AAndExpr < ABoolExpr: superclass init_table position */},
+  {(bigint) parser___parser_prod___AAndExpr___empty_init},
+  {(bigint) parser___parser_prod___AAndExpr___init_aandexpr},
+  {(bigint) 5 /* 92: AAndExpr < AAndExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AAndExpr___n_expr},
+  {(bigint) parser___parser_nodes___AAndExpr___n_expr2},
 };
 /* 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__parser___parser_nodes___TKwbreak(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AAndExpr::_parent */
+/* 3: Attribute AAndExpr::_location */
+/* 4: Attribute AAndExpr::_first_location */
+/* 5: Attribute AAndExpr::_last_location */
+/* 6: Attribute AAndExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute AAndExpr::_is_typed */
+/* 9: Attribute AAndExpr::_stype */
+/* 10: Attribute AAndExpr::_if_true_flow_ctx */
+/* 11: Attribute AAndExpr::_if_false_flow_ctx */
+/* 12: Attribute AAndExpr::_n_expr */
+/* 13: Attribute AAndExpr::_n_expr2 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AAndExpr[] = "init var of AAndExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___AAndExpr(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__parser___parser_nodes___TKwbreak;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AAndExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TKwbreak(void)
+val_t NEW_parser___parser_nodes___AAndExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwbreak;
+  obj = alloc(sizeof(val_t) * 14);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AAndExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TKwbreak(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AAndExpr[] = "check new AAndExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TKwbreak;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AAndExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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___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;
 }
-val_t NEW_TKwbreak_parser___lexer___TKwbreak___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AAndExpr_parser___parser_prod___AAndExpr___empty_init[] = "new AAndExpr parser_prod::AAndExpr::empty_init";
+val_t NEW_AAndExpr_parser___parser_prod___AAndExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 492;
-  fra.me.meth = LOCATE_NEW_TKwbreak_parser___lexer___TKwbreak___init_tk;
+  fra.me.line = 4767;
+  fra.me.meth = LOCATE_NEW_AAndExpr_parser___parser_prod___AAndExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TKwbreak();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwbreak(fra.me.REG[1]);
-  parser___lexer___TKwbreak___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwbreak(fra.me.REG[1]);
+  /* parser/parser_prod.nit:4767 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AAndExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AAndExpr(fra.me.REG[0]);
+  parser___parser_prod___AAndExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AAndExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-val_t NEW_TKwbreak_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AAndExpr_parser___parser_prod___AAndExpr___init_aandexpr[] = "new AAndExpr parser_prod::AAndExpr::init_aandexpr";
+val_t NEW_AAndExpr_parser___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[4] = {0, 0, 0, 0};
+  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_TKwbreak_parser___parser_nodes___ANode___init;
+  fra.me.line = 4769;
+  fra.me.meth = LOCATE_NEW_AAndExpr_parser___parser_prod___AAndExpr___init_aandexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   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] = NEW_parser___parser_nodes___TKwbreak();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwbreak(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwbreak(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:4769 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___AAndExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AAndExpr(fra.me.REG[2]);
+  parser___parser_prod___AAndExpr___init_aandexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___AAndExpr(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[2];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwabort[73] = {
-  {(bigint) 2687 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TKwabort" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TKwabort < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TKwabort < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TKwabort < Token: superclass typecheck marker */},
-  {(bigint) 2687 /* 6: TKwabort < TKwabort: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+static const char LOCATE_NEW_AAndExpr_parser___parser_nodes___ANode___init[] = "new AAndExpr parser_nodes::ANode::init";
+val_t NEW_AAndExpr_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AAndExpr_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AAndExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AAndExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AAndExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___AOrElseExpr[95] = {
+  {(bigint) 4683 /* 0: Identity */},
+  {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AOrElseExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AOrElseExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AOrElseExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AOrElseExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3811 /* 7: AOrElseExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 4547 /* 8: AOrElseExpr < ABoolExpr: superclass typecheck marker */},
+  {(bigint) 4683 /* 9: AOrElseExpr < AOrElseExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -32322,7 +69356,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwabort[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TKwabort < Object: superclass init_table position */},
+  {(bigint) 4 /* 19: AOrElseExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -32338,7 +69372,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwabort[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -32351,129 +69387,207 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwabort[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TKwabort < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AOrElseExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AOrElseExpr___visit_all},
+  {(bigint) 3 /* 63: AOrElseExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TKwabort___parser_index},
-  {(bigint) 0 /* 70: TKwabort < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TKwabort___init_tk},
-  {(bigint) 3 /* 72: TKwabort < TKwabort: superclass init_table position */},
+  {(bigint) syntax___typing___AOrElseExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 2 /* 72: AOrElseExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___mmbuilder___ABoolExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 1 /* 81: AOrElseExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___AOrElseExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {(bigint) 0 /* 89: AOrElseExpr < ABoolExpr: superclass init_table position */},
+  {(bigint) parser___parser_prod___AOrElseExpr___empty_init},
+  {(bigint) parser___parser_prod___AOrElseExpr___init_aorelseexpr},
+  {(bigint) 5 /* 92: AOrElseExpr < AOrElseExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AOrElseExpr___n_expr},
+  {(bigint) parser___parser_nodes___AOrElseExpr___n_expr2},
 };
 /* 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__parser___parser_nodes___TKwabort(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AOrElseExpr::_parent */
+/* 3: Attribute AOrElseExpr::_location */
+/* 4: Attribute AOrElseExpr::_first_location */
+/* 5: Attribute AOrElseExpr::_last_location */
+/* 6: Attribute AOrElseExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute AOrElseExpr::_is_typed */
+/* 9: Attribute AOrElseExpr::_stype */
+/* 10: Attribute AOrElseExpr::_if_true_flow_ctx */
+/* 11: Attribute AOrElseExpr::_if_false_flow_ctx */
+/* 12: Attribute AOrElseExpr::_n_expr */
+/* 13: Attribute AOrElseExpr::_n_expr2 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AOrElseExpr[] = "init var of AOrElseExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___AOrElseExpr(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__parser___parser_nodes___TKwabort;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AOrElseExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TKwabort(void)
+val_t NEW_parser___parser_nodes___AOrElseExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwabort;
+  obj = alloc(sizeof(val_t) * 14);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AOrElseExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TKwabort(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AOrElseExpr[] = "check new AOrElseExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TKwabort;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AOrElseExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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___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;
 }
-val_t NEW_TKwabort_parser___lexer___TKwabort___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AOrElseExpr_parser___parser_prod___AOrElseExpr___empty_init[] = "new AOrElseExpr parser_prod::AOrElseExpr::empty_init";
+val_t NEW_AOrElseExpr_parser___parser_prod___AOrElseExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 505;
-  fra.me.meth = LOCATE_NEW_TKwabort_parser___lexer___TKwabort___init_tk;
+  fra.me.line = 4812;
+  fra.me.meth = LOCATE_NEW_AOrElseExpr_parser___parser_prod___AOrElseExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TKwabort();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwabort(fra.me.REG[1]);
-  parser___lexer___TKwabort___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwabort(fra.me.REG[1]);
+  /* parser/parser_prod.nit:4812 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AOrElseExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AOrElseExpr(fra.me.REG[0]);
+  parser___parser_prod___AOrElseExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AOrElseExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-val_t NEW_TKwabort_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AOrElseExpr_parser___parser_prod___AOrElseExpr___init_aorelseexpr[] = "new AOrElseExpr parser_prod::AOrElseExpr::init_aorelseexpr";
+val_t NEW_AOrElseExpr_parser___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[4] = {0, 0, 0, 0};
+  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_TKwabort_parser___parser_nodes___ANode___init;
+  fra.me.line = 4814;
+  fra.me.meth = LOCATE_NEW_AOrElseExpr_parser___parser_prod___AOrElseExpr___init_aorelseexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   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] = NEW_parser___parser_nodes___TKwabort();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwabort(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwabort(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:4814 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___AOrElseExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AOrElseExpr(fra.me.REG[2]);
+  parser___parser_prod___AOrElseExpr___init_aorelseexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___AOrElseExpr(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[2];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwassert[73] = {
-  {(bigint) 2671 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TKwassert" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TKwassert < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TKwassert < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TKwassert < Token: superclass typecheck marker */},
-  {(bigint) 2671 /* 6: TKwassert < TKwassert: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+static const char LOCATE_NEW_AOrElseExpr_parser___parser_nodes___ANode___init[] = "new AOrElseExpr parser_nodes::ANode::init";
+val_t NEW_AOrElseExpr_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AOrElseExpr_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AOrElseExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AOrElseExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AOrElseExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___ANotExpr[95] = {
+  {(bigint) 4691 /* 0: Identity */},
+  {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ANotExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ANotExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: ANotExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: ANotExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3811 /* 7: ANotExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 4547 /* 8: ANotExpr < ABoolExpr: superclass typecheck marker */},
+  {(bigint) 4691 /* 9: ANotExpr < ANotExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -32483,7 +69597,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwassert[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TKwassert < Object: superclass init_table position */},
+  {(bigint) 4 /* 19: ANotExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -32499,7 +69613,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwassert[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -32512,139 +69628,217 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwassert[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TKwassert < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___ANotExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___ANotExpr___visit_all},
+  {(bigint) 3 /* 63: ANotExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TKwassert___parser_index},
-  {(bigint) 0 /* 70: TKwassert < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TKwassert___init_tk},
-  {(bigint) 3 /* 72: TKwassert < TKwassert: superclass init_table position */},
+  {(bigint) syntax___typing___ANotExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 2 /* 72: ANotExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___mmbuilder___ABoolExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 1 /* 81: ANotExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___ANotExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {(bigint) 0 /* 89: ANotExpr < ABoolExpr: superclass init_table position */},
+  {(bigint) parser___parser_prod___ANotExpr___empty_init},
+  {(bigint) parser___parser_prod___ANotExpr___init_anotexpr},
+  {(bigint) 5 /* 92: ANotExpr < ANotExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANotExpr___n_kwnot},
+  {(bigint) parser___parser_nodes___ANotExpr___n_expr},
 };
 /* 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__parser___parser_nodes___TKwassert(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute ANotExpr::_parent */
+/* 3: Attribute ANotExpr::_location */
+/* 4: Attribute ANotExpr::_first_location */
+/* 5: Attribute ANotExpr::_last_location */
+/* 6: Attribute ANotExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute ANotExpr::_is_typed */
+/* 9: Attribute ANotExpr::_stype */
+/* 10: Attribute ANotExpr::_if_true_flow_ctx */
+/* 11: Attribute ANotExpr::_if_false_flow_ctx */
+/* 12: Attribute ANotExpr::_n_kwnot */
+/* 13: Attribute ANotExpr::_n_expr */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ANotExpr[] = "init var of ANotExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___ANotExpr(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__parser___parser_nodes___TKwassert;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ANotExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TKwassert(void)
+val_t NEW_parser___parser_nodes___ANotExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwassert;
+  obj = alloc(sizeof(val_t) * 14);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ANotExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TKwassert(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___ANotExpr[] = "check new ANotExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TKwassert;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___ANotExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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___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;
 }
-val_t NEW_TKwassert_parser___lexer___TKwassert___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ANotExpr_parser___parser_prod___ANotExpr___empty_init[] = "new ANotExpr parser_prod::ANotExpr::empty_init";
+val_t NEW_ANotExpr_parser___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 = 4857;
+  fra.me.meth = LOCATE_NEW_ANotExpr_parser___parser_prod___ANotExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:4857 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ANotExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ANotExpr(fra.me.REG[0]);
+  parser___parser_prod___ANotExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ANotExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_ANotExpr_parser___parser_prod___ANotExpr___init_anotexpr[] = "new ANotExpr parser_prod::ANotExpr::init_anotexpr";
+val_t NEW_ANotExpr_parser___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[4] = {0, 0, 0, 0};
+  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 = 518;
-  fra.me.meth = LOCATE_NEW_TKwassert_parser___lexer___TKwassert___init_tk;
+  fra.me.line = 4859;
+  fra.me.meth = LOCATE_NEW_ANotExpr_parser___parser_prod___ANotExpr___init_anotexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./parser//lexer.nit:518 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___TKwassert();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwassert(fra.me.REG[1]);
-  parser___lexer___TKwassert___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwassert(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:4859 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___ANotExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ANotExpr(fra.me.REG[2]);
+  parser___parser_prod___ANotExpr___init_anotexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___ANotExpr(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[2];
 }
-val_t NEW_TKwassert_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ANotExpr_parser___parser_nodes___ANode___init[] = "new ANotExpr parser_nodes::ANode::init";
+val_t NEW_ANotExpr_parser___parser_nodes___ANode___init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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_TKwassert_parser___parser_nodes___ANode___init;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_ANotExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___TKwassert();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwassert(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwassert(fra.me.REG[1]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ANotExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ANotExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ANotExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwnew[73] = {
-  {(bigint) 2571 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TKwnew" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TKwnew < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TKwnew < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TKwnew < Token: superclass typecheck marker */},
-  {(bigint) 2571 /* 6: TKwnew < TKwnew: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_parser___parser_nodes___AEqExpr[127] = {
+  {(bigint) 4943 /* 0: Identity */},
+  {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AEqExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AEqExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AEqExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AEqExpr < Prod: superclass typecheck marker */},
+  {(bigint) 4595 /* 6: AEqExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3811 /* 7: AEqExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 4819 /* 9: AEqExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 4831 /* 10: AEqExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 4859 /* 11: AEqExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 4887 /* 12: AEqExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 4943 /* 13: AEqExpr < AEqExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TKwnew < Object: superclass init_table position */},
+  {(bigint) 8 /* 19: AEqExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -32660,7 +69854,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwnew[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -32673,290 +69869,348 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwnew[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TKwnew < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AEqExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AEqExpr___visit_all},
+  {(bigint) 7 /* 63: AEqExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TKwnew___parser_index},
-  {(bigint) 0 /* 70: TKwnew < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TKwnew___init_tk},
-  {(bigint) 3 /* 72: TKwnew < TKwnew: superclass init_table position */},
+  {(bigint) syntax___typing___AEqExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 6 /* 72: AEqExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
+  {(bigint) 2 /* 76: AEqExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 5 /* 81: AEqExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 4 /* 101: AEqExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
+  {(bigint) syntax___typing___AAbsSendExpr___get_property},
+  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
+  {(bigint) 3 /* 107: AEqExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) syntax___typing___AAbsSendExpr___prop},
+  {(bigint) syntax___typing___AAbsSendExpr___return_type},
+  {(bigint) syntax___typing___AEqExpr___name},
+  {(bigint) syntax___typing___ASendExpr___do_all_typing},
+  {(bigint) syntax___typing___ASendExpr___closure_defs},
+  {(bigint) parser___parser_prod___ASendExpr___empty_init},
+  {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
+  {(bigint) 1 /* 115: AEqExpr < ASendExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
+  {(bigint) parser___parser_prod___ABinopExpr___empty_init},
+  {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
+  {(bigint) 0 /* 120: AEqExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
+  {(bigint) syntax___typing___ASendExpr___after_typing},
+  {(bigint) syntax___typing___AEqExpr___try_to_isa},
+  {(bigint) parser___parser_prod___AEqExpr___empty_init},
+  {(bigint) parser___parser_prod___AEqExpr___init_aeqexpr},
+  {(bigint) 9 /* 126: AEqExpr < AEqExpr: 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__parser___parser_nodes___TKwnew(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AEqExpr::_parent */
+/* 3: Attribute AEqExpr::_location */
+/* 4: Attribute AEqExpr::_first_location */
+/* 5: Attribute AEqExpr::_last_location */
+/* 6: Attribute AEqExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute AEqExpr::_is_typed */
+/* 9: Attribute AEqExpr::_stype */
+/* 10: Attribute AEqExpr::_if_true_flow_ctx */
+/* 11: Attribute AEqExpr::_if_false_flow_ctx */
+/* 12: Attribute AEqExpr::_prop_signature */
+/* 13: Attribute AEqExpr::_raw_arguments_cache */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 17: Attribute AEqExpr::_prop */
+/* 18: Attribute AEqExpr::_return_type */
+/* 19: Attribute AEqExpr::_n_expr */
+/* 20: Attribute AEqExpr::_n_closure_defs */
+/* 21: Attribute AEqExpr::_n_expr2 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AEqExpr[] = "init var of AEqExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwnew;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AEqExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* syntax/typing.nit:1441 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:860 */
+  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TKwnew(void)
+val_t NEW_parser___parser_nodes___AEqExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwnew;
+  obj = alloc(sizeof(val_t) * 22);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AEqExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TKwnew(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AEqExpr[] = "check new AEqExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TKwnew;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AEqExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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___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___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);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TKwnew_parser___lexer___TKwnew___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AEqExpr_parser___parser_prod___ABinopExpr___empty_init[] = "new AEqExpr parser_prod::ABinopExpr::empty_init";
+val_t NEW_AEqExpr_parser___parser_prod___ABinopExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 531;
-  fra.me.meth = LOCATE_NEW_TKwnew_parser___lexer___TKwnew___init_tk;
+  fra.me.line = 4677;
+  fra.me.meth = LOCATE_NEW_AEqExpr_parser___parser_prod___ABinopExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TKwnew();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwnew(fra.me.REG[1]);
-  parser___lexer___TKwnew___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwnew(fra.me.REG[1]);
+  /* parser/parser_prod.nit:4677 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AEqExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AEqExpr(fra.me.REG[0]);
+  parser___parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AEqExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-val_t NEW_TKwnew_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AEqExpr_parser___parser_prod___AEqExpr___empty_init[] = "new AEqExpr parser_prod::AEqExpr::empty_init";
+val_t NEW_AEqExpr_parser___parser_prod___AEqExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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_TKwnew_parser___parser_nodes___ANode___init;
+  fra.me.line = 4902;
+  fra.me.meth = LOCATE_NEW_AEqExpr_parser___parser_prod___AEqExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:4902 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AEqExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AEqExpr(fra.me.REG[0]);
+  parser___parser_prod___AEqExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AEqExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AEqExpr_parser___parser_prod___AEqExpr___init_aeqexpr[] = "new AEqExpr parser_prod::AEqExpr::init_aeqexpr";
+val_t NEW_AEqExpr_parser___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 = 4904;
+  fra.me.meth = LOCATE_NEW_AEqExpr_parser___parser_prod___AEqExpr___init_aeqexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   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] = NEW_parser___parser_nodes___TKwnew();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwnew(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwnew(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:4904 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___AEqExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AEqExpr(fra.me.REG[2]);
+  parser___parser_prod___AEqExpr___init_aeqexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___AEqExpr(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[2];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwisa[73] = {
-  {(bigint) 2595 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TKwisa" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TKwisa < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TKwisa < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TKwisa < Token: superclass typecheck marker */},
-  {(bigint) 2595 /* 6: 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 :( */,
-  {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TKwisa < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
-  {(bigint) standard___file___Object___printn},
-  {(bigint) standard___file___Object___print},
-  {(bigint) standard___file___Object___getc},
-  {(bigint) standard___file___Object___gets},
-  {(bigint) standard___file___Object___stdin},
-  {(bigint) standard___file___Object___stdout},
-  {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
-  {(bigint) standard___string___Object___native_class_name},
-  {(bigint) standard___string___Object___class_name},
-  {(bigint) standard___string___Object___inspect},
-  {(bigint) standard___string___Object___inspect_head},
-  {(bigint) standard___string___Object___args},
-  {(bigint) standard___hash___Object___hash},
-  {(bigint) standard___math___Object___atan2},
-  {(bigint) standard___math___Object___pi},
-  {(bigint) standard___math___Object___srand_from},
-  {(bigint) standard___math___Object___srand},
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TKwisa < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TKwisa___parser_index},
-  {(bigint) 0 /* 70: TKwisa < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TKwisa___init_tk},
-  {(bigint) 3 /* 72: 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__parser___parser_nodes___TKwisa(val_t p0){
+static const char LOCATE_NEW_AEqExpr_parser___parser_nodes___ANode___init[] = "new AEqExpr parser_nodes::ANode::init";
+val_t NEW_AEqExpr_parser___parser_nodes___ANode___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_INIT_ATTRIBUTES__parser___parser_nodes___TKwisa;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_AEqExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AEqExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AEqExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AEqExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-val_t NEW_parser___parser_nodes___TKwisa(void)
-{
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwisa;
-  obj[1].object_id = object_id_counter;
-  object_id_counter = object_id_counter + 1;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_parser___parser_nodes___TKwisa(val_t p0){
+static const char LOCATE_NEW_AEqExpr_parser___parser_prod___ASendExpr___empty_init[] = "new AEqExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_AEqExpr_parser___parser_prod___ASendExpr___empty_init(void){
   struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
   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_CHECKNEW_parser___parser_nodes___TKwisa;
+  fra.me.line = 4646;
+  fra.me.meth = LOCATE_NEW_AEqExpr_parser___parser_prod___ASendExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
-  }
+  /* parser/parser_prod.nit:4646 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AEqExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AEqExpr(fra.me.REG[0]);
+  parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AEqExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-val_t NEW_TKwisa_parser___lexer___TKwisa___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AEqExpr_parser___parser_prod___ABinopExpr___init_abinopexpr[] = "new AEqExpr parser_prod::ABinopExpr::init_abinopexpr";
+val_t NEW_AEqExpr_parser___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[4] = {0, 0, 0, 0};
+  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 = 544;
-  fra.me.meth = LOCATE_NEW_TKwisa_parser___lexer___TKwisa___init_tk;
+  fra.me.line = 4679;
+  fra.me.meth = LOCATE_NEW_AEqExpr_parser___parser_prod___ABinopExpr___init_abinopexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./parser//lexer.nit:544 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___TKwisa();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwisa(fra.me.REG[1]);
-  parser___lexer___TKwisa___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwisa(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:4679 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___AEqExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AEqExpr(fra.me.REG[2]);
+  parser___parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___AEqExpr(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[2];
 }
-val_t NEW_TKwisa_parser___parser_nodes___ANode___init(val_t p0){
+static const char LOCATE_NEW_AEqExpr_parser___parser_prod___ASendExpr___init_asendexpr[] = "new AEqExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_AEqExpr_parser___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[4] = {0, 0, 0, 0};
+  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_TKwisa_parser___parser_nodes___ANode___init;
+  fra.me.line = 4648;
+  fra.me.meth = LOCATE_NEW_AEqExpr_parser___parser_prod___ASendExpr___init_asendexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___TKwisa();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwisa(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwisa(fra.me.REG[1]);
+  /* parser/parser_prod.nit:4648 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___AEqExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AEqExpr(fra.me.REG[1]);
+  parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AEqExpr(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwonce[73] = {
-  {(bigint) 2555 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TKwonce" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TKwonce < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TKwonce < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TKwonce < Token: superclass typecheck marker */},
-  {(bigint) 2555 /* 6: TKwonce < TKwonce: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_parser___parser_nodes___AEeExpr[95] = {
+  {(bigint) 4755 /* 0: Identity */},
+  {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AEeExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AEeExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AEeExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AEeExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3811 /* 7: AEeExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 4547 /* 8: AEeExpr < ABoolExpr: superclass typecheck marker */},
+  {(bigint) 4755 /* 9: AEeExpr < AEeExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -32966,7 +70220,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwonce[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TKwonce < Object: superclass init_table position */},
+  {(bigint) 4 /* 19: AEeExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -32982,7 +70236,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwonce[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -32995,139 +70251,217 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwonce[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TKwonce < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AEeExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AEeExpr___visit_all},
+  {(bigint) 3 /* 63: AEeExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TKwonce___parser_index},
-  {(bigint) 0 /* 70: TKwonce < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TKwonce___init_tk},
-  {(bigint) 3 /* 72: TKwonce < TKwonce: superclass init_table position */},
+  {(bigint) syntax___typing___ABoolExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 2 /* 72: AEeExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___mmbuilder___ABoolExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 1 /* 81: AEeExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___AEeExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {(bigint) 0 /* 89: AEeExpr < ABoolExpr: superclass init_table position */},
+  {(bigint) parser___parser_prod___AEeExpr___empty_init},
+  {(bigint) parser___parser_prod___AEeExpr___init_aeeexpr},
+  {(bigint) 5 /* 92: AEeExpr < AEeExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AEeExpr___n_expr},
+  {(bigint) parser___parser_nodes___AEeExpr___n_expr2},
 };
 /* 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__parser___parser_nodes___TKwonce(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AEeExpr::_parent */
+/* 3: Attribute AEeExpr::_location */
+/* 4: Attribute AEeExpr::_first_location */
+/* 5: Attribute AEeExpr::_last_location */
+/* 6: Attribute AEeExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute AEeExpr::_is_typed */
+/* 9: Attribute AEeExpr::_stype */
+/* 10: Attribute AEeExpr::_if_true_flow_ctx */
+/* 11: Attribute AEeExpr::_if_false_flow_ctx */
+/* 12: Attribute AEeExpr::_n_expr */
+/* 13: Attribute AEeExpr::_n_expr2 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AEeExpr[] = "init var of AEeExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___AEeExpr(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__parser___parser_nodes___TKwonce;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AEeExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TKwonce(void)
+val_t NEW_parser___parser_nodes___AEeExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwonce;
+  obj = alloc(sizeof(val_t) * 14);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AEeExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TKwonce(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AEeExpr[] = "check new AEeExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TKwonce;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AEeExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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___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);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TKwonce_parser___lexer___TKwonce___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AEeExpr_parser___parser_prod___AEeExpr___empty_init[] = "new AEeExpr parser_prod::AEeExpr::empty_init";
+val_t NEW_AEeExpr_parser___parser_prod___AEeExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 557;
-  fra.me.meth = LOCATE_NEW_TKwonce_parser___lexer___TKwonce___init_tk;
+  fra.me.line = 4947;
+  fra.me.meth = LOCATE_NEW_AEeExpr_parser___parser_prod___AEeExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TKwonce();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwonce(fra.me.REG[1]);
-  parser___lexer___TKwonce___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwonce(fra.me.REG[1]);
+  /* parser/parser_prod.nit:4947 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AEeExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AEeExpr(fra.me.REG[0]);
+  parser___parser_prod___AEeExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AEeExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-val_t NEW_TKwonce_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AEeExpr_parser___parser_prod___AEeExpr___init_aeeexpr[] = "new AEeExpr parser_prod::AEeExpr::init_aeeexpr";
+val_t NEW_AEeExpr_parser___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[4] = {0, 0, 0, 0};
+  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_TKwonce_parser___parser_nodes___ANode___init;
+  fra.me.line = 4949;
+  fra.me.meth = LOCATE_NEW_AEeExpr_parser___parser_prod___AEeExpr___init_aeeexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   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] = NEW_parser___parser_nodes___TKwonce();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwonce(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwonce(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:4949 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___AEeExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AEeExpr(fra.me.REG[2]);
+  parser___parser_prod___AEeExpr___init_aeeexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___AEeExpr(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[2];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwsuper[73] = {
-  {(bigint) 2519 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TKwsuper" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TKwsuper < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TKwsuper < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TKwsuper < Token: superclass typecheck marker */},
-  {(bigint) 2519 /* 6: TKwsuper < TKwsuper: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+static const char LOCATE_NEW_AEeExpr_parser___parser_nodes___ANode___init[] = "new AEeExpr parser_nodes::ANode::init";
+val_t NEW_AEeExpr_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AEeExpr_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AEeExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AEeExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AEeExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___ANeExpr[127] = {
+  {(bigint) 4911 /* 0: Identity */},
+  {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ANeExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ANeExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: ANeExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: ANeExpr < Prod: superclass typecheck marker */},
+  {(bigint) 4595 /* 6: ANeExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3811 /* 7: ANeExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 4819 /* 9: ANeExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 4831 /* 10: ANeExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 4859 /* 11: ANeExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 4887 /* 12: ANeExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 4911 /* 13: ANeExpr < ANeExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TKwsuper < Object: superclass init_table position */},
+  {(bigint) 8 /* 19: ANeExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -33143,7 +70477,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwsuper[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -33156,139 +70492,358 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwsuper[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TKwsuper < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___ANeExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___ANeExpr___visit_all},
+  {(bigint) 7 /* 63: ANeExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TKwsuper___parser_index},
-  {(bigint) 0 /* 70: TKwsuper < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TKwsuper___init_tk},
-  {(bigint) 3 /* 72: TKwsuper < TKwsuper: superclass init_table position */},
+  {(bigint) syntax___typing___ANeExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 6 /* 72: ANeExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
+  {(bigint) 2 /* 76: ANeExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 5 /* 81: ANeExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 4 /* 101: ANeExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
+  {(bigint) syntax___typing___AAbsSendExpr___get_property},
+  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
+  {(bigint) 3 /* 107: ANeExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) syntax___typing___AAbsSendExpr___prop},
+  {(bigint) syntax___typing___AAbsSendExpr___return_type},
+  {(bigint) syntax___typing___ANeExpr___name},
+  {(bigint) syntax___typing___ASendExpr___do_all_typing},
+  {(bigint) syntax___typing___ASendExpr___closure_defs},
+  {(bigint) parser___parser_prod___ASendExpr___empty_init},
+  {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
+  {(bigint) 1 /* 115: ANeExpr < ASendExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
+  {(bigint) parser___parser_prod___ABinopExpr___empty_init},
+  {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
+  {(bigint) 0 /* 120: ANeExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
+  {(bigint) syntax___typing___ASendExpr___after_typing},
+  {(bigint) syntax___typing___ANeExpr___try_to_isa},
+  {(bigint) parser___parser_prod___ANeExpr___empty_init},
+  {(bigint) parser___parser_prod___ANeExpr___init_aneexpr},
+  {(bigint) 9 /* 126: ANeExpr < ANeExpr: 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__parser___parser_nodes___TKwsuper(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute ANeExpr::_parent */
+/* 3: Attribute ANeExpr::_location */
+/* 4: Attribute ANeExpr::_first_location */
+/* 5: Attribute ANeExpr::_last_location */
+/* 6: Attribute ANeExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute ANeExpr::_is_typed */
+/* 9: Attribute ANeExpr::_stype */
+/* 10: Attribute ANeExpr::_if_true_flow_ctx */
+/* 11: Attribute ANeExpr::_if_false_flow_ctx */
+/* 12: Attribute ANeExpr::_prop_signature */
+/* 13: Attribute ANeExpr::_raw_arguments_cache */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 17: Attribute ANeExpr::_prop */
+/* 18: Attribute ANeExpr::_return_type */
+/* 19: Attribute ANeExpr::_n_expr */
+/* 20: Attribute ANeExpr::_n_closure_defs */
+/* 21: Attribute ANeExpr::_n_expr2 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ANeExpr[] = "init var of ANeExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwsuper;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ANeExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* syntax/typing.nit:1441 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:860 */
+  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TKwsuper(void)
+val_t NEW_parser___parser_nodes___ANeExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwsuper;
+  obj = alloc(sizeof(val_t) * 22);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ANeExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TKwsuper(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___ANeExpr[] = "check new ANeExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TKwsuper;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___ANeExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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___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___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);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TKwsuper_parser___lexer___TKwsuper___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ANeExpr_parser___parser_prod___ABinopExpr___empty_init[] = "new ANeExpr parser_prod::ABinopExpr::empty_init";
+val_t NEW_ANeExpr_parser___parser_prod___ABinopExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 570;
-  fra.me.meth = LOCATE_NEW_TKwsuper_parser___lexer___TKwsuper___init_tk;
+  fra.me.line = 4677;
+  fra.me.meth = LOCATE_NEW_ANeExpr_parser___parser_prod___ABinopExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:4677 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ANeExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ANeExpr(fra.me.REG[0]);
+  parser___parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ANeExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_ANeExpr_parser___parser_prod___ANeExpr___empty_init[] = "new ANeExpr parser_prod::ANeExpr::empty_init";
+val_t NEW_ANeExpr_parser___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 = 4992;
+  fra.me.meth = LOCATE_NEW_ANeExpr_parser___parser_prod___ANeExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:4992 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ANeExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ANeExpr(fra.me.REG[0]);
+  parser___parser_prod___ANeExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ANeExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_ANeExpr_parser___parser_prod___ANeExpr___init_aneexpr[] = "new ANeExpr parser_prod::ANeExpr::init_aneexpr";
+val_t NEW_ANeExpr_parser___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 = 4994;
+  fra.me.meth = LOCATE_NEW_ANeExpr_parser___parser_prod___ANeExpr___init_aneexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./parser//lexer.nit:570 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___TKwsuper();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwsuper(fra.me.REG[1]);
-  parser___lexer___TKwsuper___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwsuper(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:4994 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___ANeExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ANeExpr(fra.me.REG[2]);
+  parser___parser_prod___ANeExpr___init_aneexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___ANeExpr(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[2];
+}
+static const char LOCATE_NEW_ANeExpr_parser___parser_nodes___ANode___init[] = "new ANeExpr parser_nodes::ANode::init";
+val_t NEW_ANeExpr_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_ANeExpr_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ANeExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ANeExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ANeExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_ANeExpr_parser___parser_prod___ASendExpr___empty_init[] = "new ANeExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_ANeExpr_parser___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 = 4646;
+  fra.me.meth = LOCATE_NEW_ANeExpr_parser___parser_prod___ASendExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:4646 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ANeExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ANeExpr(fra.me.REG[0]);
+  parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ANeExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_ANeExpr_parser___parser_prod___ABinopExpr___init_abinopexpr[] = "new ANeExpr parser_prod::ABinopExpr::init_abinopexpr";
+val_t NEW_ANeExpr_parser___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 = 4679;
+  fra.me.meth = LOCATE_NEW_ANeExpr_parser___parser_prod___ABinopExpr___init_abinopexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  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:4679 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___ANeExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ANeExpr(fra.me.REG[2]);
+  parser___parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___ANeExpr(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
 }
-val_t NEW_TKwsuper_parser___parser_nodes___ANode___init(val_t p0){
+static const char LOCATE_NEW_ANeExpr_parser___parser_prod___ASendExpr___init_asendexpr[] = "new ANeExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_ANeExpr_parser___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[4] = {0, 0, 0, 0};
+  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_TKwsuper_parser___parser_nodes___ANode___init;
+  fra.me.line = 4648;
+  fra.me.meth = LOCATE_NEW_ANeExpr_parser___parser_prod___ASendExpr___init_asendexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___TKwsuper();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwsuper(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwsuper(fra.me.REG[1]);
+  /* parser/parser_prod.nit:4648 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___ANeExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ANeExpr(fra.me.REG[1]);
+  parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ANeExpr(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwself[73] = {
-  {(bigint) 2527 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TKwself" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TKwself < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TKwself < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TKwself < Token: superclass typecheck marker */},
-  {(bigint) 2527 /* 6: TKwself < TKwself: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_parser___parser_nodes___ALtExpr[125] = {
+  {(bigint) 4919 /* 0: Identity */},
+  {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ALtExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ALtExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: ALtExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: ALtExpr < Prod: superclass typecheck marker */},
+  {(bigint) 4595 /* 6: ALtExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3811 /* 7: ALtExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 4819 /* 9: ALtExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 4831 /* 10: ALtExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 4859 /* 11: ALtExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 4887 /* 12: ALtExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 4919 /* 13: ALtExpr < ALtExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TKwself < Object: superclass init_table position */},
+  {(bigint) 8 /* 19: ALtExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -33304,7 +70859,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwself[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -33317,139 +70874,356 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwself[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TKwself < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___ALtExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___ALtExpr___visit_all},
+  {(bigint) 7 /* 63: ALtExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TKwself___parser_index},
-  {(bigint) 0 /* 70: TKwself < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TKwself___init_tk},
-  {(bigint) 3 /* 72: TKwself < TKwself: superclass init_table position */},
+  {(bigint) syntax___typing___ASendExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 6 /* 72: ALtExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
+  {(bigint) 2 /* 76: ALtExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 5 /* 81: ALtExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 4 /* 101: ALtExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
+  {(bigint) syntax___typing___AAbsSendExpr___get_property},
+  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
+  {(bigint) 3 /* 107: ALtExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) syntax___typing___AAbsSendExpr___prop},
+  {(bigint) syntax___typing___AAbsSendExpr___return_type},
+  {(bigint) syntax___typing___ALtExpr___name},
+  {(bigint) syntax___typing___ASendExpr___do_all_typing},
+  {(bigint) syntax___typing___ASendExpr___closure_defs},
+  {(bigint) parser___parser_prod___ASendExpr___empty_init},
+  {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
+  {(bigint) 1 /* 115: ALtExpr < ASendExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
+  {(bigint) parser___parser_prod___ABinopExpr___empty_init},
+  {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
+  {(bigint) 0 /* 120: ALtExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
+  {(bigint) parser___parser_prod___ALtExpr___empty_init},
+  {(bigint) parser___parser_prod___ALtExpr___init_altexpr},
+  {(bigint) 9 /* 124: ALtExpr < ALtExpr: 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__parser___parser_nodes___TKwself(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute ALtExpr::_parent */
+/* 3: Attribute ALtExpr::_location */
+/* 4: Attribute ALtExpr::_first_location */
+/* 5: Attribute ALtExpr::_last_location */
+/* 6: Attribute ALtExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute ALtExpr::_is_typed */
+/* 9: Attribute ALtExpr::_stype */
+/* 10: Attribute ALtExpr::_if_true_flow_ctx */
+/* 11: Attribute ALtExpr::_if_false_flow_ctx */
+/* 12: Attribute ALtExpr::_prop_signature */
+/* 13: Attribute ALtExpr::_raw_arguments_cache */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 17: Attribute ALtExpr::_prop */
+/* 18: Attribute ALtExpr::_return_type */
+/* 19: Attribute ALtExpr::_n_expr */
+/* 20: Attribute ALtExpr::_n_closure_defs */
+/* 21: Attribute ALtExpr::_n_expr2 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ALtExpr[] = "init var of ALtExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwself;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ALtExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* syntax/typing.nit:1441 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:860 */
+  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TKwself(void)
+val_t NEW_parser___parser_nodes___ALtExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwself;
+  obj = alloc(sizeof(val_t) * 22);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ALtExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TKwself(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___ALtExpr[] = "check new ALtExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TKwself;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___ALtExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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___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___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);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TKwself_parser___lexer___TKwself___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ALtExpr_parser___parser_prod___ABinopExpr___empty_init[] = "new ALtExpr parser_prod::ABinopExpr::empty_init";
+val_t NEW_ALtExpr_parser___parser_prod___ABinopExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 583;
-  fra.me.meth = LOCATE_NEW_TKwself_parser___lexer___TKwself___init_tk;
+  fra.me.line = 4677;
+  fra.me.meth = LOCATE_NEW_ALtExpr_parser___parser_prod___ABinopExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:4677 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ALtExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ALtExpr(fra.me.REG[0]);
+  parser___parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ALtExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_ALtExpr_parser___parser_prod___ALtExpr___empty_init[] = "new ALtExpr parser_prod::ALtExpr::empty_init";
+val_t NEW_ALtExpr_parser___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 = 5037;
+  fra.me.meth = LOCATE_NEW_ALtExpr_parser___parser_prod___ALtExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:5037 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ALtExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ALtExpr(fra.me.REG[0]);
+  parser___parser_prod___ALtExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ALtExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_ALtExpr_parser___parser_prod___ALtExpr___init_altexpr[] = "new ALtExpr parser_prod::ALtExpr::init_altexpr";
+val_t NEW_ALtExpr_parser___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 = 5039;
+  fra.me.meth = LOCATE_NEW_ALtExpr_parser___parser_prod___ALtExpr___init_altexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./parser//lexer.nit:583 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___TKwself();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwself(fra.me.REG[1]);
-  parser___lexer___TKwself___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwself(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:5039 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___ALtExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ALtExpr(fra.me.REG[2]);
+  parser___parser_prod___ALtExpr___init_altexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___ALtExpr(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+static const char LOCATE_NEW_ALtExpr_parser___parser_nodes___ANode___init[] = "new ALtExpr parser_nodes::ANode::init";
+val_t NEW_ALtExpr_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_ALtExpr_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ALtExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ALtExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ALtExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_ALtExpr_parser___parser_prod___ASendExpr___empty_init[] = "new ALtExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_ALtExpr_parser___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 = 4646;
+  fra.me.meth = LOCATE_NEW_ALtExpr_parser___parser_prod___ASendExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:4646 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ALtExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ALtExpr(fra.me.REG[0]);
+  parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ALtExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_ALtExpr_parser___parser_prod___ABinopExpr___init_abinopexpr[] = "new ALtExpr parser_prod::ABinopExpr::init_abinopexpr";
+val_t NEW_ALtExpr_parser___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 = 4679;
+  fra.me.meth = LOCATE_NEW_ALtExpr_parser___parser_prod___ABinopExpr___init_abinopexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  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:4679 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___ALtExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ALtExpr(fra.me.REG[2]);
+  parser___parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___ALtExpr(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[2];
 }
-val_t NEW_TKwself_parser___parser_nodes___ANode___init(val_t p0){
+static const char LOCATE_NEW_ALtExpr_parser___parser_prod___ASendExpr___init_asendexpr[] = "new ALtExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_ALtExpr_parser___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[4] = {0, 0, 0, 0};
+  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_TKwself_parser___parser_nodes___ANode___init;
+  fra.me.line = 4648;
+  fra.me.meth = LOCATE_NEW_ALtExpr_parser___parser_prod___ASendExpr___init_asendexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___TKwself();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwself(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwself(fra.me.REG[1]);
+  /* parser/parser_prod.nit:4648 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___ALtExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ALtExpr(fra.me.REG[1]);
+  parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ALtExpr(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwtrue[73] = {
-  {(bigint) 2511 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TKwtrue" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TKwtrue < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TKwtrue < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TKwtrue < Token: superclass typecheck marker */},
-  {(bigint) 2511 /* 6: TKwtrue < TKwtrue: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_parser___parser_nodes___ALeExpr[125] = {
+  {(bigint) 4927 /* 0: Identity */},
+  {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ALeExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ALeExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: ALeExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: ALeExpr < Prod: superclass typecheck marker */},
+  {(bigint) 4595 /* 6: ALeExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3811 /* 7: ALeExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 4819 /* 9: ALeExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 4831 /* 10: ALeExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 4859 /* 11: ALeExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 4887 /* 12: ALeExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 4927 /* 13: ALeExpr < ALeExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TKwtrue < Object: superclass init_table position */},
+  {(bigint) 8 /* 19: ALeExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -33465,7 +71239,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwtrue[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -33478,300 +71254,356 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwtrue[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TKwtrue < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___ALeExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___ALeExpr___visit_all},
+  {(bigint) 7 /* 63: ALeExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TKwtrue___parser_index},
-  {(bigint) 0 /* 70: TKwtrue < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TKwtrue___init_tk},
-  {(bigint) 3 /* 72: TKwtrue < TKwtrue: superclass init_table position */},
+  {(bigint) syntax___typing___ASendExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 6 /* 72: ALeExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
+  {(bigint) 2 /* 76: ALeExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 5 /* 81: ALeExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 4 /* 101: ALeExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
+  {(bigint) syntax___typing___AAbsSendExpr___get_property},
+  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
+  {(bigint) 3 /* 107: ALeExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) syntax___typing___AAbsSendExpr___prop},
+  {(bigint) syntax___typing___AAbsSendExpr___return_type},
+  {(bigint) syntax___typing___ALeExpr___name},
+  {(bigint) syntax___typing___ASendExpr___do_all_typing},
+  {(bigint) syntax___typing___ASendExpr___closure_defs},
+  {(bigint) parser___parser_prod___ASendExpr___empty_init},
+  {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
+  {(bigint) 1 /* 115: ALeExpr < ASendExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
+  {(bigint) parser___parser_prod___ABinopExpr___empty_init},
+  {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
+  {(bigint) 0 /* 120: ALeExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
+  {(bigint) parser___parser_prod___ALeExpr___empty_init},
+  {(bigint) parser___parser_prod___ALeExpr___init_aleexpr},
+  {(bigint) 9 /* 124: ALeExpr < ALeExpr: 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__parser___parser_nodes___TKwtrue(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute ALeExpr::_parent */
+/* 3: Attribute ALeExpr::_location */
+/* 4: Attribute ALeExpr::_first_location */
+/* 5: Attribute ALeExpr::_last_location */
+/* 6: Attribute ALeExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute ALeExpr::_is_typed */
+/* 9: Attribute ALeExpr::_stype */
+/* 10: Attribute ALeExpr::_if_true_flow_ctx */
+/* 11: Attribute ALeExpr::_if_false_flow_ctx */
+/* 12: Attribute ALeExpr::_prop_signature */
+/* 13: Attribute ALeExpr::_raw_arguments_cache */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 17: Attribute ALeExpr::_prop */
+/* 18: Attribute ALeExpr::_return_type */
+/* 19: Attribute ALeExpr::_n_expr */
+/* 20: Attribute ALeExpr::_n_closure_defs */
+/* 21: Attribute ALeExpr::_n_expr2 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ALeExpr[] = "init var of ALeExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwtrue;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ALeExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* syntax/typing.nit:1441 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:860 */
+  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TKwtrue(void)
+val_t NEW_parser___parser_nodes___ALeExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwtrue;
+  obj = alloc(sizeof(val_t) * 22);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ALeExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TKwtrue(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___ALeExpr[] = "check new ALeExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TKwtrue;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___ALeExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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___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___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);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TKwtrue_parser___lexer___TKwtrue___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ALeExpr_parser___parser_prod___ABinopExpr___empty_init[] = "new ALeExpr parser_prod::ABinopExpr::empty_init";
+val_t NEW_ALeExpr_parser___parser_prod___ABinopExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 596;
-  fra.me.meth = LOCATE_NEW_TKwtrue_parser___lexer___TKwtrue___init_tk;
+  fra.me.line = 4677;
+  fra.me.meth = LOCATE_NEW_ALeExpr_parser___parser_prod___ABinopExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TKwtrue();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwtrue(fra.me.REG[1]);
-  parser___lexer___TKwtrue___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwtrue(fra.me.REG[1]);
+  /* parser/parser_prod.nit:4677 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ALeExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ALeExpr(fra.me.REG[0]);
+  parser___parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ALeExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-val_t NEW_TKwtrue_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ALeExpr_parser___parser_prod___ALeExpr___empty_init[] = "new ALeExpr parser_prod::ALeExpr::empty_init";
+val_t NEW_ALeExpr_parser___parser_prod___ALeExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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_TKwtrue_parser___parser_nodes___ANode___init;
+  fra.me.line = 5082;
+  fra.me.meth = LOCATE_NEW_ALeExpr_parser___parser_prod___ALeExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:5082 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ALeExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ALeExpr(fra.me.REG[0]);
+  parser___parser_prod___ALeExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ALeExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_ALeExpr_parser___parser_prod___ALeExpr___init_aleexpr[] = "new ALeExpr parser_prod::ALeExpr::init_aleexpr";
+val_t NEW_ALeExpr_parser___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 = 5084;
+  fra.me.meth = LOCATE_NEW_ALeExpr_parser___parser_prod___ALeExpr___init_aleexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   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] = NEW_parser___parser_nodes___TKwtrue();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwtrue(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwtrue(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:5084 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___ALeExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ALeExpr(fra.me.REG[2]);
+  parser___parser_prod___ALeExpr___init_aleexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___ALeExpr(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[2];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwfalse[73] = {
-  {(bigint) 2635 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TKwfalse" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TKwfalse < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TKwfalse < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TKwfalse < Token: superclass typecheck marker */},
-  {(bigint) 2635 /* 6: 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 :( */,
-  {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TKwfalse < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
-  {(bigint) standard___file___Object___printn},
-  {(bigint) standard___file___Object___print},
-  {(bigint) standard___file___Object___getc},
-  {(bigint) standard___file___Object___gets},
-  {(bigint) standard___file___Object___stdin},
-  {(bigint) standard___file___Object___stdout},
-  {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
-  {(bigint) standard___string___Object___native_class_name},
-  {(bigint) standard___string___Object___class_name},
-  {(bigint) standard___string___Object___inspect},
-  {(bigint) standard___string___Object___inspect_head},
-  {(bigint) standard___string___Object___args},
-  {(bigint) standard___hash___Object___hash},
-  {(bigint) standard___math___Object___atan2},
-  {(bigint) standard___math___Object___pi},
-  {(bigint) standard___math___Object___srand_from},
-  {(bigint) standard___math___Object___srand},
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TKwfalse < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TKwfalse___parser_index},
-  {(bigint) 0 /* 70: TKwfalse < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TKwfalse___init_tk},
-  {(bigint) 3 /* 72: 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__parser___parser_nodes___TKwfalse(val_t p0){
+static const char LOCATE_NEW_ALeExpr_parser___parser_nodes___ANode___init[] = "new ALeExpr parser_nodes::ANode::init";
+val_t NEW_ALeExpr_parser___parser_nodes___ANode___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_INIT_ATTRIBUTES__parser___parser_nodes___TKwfalse;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_ALeExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ALeExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ALeExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ALeExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-val_t NEW_parser___parser_nodes___TKwfalse(void)
-{
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwfalse;
-  obj[1].object_id = object_id_counter;
-  object_id_counter = object_id_counter + 1;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_parser___parser_nodes___TKwfalse(val_t p0){
+static const char LOCATE_NEW_ALeExpr_parser___parser_prod___ASendExpr___empty_init[] = "new ALeExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_ALeExpr_parser___parser_prod___ASendExpr___empty_init(void){
   struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
   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_CHECKNEW_parser___parser_nodes___TKwfalse;
+  fra.me.line = 4646;
+  fra.me.meth = LOCATE_NEW_ALeExpr_parser___parser_prod___ASendExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
-  }
+  /* parser/parser_prod.nit:4646 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ALeExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ALeExpr(fra.me.REG[0]);
+  parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ALeExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-val_t NEW_TKwfalse_parser___lexer___TKwfalse___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ALeExpr_parser___parser_prod___ABinopExpr___init_abinopexpr[] = "new ALeExpr parser_prod::ABinopExpr::init_abinopexpr";
+val_t NEW_ALeExpr_parser___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[4] = {0, 0, 0, 0};
+  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 = 609;
-  fra.me.meth = LOCATE_NEW_TKwfalse_parser___lexer___TKwfalse___init_tk;
+  fra.me.line = 4679;
+  fra.me.meth = LOCATE_NEW_ALeExpr_parser___parser_prod___ABinopExpr___init_abinopexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./parser//lexer.nit:609 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___TKwfalse();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwfalse(fra.me.REG[1]);
-  parser___lexer___TKwfalse___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwfalse(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:4679 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___ALeExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ALeExpr(fra.me.REG[2]);
+  parser___parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___ALeExpr(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[2];
 }
-val_t NEW_TKwfalse_parser___parser_nodes___ANode___init(val_t p0){
+static const char LOCATE_NEW_ALeExpr_parser___parser_prod___ASendExpr___init_asendexpr[] = "new ALeExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_ALeExpr_parser___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[4] = {0, 0, 0, 0};
+  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_TKwfalse_parser___parser_nodes___ANode___init;
+  fra.me.line = 4648;
+  fra.me.meth = LOCATE_NEW_ALeExpr_parser___parser_prod___ASendExpr___init_asendexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___TKwfalse();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwfalse(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwfalse(fra.me.REG[1]);
+  /* parser/parser_prod.nit:4648 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___ALeExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ALeExpr(fra.me.REG[1]);
+  parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ALeExpr(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwnull[73] = {
-  {(bigint) 2563 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TKwnull" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TKwnull < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TKwnull < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TKwnull < Token: superclass typecheck marker */},
-  {(bigint) 2563 /* 6: TKwnull < TKwnull: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_parser___parser_nodes___ALlExpr[125] = {
+  {(bigint) 4923 /* 0: Identity */},
+  {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ALlExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ALlExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: ALlExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: ALlExpr < Prod: superclass typecheck marker */},
+  {(bigint) 4595 /* 6: ALlExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3811 /* 7: ALlExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 4819 /* 9: ALlExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 4831 /* 10: ALlExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 4859 /* 11: ALlExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 4887 /* 12: ALlExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 4923 /* 13: ALlExpr < ALlExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TKwnull < Object: superclass init_table position */},
+  {(bigint) 8 /* 19: ALlExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -33787,7 +71619,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwnull[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -33800,300 +71634,356 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwnull[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TKwnull < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___ALlExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___ALlExpr___visit_all},
+  {(bigint) 7 /* 63: ALlExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TKwnull___parser_index},
-  {(bigint) 0 /* 70: TKwnull < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TKwnull___init_tk},
-  {(bigint) 3 /* 72: TKwnull < TKwnull: superclass init_table position */},
+  {(bigint) syntax___typing___ASendExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 6 /* 72: ALlExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
+  {(bigint) 2 /* 76: ALlExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 5 /* 81: ALlExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 4 /* 101: ALlExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
+  {(bigint) syntax___typing___AAbsSendExpr___get_property},
+  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
+  {(bigint) 3 /* 107: ALlExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) syntax___typing___AAbsSendExpr___prop},
+  {(bigint) syntax___typing___AAbsSendExpr___return_type},
+  {(bigint) syntax___typing___ALlExpr___name},
+  {(bigint) syntax___typing___ASendExpr___do_all_typing},
+  {(bigint) syntax___typing___ASendExpr___closure_defs},
+  {(bigint) parser___parser_prod___ASendExpr___empty_init},
+  {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
+  {(bigint) 1 /* 115: ALlExpr < ASendExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
+  {(bigint) parser___parser_prod___ABinopExpr___empty_init},
+  {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
+  {(bigint) 0 /* 120: ALlExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
+  {(bigint) parser___parser_prod___ALlExpr___empty_init},
+  {(bigint) parser___parser_prod___ALlExpr___init_allexpr},
+  {(bigint) 9 /* 124: ALlExpr < ALlExpr: 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__parser___parser_nodes___TKwnull(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute ALlExpr::_parent */
+/* 3: Attribute ALlExpr::_location */
+/* 4: Attribute ALlExpr::_first_location */
+/* 5: Attribute ALlExpr::_last_location */
+/* 6: Attribute ALlExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute ALlExpr::_is_typed */
+/* 9: Attribute ALlExpr::_stype */
+/* 10: Attribute ALlExpr::_if_true_flow_ctx */
+/* 11: Attribute ALlExpr::_if_false_flow_ctx */
+/* 12: Attribute ALlExpr::_prop_signature */
+/* 13: Attribute ALlExpr::_raw_arguments_cache */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 17: Attribute ALlExpr::_prop */
+/* 18: Attribute ALlExpr::_return_type */
+/* 19: Attribute ALlExpr::_n_expr */
+/* 20: Attribute ALlExpr::_n_closure_defs */
+/* 21: Attribute ALlExpr::_n_expr2 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ALlExpr[] = "init var of ALlExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwnull;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ALlExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* syntax/typing.nit:1441 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:860 */
+  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TKwnull(void)
+val_t NEW_parser___parser_nodes___ALlExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwnull;
+  obj = alloc(sizeof(val_t) * 22);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ALlExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TKwnull(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___ALlExpr[] = "check new ALlExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TKwnull;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___ALlExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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___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___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);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TKwnull_parser___lexer___TKwnull___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ALlExpr_parser___parser_prod___ABinopExpr___empty_init[] = "new ALlExpr parser_prod::ABinopExpr::empty_init";
+val_t NEW_ALlExpr_parser___parser_prod___ABinopExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 622;
-  fra.me.meth = LOCATE_NEW_TKwnull_parser___lexer___TKwnull___init_tk;
+  fra.me.line = 4677;
+  fra.me.meth = LOCATE_NEW_ALlExpr_parser___parser_prod___ABinopExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TKwnull();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwnull(fra.me.REG[1]);
-  parser___lexer___TKwnull___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwnull(fra.me.REG[1]);
+  /* parser/parser_prod.nit:4677 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ALlExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ALlExpr(fra.me.REG[0]);
+  parser___parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ALlExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-val_t NEW_TKwnull_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ALlExpr_parser___parser_prod___ALlExpr___empty_init[] = "new ALlExpr parser_prod::ALlExpr::empty_init";
+val_t NEW_ALlExpr_parser___parser_prod___ALlExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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_TKwnull_parser___parser_nodes___ANode___init;
+  fra.me.line = 5127;
+  fra.me.meth = LOCATE_NEW_ALlExpr_parser___parser_prod___ALlExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:5127 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ALlExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ALlExpr(fra.me.REG[0]);
+  parser___parser_prod___ALlExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ALlExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_ALlExpr_parser___parser_prod___ALlExpr___init_allexpr[] = "new ALlExpr parser_prod::ALlExpr::init_allexpr";
+val_t NEW_ALlExpr_parser___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 = 5129;
+  fra.me.meth = LOCATE_NEW_ALlExpr_parser___parser_prod___ALlExpr___init_allexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   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] = NEW_parser___parser_nodes___TKwnull();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwnull(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwnull(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:5129 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___ALlExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ALlExpr(fra.me.REG[2]);
+  parser___parser_prod___ALlExpr___init_allexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___ALlExpr(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[2];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwas[73] = {
-  {(bigint) 2675 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TKwas" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TKwas < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TKwas < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TKwas < Token: superclass typecheck marker */},
-  {(bigint) 2675 /* 6: 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 :( */,
-  {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TKwas < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
-  {(bigint) standard___file___Object___printn},
-  {(bigint) standard___file___Object___print},
-  {(bigint) standard___file___Object___getc},
-  {(bigint) standard___file___Object___gets},
-  {(bigint) standard___file___Object___stdin},
-  {(bigint) standard___file___Object___stdout},
-  {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
-  {(bigint) standard___string___Object___native_class_name},
-  {(bigint) standard___string___Object___class_name},
-  {(bigint) standard___string___Object___inspect},
-  {(bigint) standard___string___Object___inspect_head},
-  {(bigint) standard___string___Object___args},
-  {(bigint) standard___hash___Object___hash},
-  {(bigint) standard___math___Object___atan2},
-  {(bigint) standard___math___Object___pi},
-  {(bigint) standard___math___Object___srand_from},
-  {(bigint) standard___math___Object___srand},
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TKwas < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TKwas___parser_index},
-  {(bigint) 0 /* 70: TKwas < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TKwas___init_tk},
-  {(bigint) 3 /* 72: 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__parser___parser_nodes___TKwas(val_t p0){
+static const char LOCATE_NEW_ALlExpr_parser___parser_nodes___ANode___init[] = "new ALlExpr parser_nodes::ANode::init";
+val_t NEW_ALlExpr_parser___parser_nodes___ANode___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_INIT_ATTRIBUTES__parser___parser_nodes___TKwas;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_ALlExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ALlExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ALlExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ALlExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-val_t NEW_parser___parser_nodes___TKwas(void)
-{
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwas;
-  obj[1].object_id = object_id_counter;
-  object_id_counter = object_id_counter + 1;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_parser___parser_nodes___TKwas(val_t p0){
+static const char LOCATE_NEW_ALlExpr_parser___parser_prod___ASendExpr___empty_init[] = "new ALlExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_ALlExpr_parser___parser_prod___ASendExpr___empty_init(void){
   struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
   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_CHECKNEW_parser___parser_nodes___TKwas;
+  fra.me.line = 4646;
+  fra.me.meth = LOCATE_NEW_ALlExpr_parser___parser_prod___ASendExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
-  }
+  /* parser/parser_prod.nit:4646 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ALlExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ALlExpr(fra.me.REG[0]);
+  parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ALlExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-val_t NEW_TKwas_parser___lexer___TKwas___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ALlExpr_parser___parser_prod___ABinopExpr___init_abinopexpr[] = "new ALlExpr parser_prod::ABinopExpr::init_abinopexpr";
+val_t NEW_ALlExpr_parser___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[4] = {0, 0, 0, 0};
+  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 = 635;
-  fra.me.meth = LOCATE_NEW_TKwas_parser___lexer___TKwas___init_tk;
+  fra.me.line = 4679;
+  fra.me.meth = LOCATE_NEW_ALlExpr_parser___parser_prod___ABinopExpr___init_abinopexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./parser//lexer.nit:635 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___TKwas();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwas(fra.me.REG[1]);
-  parser___lexer___TKwas___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwas(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:4679 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___ALlExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ALlExpr(fra.me.REG[2]);
+  parser___parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___ALlExpr(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[2];
 }
-val_t NEW_TKwas_parser___parser_nodes___ANode___init(val_t p0){
+static const char LOCATE_NEW_ALlExpr_parser___parser_prod___ASendExpr___init_asendexpr[] = "new ALlExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_ALlExpr_parser___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[4] = {0, 0, 0, 0};
+  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_TKwas_parser___parser_nodes___ANode___init;
+  fra.me.line = 4648;
+  fra.me.meth = LOCATE_NEW_ALlExpr_parser___parser_prod___ASendExpr___init_asendexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___TKwas();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwas(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwas(fra.me.REG[1]);
+  /* parser/parser_prod.nit:4648 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___ALlExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ALlExpr(fra.me.REG[1]);
+  parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ALlExpr(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwnullable[73] = {
-  {(bigint) 2559 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TKwnullable" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TKwnullable < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TKwnullable < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TKwnullable < Token: superclass typecheck marker */},
-  {(bigint) 2559 /* 6: TKwnullable < TKwnullable: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_parser___parser_nodes___AGtExpr[125] = {
+  {(bigint) 4931 /* 0: Identity */},
+  {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AGtExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AGtExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AGtExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AGtExpr < Prod: superclass typecheck marker */},
+  {(bigint) 4595 /* 6: AGtExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3811 /* 7: AGtExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 4819 /* 9: AGtExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 4831 /* 10: AGtExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 4859 /* 11: AGtExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 4887 /* 12: AGtExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 4931 /* 13: AGtExpr < AGtExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TKwnullable < Object: superclass init_table position */},
+  {(bigint) 8 /* 19: AGtExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -34109,7 +71999,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwnullable[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -34122,300 +72014,356 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwnullable[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TKwnullable < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AGtExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AGtExpr___visit_all},
+  {(bigint) 7 /* 63: AGtExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TKwnullable___parser_index},
-  {(bigint) 0 /* 70: TKwnullable < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TKwnullable___init_tk},
-  {(bigint) 3 /* 72: TKwnullable < TKwnullable: superclass init_table position */},
+  {(bigint) syntax___typing___ASendExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 6 /* 72: AGtExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
+  {(bigint) 2 /* 76: AGtExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 5 /* 81: AGtExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 4 /* 101: AGtExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
+  {(bigint) syntax___typing___AAbsSendExpr___get_property},
+  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
+  {(bigint) 3 /* 107: AGtExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) syntax___typing___AAbsSendExpr___prop},
+  {(bigint) syntax___typing___AAbsSendExpr___return_type},
+  {(bigint) syntax___typing___AGtExpr___name},
+  {(bigint) syntax___typing___ASendExpr___do_all_typing},
+  {(bigint) syntax___typing___ASendExpr___closure_defs},
+  {(bigint) parser___parser_prod___ASendExpr___empty_init},
+  {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
+  {(bigint) 1 /* 115: AGtExpr < ASendExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
+  {(bigint) parser___parser_prod___ABinopExpr___empty_init},
+  {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
+  {(bigint) 0 /* 120: AGtExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
+  {(bigint) parser___parser_prod___AGtExpr___empty_init},
+  {(bigint) parser___parser_prod___AGtExpr___init_agtexpr},
+  {(bigint) 9 /* 124: AGtExpr < AGtExpr: 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__parser___parser_nodes___TKwnullable(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AGtExpr::_parent */
+/* 3: Attribute AGtExpr::_location */
+/* 4: Attribute AGtExpr::_first_location */
+/* 5: Attribute AGtExpr::_last_location */
+/* 6: Attribute AGtExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute AGtExpr::_is_typed */
+/* 9: Attribute AGtExpr::_stype */
+/* 10: Attribute AGtExpr::_if_true_flow_ctx */
+/* 11: Attribute AGtExpr::_if_false_flow_ctx */
+/* 12: Attribute AGtExpr::_prop_signature */
+/* 13: Attribute AGtExpr::_raw_arguments_cache */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 17: Attribute AGtExpr::_prop */
+/* 18: Attribute AGtExpr::_return_type */
+/* 19: Attribute AGtExpr::_n_expr */
+/* 20: Attribute AGtExpr::_n_closure_defs */
+/* 21: Attribute AGtExpr::_n_expr2 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AGtExpr[] = "init var of AGtExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwnullable;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AGtExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* syntax/typing.nit:1441 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:860 */
+  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TKwnullable(void)
+val_t NEW_parser___parser_nodes___AGtExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwnullable;
+  obj = alloc(sizeof(val_t) * 22);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AGtExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TKwnullable(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AGtExpr[] = "check new AGtExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TKwnullable;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AGtExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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___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___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);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TKwnullable_parser___lexer___TKwnullable___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AGtExpr_parser___parser_prod___ABinopExpr___empty_init[] = "new AGtExpr parser_prod::ABinopExpr::empty_init";
+val_t NEW_AGtExpr_parser___parser_prod___ABinopExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 648;
-  fra.me.meth = LOCATE_NEW_TKwnullable_parser___lexer___TKwnullable___init_tk;
+  fra.me.line = 4677;
+  fra.me.meth = LOCATE_NEW_AGtExpr_parser___parser_prod___ABinopExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TKwnullable();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwnullable(fra.me.REG[1]);
-  parser___lexer___TKwnullable___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwnullable(fra.me.REG[1]);
+  /* parser/parser_prod.nit:4677 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AGtExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AGtExpr(fra.me.REG[0]);
+  parser___parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AGtExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-val_t NEW_TKwnullable_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AGtExpr_parser___parser_prod___AGtExpr___empty_init[] = "new AGtExpr parser_prod::AGtExpr::empty_init";
+val_t NEW_AGtExpr_parser___parser_prod___AGtExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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_TKwnullable_parser___parser_nodes___ANode___init;
+  fra.me.line = 5172;
+  fra.me.meth = LOCATE_NEW_AGtExpr_parser___parser_prod___AGtExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:5172 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AGtExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AGtExpr(fra.me.REG[0]);
+  parser___parser_prod___AGtExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AGtExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AGtExpr_parser___parser_prod___AGtExpr___init_agtexpr[] = "new AGtExpr parser_prod::AGtExpr::init_agtexpr";
+val_t NEW_AGtExpr_parser___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 = 5174;
+  fra.me.meth = LOCATE_NEW_AGtExpr_parser___parser_prod___AGtExpr___init_agtexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   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] = NEW_parser___parser_nodes___TKwnullable();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwnullable(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwnullable(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:5174 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___AGtExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AGtExpr(fra.me.REG[2]);
+  parser___parser_prod___AGtExpr___init_agtexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___AGtExpr(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[2];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwisset[73] = {
-  {(bigint) 2591 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TKwisset" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TKwisset < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TKwisset < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TKwisset < Token: superclass typecheck marker */},
-  {(bigint) 2591 /* 6: 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 :( */,
-  {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TKwisset < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
-  {(bigint) standard___file___Object___printn},
-  {(bigint) standard___file___Object___print},
-  {(bigint) standard___file___Object___getc},
-  {(bigint) standard___file___Object___gets},
-  {(bigint) standard___file___Object___stdin},
-  {(bigint) standard___file___Object___stdout},
-  {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
-  {(bigint) standard___string___Object___native_class_name},
-  {(bigint) standard___string___Object___class_name},
-  {(bigint) standard___string___Object___inspect},
-  {(bigint) standard___string___Object___inspect_head},
-  {(bigint) standard___string___Object___args},
-  {(bigint) standard___hash___Object___hash},
-  {(bigint) standard___math___Object___atan2},
-  {(bigint) standard___math___Object___pi},
-  {(bigint) standard___math___Object___srand_from},
-  {(bigint) standard___math___Object___srand},
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TKwisset < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TKwisset___parser_index},
-  {(bigint) 0 /* 70: TKwisset < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TKwisset___init_tk},
-  {(bigint) 3 /* 72: 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__parser___parser_nodes___TKwisset(val_t p0){
+static const char LOCATE_NEW_AGtExpr_parser___parser_nodes___ANode___init[] = "new AGtExpr parser_nodes::ANode::init";
+val_t NEW_AGtExpr_parser___parser_nodes___ANode___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_INIT_ATTRIBUTES__parser___parser_nodes___TKwisset;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_AGtExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AGtExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AGtExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AGtExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-val_t NEW_parser___parser_nodes___TKwisset(void)
-{
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwisset;
-  obj[1].object_id = object_id_counter;
-  object_id_counter = object_id_counter + 1;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_parser___parser_nodes___TKwisset(val_t p0){
+static const char LOCATE_NEW_AGtExpr_parser___parser_prod___ASendExpr___empty_init[] = "new AGtExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_AGtExpr_parser___parser_prod___ASendExpr___empty_init(void){
   struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
   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_CHECKNEW_parser___parser_nodes___TKwisset;
+  fra.me.line = 4646;
+  fra.me.meth = LOCATE_NEW_AGtExpr_parser___parser_prod___ASendExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
-  }
+  /* parser/parser_prod.nit:4646 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AGtExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AGtExpr(fra.me.REG[0]);
+  parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AGtExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-val_t NEW_TKwisset_parser___lexer___TKwisset___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AGtExpr_parser___parser_prod___ABinopExpr___init_abinopexpr[] = "new AGtExpr parser_prod::ABinopExpr::init_abinopexpr";
+val_t NEW_AGtExpr_parser___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[4] = {0, 0, 0, 0};
+  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 = 661;
-  fra.me.meth = LOCATE_NEW_TKwisset_parser___lexer___TKwisset___init_tk;
+  fra.me.line = 4679;
+  fra.me.meth = LOCATE_NEW_AGtExpr_parser___parser_prod___ABinopExpr___init_abinopexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./parser//lexer.nit:661 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___TKwisset();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwisset(fra.me.REG[1]);
-  parser___lexer___TKwisset___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwisset(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:4679 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___AGtExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AGtExpr(fra.me.REG[2]);
+  parser___parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___AGtExpr(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[2];
 }
-val_t NEW_TKwisset_parser___parser_nodes___ANode___init(val_t p0){
+static const char LOCATE_NEW_AGtExpr_parser___parser_prod___ASendExpr___init_asendexpr[] = "new AGtExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_AGtExpr_parser___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[4] = {0, 0, 0, 0};
+  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_TKwisset_parser___parser_nodes___ANode___init;
+  fra.me.line = 4648;
+  fra.me.meth = LOCATE_NEW_AGtExpr_parser___parser_prod___ASendExpr___init_asendexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___TKwisset();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwisset(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwisset(fra.me.REG[1]);
+  /* parser/parser_prod.nit:4648 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___AGtExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AGtExpr(fra.me.REG[1]);
+  parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AGtExpr(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwlabel[73] = {
-  {(bigint) 2587 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TKwlabel" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TKwlabel < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TKwlabel < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TKwlabel < Token: superclass typecheck marker */},
-  {(bigint) 2587 /* 6: TKwlabel < TKwlabel: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_parser___parser_nodes___AGeExpr[125] = {
+  {(bigint) 4939 /* 0: Identity */},
+  {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AGeExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AGeExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AGeExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AGeExpr < Prod: superclass typecheck marker */},
+  {(bigint) 4595 /* 6: AGeExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3811 /* 7: AGeExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 4819 /* 9: AGeExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 4831 /* 10: AGeExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 4859 /* 11: AGeExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 4887 /* 12: AGeExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 4939 /* 13: AGeExpr < AGeExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TKwlabel < Object: superclass init_table position */},
+  {(bigint) 8 /* 19: AGeExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -34431,7 +72379,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwlabel[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -34444,300 +72394,356 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwlabel[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TKwlabel < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AGeExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AGeExpr___visit_all},
+  {(bigint) 7 /* 63: AGeExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TKwlabel___parser_index},
-  {(bigint) 0 /* 70: TKwlabel < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TKwlabel___init_tk},
-  {(bigint) 3 /* 72: TKwlabel < TKwlabel: superclass init_table position */},
+  {(bigint) syntax___typing___ASendExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 6 /* 72: AGeExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
+  {(bigint) 2 /* 76: AGeExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 5 /* 81: AGeExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 4 /* 101: AGeExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
+  {(bigint) syntax___typing___AAbsSendExpr___get_property},
+  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
+  {(bigint) 3 /* 107: AGeExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) syntax___typing___AAbsSendExpr___prop},
+  {(bigint) syntax___typing___AAbsSendExpr___return_type},
+  {(bigint) syntax___typing___AGeExpr___name},
+  {(bigint) syntax___typing___ASendExpr___do_all_typing},
+  {(bigint) syntax___typing___ASendExpr___closure_defs},
+  {(bigint) parser___parser_prod___ASendExpr___empty_init},
+  {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
+  {(bigint) 1 /* 115: AGeExpr < ASendExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
+  {(bigint) parser___parser_prod___ABinopExpr___empty_init},
+  {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
+  {(bigint) 0 /* 120: AGeExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
+  {(bigint) parser___parser_prod___AGeExpr___empty_init},
+  {(bigint) parser___parser_prod___AGeExpr___init_ageexpr},
+  {(bigint) 9 /* 124: AGeExpr < AGeExpr: 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__parser___parser_nodes___TKwlabel(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AGeExpr::_parent */
+/* 3: Attribute AGeExpr::_location */
+/* 4: Attribute AGeExpr::_first_location */
+/* 5: Attribute AGeExpr::_last_location */
+/* 6: Attribute AGeExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute AGeExpr::_is_typed */
+/* 9: Attribute AGeExpr::_stype */
+/* 10: Attribute AGeExpr::_if_true_flow_ctx */
+/* 11: Attribute AGeExpr::_if_false_flow_ctx */
+/* 12: Attribute AGeExpr::_prop_signature */
+/* 13: Attribute AGeExpr::_raw_arguments_cache */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 17: Attribute AGeExpr::_prop */
+/* 18: Attribute AGeExpr::_return_type */
+/* 19: Attribute AGeExpr::_n_expr */
+/* 20: Attribute AGeExpr::_n_closure_defs */
+/* 21: Attribute AGeExpr::_n_expr2 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AGeExpr[] = "init var of AGeExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TKwlabel;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AGeExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* syntax/typing.nit:1441 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:860 */
+  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TKwlabel(void)
+val_t NEW_parser___parser_nodes___AGeExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TKwlabel;
+  obj = alloc(sizeof(val_t) * 22);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AGeExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TKwlabel(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AGeExpr[] = "check new AGeExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TKwlabel;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AGeExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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___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___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);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TKwlabel_parser___lexer___TKwlabel___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AGeExpr_parser___parser_prod___ABinopExpr___empty_init[] = "new AGeExpr parser_prod::ABinopExpr::empty_init";
+val_t NEW_AGeExpr_parser___parser_prod___ABinopExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 674;
-  fra.me.meth = LOCATE_NEW_TKwlabel_parser___lexer___TKwlabel___init_tk;
+  fra.me.line = 4677;
+  fra.me.meth = LOCATE_NEW_AGeExpr_parser___parser_prod___ABinopExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TKwlabel();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwlabel(fra.me.REG[1]);
-  parser___lexer___TKwlabel___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwlabel(fra.me.REG[1]);
+  /* parser/parser_prod.nit:4677 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AGeExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AGeExpr(fra.me.REG[0]);
+  parser___parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AGeExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-val_t NEW_TKwlabel_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AGeExpr_parser___parser_prod___AGeExpr___empty_init[] = "new AGeExpr parser_prod::AGeExpr::empty_init";
+val_t NEW_AGeExpr_parser___parser_prod___AGeExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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_TKwlabel_parser___parser_nodes___ANode___init;
+  fra.me.line = 5217;
+  fra.me.meth = LOCATE_NEW_AGeExpr_parser___parser_prod___AGeExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:5217 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AGeExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AGeExpr(fra.me.REG[0]);
+  parser___parser_prod___AGeExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AGeExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AGeExpr_parser___parser_prod___AGeExpr___init_ageexpr[] = "new AGeExpr parser_prod::AGeExpr::init_ageexpr";
+val_t NEW_AGeExpr_parser___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 = 5219;
+  fra.me.meth = LOCATE_NEW_AGeExpr_parser___parser_prod___AGeExpr___init_ageexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   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] = NEW_parser___parser_nodes___TKwlabel();
-  INIT_ATTRIBUTES__parser___parser_nodes___TKwlabel(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TKwlabel(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:5219 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___AGeExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AGeExpr(fra.me.REG[2]);
+  parser___parser_prod___AGeExpr___init_ageexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___AGeExpr(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[2];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TOpar[73] = {
-  {(bigint) 2455 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TOpar" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TOpar < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TOpar < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TOpar < Token: superclass typecheck marker */},
-  {(bigint) 2455 /* 6: 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 :( */,
-  {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TOpar < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
-  {(bigint) standard___file___Object___printn},
-  {(bigint) standard___file___Object___print},
-  {(bigint) standard___file___Object___getc},
-  {(bigint) standard___file___Object___gets},
-  {(bigint) standard___file___Object___stdin},
-  {(bigint) standard___file___Object___stdout},
-  {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
-  {(bigint) standard___string___Object___native_class_name},
-  {(bigint) standard___string___Object___class_name},
-  {(bigint) standard___string___Object___inspect},
-  {(bigint) standard___string___Object___inspect_head},
-  {(bigint) standard___string___Object___args},
-  {(bigint) standard___hash___Object___hash},
-  {(bigint) standard___math___Object___atan2},
-  {(bigint) standard___math___Object___pi},
-  {(bigint) standard___math___Object___srand_from},
-  {(bigint) standard___math___Object___srand},
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TOpar < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TOpar___parser_index},
-  {(bigint) 0 /* 70: TOpar < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TOpar___init_tk},
-  {(bigint) 3 /* 72: 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__parser___parser_nodes___TOpar(val_t p0){
+static const char LOCATE_NEW_AGeExpr_parser___parser_nodes___ANode___init[] = "new AGeExpr parser_nodes::ANode::init";
+val_t NEW_AGeExpr_parser___parser_nodes___ANode___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_INIT_ATTRIBUTES__parser___parser_nodes___TOpar;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_AGeExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AGeExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AGeExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AGeExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-val_t NEW_parser___parser_nodes___TOpar(void)
-{
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TOpar;
-  obj[1].object_id = object_id_counter;
-  object_id_counter = object_id_counter + 1;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_parser___parser_nodes___TOpar(val_t p0){
+static const char LOCATE_NEW_AGeExpr_parser___parser_prod___ASendExpr___empty_init[] = "new AGeExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_AGeExpr_parser___parser_prod___ASendExpr___empty_init(void){
   struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
   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_CHECKNEW_parser___parser_nodes___TOpar;
+  fra.me.line = 4646;
+  fra.me.meth = LOCATE_NEW_AGeExpr_parser___parser_prod___ASendExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
-  }
+  /* parser/parser_prod.nit:4646 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AGeExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AGeExpr(fra.me.REG[0]);
+  parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AGeExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-val_t NEW_TOpar_parser___lexer___TOpar___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AGeExpr_parser___parser_prod___ABinopExpr___init_abinopexpr[] = "new AGeExpr parser_prod::ABinopExpr::init_abinopexpr";
+val_t NEW_AGeExpr_parser___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[4] = {0, 0, 0, 0};
+  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 = 687;
-  fra.me.meth = LOCATE_NEW_TOpar_parser___lexer___TOpar___init_tk;
+  fra.me.line = 4679;
+  fra.me.meth = LOCATE_NEW_AGeExpr_parser___parser_prod___ABinopExpr___init_abinopexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./parser//lexer.nit:687 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___TOpar();
-  INIT_ATTRIBUTES__parser___parser_nodes___TOpar(fra.me.REG[1]);
-  parser___lexer___TOpar___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TOpar(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:4679 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___AGeExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AGeExpr(fra.me.REG[2]);
+  parser___parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___AGeExpr(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[2];
 }
-val_t NEW_TOpar_parser___parser_nodes___ANode___init(val_t p0){
+static const char LOCATE_NEW_AGeExpr_parser___parser_prod___ASendExpr___init_asendexpr[] = "new AGeExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_AGeExpr_parser___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[4] = {0, 0, 0, 0};
+  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_TOpar_parser___parser_nodes___ANode___init;
+  fra.me.line = 4648;
+  fra.me.meth = LOCATE_NEW_AGeExpr_parser___parser_prod___ASendExpr___init_asendexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___TOpar();
-  INIT_ATTRIBUTES__parser___parser_nodes___TOpar(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TOpar(fra.me.REG[1]);
+  /* parser/parser_prod.nit:4648 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___AGeExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AGeExpr(fra.me.REG[1]);
+  parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AGeExpr(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TCpar[73] = {
-  {(bigint) 2735 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TCpar" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TCpar < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TCpar < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TCpar < Token: superclass typecheck marker */},
-  {(bigint) 2735 /* 6: TCpar < TCpar: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_parser___parser_nodes___AGgExpr[125] = {
+  {(bigint) 4935 /* 0: Identity */},
+  {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AGgExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AGgExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AGgExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AGgExpr < Prod: superclass typecheck marker */},
+  {(bigint) 4595 /* 6: AGgExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3811 /* 7: AGgExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 4819 /* 9: AGgExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 4831 /* 10: AGgExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 4859 /* 11: AGgExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 4887 /* 12: AGgExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 4935 /* 13: AGgExpr < AGgExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TCpar < Object: superclass init_table position */},
+  {(bigint) 8 /* 19: AGgExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -34753,7 +72759,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TCpar[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -34766,129 +72774,346 @@ const classtable_elt_t VFT_parser___parser_nodes___TCpar[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TCpar < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AGgExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AGgExpr___visit_all},
+  {(bigint) 7 /* 63: AGgExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TCpar___parser_index},
-  {(bigint) 0 /* 70: TCpar < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TCpar___init_tk},
-  {(bigint) 3 /* 72: TCpar < TCpar: superclass init_table position */},
+  {(bigint) syntax___typing___ASendExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 6 /* 72: AGgExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
+  {(bigint) 2 /* 76: AGgExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 5 /* 81: AGgExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 4 /* 101: AGgExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
+  {(bigint) syntax___typing___AAbsSendExpr___get_property},
+  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
+  {(bigint) 3 /* 107: AGgExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) syntax___typing___AAbsSendExpr___prop},
+  {(bigint) syntax___typing___AAbsSendExpr___return_type},
+  {(bigint) syntax___typing___AGgExpr___name},
+  {(bigint) syntax___typing___ASendExpr___do_all_typing},
+  {(bigint) syntax___typing___ASendExpr___closure_defs},
+  {(bigint) parser___parser_prod___ASendExpr___empty_init},
+  {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
+  {(bigint) 1 /* 115: AGgExpr < ASendExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
+  {(bigint) parser___parser_prod___ABinopExpr___empty_init},
+  {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
+  {(bigint) 0 /* 120: AGgExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
+  {(bigint) parser___parser_prod___AGgExpr___empty_init},
+  {(bigint) parser___parser_prod___AGgExpr___init_aggexpr},
+  {(bigint) 9 /* 124: AGgExpr < AGgExpr: 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__parser___parser_nodes___TCpar(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AGgExpr::_parent */
+/* 3: Attribute AGgExpr::_location */
+/* 4: Attribute AGgExpr::_first_location */
+/* 5: Attribute AGgExpr::_last_location */
+/* 6: Attribute AGgExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute AGgExpr::_is_typed */
+/* 9: Attribute AGgExpr::_stype */
+/* 10: Attribute AGgExpr::_if_true_flow_ctx */
+/* 11: Attribute AGgExpr::_if_false_flow_ctx */
+/* 12: Attribute AGgExpr::_prop_signature */
+/* 13: Attribute AGgExpr::_raw_arguments_cache */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 17: Attribute AGgExpr::_prop */
+/* 18: Attribute AGgExpr::_return_type */
+/* 19: Attribute AGgExpr::_n_expr */
+/* 20: Attribute AGgExpr::_n_closure_defs */
+/* 21: Attribute AGgExpr::_n_expr2 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AGgExpr[] = "init var of AGgExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TCpar;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AGgExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* syntax/typing.nit:1441 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:860 */
+  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TCpar(void)
+val_t NEW_parser___parser_nodes___AGgExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TCpar;
+  obj = alloc(sizeof(val_t) * 22);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AGgExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TCpar(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AGgExpr[] = "check new AGgExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TCpar;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AGgExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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___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___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);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TCpar_parser___lexer___TCpar___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AGgExpr_parser___parser_prod___ABinopExpr___empty_init[] = "new AGgExpr parser_prod::ABinopExpr::empty_init";
+val_t NEW_AGgExpr_parser___parser_prod___ABinopExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 700;
-  fra.me.meth = LOCATE_NEW_TCpar_parser___lexer___TCpar___init_tk;
+  fra.me.line = 4677;
+  fra.me.meth = LOCATE_NEW_AGgExpr_parser___parser_prod___ABinopExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:4677 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AGgExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AGgExpr(fra.me.REG[0]);
+  parser___parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AGgExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AGgExpr_parser___parser_prod___AGgExpr___empty_init[] = "new AGgExpr parser_prod::AGgExpr::empty_init";
+val_t NEW_AGgExpr_parser___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 = 5262;
+  fra.me.meth = LOCATE_NEW_AGgExpr_parser___parser_prod___AGgExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:5262 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AGgExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AGgExpr(fra.me.REG[0]);
+  parser___parser_prod___AGgExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AGgExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AGgExpr_parser___parser_prod___AGgExpr___init_aggexpr[] = "new AGgExpr parser_prod::AGgExpr::init_aggexpr";
+val_t NEW_AGgExpr_parser___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 = 5264;
+  fra.me.meth = LOCATE_NEW_AGgExpr_parser___parser_prod___AGgExpr___init_aggexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./parser//lexer.nit:700 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___TCpar();
-  INIT_ATTRIBUTES__parser___parser_nodes___TCpar(fra.me.REG[1]);
-  parser___lexer___TCpar___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TCpar(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:5264 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___AGgExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AGgExpr(fra.me.REG[2]);
+  parser___parser_prod___AGgExpr___init_aggexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___AGgExpr(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[2];
+}
+static const char LOCATE_NEW_AGgExpr_parser___parser_nodes___ANode___init[] = "new AGgExpr parser_nodes::ANode::init";
+val_t NEW_AGgExpr_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AGgExpr_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AGgExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AGgExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AGgExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AGgExpr_parser___parser_prod___ASendExpr___empty_init[] = "new AGgExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_AGgExpr_parser___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 = 4646;
+  fra.me.meth = LOCATE_NEW_AGgExpr_parser___parser_prod___ASendExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:4646 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AGgExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AGgExpr(fra.me.REG[0]);
+  parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AGgExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AGgExpr_parser___parser_prod___ABinopExpr___init_abinopexpr[] = "new AGgExpr parser_prod::ABinopExpr::init_abinopexpr";
+val_t NEW_AGgExpr_parser___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 = 4679;
+  fra.me.meth = LOCATE_NEW_AGgExpr_parser___parser_prod___ABinopExpr___init_abinopexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  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:4679 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___AGgExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AGgExpr(fra.me.REG[2]);
+  parser___parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___AGgExpr(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
 }
-val_t NEW_TCpar_parser___parser_nodes___ANode___init(val_t p0){
+static const char LOCATE_NEW_AGgExpr_parser___parser_prod___ASendExpr___init_asendexpr[] = "new AGgExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_AGgExpr_parser___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[4] = {0, 0, 0, 0};
+  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_TCpar_parser___parser_nodes___ANode___init;
+  fra.me.line = 4648;
+  fra.me.meth = LOCATE_NEW_AGgExpr_parser___parser_prod___ASendExpr___init_asendexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___TCpar();
-  INIT_ATTRIBUTES__parser___parser_nodes___TCpar(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TCpar(fra.me.REG[1]);
+  /* parser/parser_prod.nit:4648 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___AGgExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AGgExpr(fra.me.REG[1]);
+  parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AGgExpr(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TObra[73] = {
-  {(bigint) 2459 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TObra" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TObra < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TObra < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TObra < Token: superclass typecheck marker */},
-  {(bigint) 2459 /* 6: TObra < TObra: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_parser___parser_nodes___AIsaExpr[95] = {
+  {(bigint) 4715 /* 0: Identity */},
+  {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AIsaExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AIsaExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AIsaExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AIsaExpr < Prod: superclass typecheck marker */},
+  {(bigint) 4275 /* 6: AIsaExpr < ATypeCheckExpr: superclass typecheck marker */},
+  {(bigint) 3811 /* 7: AIsaExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 4547 /* 8: AIsaExpr < ABoolExpr: superclass typecheck marker */},
+  {(bigint) 4715 /* 9: AIsaExpr < AIsaExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -34898,7 +73123,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TObra[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TObra < Object: superclass init_table position */},
+  {(bigint) 4 /* 19: AIsaExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -34914,7 +73139,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TObra[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -34927,139 +73154,217 @@ const classtable_elt_t VFT_parser___parser_nodes___TObra[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TObra < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AIsaExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AIsaExpr___visit_all},
+  {(bigint) 3 /* 63: AIsaExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TObra___parser_index},
-  {(bigint) 0 /* 70: TObra < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TObra___init_tk},
-  {(bigint) 3 /* 72: TObra < TObra: superclass init_table position */},
+  {(bigint) syntax___typing___AIsaExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 2 /* 72: AIsaExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) 0 /* 75: AIsaExpr < ATypeCheckExpr: superclass init_table position */},
+  {(bigint) syntax___typing___ATypeCheckExpr___check_expr_cast},
+  {(bigint) syntax___mmbuilder___ABoolExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 1 /* 81: AIsaExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___AIsaExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {(bigint) 5 /* 89: AIsaExpr < ABoolExpr: superclass init_table position */},
+  {(bigint) parser___parser_prod___AIsaExpr___empty_init},
+  {(bigint) parser___parser_prod___AIsaExpr___init_aisaexpr},
+  {(bigint) 6 /* 92: AIsaExpr < AIsaExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AIsaExpr___n_expr},
+  {(bigint) parser___parser_nodes___AIsaExpr___n_type},
 };
 /* 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__parser___parser_nodes___TObra(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AIsaExpr::_parent */
+/* 3: Attribute AIsaExpr::_location */
+/* 4: Attribute AIsaExpr::_first_location */
+/* 5: Attribute AIsaExpr::_last_location */
+/* 6: Attribute AIsaExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute AIsaExpr::_is_typed */
+/* 9: Attribute AIsaExpr::_stype */
+/* 10: Attribute AIsaExpr::_if_true_flow_ctx */
+/* 11: Attribute AIsaExpr::_if_false_flow_ctx */
+/* 12: Attribute AIsaExpr::_n_expr */
+/* 13: Attribute AIsaExpr::_n_type */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AIsaExpr[] = "init var of AIsaExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___AIsaExpr(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__parser___parser_nodes___TObra;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AIsaExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TObra(void)
+val_t NEW_parser___parser_nodes___AIsaExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TObra;
+  obj = alloc(sizeof(val_t) * 14);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AIsaExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TObra(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AIsaExpr[] = "check new AIsaExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TObra;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AIsaExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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___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;
 }
-val_t NEW_TObra_parser___lexer___TObra___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AIsaExpr_parser___parser_prod___AIsaExpr___empty_init[] = "new AIsaExpr parser_prod::AIsaExpr::empty_init";
+val_t NEW_AIsaExpr_parser___parser_prod___AIsaExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 713;
-  fra.me.meth = LOCATE_NEW_TObra_parser___lexer___TObra___init_tk;
+  fra.me.line = 5307;
+  fra.me.meth = LOCATE_NEW_AIsaExpr_parser___parser_prod___AIsaExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TObra();
-  INIT_ATTRIBUTES__parser___parser_nodes___TObra(fra.me.REG[1]);
-  parser___lexer___TObra___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TObra(fra.me.REG[1]);
+  /* parser/parser_prod.nit:5307 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AIsaExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AIsaExpr(fra.me.REG[0]);
+  parser___parser_prod___AIsaExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AIsaExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-val_t NEW_TObra_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AIsaExpr_parser___parser_prod___AIsaExpr___init_aisaexpr[] = "new AIsaExpr parser_prod::AIsaExpr::init_aisaexpr";
+val_t NEW_AIsaExpr_parser___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[4] = {0, 0, 0, 0};
+  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_TObra_parser___parser_nodes___ANode___init;
+  fra.me.line = 5309;
+  fra.me.meth = LOCATE_NEW_AIsaExpr_parser___parser_prod___AIsaExpr___init_aisaexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   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] = NEW_parser___parser_nodes___TObra();
-  INIT_ATTRIBUTES__parser___parser_nodes___TObra(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TObra(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:5309 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___AIsaExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AIsaExpr(fra.me.REG[2]);
+  parser___parser_prod___AIsaExpr___init_aisaexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___AIsaExpr(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[2];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TCbra[73] = {
-  {(bigint) 2759 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TCbra" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TCbra < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TCbra < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TCbra < Token: superclass typecheck marker */},
-  {(bigint) 2759 /* 6: TCbra < TCbra: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+static const char LOCATE_NEW_AIsaExpr_parser___parser_nodes___ANode___init[] = "new AIsaExpr parser_nodes::ANode::init";
+val_t NEW_AIsaExpr_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AIsaExpr_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AIsaExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AIsaExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AIsaExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___APlusExpr[125] = {
+  {(bigint) 4903 /* 0: Identity */},
+  {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "APlusExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: APlusExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: APlusExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: APlusExpr < Prod: superclass typecheck marker */},
+  {(bigint) 4595 /* 6: APlusExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3811 /* 7: APlusExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 4819 /* 9: APlusExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 4831 /* 10: APlusExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 4859 /* 11: APlusExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 4887 /* 12: APlusExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 4903 /* 13: APlusExpr < APlusExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TCbra < Object: superclass init_table position */},
+  {(bigint) 8 /* 19: APlusExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -35075,7 +73380,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TCbra[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -35088,300 +73395,356 @@ const classtable_elt_t VFT_parser___parser_nodes___TCbra[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TCbra < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___APlusExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___APlusExpr___visit_all},
+  {(bigint) 7 /* 63: APlusExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TCbra___parser_index},
-  {(bigint) 0 /* 70: TCbra < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TCbra___init_tk},
-  {(bigint) 3 /* 72: TCbra < TCbra: superclass init_table position */},
+  {(bigint) syntax___typing___ASendExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 6 /* 72: APlusExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
+  {(bigint) 2 /* 76: APlusExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 5 /* 81: APlusExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 4 /* 101: APlusExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
+  {(bigint) syntax___typing___AAbsSendExpr___get_property},
+  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
+  {(bigint) 3 /* 107: APlusExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) syntax___typing___AAbsSendExpr___prop},
+  {(bigint) syntax___typing___AAbsSendExpr___return_type},
+  {(bigint) syntax___typing___APlusExpr___name},
+  {(bigint) syntax___typing___ASendExpr___do_all_typing},
+  {(bigint) syntax___typing___ASendExpr___closure_defs},
+  {(bigint) parser___parser_prod___ASendExpr___empty_init},
+  {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
+  {(bigint) 1 /* 115: APlusExpr < ASendExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
+  {(bigint) parser___parser_prod___ABinopExpr___empty_init},
+  {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
+  {(bigint) 0 /* 120: APlusExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
+  {(bigint) parser___parser_prod___APlusExpr___empty_init},
+  {(bigint) parser___parser_prod___APlusExpr___init_aplusexpr},
+  {(bigint) 9 /* 124: APlusExpr < APlusExpr: 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__parser___parser_nodes___TCbra(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute APlusExpr::_parent */
+/* 3: Attribute APlusExpr::_location */
+/* 4: Attribute APlusExpr::_first_location */
+/* 5: Attribute APlusExpr::_last_location */
+/* 6: Attribute APlusExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute APlusExpr::_is_typed */
+/* 9: Attribute APlusExpr::_stype */
+/* 10: Attribute APlusExpr::_if_true_flow_ctx */
+/* 11: Attribute APlusExpr::_if_false_flow_ctx */
+/* 12: Attribute APlusExpr::_prop_signature */
+/* 13: Attribute APlusExpr::_raw_arguments_cache */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 17: Attribute APlusExpr::_prop */
+/* 18: Attribute APlusExpr::_return_type */
+/* 19: Attribute APlusExpr::_n_expr */
+/* 20: Attribute APlusExpr::_n_closure_defs */
+/* 21: Attribute APlusExpr::_n_expr2 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___APlusExpr[] = "init var of APlusExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TCbra;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___APlusExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* syntax/typing.nit:1441 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:860 */
+  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TCbra(void)
+val_t NEW_parser___parser_nodes___APlusExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TCbra;
+  obj = alloc(sizeof(val_t) * 22);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___APlusExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TCbra(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___APlusExpr[] = "check new APlusExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TCbra;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___APlusExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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___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___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);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TCbra_parser___lexer___TCbra___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_APlusExpr_parser___parser_prod___ABinopExpr___empty_init[] = "new APlusExpr parser_prod::ABinopExpr::empty_init";
+val_t NEW_APlusExpr_parser___parser_prod___ABinopExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 726;
-  fra.me.meth = LOCATE_NEW_TCbra_parser___lexer___TCbra___init_tk;
+  fra.me.line = 4677;
+  fra.me.meth = LOCATE_NEW_APlusExpr_parser___parser_prod___ABinopExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TCbra();
-  INIT_ATTRIBUTES__parser___parser_nodes___TCbra(fra.me.REG[1]);
-  parser___lexer___TCbra___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TCbra(fra.me.REG[1]);
+  /* parser/parser_prod.nit:4677 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___APlusExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___APlusExpr(fra.me.REG[0]);
+  parser___parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___APlusExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-val_t NEW_TCbra_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_APlusExpr_parser___parser_prod___APlusExpr___empty_init[] = "new APlusExpr parser_prod::APlusExpr::empty_init";
+val_t NEW_APlusExpr_parser___parser_prod___APlusExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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_TCbra_parser___parser_nodes___ANode___init;
+  fra.me.line = 5352;
+  fra.me.meth = LOCATE_NEW_APlusExpr_parser___parser_prod___APlusExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___TCbra();
-  INIT_ATTRIBUTES__parser___parser_nodes___TCbra(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TCbra(fra.me.REG[1]);
+  /* parser/parser_prod.nit:5352 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___APlusExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___APlusExpr(fra.me.REG[0]);
+  parser___parser_prod___APlusExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___APlusExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TComma[73] = {
-  {(bigint) 2743 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TComma" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TComma < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TComma < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TComma < Token: superclass typecheck marker */},
-  {(bigint) 2743 /* 6: 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 :( */,
-  {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TComma < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
-  {(bigint) standard___file___Object___printn},
-  {(bigint) standard___file___Object___print},
-  {(bigint) standard___file___Object___getc},
-  {(bigint) standard___file___Object___gets},
-  {(bigint) standard___file___Object___stdin},
-  {(bigint) standard___file___Object___stdout},
-  {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
-  {(bigint) standard___string___Object___native_class_name},
-  {(bigint) standard___string___Object___class_name},
-  {(bigint) standard___string___Object___inspect},
-  {(bigint) standard___string___Object___inspect_head},
-  {(bigint) standard___string___Object___args},
-  {(bigint) standard___hash___Object___hash},
-  {(bigint) standard___math___Object___atan2},
-  {(bigint) standard___math___Object___pi},
-  {(bigint) standard___math___Object___srand_from},
-  {(bigint) standard___math___Object___srand},
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TComma < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TComma___parser_index},
-  {(bigint) 0 /* 70: TComma < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TComma___init_tk},
-  {(bigint) 3 /* 72: 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__parser___parser_nodes___TComma(val_t p0){
+static const char LOCATE_NEW_APlusExpr_parser___parser_prod___APlusExpr___init_aplusexpr[] = "new APlusExpr parser_prod::APlusExpr::init_aplusexpr";
+val_t NEW_APlusExpr_parser___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 = 5354;
+  fra.me.meth = LOCATE_NEW_APlusExpr_parser___parser_prod___APlusExpr___init_aplusexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  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:5354 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___APlusExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___APlusExpr(fra.me.REG[2]);
+  parser___parser_prod___APlusExpr___init_aplusexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___APlusExpr(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+static const char LOCATE_NEW_APlusExpr_parser___parser_nodes___ANode___init[] = "new APlusExpr parser_nodes::ANode::init";
+val_t NEW_APlusExpr_parser___parser_nodes___ANode___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_INIT_ATTRIBUTES__parser___parser_nodes___TComma;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_APlusExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___APlusExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___APlusExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___APlusExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-val_t NEW_parser___parser_nodes___TComma(void)
-{
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TComma;
-  obj[1].object_id = object_id_counter;
-  object_id_counter = object_id_counter + 1;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_parser___parser_nodes___TComma(val_t p0){
+static const char LOCATE_NEW_APlusExpr_parser___parser_prod___ASendExpr___empty_init[] = "new APlusExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_APlusExpr_parser___parser_prod___ASendExpr___empty_init(void){
   struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
   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_CHECKNEW_parser___parser_nodes___TComma;
+  fra.me.line = 4646;
+  fra.me.meth = LOCATE_NEW_APlusExpr_parser___parser_prod___ASendExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
-  }
+  /* parser/parser_prod.nit:4646 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___APlusExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___APlusExpr(fra.me.REG[0]);
+  parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___APlusExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-val_t NEW_TComma_parser___lexer___TComma___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_APlusExpr_parser___parser_prod___ABinopExpr___init_abinopexpr[] = "new APlusExpr parser_prod::ABinopExpr::init_abinopexpr";
+val_t NEW_APlusExpr_parser___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[4] = {0, 0, 0, 0};
+  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 = 739;
-  fra.me.meth = LOCATE_NEW_TComma_parser___lexer___TComma___init_tk;
+  fra.me.line = 4679;
+  fra.me.meth = LOCATE_NEW_APlusExpr_parser___parser_prod___ABinopExpr___init_abinopexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./parser//lexer.nit:739 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___TComma();
-  INIT_ATTRIBUTES__parser___parser_nodes___TComma(fra.me.REG[1]);
-  parser___lexer___TComma___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TComma(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:4679 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___APlusExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___APlusExpr(fra.me.REG[2]);
+  parser___parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___APlusExpr(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[2];
 }
-val_t NEW_TComma_parser___parser_nodes___ANode___init(val_t p0){
+static const char LOCATE_NEW_APlusExpr_parser___parser_prod___ASendExpr___init_asendexpr[] = "new APlusExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_APlusExpr_parser___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[4] = {0, 0, 0, 0};
+  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_TComma_parser___parser_nodes___ANode___init;
+  fra.me.line = 4648;
+  fra.me.meth = LOCATE_NEW_APlusExpr_parser___parser_prod___ASendExpr___init_asendexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___TComma();
-  INIT_ATTRIBUTES__parser___parser_nodes___TComma(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TComma(fra.me.REG[1]);
+  /* parser/parser_prod.nit:4648 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___APlusExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___APlusExpr(fra.me.REG[1]);
+  parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___APlusExpr(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TColumn[73] = {
-  {(bigint) 2747 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TColumn" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TColumn < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TColumn < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TColumn < Token: superclass typecheck marker */},
-  {(bigint) 2747 /* 6: TColumn < TColumn: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_parser___parser_nodes___AMinusExpr[125] = {
+  {(bigint) 4915 /* 0: Identity */},
+  {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AMinusExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AMinusExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AMinusExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AMinusExpr < Prod: superclass typecheck marker */},
+  {(bigint) 4595 /* 6: AMinusExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3811 /* 7: AMinusExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 4819 /* 9: AMinusExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 4831 /* 10: AMinusExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 4859 /* 11: AMinusExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 4887 /* 12: AMinusExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 4915 /* 13: AMinusExpr < AMinusExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TColumn < Object: superclass init_table position */},
+  {(bigint) 8 /* 19: AMinusExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -35397,7 +73760,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TColumn[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -35410,300 +73775,356 @@ const classtable_elt_t VFT_parser___parser_nodes___TColumn[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TColumn < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AMinusExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AMinusExpr___visit_all},
+  {(bigint) 7 /* 63: AMinusExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TColumn___parser_index},
-  {(bigint) 0 /* 70: TColumn < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TColumn___init_tk},
-  {(bigint) 3 /* 72: TColumn < TColumn: superclass init_table position */},
+  {(bigint) syntax___typing___ASendExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 6 /* 72: AMinusExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
+  {(bigint) 2 /* 76: AMinusExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 5 /* 81: AMinusExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 4 /* 101: AMinusExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
+  {(bigint) syntax___typing___AAbsSendExpr___get_property},
+  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
+  {(bigint) 3 /* 107: AMinusExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) syntax___typing___AAbsSendExpr___prop},
+  {(bigint) syntax___typing___AAbsSendExpr___return_type},
+  {(bigint) syntax___typing___AMinusExpr___name},
+  {(bigint) syntax___typing___ASendExpr___do_all_typing},
+  {(bigint) syntax___typing___ASendExpr___closure_defs},
+  {(bigint) parser___parser_prod___ASendExpr___empty_init},
+  {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
+  {(bigint) 1 /* 115: AMinusExpr < ASendExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
+  {(bigint) parser___parser_prod___ABinopExpr___empty_init},
+  {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
+  {(bigint) 0 /* 120: AMinusExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
+  {(bigint) parser___parser_prod___AMinusExpr___empty_init},
+  {(bigint) parser___parser_prod___AMinusExpr___init_aminusexpr},
+  {(bigint) 9 /* 124: AMinusExpr < AMinusExpr: 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__parser___parser_nodes___TColumn(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AMinusExpr::_parent */
+/* 3: Attribute AMinusExpr::_location */
+/* 4: Attribute AMinusExpr::_first_location */
+/* 5: Attribute AMinusExpr::_last_location */
+/* 6: Attribute AMinusExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute AMinusExpr::_is_typed */
+/* 9: Attribute AMinusExpr::_stype */
+/* 10: Attribute AMinusExpr::_if_true_flow_ctx */
+/* 11: Attribute AMinusExpr::_if_false_flow_ctx */
+/* 12: Attribute AMinusExpr::_prop_signature */
+/* 13: Attribute AMinusExpr::_raw_arguments_cache */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 17: Attribute AMinusExpr::_prop */
+/* 18: Attribute AMinusExpr::_return_type */
+/* 19: Attribute AMinusExpr::_n_expr */
+/* 20: Attribute AMinusExpr::_n_closure_defs */
+/* 21: Attribute AMinusExpr::_n_expr2 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AMinusExpr[] = "init var of AMinusExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TColumn;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AMinusExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* syntax/typing.nit:1441 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:860 */
+  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TColumn(void)
+val_t NEW_parser___parser_nodes___AMinusExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TColumn;
+  obj = alloc(sizeof(val_t) * 22);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AMinusExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TColumn(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AMinusExpr[] = "check new AMinusExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TColumn;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AMinusExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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___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___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);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TColumn_parser___lexer___TColumn___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AMinusExpr_parser___parser_prod___ABinopExpr___empty_init[] = "new AMinusExpr parser_prod::ABinopExpr::empty_init";
+val_t NEW_AMinusExpr_parser___parser_prod___ABinopExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 752;
-  fra.me.meth = LOCATE_NEW_TColumn_parser___lexer___TColumn___init_tk;
+  fra.me.line = 4677;
+  fra.me.meth = LOCATE_NEW_AMinusExpr_parser___parser_prod___ABinopExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TColumn();
-  INIT_ATTRIBUTES__parser___parser_nodes___TColumn(fra.me.REG[1]);
-  parser___lexer___TColumn___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TColumn(fra.me.REG[1]);
+  /* parser/parser_prod.nit:4677 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AMinusExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AMinusExpr(fra.me.REG[0]);
+  parser___parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AMinusExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-val_t NEW_TColumn_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AMinusExpr_parser___parser_prod___AMinusExpr___empty_init[] = "new AMinusExpr parser_prod::AMinusExpr::empty_init";
+val_t NEW_AMinusExpr_parser___parser_prod___AMinusExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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_TColumn_parser___parser_nodes___ANode___init;
+  fra.me.line = 5397;
+  fra.me.meth = LOCATE_NEW_AMinusExpr_parser___parser_prod___AMinusExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:5397 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AMinusExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AMinusExpr(fra.me.REG[0]);
+  parser___parser_prod___AMinusExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AMinusExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AMinusExpr_parser___parser_prod___AMinusExpr___init_aminusexpr[] = "new AMinusExpr parser_prod::AMinusExpr::init_aminusexpr";
+val_t NEW_AMinusExpr_parser___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 = 5399;
+  fra.me.meth = LOCATE_NEW_AMinusExpr_parser___parser_prod___AMinusExpr___init_aminusexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   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] = NEW_parser___parser_nodes___TColumn();
-  INIT_ATTRIBUTES__parser___parser_nodes___TColumn(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TColumn(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:5399 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___AMinusExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AMinusExpr(fra.me.REG[2]);
+  parser___parser_prod___AMinusExpr___init_aminusexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___AMinusExpr(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[2];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TQuad[73] = {
-  {(bigint) 2439 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TQuad" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TQuad < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TQuad < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TQuad < Token: superclass typecheck marker */},
-  {(bigint) 2439 /* 6: 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 :( */,
-  {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TQuad < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
-  {(bigint) standard___file___Object___printn},
-  {(bigint) standard___file___Object___print},
-  {(bigint) standard___file___Object___getc},
-  {(bigint) standard___file___Object___gets},
-  {(bigint) standard___file___Object___stdin},
-  {(bigint) standard___file___Object___stdout},
-  {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
-  {(bigint) standard___string___Object___native_class_name},
-  {(bigint) standard___string___Object___class_name},
-  {(bigint) standard___string___Object___inspect},
-  {(bigint) standard___string___Object___inspect_head},
-  {(bigint) standard___string___Object___args},
-  {(bigint) standard___hash___Object___hash},
-  {(bigint) standard___math___Object___atan2},
-  {(bigint) standard___math___Object___pi},
-  {(bigint) standard___math___Object___srand_from},
-  {(bigint) standard___math___Object___srand},
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TQuad < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TQuad___parser_index},
-  {(bigint) 0 /* 70: TQuad < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TQuad___init_tk},
-  {(bigint) 3 /* 72: 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__parser___parser_nodes___TQuad(val_t p0){
+static const char LOCATE_NEW_AMinusExpr_parser___parser_nodes___ANode___init[] = "new AMinusExpr parser_nodes::ANode::init";
+val_t NEW_AMinusExpr_parser___parser_nodes___ANode___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_INIT_ATTRIBUTES__parser___parser_nodes___TQuad;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_AMinusExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AMinusExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AMinusExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AMinusExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-val_t NEW_parser___parser_nodes___TQuad(void)
-{
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TQuad;
-  obj[1].object_id = object_id_counter;
-  object_id_counter = object_id_counter + 1;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_parser___parser_nodes___TQuad(val_t p0){
+static const char LOCATE_NEW_AMinusExpr_parser___parser_prod___ASendExpr___empty_init[] = "new AMinusExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_AMinusExpr_parser___parser_prod___ASendExpr___empty_init(void){
   struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
   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_CHECKNEW_parser___parser_nodes___TQuad;
+  fra.me.line = 4646;
+  fra.me.meth = LOCATE_NEW_AMinusExpr_parser___parser_prod___ASendExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
-  }
+  /* parser/parser_prod.nit:4646 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AMinusExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AMinusExpr(fra.me.REG[0]);
+  parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AMinusExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-val_t NEW_TQuad_parser___lexer___TQuad___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AMinusExpr_parser___parser_prod___ABinopExpr___init_abinopexpr[] = "new AMinusExpr parser_prod::ABinopExpr::init_abinopexpr";
+val_t NEW_AMinusExpr_parser___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[4] = {0, 0, 0, 0};
+  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 = 765;
-  fra.me.meth = LOCATE_NEW_TQuad_parser___lexer___TQuad___init_tk;
+  fra.me.line = 4679;
+  fra.me.meth = LOCATE_NEW_AMinusExpr_parser___parser_prod___ABinopExpr___init_abinopexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./parser//lexer.nit:765 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___TQuad();
-  INIT_ATTRIBUTES__parser___parser_nodes___TQuad(fra.me.REG[1]);
-  parser___lexer___TQuad___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TQuad(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:4679 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___AMinusExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AMinusExpr(fra.me.REG[2]);
+  parser___parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___AMinusExpr(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[2];
 }
-val_t NEW_TQuad_parser___parser_nodes___ANode___init(val_t p0){
+static const char LOCATE_NEW_AMinusExpr_parser___parser_prod___ASendExpr___init_asendexpr[] = "new AMinusExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_AMinusExpr_parser___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[4] = {0, 0, 0, 0};
+  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_TQuad_parser___parser_nodes___ANode___init;
+  fra.me.line = 4648;
+  fra.me.meth = LOCATE_NEW_AMinusExpr_parser___parser_prod___ASendExpr___init_asendexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___TQuad();
-  INIT_ATTRIBUTES__parser___parser_nodes___TQuad(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TQuad(fra.me.REG[1]);
+  /* parser/parser_prod.nit:4648 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___AMinusExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AMinusExpr(fra.me.REG[1]);
+  parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AMinusExpr(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TAssign[73] = {
-  {(bigint) 2771 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TAssign" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TAssign < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TAssign < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TAssign < Token: superclass typecheck marker */},
-  {(bigint) 2771 /* 6: TAssign < TAssign: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_parser___parser_nodes___AStarshipExpr[125] = {
+  {(bigint) 4891 /* 0: Identity */},
+  {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AStarshipExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AStarshipExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AStarshipExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AStarshipExpr < Prod: superclass typecheck marker */},
+  {(bigint) 4595 /* 6: AStarshipExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3811 /* 7: AStarshipExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 4819 /* 9: AStarshipExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 4831 /* 10: AStarshipExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 4859 /* 11: AStarshipExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 4887 /* 12: AStarshipExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 4891 /* 13: AStarshipExpr < AStarshipExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TAssign < Object: superclass init_table position */},
+  {(bigint) 8 /* 19: AStarshipExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -35719,7 +74140,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TAssign[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -35732,300 +74155,356 @@ const classtable_elt_t VFT_parser___parser_nodes___TAssign[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TAssign < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AStarshipExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AStarshipExpr___visit_all},
+  {(bigint) 7 /* 63: AStarshipExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TAssign___parser_index},
-  {(bigint) 0 /* 70: TAssign < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TAssign___init_tk},
-  {(bigint) 3 /* 72: TAssign < TAssign: superclass init_table position */},
+  {(bigint) syntax___typing___ASendExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 6 /* 72: AStarshipExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
+  {(bigint) 2 /* 76: AStarshipExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 5 /* 81: AStarshipExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 4 /* 101: AStarshipExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
+  {(bigint) syntax___typing___AAbsSendExpr___get_property},
+  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
+  {(bigint) 3 /* 107: AStarshipExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) syntax___typing___AAbsSendExpr___prop},
+  {(bigint) syntax___typing___AAbsSendExpr___return_type},
+  {(bigint) syntax___typing___AStarshipExpr___name},
+  {(bigint) syntax___typing___ASendExpr___do_all_typing},
+  {(bigint) syntax___typing___ASendExpr___closure_defs},
+  {(bigint) parser___parser_prod___ASendExpr___empty_init},
+  {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
+  {(bigint) 1 /* 115: AStarshipExpr < ASendExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
+  {(bigint) parser___parser_prod___ABinopExpr___empty_init},
+  {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
+  {(bigint) 0 /* 120: AStarshipExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
+  {(bigint) parser___parser_prod___AStarshipExpr___empty_init},
+  {(bigint) parser___parser_prod___AStarshipExpr___init_astarshipexpr},
+  {(bigint) 9 /* 124: AStarshipExpr < AStarshipExpr: 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__parser___parser_nodes___TAssign(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AStarshipExpr::_parent */
+/* 3: Attribute AStarshipExpr::_location */
+/* 4: Attribute AStarshipExpr::_first_location */
+/* 5: Attribute AStarshipExpr::_last_location */
+/* 6: Attribute AStarshipExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute AStarshipExpr::_is_typed */
+/* 9: Attribute AStarshipExpr::_stype */
+/* 10: Attribute AStarshipExpr::_if_true_flow_ctx */
+/* 11: Attribute AStarshipExpr::_if_false_flow_ctx */
+/* 12: Attribute AStarshipExpr::_prop_signature */
+/* 13: Attribute AStarshipExpr::_raw_arguments_cache */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 17: Attribute AStarshipExpr::_prop */
+/* 18: Attribute AStarshipExpr::_return_type */
+/* 19: Attribute AStarshipExpr::_n_expr */
+/* 20: Attribute AStarshipExpr::_n_closure_defs */
+/* 21: Attribute AStarshipExpr::_n_expr2 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AStarshipExpr[] = "init var of AStarshipExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TAssign;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AStarshipExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* syntax/typing.nit:1441 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:860 */
+  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TAssign(void)
+val_t NEW_parser___parser_nodes___AStarshipExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TAssign;
+  obj = alloc(sizeof(val_t) * 22);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AStarshipExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TAssign(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AStarshipExpr[] = "check new AStarshipExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TAssign;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AStarshipExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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___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___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);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TAssign_parser___lexer___TAssign___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AStarshipExpr_parser___parser_prod___ABinopExpr___empty_init[] = "new AStarshipExpr parser_prod::ABinopExpr::empty_init";
+val_t NEW_AStarshipExpr_parser___parser_prod___ABinopExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 778;
-  fra.me.meth = LOCATE_NEW_TAssign_parser___lexer___TAssign___init_tk;
+  fra.me.line = 4677;
+  fra.me.meth = LOCATE_NEW_AStarshipExpr_parser___parser_prod___ABinopExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TAssign();
-  INIT_ATTRIBUTES__parser___parser_nodes___TAssign(fra.me.REG[1]);
-  parser___lexer___TAssign___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TAssign(fra.me.REG[1]);
+  /* parser/parser_prod.nit:4677 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AStarshipExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AStarshipExpr(fra.me.REG[0]);
+  parser___parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AStarshipExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-val_t NEW_TAssign_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AStarshipExpr_parser___parser_prod___AStarshipExpr___empty_init[] = "new AStarshipExpr parser_prod::AStarshipExpr::empty_init";
+val_t NEW_AStarshipExpr_parser___parser_prod___AStarshipExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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_TAssign_parser___parser_nodes___ANode___init;
+  fra.me.line = 5442;
+  fra.me.meth = LOCATE_NEW_AStarshipExpr_parser___parser_prod___AStarshipExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:5442 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AStarshipExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AStarshipExpr(fra.me.REG[0]);
+  parser___parser_prod___AStarshipExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AStarshipExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AStarshipExpr_parser___parser_prod___AStarshipExpr___init_astarshipexpr[] = "new AStarshipExpr parser_prod::AStarshipExpr::init_astarshipexpr";
+val_t NEW_AStarshipExpr_parser___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 = 5444;
+  fra.me.meth = LOCATE_NEW_AStarshipExpr_parser___parser_prod___AStarshipExpr___init_astarshipexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   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] = NEW_parser___parser_nodes___TAssign();
-  INIT_ATTRIBUTES__parser___parser_nodes___TAssign(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TAssign(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:5444 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___AStarshipExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AStarshipExpr(fra.me.REG[2]);
+  parser___parser_prod___AStarshipExpr___init_astarshipexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___AStarshipExpr(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[2];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TPluseq[73] = {
-  {(bigint) 2443 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TPluseq" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TPluseq < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TPluseq < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TPluseq < Token: superclass typecheck marker */},
-  {(bigint) 2443 /* 6: 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 :( */,
-  {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TPluseq < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
-  {(bigint) standard___file___Object___printn},
-  {(bigint) standard___file___Object___print},
-  {(bigint) standard___file___Object___getc},
-  {(bigint) standard___file___Object___gets},
-  {(bigint) standard___file___Object___stdin},
-  {(bigint) standard___file___Object___stdout},
-  {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
-  {(bigint) standard___string___Object___native_class_name},
-  {(bigint) standard___string___Object___class_name},
-  {(bigint) standard___string___Object___inspect},
-  {(bigint) standard___string___Object___inspect_head},
-  {(bigint) standard___string___Object___args},
-  {(bigint) standard___hash___Object___hash},
-  {(bigint) standard___math___Object___atan2},
-  {(bigint) standard___math___Object___pi},
-  {(bigint) standard___math___Object___srand_from},
-  {(bigint) standard___math___Object___srand},
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TPluseq < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TPluseq___parser_index},
-  {(bigint) 0 /* 70: TPluseq < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TPluseq___init_tk},
-  {(bigint) 3 /* 72: 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__parser___parser_nodes___TPluseq(val_t p0){
+static const char LOCATE_NEW_AStarshipExpr_parser___parser_nodes___ANode___init[] = "new AStarshipExpr parser_nodes::ANode::init";
+val_t NEW_AStarshipExpr_parser___parser_nodes___ANode___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_INIT_ATTRIBUTES__parser___parser_nodes___TPluseq;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_AStarshipExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AStarshipExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AStarshipExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AStarshipExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-val_t NEW_parser___parser_nodes___TPluseq(void)
-{
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TPluseq;
-  obj[1].object_id = object_id_counter;
-  object_id_counter = object_id_counter + 1;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_parser___parser_nodes___TPluseq(val_t p0){
+static const char LOCATE_NEW_AStarshipExpr_parser___parser_prod___ASendExpr___empty_init[] = "new AStarshipExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_AStarshipExpr_parser___parser_prod___ASendExpr___empty_init(void){
   struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
   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_CHECKNEW_parser___parser_nodes___TPluseq;
+  fra.me.line = 4646;
+  fra.me.meth = LOCATE_NEW_AStarshipExpr_parser___parser_prod___ASendExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
-  }
+  /* parser/parser_prod.nit:4646 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AStarshipExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AStarshipExpr(fra.me.REG[0]);
+  parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AStarshipExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-val_t NEW_TPluseq_parser___lexer___TPluseq___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AStarshipExpr_parser___parser_prod___ABinopExpr___init_abinopexpr[] = "new AStarshipExpr parser_prod::ABinopExpr::init_abinopexpr";
+val_t NEW_AStarshipExpr_parser___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[4] = {0, 0, 0, 0};
+  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 = 791;
-  fra.me.meth = LOCATE_NEW_TPluseq_parser___lexer___TPluseq___init_tk;
+  fra.me.line = 4679;
+  fra.me.meth = LOCATE_NEW_AStarshipExpr_parser___parser_prod___ABinopExpr___init_abinopexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./parser//lexer.nit:791 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___TPluseq();
-  INIT_ATTRIBUTES__parser___parser_nodes___TPluseq(fra.me.REG[1]);
-  parser___lexer___TPluseq___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TPluseq(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:4679 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___AStarshipExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AStarshipExpr(fra.me.REG[2]);
+  parser___parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___AStarshipExpr(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[2];
 }
-val_t NEW_TPluseq_parser___parser_nodes___ANode___init(val_t p0){
+static const char LOCATE_NEW_AStarshipExpr_parser___parser_prod___ASendExpr___init_asendexpr[] = "new AStarshipExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_AStarshipExpr_parser___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[4] = {0, 0, 0, 0};
+  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_TPluseq_parser___parser_nodes___ANode___init;
+  fra.me.line = 4648;
+  fra.me.meth = LOCATE_NEW_AStarshipExpr_parser___parser_prod___ASendExpr___init_asendexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___TPluseq();
-  INIT_ATTRIBUTES__parser___parser_nodes___TPluseq(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TPluseq(fra.me.REG[1]);
+  /* parser/parser_prod.nit:4648 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___AStarshipExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AStarshipExpr(fra.me.REG[1]);
+  parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AStarshipExpr(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TMinuseq[73] = {
-  {(bigint) 2471 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TMinuseq" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TMinuseq < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TMinuseq < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TMinuseq < Token: superclass typecheck marker */},
-  {(bigint) 2471 /* 6: TMinuseq < TMinuseq: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_parser___parser_nodes___AStarExpr[125] = {
+  {(bigint) 4895 /* 0: Identity */},
+  {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AStarExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AStarExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AStarExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AStarExpr < Prod: superclass typecheck marker */},
+  {(bigint) 4595 /* 6: AStarExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3811 /* 7: AStarExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 4819 /* 9: AStarExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 4831 /* 10: AStarExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 4859 /* 11: AStarExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 4887 /* 12: AStarExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 4895 /* 13: AStarExpr < AStarExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TMinuseq < Object: superclass init_table position */},
+  {(bigint) 8 /* 19: AStarExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -36041,7 +74520,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TMinuseq[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -36054,139 +74535,356 @@ const classtable_elt_t VFT_parser___parser_nodes___TMinuseq[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TMinuseq < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AStarExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AStarExpr___visit_all},
+  {(bigint) 7 /* 63: AStarExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TMinuseq___parser_index},
-  {(bigint) 0 /* 70: TMinuseq < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TMinuseq___init_tk},
-  {(bigint) 3 /* 72: TMinuseq < TMinuseq: superclass init_table position */},
+  {(bigint) syntax___typing___ASendExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 6 /* 72: AStarExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
+  {(bigint) 2 /* 76: AStarExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 5 /* 81: AStarExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 4 /* 101: AStarExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
+  {(bigint) syntax___typing___AAbsSendExpr___get_property},
+  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
+  {(bigint) 3 /* 107: AStarExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) syntax___typing___AAbsSendExpr___prop},
+  {(bigint) syntax___typing___AAbsSendExpr___return_type},
+  {(bigint) syntax___typing___AStarExpr___name},
+  {(bigint) syntax___typing___ASendExpr___do_all_typing},
+  {(bigint) syntax___typing___ASendExpr___closure_defs},
+  {(bigint) parser___parser_prod___ASendExpr___empty_init},
+  {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
+  {(bigint) 1 /* 115: AStarExpr < ASendExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
+  {(bigint) parser___parser_prod___ABinopExpr___empty_init},
+  {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
+  {(bigint) 0 /* 120: AStarExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
+  {(bigint) parser___parser_prod___AStarExpr___empty_init},
+  {(bigint) parser___parser_prod___AStarExpr___init_astarexpr},
+  {(bigint) 9 /* 124: AStarExpr < AStarExpr: 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__parser___parser_nodes___TMinuseq(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AStarExpr::_parent */
+/* 3: Attribute AStarExpr::_location */
+/* 4: Attribute AStarExpr::_first_location */
+/* 5: Attribute AStarExpr::_last_location */
+/* 6: Attribute AStarExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute AStarExpr::_is_typed */
+/* 9: Attribute AStarExpr::_stype */
+/* 10: Attribute AStarExpr::_if_true_flow_ctx */
+/* 11: Attribute AStarExpr::_if_false_flow_ctx */
+/* 12: Attribute AStarExpr::_prop_signature */
+/* 13: Attribute AStarExpr::_raw_arguments_cache */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 17: Attribute AStarExpr::_prop */
+/* 18: Attribute AStarExpr::_return_type */
+/* 19: Attribute AStarExpr::_n_expr */
+/* 20: Attribute AStarExpr::_n_closure_defs */
+/* 21: Attribute AStarExpr::_n_expr2 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AStarExpr[] = "init var of AStarExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TMinuseq;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AStarExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* syntax/typing.nit:1441 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:860 */
+  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TMinuseq(void)
+val_t NEW_parser___parser_nodes___AStarExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TMinuseq;
+  obj = alloc(sizeof(val_t) * 22);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AStarExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TMinuseq(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AStarExpr[] = "check new AStarExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TMinuseq;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AStarExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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___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___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);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TMinuseq_parser___lexer___TMinuseq___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AStarExpr_parser___parser_prod___ABinopExpr___empty_init[] = "new AStarExpr parser_prod::ABinopExpr::empty_init";
+val_t NEW_AStarExpr_parser___parser_prod___ABinopExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 804;
-  fra.me.meth = LOCATE_NEW_TMinuseq_parser___lexer___TMinuseq___init_tk;
+  fra.me.line = 4677;
+  fra.me.meth = LOCATE_NEW_AStarExpr_parser___parser_prod___ABinopExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:4677 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AStarExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AStarExpr(fra.me.REG[0]);
+  parser___parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AStarExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AStarExpr_parser___parser_prod___AStarExpr___empty_init[] = "new AStarExpr parser_prod::AStarExpr::empty_init";
+val_t NEW_AStarExpr_parser___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 = 5487;
+  fra.me.meth = LOCATE_NEW_AStarExpr_parser___parser_prod___AStarExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:5487 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AStarExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AStarExpr(fra.me.REG[0]);
+  parser___parser_prod___AStarExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AStarExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AStarExpr_parser___parser_prod___AStarExpr___init_astarexpr[] = "new AStarExpr parser_prod::AStarExpr::init_astarexpr";
+val_t NEW_AStarExpr_parser___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 = 5489;
+  fra.me.meth = LOCATE_NEW_AStarExpr_parser___parser_prod___AStarExpr___init_astarexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./parser//lexer.nit:804 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___TMinuseq();
-  INIT_ATTRIBUTES__parser___parser_nodes___TMinuseq(fra.me.REG[1]);
-  parser___lexer___TMinuseq___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TMinuseq(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:5489 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___AStarExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AStarExpr(fra.me.REG[2]);
+  parser___parser_prod___AStarExpr___init_astarexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___AStarExpr(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[2];
+}
+static const char LOCATE_NEW_AStarExpr_parser___parser_nodes___ANode___init[] = "new AStarExpr parser_nodes::ANode::init";
+val_t NEW_AStarExpr_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AStarExpr_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AStarExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AStarExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AStarExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AStarExpr_parser___parser_prod___ASendExpr___empty_init[] = "new AStarExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_AStarExpr_parser___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 = 4646;
+  fra.me.meth = LOCATE_NEW_AStarExpr_parser___parser_prod___ASendExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:4646 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AStarExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AStarExpr(fra.me.REG[0]);
+  parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AStarExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AStarExpr_parser___parser_prod___ABinopExpr___init_abinopexpr[] = "new AStarExpr parser_prod::ABinopExpr::init_abinopexpr";
+val_t NEW_AStarExpr_parser___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 = 4679;
+  fra.me.meth = LOCATE_NEW_AStarExpr_parser___parser_prod___ABinopExpr___init_abinopexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  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:4679 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___AStarExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AStarExpr(fra.me.REG[2]);
+  parser___parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___AStarExpr(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
 }
-val_t NEW_TMinuseq_parser___parser_nodes___ANode___init(val_t p0){
+static const char LOCATE_NEW_AStarExpr_parser___parser_prod___ASendExpr___init_asendexpr[] = "new AStarExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_AStarExpr_parser___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[4] = {0, 0, 0, 0};
+  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_TMinuseq_parser___parser_nodes___ANode___init;
+  fra.me.line = 4648;
+  fra.me.meth = LOCATE_NEW_AStarExpr_parser___parser_prod___ASendExpr___init_asendexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___TMinuseq();
-  INIT_ATTRIBUTES__parser___parser_nodes___TMinuseq(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TMinuseq(fra.me.REG[1]);
+  /* parser/parser_prod.nit:4648 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___AStarExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AStarExpr(fra.me.REG[1]);
+  parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AStarExpr(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___TDotdotdot[73] = {
-  {(bigint) 2723 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TDotdotdot" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TDotdotdot < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TDotdotdot < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TDotdotdot < Token: superclass typecheck marker */},
-  {(bigint) 2723 /* 6: TDotdotdot < TDotdotdot: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_parser___parser_nodes___ASlashExpr[125] = {
+  {(bigint) 4899 /* 0: Identity */},
+  {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ASlashExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ASlashExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: ASlashExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: ASlashExpr < Prod: superclass typecheck marker */},
+  {(bigint) 4595 /* 6: ASlashExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3811 /* 7: ASlashExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 4819 /* 9: ASlashExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 4831 /* 10: ASlashExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 4859 /* 11: ASlashExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 4887 /* 12: ASlashExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 4899 /* 13: ASlashExpr < ASlashExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TDotdotdot < Object: superclass init_table position */},
+  {(bigint) 8 /* 19: ASlashExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -36202,7 +74900,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TDotdotdot[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -36215,139 +74915,356 @@ const classtable_elt_t VFT_parser___parser_nodes___TDotdotdot[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TDotdotdot < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___ASlashExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___ASlashExpr___visit_all},
+  {(bigint) 7 /* 63: ASlashExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TDotdotdot___parser_index},
-  {(bigint) 0 /* 70: TDotdotdot < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TDotdotdot___init_tk},
-  {(bigint) 3 /* 72: TDotdotdot < TDotdotdot: superclass init_table position */},
+  {(bigint) syntax___typing___ASendExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 6 /* 72: ASlashExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
+  {(bigint) 2 /* 76: ASlashExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 5 /* 81: ASlashExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 4 /* 101: ASlashExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
+  {(bigint) syntax___typing___AAbsSendExpr___get_property},
+  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
+  {(bigint) 3 /* 107: ASlashExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) syntax___typing___AAbsSendExpr___prop},
+  {(bigint) syntax___typing___AAbsSendExpr___return_type},
+  {(bigint) syntax___typing___ASlashExpr___name},
+  {(bigint) syntax___typing___ASendExpr___do_all_typing},
+  {(bigint) syntax___typing___ASendExpr___closure_defs},
+  {(bigint) parser___parser_prod___ASendExpr___empty_init},
+  {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
+  {(bigint) 1 /* 115: ASlashExpr < ASendExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
+  {(bigint) parser___parser_prod___ABinopExpr___empty_init},
+  {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
+  {(bigint) 0 /* 120: ASlashExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
+  {(bigint) parser___parser_prod___ASlashExpr___empty_init},
+  {(bigint) parser___parser_prod___ASlashExpr___init_aslashexpr},
+  {(bigint) 9 /* 124: ASlashExpr < ASlashExpr: 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__parser___parser_nodes___TDotdotdot(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute ASlashExpr::_parent */
+/* 3: Attribute ASlashExpr::_location */
+/* 4: Attribute ASlashExpr::_first_location */
+/* 5: Attribute ASlashExpr::_last_location */
+/* 6: Attribute ASlashExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute ASlashExpr::_is_typed */
+/* 9: Attribute ASlashExpr::_stype */
+/* 10: Attribute ASlashExpr::_if_true_flow_ctx */
+/* 11: Attribute ASlashExpr::_if_false_flow_ctx */
+/* 12: Attribute ASlashExpr::_prop_signature */
+/* 13: Attribute ASlashExpr::_raw_arguments_cache */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 17: Attribute ASlashExpr::_prop */
+/* 18: Attribute ASlashExpr::_return_type */
+/* 19: Attribute ASlashExpr::_n_expr */
+/* 20: Attribute ASlashExpr::_n_closure_defs */
+/* 21: Attribute ASlashExpr::_n_expr2 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ASlashExpr[] = "init var of ASlashExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TDotdotdot;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ASlashExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* syntax/typing.nit:1441 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:860 */
+  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TDotdotdot(void)
+val_t NEW_parser___parser_nodes___ASlashExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TDotdotdot;
+  obj = alloc(sizeof(val_t) * 22);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ASlashExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TDotdotdot(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___ASlashExpr[] = "check new ASlashExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TDotdotdot;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___ASlashExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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___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___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);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TDotdotdot_parser___lexer___TDotdotdot___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ASlashExpr_parser___parser_prod___ABinopExpr___empty_init[] = "new ASlashExpr parser_prod::ABinopExpr::empty_init";
+val_t NEW_ASlashExpr_parser___parser_prod___ABinopExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 817;
-  fra.me.meth = LOCATE_NEW_TDotdotdot_parser___lexer___TDotdotdot___init_tk;
+  fra.me.line = 4677;
+  fra.me.meth = LOCATE_NEW_ASlashExpr_parser___parser_prod___ABinopExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:4677 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ASlashExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ASlashExpr(fra.me.REG[0]);
+  parser___parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ASlashExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_ASlashExpr_parser___parser_prod___ASlashExpr___empty_init[] = "new ASlashExpr parser_prod::ASlashExpr::empty_init";
+val_t NEW_ASlashExpr_parser___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 = 5532;
+  fra.me.meth = LOCATE_NEW_ASlashExpr_parser___parser_prod___ASlashExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:5532 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ASlashExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ASlashExpr(fra.me.REG[0]);
+  parser___parser_prod___ASlashExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ASlashExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_ASlashExpr_parser___parser_prod___ASlashExpr___init_aslashexpr[] = "new ASlashExpr parser_prod::ASlashExpr::init_aslashexpr";
+val_t NEW_ASlashExpr_parser___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 = 5534;
+  fra.me.meth = LOCATE_NEW_ASlashExpr_parser___parser_prod___ASlashExpr___init_aslashexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./parser//lexer.nit:817 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___TDotdotdot();
-  INIT_ATTRIBUTES__parser___parser_nodes___TDotdotdot(fra.me.REG[1]);
-  parser___lexer___TDotdotdot___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TDotdotdot(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:5534 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___ASlashExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ASlashExpr(fra.me.REG[2]);
+  parser___parser_prod___ASlashExpr___init_aslashexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___ASlashExpr(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[2];
+}
+static const char LOCATE_NEW_ASlashExpr_parser___parser_nodes___ANode___init[] = "new ASlashExpr parser_nodes::ANode::init";
+val_t NEW_ASlashExpr_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_ASlashExpr_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ASlashExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ASlashExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ASlashExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_ASlashExpr_parser___parser_prod___ASendExpr___empty_init[] = "new ASlashExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_ASlashExpr_parser___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 = 4646;
+  fra.me.meth = LOCATE_NEW_ASlashExpr_parser___parser_prod___ASendExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:4646 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ASlashExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ASlashExpr(fra.me.REG[0]);
+  parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ASlashExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_ASlashExpr_parser___parser_prod___ABinopExpr___init_abinopexpr[] = "new ASlashExpr parser_prod::ABinopExpr::init_abinopexpr";
+val_t NEW_ASlashExpr_parser___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 = 4679;
+  fra.me.meth = LOCATE_NEW_ASlashExpr_parser___parser_prod___ABinopExpr___init_abinopexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  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:4679 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___ASlashExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ASlashExpr(fra.me.REG[2]);
+  parser___parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___ASlashExpr(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
 }
-val_t NEW_TDotdotdot_parser___parser_nodes___ANode___init(val_t p0){
+static const char LOCATE_NEW_ASlashExpr_parser___parser_prod___ASendExpr___init_asendexpr[] = "new ASlashExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_ASlashExpr_parser___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[4] = {0, 0, 0, 0};
+  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_TDotdotdot_parser___parser_nodes___ANode___init;
+  fra.me.line = 4648;
+  fra.me.meth = LOCATE_NEW_ASlashExpr_parser___parser_prod___ASendExpr___init_asendexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___TDotdotdot();
-  INIT_ATTRIBUTES__parser___parser_nodes___TDotdotdot(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TDotdotdot(fra.me.REG[1]);
+  /* parser/parser_prod.nit:4648 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___ASlashExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ASlashExpr(fra.me.REG[1]);
+  parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ASlashExpr(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TDotdot[73] = {
-  {(bigint) 2727 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TDotdot" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TDotdot < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TDotdot < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TDotdot < Token: superclass typecheck marker */},
-  {(bigint) 2727 /* 6: TDotdot < TDotdot: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_parser___parser_nodes___APercentExpr[125] = {
+  {(bigint) 4907 /* 0: Identity */},
+  {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "APercentExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: APercentExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: APercentExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: APercentExpr < Prod: superclass typecheck marker */},
+  {(bigint) 4595 /* 6: APercentExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3811 /* 7: APercentExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 4819 /* 9: APercentExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 4831 /* 10: APercentExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 4859 /* 11: APercentExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 4887 /* 12: APercentExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 4907 /* 13: APercentExpr < APercentExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TDotdot < Object: superclass init_table position */},
+  {(bigint) 8 /* 19: APercentExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -36363,7 +75280,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TDotdot[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -36376,139 +75295,356 @@ const classtable_elt_t VFT_parser___parser_nodes___TDotdot[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TDotdot < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___APercentExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___APercentExpr___visit_all},
+  {(bigint) 7 /* 63: APercentExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TDotdot___parser_index},
-  {(bigint) 0 /* 70: TDotdot < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TDotdot___init_tk},
-  {(bigint) 3 /* 72: TDotdot < TDotdot: superclass init_table position */},
+  {(bigint) syntax___typing___ASendExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 6 /* 72: APercentExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
+  {(bigint) 2 /* 76: APercentExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 5 /* 81: APercentExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 4 /* 101: APercentExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
+  {(bigint) syntax___typing___AAbsSendExpr___get_property},
+  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
+  {(bigint) 3 /* 107: APercentExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) syntax___typing___AAbsSendExpr___prop},
+  {(bigint) syntax___typing___AAbsSendExpr___return_type},
+  {(bigint) syntax___typing___APercentExpr___name},
+  {(bigint) syntax___typing___ASendExpr___do_all_typing},
+  {(bigint) syntax___typing___ASendExpr___closure_defs},
+  {(bigint) parser___parser_prod___ASendExpr___empty_init},
+  {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
+  {(bigint) 1 /* 115: APercentExpr < ASendExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
+  {(bigint) parser___parser_prod___ABinopExpr___empty_init},
+  {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
+  {(bigint) 0 /* 120: APercentExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
+  {(bigint) parser___parser_prod___APercentExpr___empty_init},
+  {(bigint) parser___parser_prod___APercentExpr___init_apercentexpr},
+  {(bigint) 9 /* 124: APercentExpr < APercentExpr: 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__parser___parser_nodes___TDotdot(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute APercentExpr::_parent */
+/* 3: Attribute APercentExpr::_location */
+/* 4: Attribute APercentExpr::_first_location */
+/* 5: Attribute APercentExpr::_last_location */
+/* 6: Attribute APercentExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute APercentExpr::_is_typed */
+/* 9: Attribute APercentExpr::_stype */
+/* 10: Attribute APercentExpr::_if_true_flow_ctx */
+/* 11: Attribute APercentExpr::_if_false_flow_ctx */
+/* 12: Attribute APercentExpr::_prop_signature */
+/* 13: Attribute APercentExpr::_raw_arguments_cache */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 17: Attribute APercentExpr::_prop */
+/* 18: Attribute APercentExpr::_return_type */
+/* 19: Attribute APercentExpr::_n_expr */
+/* 20: Attribute APercentExpr::_n_closure_defs */
+/* 21: Attribute APercentExpr::_n_expr2 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___APercentExpr[] = "init var of APercentExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TDotdot;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___APercentExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* syntax/typing.nit:1441 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:860 */
+  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TDotdot(void)
+val_t NEW_parser___parser_nodes___APercentExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TDotdot;
+  obj = alloc(sizeof(val_t) * 22);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___APercentExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TDotdot(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___APercentExpr[] = "check new APercentExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TDotdot;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___APercentExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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___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___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);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TDotdot_parser___lexer___TDotdot___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_APercentExpr_parser___parser_prod___ABinopExpr___empty_init[] = "new APercentExpr parser_prod::ABinopExpr::empty_init";
+val_t NEW_APercentExpr_parser___parser_prod___ABinopExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 830;
-  fra.me.meth = LOCATE_NEW_TDotdot_parser___lexer___TDotdot___init_tk;
+  fra.me.line = 4677;
+  fra.me.meth = LOCATE_NEW_APercentExpr_parser___parser_prod___ABinopExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:4677 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___APercentExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___APercentExpr(fra.me.REG[0]);
+  parser___parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___APercentExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_APercentExpr_parser___parser_prod___APercentExpr___empty_init[] = "new APercentExpr parser_prod::APercentExpr::empty_init";
+val_t NEW_APercentExpr_parser___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 = 5577;
+  fra.me.meth = LOCATE_NEW_APercentExpr_parser___parser_prod___APercentExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:5577 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___APercentExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___APercentExpr(fra.me.REG[0]);
+  parser___parser_prod___APercentExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___APercentExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_APercentExpr_parser___parser_prod___APercentExpr___init_apercentexpr[] = "new APercentExpr parser_prod::APercentExpr::init_apercentexpr";
+val_t NEW_APercentExpr_parser___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 = 5579;
+  fra.me.meth = LOCATE_NEW_APercentExpr_parser___parser_prod___APercentExpr___init_apercentexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./parser//lexer.nit:830 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___TDotdot();
-  INIT_ATTRIBUTES__parser___parser_nodes___TDotdot(fra.me.REG[1]);
-  parser___lexer___TDotdot___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TDotdot(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:5579 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___APercentExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___APercentExpr(fra.me.REG[2]);
+  parser___parser_prod___APercentExpr___init_apercentexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___APercentExpr(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[2];
+}
+static const char LOCATE_NEW_APercentExpr_parser___parser_nodes___ANode___init[] = "new APercentExpr parser_nodes::ANode::init";
+val_t NEW_APercentExpr_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_APercentExpr_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___APercentExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___APercentExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___APercentExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_APercentExpr_parser___parser_prod___ASendExpr___empty_init[] = "new APercentExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_APercentExpr_parser___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 = 4646;
+  fra.me.meth = LOCATE_NEW_APercentExpr_parser___parser_prod___ASendExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:4646 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___APercentExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___APercentExpr(fra.me.REG[0]);
+  parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___APercentExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_APercentExpr_parser___parser_prod___ABinopExpr___init_abinopexpr[] = "new APercentExpr parser_prod::ABinopExpr::init_abinopexpr";
+val_t NEW_APercentExpr_parser___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 = 4679;
+  fra.me.meth = LOCATE_NEW_APercentExpr_parser___parser_prod___ABinopExpr___init_abinopexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  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:4679 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___APercentExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___APercentExpr(fra.me.REG[2]);
+  parser___parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___APercentExpr(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
 }
-val_t NEW_TDotdot_parser___parser_nodes___ANode___init(val_t p0){
+static const char LOCATE_NEW_APercentExpr_parser___parser_prod___ASendExpr___init_asendexpr[] = "new APercentExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_APercentExpr_parser___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[4] = {0, 0, 0, 0};
+  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_TDotdot_parser___parser_nodes___ANode___init;
+  fra.me.line = 4648;
+  fra.me.meth = LOCATE_NEW_APercentExpr_parser___parser_prod___ASendExpr___init_asendexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___TDotdot();
-  INIT_ATTRIBUTES__parser___parser_nodes___TDotdot(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TDotdot(fra.me.REG[1]);
+  /* parser/parser_prod.nit:4648 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___APercentExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___APercentExpr(fra.me.REG[1]);
+  parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___APercentExpr(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TDot[73] = {
-  {(bigint) 2731 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TDot" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TDot < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TDot < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TDot < Token: superclass typecheck marker */},
-  {(bigint) 2731 /* 6: TDot < TDot: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_parser___parser_nodes___AUminusExpr[122] = {
+  {(bigint) 4863 /* 0: Identity */},
+  {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AUminusExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AUminusExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AUminusExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AUminusExpr < Prod: superclass typecheck marker */},
+  {(bigint) 4595 /* 6: AUminusExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3811 /* 7: AUminusExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 4819 /* 9: AUminusExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 4831 /* 10: AUminusExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 4859 /* 11: AUminusExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 4863 /* 12: AUminusExpr < AUminusExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TDot < Object: superclass init_table position */},
+  {(bigint) 7 /* 19: AUminusExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -36524,7 +75660,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TDot[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -36537,130 +75675,298 @@ const classtable_elt_t VFT_parser___parser_nodes___TDot[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TDot < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AUminusExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AUminusExpr___visit_all},
+  {(bigint) 6 /* 63: AUminusExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TDot___parser_index},
-  {(bigint) 0 /* 70: TDot < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TDot___init_tk},
-  {(bigint) 3 /* 72: TDot < TDot: superclass init_table position */},
+  {(bigint) syntax___typing___ASendExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 5 /* 72: AUminusExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
+  {(bigint) 1 /* 76: AUminusExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 4 /* 81: AUminusExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) syntax___typing___AUminusExpr___compute_raw_arguments},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 3 /* 101: AUminusExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
+  {(bigint) syntax___typing___AAbsSendExpr___get_property},
+  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
+  {(bigint) 2 /* 107: AUminusExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) syntax___typing___AAbsSendExpr___prop},
+  {(bigint) syntax___typing___AAbsSendExpr___return_type},
+  {(bigint) syntax___typing___AUminusExpr___name},
+  {(bigint) syntax___typing___ASendExpr___do_all_typing},
+  {(bigint) syntax___typing___ASendExpr___closure_defs},
+  {(bigint) parser___parser_prod___ASendExpr___empty_init},
+  {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
+  {(bigint) 0 /* 115: AUminusExpr < ASendExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
+  {(bigint) parser___parser_prod___AUminusExpr___empty_init},
+  {(bigint) parser___parser_prod___AUminusExpr___init_auminusexpr},
+  {(bigint) 8 /* 120: AUminusExpr < AUminusExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AUminusExpr___n_minus},
 };
 /* 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__parser___parser_nodes___TDot(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AUminusExpr::_parent */
+/* 3: Attribute AUminusExpr::_location */
+/* 4: Attribute AUminusExpr::_first_location */
+/* 5: Attribute AUminusExpr::_last_location */
+/* 6: Attribute AUminusExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute AUminusExpr::_is_typed */
+/* 9: Attribute AUminusExpr::_stype */
+/* 10: Attribute AUminusExpr::_if_true_flow_ctx */
+/* 11: Attribute AUminusExpr::_if_false_flow_ctx */
+/* 12: Attribute AUminusExpr::_prop_signature */
+/* 13: Attribute AUminusExpr::_raw_arguments_cache */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 17: Attribute AUminusExpr::_prop */
+/* 18: Attribute AUminusExpr::_return_type */
+/* 19: Attribute AUminusExpr::_n_expr */
+/* 20: Attribute AUminusExpr::_n_closure_defs */
+/* 21: Attribute AUminusExpr::_n_minus */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AUminusExpr[] = "init var of AUminusExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TDot;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AUminusExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* syntax/typing.nit:1441 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:860 */
+  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TDot(void)
+val_t NEW_parser___parser_nodes___AUminusExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TDot;
+  obj = alloc(sizeof(val_t) * 22);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AUminusExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TDot(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AUminusExpr[] = "check new AUminusExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TDot;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AUminusExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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___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___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);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TDot_parser___lexer___TDot___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AUminusExpr_parser___parser_prod___ASendExpr___empty_init[] = "new AUminusExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_AUminusExpr_parser___parser_prod___ASendExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 843;
-  fra.me.meth = LOCATE_NEW_TDot_parser___lexer___TDot___init_tk;
+  fra.me.line = 4646;
+  fra.me.meth = LOCATE_NEW_AUminusExpr_parser___parser_prod___ASendExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:4646 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AUminusExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AUminusExpr(fra.me.REG[0]);
+  parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AUminusExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AUminusExpr_parser___parser_prod___AUminusExpr___empty_init[] = "new AUminusExpr parser_prod::AUminusExpr::empty_init";
+val_t NEW_AUminusExpr_parser___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 = 5622;
+  fra.me.meth = LOCATE_NEW_AUminusExpr_parser___parser_prod___AUminusExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:5622 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AUminusExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AUminusExpr(fra.me.REG[0]);
+  parser___parser_prod___AUminusExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AUminusExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AUminusExpr_parser___parser_prod___AUminusExpr___init_auminusexpr[] = "new AUminusExpr parser_prod::AUminusExpr::init_auminusexpr";
+val_t NEW_AUminusExpr_parser___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 = 5624;
+  fra.me.meth = LOCATE_NEW_AUminusExpr_parser___parser_prod___AUminusExpr___init_auminusexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./parser//lexer.nit:843 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___TDot();
-  INIT_ATTRIBUTES__parser___parser_nodes___TDot(fra.me.REG[1]);
-  parser___lexer___TDot___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TDot(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:5624 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___AUminusExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AUminusExpr(fra.me.REG[2]);
+  parser___parser_prod___AUminusExpr___init_auminusexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___AUminusExpr(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[2];
+}
+static const char LOCATE_NEW_AUminusExpr_parser___parser_nodes___ANode___init[] = "new AUminusExpr parser_nodes::ANode::init";
+val_t NEW_AUminusExpr_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AUminusExpr_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AUminusExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AUminusExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AUminusExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-val_t NEW_TDot_parser___parser_nodes___ANode___init(val_t p0){
+static const char LOCATE_NEW_AUminusExpr_parser___parser_prod___ASendExpr___init_asendexpr[] = "new AUminusExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_AUminusExpr_parser___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[4] = {0, 0, 0, 0};
+  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_TDot_parser___parser_nodes___ANode___init;
+  fra.me.line = 4648;
+  fra.me.meth = LOCATE_NEW_AUminusExpr_parser___parser_prod___ASendExpr___init_asendexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___TDot();
-  INIT_ATTRIBUTES__parser___parser_nodes___TDot(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TDot(fra.me.REG[1]);
+  /* parser/parser_prod.nit:4648 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___AUminusExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AUminusExpr(fra.me.REG[1]);
+  parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AUminusExpr(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TPlus[73] = {
-  {(bigint) 2447 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TPlus" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TPlus < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TPlus < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TPlus < Token: superclass typecheck marker */},
-  {(bigint) 2447 /* 6: TPlus < TPlus: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_parser___parser_nodes___ANewExpr[117] = {
+  {(bigint) 4835 /* 0: Identity */},
+  {(bigint) 23 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ANewExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ANewExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: ANewExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: ANewExpr < Prod: superclass typecheck marker */},
+  {(bigint) 4595 /* 6: ANewExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3811 /* 7: ANewExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 4819 /* 9: ANewExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 4835 /* 10: ANewExpr < ANewExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -36669,7 +75975,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TPlus[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TPlus < Object: superclass init_table position */},
+  {(bigint) 5 /* 19: ANewExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -36685,7 +75991,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TPlus[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -36698,128 +76006,252 @@ const classtable_elt_t VFT_parser___parser_nodes___TPlus[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TPlus < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___ANewExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___ANewExpr___visit_all},
+  {(bigint) 4 /* 63: ANewExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TPlus___parser_index},
-  {(bigint) 0 /* 70: TPlus < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TPlus___init_tk},
-  {(bigint) 3 /* 72: TPlus < TPlus: superclass init_table position */},
+  {(bigint) syntax___typing___ANewExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 3 /* 72: ANewExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___mmbuilder___ANewExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 2 /* 81: ANewExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___ANewExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) syntax___typing___ANewExpr___compute_raw_arguments},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 1 /* 101: ANewExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
+  {(bigint) syntax___typing___AAbsSendExpr___get_property},
+  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
+  {(bigint) 0 /* 107: ANewExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) syntax___typing___AAbsSendExpr___prop},
+  {(bigint) syntax___typing___AAbsSendExpr___return_type},
+  {(bigint) parser___parser_prod___ANewExpr___empty_init},
+  {(bigint) parser___parser_prod___ANewExpr___init_anewexpr},
+  {(bigint) 6 /* 112: ANewExpr < ANewExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANewExpr___n_kwnew},
+  {(bigint) parser___parser_nodes___ANewExpr___n_type},
+  {(bigint) parser___parser_nodes___ANewExpr___n_id},
+  {(bigint) parser___parser_nodes___ANewExpr___n_args},
 };
 /* 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__parser___parser_nodes___TPlus(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute ANewExpr::_parent */
+/* 3: Attribute ANewExpr::_location */
+/* 4: Attribute ANewExpr::_first_location */
+/* 5: Attribute ANewExpr::_last_location */
+/* 6: Attribute ANewExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute ANewExpr::_is_typed */
+/* 9: Attribute ANewExpr::_stype */
+/* 10: Attribute ANewExpr::_if_true_flow_ctx */
+/* 11: Attribute ANewExpr::_if_false_flow_ctx */
+/* 12: Attribute ANewExpr::_prop_signature */
+/* 13: Attribute ANewExpr::_raw_arguments_cache */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 17: Attribute ANewExpr::_prop */
+/* 18: Attribute ANewExpr::_return_type */
+/* 19: Attribute ANewExpr::_n_kwnew */
+/* 20: Attribute ANewExpr::_n_type */
+/* 21: Attribute ANewExpr::_n_id */
+/* 22: Attribute ANewExpr::_n_args */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ANewExpr[] = "init var of ANewExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TPlus;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ANewExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* syntax/typing.nit:1441 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:949 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ANewExpr____n_id(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TPlus(void)
+val_t NEW_parser___parser_nodes___ANewExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TPlus;
+  obj = alloc(sizeof(val_t) * 23);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ANewExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TPlus(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___ANewExpr[] = "check new ANewExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TPlus;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___ANewExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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___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___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;
 }
-val_t NEW_TPlus_parser___lexer___TPlus___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ANewExpr_parser___parser_prod___ANewExpr___empty_init[] = "new ANewExpr parser_prod::ANewExpr::empty_init";
+val_t NEW_ANewExpr_parser___parser_prod___ANewExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 856;
-  fra.me.meth = LOCATE_NEW_TPlus_parser___lexer___TPlus___init_tk;
+  fra.me.line = 5667;
+  fra.me.meth = LOCATE_NEW_ANewExpr_parser___parser_prod___ANewExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TPlus();
-  INIT_ATTRIBUTES__parser___parser_nodes___TPlus(fra.me.REG[1]);
-  parser___lexer___TPlus___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TPlus(fra.me.REG[1]);
+  /* parser/parser_prod.nit:5667 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ANewExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ANewExpr(fra.me.REG[0]);
+  parser___parser_prod___ANewExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ANewExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-val_t NEW_TPlus_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ANewExpr_parser___parser_prod___ANewExpr___init_anewexpr[] = "new ANewExpr parser_prod::ANewExpr::init_anewexpr";
+val_t NEW_ANewExpr_parser___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[4] = {0, 0, 0, 0};
+  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_TPlus_parser___parser_nodes___ANode___init;
+  fra.me.line = 5669;
+  fra.me.meth = LOCATE_NEW_ANewExpr_parser___parser_prod___ANewExpr___init_anewexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
   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] = NEW_parser___parser_nodes___TPlus();
-  INIT_ATTRIBUTES__parser___parser_nodes___TPlus(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TPlus(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  /* parser/parser_prod.nit:5669 */
+  fra.me.REG[4] = NEW_parser___parser_nodes___ANewExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ANewExpr(fra.me.REG[4]);
+  parser___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_parser___parser_nodes___ANewExpr(fra.me.REG[4]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[4];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TMinus[73] = {
-  {(bigint) 2475 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TMinus" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TMinus < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TMinus < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TMinus < Token: superclass typecheck marker */},
-  {(bigint) 2475 /* 6: TMinus < TMinus: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+static const char LOCATE_NEW_ANewExpr_parser___parser_nodes___ANode___init[] = "new ANewExpr parser_nodes::ANode::init";
+val_t NEW_ANewExpr_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_ANewExpr_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ANewExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ANewExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ANewExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___AAttrExpr[106] = {
+  {(bigint) 4795 /* 0: Identity */},
+  {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AAttrExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AAttrExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AAttrExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AAttrExpr < Prod: superclass typecheck marker */},
+  {(bigint) 4559 /* 6: AAttrExpr < AAttrFormExpr: superclass typecheck marker */},
+  {(bigint) 3811 /* 7: AAttrExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 4795 /* 8: AAttrExpr < AAttrExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -36830,7 +76262,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TMinus[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TMinus < Object: superclass init_table position */},
+  {(bigint) 4 /* 19: AAttrExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -36846,7 +76278,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TMinus[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -36859,129 +76293,225 @@ const classtable_elt_t VFT_parser___parser_nodes___TMinus[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TMinus < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AAttrExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AAttrExpr___visit_all},
+  {(bigint) 3 /* 63: AAttrExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TMinus___parser_index},
-  {(bigint) 0 /* 70: TMinus < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TMinus___init_tk},
-  {(bigint) 3 /* 72: TMinus < TMinus: superclass init_table position */},
+  {(bigint) syntax___typing___AAttrExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 2 /* 72: AAttrExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 1 /* 81: AAttrExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___AAttrExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___typing___AAttrFormExpr___do_typing},
+  {(bigint) syntax___typing___AAttrFormExpr___prop},
+  {(bigint) syntax___typing___AAttrFormExpr___attr_type},
+  {(bigint) 0 /* 100: AAttrExpr < AAttrFormExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AAttrFormExpr___n_expr},
+  {(bigint) parser___parser_nodes___AAttrFormExpr___n_id},
+  {(bigint) parser___parser_prod___AAttrExpr___empty_init},
+  {(bigint) parser___parser_prod___AAttrExpr___init_aattrexpr},
+  {(bigint) 5 /* 105: AAttrExpr < AAttrExpr: 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__parser___parser_nodes___TMinus(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AAttrExpr::_parent */
+/* 3: Attribute AAttrExpr::_location */
+/* 4: Attribute AAttrExpr::_first_location */
+/* 5: Attribute AAttrExpr::_last_location */
+/* 6: Attribute AAttrExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute AAttrExpr::_is_typed */
+/* 9: Attribute AAttrExpr::_stype */
+/* 10: Attribute AAttrExpr::_if_true_flow_ctx */
+/* 11: Attribute AAttrExpr::_if_false_flow_ctx */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 17: Attribute AAttrExpr::_prop */
+/* 18: Attribute AAttrExpr::_attr_type */
+/* 19: Attribute AAttrExpr::_n_expr */
+/* 20: Attribute AAttrExpr::_n_id */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AAttrExpr[] = "init var of AAttrExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___AAttrExpr(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__parser___parser_nodes___TMinus;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AAttrExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TMinus(void)
+val_t NEW_parser___parser_nodes___AAttrExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TMinus;
+  obj = alloc(sizeof(val_t) * 21);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AAttrExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TMinus(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AAttrExpr[] = "check new AAttrExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TMinus;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AAttrExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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___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_TMinus_parser___lexer___TMinus___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AAttrExpr_parser___parser_prod___AAttrExpr___empty_init[] = "new AAttrExpr parser_prod::AAttrExpr::empty_init";
+val_t NEW_AAttrExpr_parser___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 = 5744;
+  fra.me.meth = LOCATE_NEW_AAttrExpr_parser___parser_prod___AAttrExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:5744 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AAttrExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AAttrExpr(fra.me.REG[0]);
+  parser___parser_prod___AAttrExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AAttrExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AAttrExpr_parser___parser_prod___AAttrExpr___init_aattrexpr[] = "new AAttrExpr parser_prod::AAttrExpr::init_aattrexpr";
+val_t NEW_AAttrExpr_parser___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[4] = {0, 0, 0, 0};
+  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 = 869;
-  fra.me.meth = LOCATE_NEW_TMinus_parser___lexer___TMinus___init_tk;
+  fra.me.line = 5746;
+  fra.me.meth = LOCATE_NEW_AAttrExpr_parser___parser_prod___AAttrExpr___init_aattrexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./parser//lexer.nit:869 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___TMinus();
-  INIT_ATTRIBUTES__parser___parser_nodes___TMinus(fra.me.REG[1]);
-  parser___lexer___TMinus___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TMinus(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:5746 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___AAttrExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AAttrExpr(fra.me.REG[2]);
+  parser___parser_prod___AAttrExpr___init_aattrexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___AAttrExpr(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[2];
 }
-val_t NEW_TMinus_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AAttrExpr_parser___parser_nodes___ANode___init[] = "new AAttrExpr parser_nodes::ANode::init";
+val_t NEW_AAttrExpr_parser___parser_nodes___ANode___init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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_TMinus_parser___parser_nodes___ANode___init;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_AAttrExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___TMinus();
-  INIT_ATTRIBUTES__parser___parser_nodes___TMinus(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TMinus(fra.me.REG[1]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AAttrExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AAttrExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AAttrExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TStar[73] = {
-  {(bigint) 2431 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TStar" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TStar < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TStar < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TStar < Token: superclass typecheck marker */},
-  {(bigint) 2431 /* 6: TStar < TStar: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_parser___parser_nodes___AAttrAssignExpr[103] = {
+  {(bigint) 4799 /* 0: Identity */},
+  {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AAttrAssignExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AAttrAssignExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AAttrAssignExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AAttrAssignExpr < Prod: superclass typecheck marker */},
+  {(bigint) 4559 /* 6: AAttrAssignExpr < AAttrFormExpr: superclass typecheck marker */},
+  {(bigint) 3811 /* 7: AAttrAssignExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 4571 /* 8: AAttrAssignExpr < AAssignFormExpr: superclass typecheck marker */},
+  {(bigint) 4799 /* 9: AAttrAssignExpr < AAttrAssignExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -36991,7 +76521,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TStar[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TStar < Object: superclass init_table position */},
+  {(bigint) 4 /* 19: AAttrAssignExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -37007,7 +76537,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TStar[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -37020,129 +76552,236 @@ const classtable_elt_t VFT_parser___parser_nodes___TStar[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TStar < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AAttrAssignExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AAttrAssignExpr___visit_all},
+  {(bigint) 3 /* 63: AAttrAssignExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TStar___parser_index},
-  {(bigint) 0 /* 70: TStar < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TStar___init_tk},
-  {(bigint) 3 /* 72: TStar < TStar: superclass init_table position */},
+  {(bigint) syntax___typing___AAttrAssignExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 2 /* 72: AAttrAssignExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 1 /* 81: AAttrAssignExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___AAttrAssignExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {(bigint) parser___parser_prod___AAttrAssignExpr___empty_init},
+  {(bigint) parser___parser_prod___AAttrAssignExpr___init_aattrassignexpr},
+  {(bigint) 6 /* 91: AAttrAssignExpr < AAttrAssignExpr: superclass init_table position */},
+  {(bigint) 5 /* 92: AAttrAssignExpr < AAssignFormExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AAssignFormExpr___n_assign},
+  {(bigint) parser___parser_nodes___AAssignFormExpr___n_value},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___typing___AAttrFormExpr___do_typing},
+  {(bigint) syntax___typing___AAttrFormExpr___prop},
+  {(bigint) syntax___typing___AAttrFormExpr___attr_type},
+  {(bigint) 0 /* 100: AAttrAssignExpr < AAttrFormExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AAttrFormExpr___n_expr},
+  {(bigint) parser___parser_nodes___AAttrFormExpr___n_id},
 };
 /* 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__parser___parser_nodes___TStar(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AAttrAssignExpr::_parent */
+/* 3: Attribute AAttrAssignExpr::_location */
+/* 4: Attribute AAttrAssignExpr::_first_location */
+/* 5: Attribute AAttrAssignExpr::_last_location */
+/* 6: Attribute AAttrAssignExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute AAttrAssignExpr::_is_typed */
+/* 9: Attribute AAttrAssignExpr::_stype */
+/* 10: Attribute AAttrAssignExpr::_if_true_flow_ctx */
+/* 11: Attribute AAttrAssignExpr::_if_false_flow_ctx */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 14: Attribute AAttrAssignExpr::_n_assign */
+/* 15: Attribute AAttrAssignExpr::_n_value */
+/* Instance Hole :( */
+/* 17: Attribute AAttrAssignExpr::_prop */
+/* 18: Attribute AAttrAssignExpr::_attr_type */
+/* 19: Attribute AAttrAssignExpr::_n_expr */
+/* 20: Attribute AAttrAssignExpr::_n_id */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AAttrAssignExpr[] = "init var of AAttrAssignExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___AAttrAssignExpr(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__parser___parser_nodes___TStar;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AAttrAssignExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TStar(void)
+val_t NEW_parser___parser_nodes___AAttrAssignExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TStar;
+  obj = alloc(sizeof(val_t) * 21);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AAttrAssignExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TStar(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AAttrAssignExpr[] = "check new AAttrAssignExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TStar;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AAttrAssignExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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___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___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___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;
 }
-val_t NEW_TStar_parser___lexer___TStar___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AAttrAssignExpr_parser___parser_prod___AAttrAssignExpr___empty_init[] = "new AAttrAssignExpr parser_prod::AAttrAssignExpr::empty_init";
+val_t NEW_AAttrAssignExpr_parser___parser_prod___AAttrAssignExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 882;
-  fra.me.meth = LOCATE_NEW_TStar_parser___lexer___TStar___init_tk;
+  fra.me.line = 5789;
+  fra.me.meth = LOCATE_NEW_AAttrAssignExpr_parser___parser_prod___AAttrAssignExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TStar();
-  INIT_ATTRIBUTES__parser___parser_nodes___TStar(fra.me.REG[1]);
-  parser___lexer___TStar___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TStar(fra.me.REG[1]);
+  /* parser/parser_prod.nit:5789 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AAttrAssignExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AAttrAssignExpr(fra.me.REG[0]);
+  parser___parser_prod___AAttrAssignExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AAttrAssignExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-val_t NEW_TStar_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AAttrAssignExpr_parser___parser_prod___AAttrAssignExpr___init_aattrassignexpr[] = "new AAttrAssignExpr parser_prod::AAttrAssignExpr::init_aattrassignexpr";
+val_t NEW_AAttrAssignExpr_parser___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[4] = {0, 0, 0, 0};
+  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_TStar_parser___parser_nodes___ANode___init;
+  fra.me.line = 5791;
+  fra.me.meth = LOCATE_NEW_AAttrAssignExpr_parser___parser_prod___AAttrAssignExpr___init_aattrassignexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
   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] = NEW_parser___parser_nodes___TStar();
-  INIT_ATTRIBUTES__parser___parser_nodes___TStar(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TStar(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  /* parser/parser_prod.nit:5791 */
+  fra.me.REG[4] = NEW_parser___parser_nodes___AAttrAssignExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AAttrAssignExpr(fra.me.REG[4]);
+  parser___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_parser___parser_nodes___AAttrAssignExpr(fra.me.REG[4]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[4];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TSlash[73] = {
-  {(bigint) 2435 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TSlash" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TSlash < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TSlash < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TSlash < Token: superclass typecheck marker */},
-  {(bigint) 2435 /* 6: TSlash < TSlash: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+static const char LOCATE_NEW_AAttrAssignExpr_parser___parser_nodes___ANode___init[] = "new AAttrAssignExpr parser_nodes::ANode::init";
+val_t NEW_AAttrAssignExpr_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AAttrAssignExpr_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AAttrAssignExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AAttrAssignExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AAttrAssignExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___AAttrReassignExpr[103] = {
+  {(bigint) 4791 /* 0: Identity */},
+  {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AAttrReassignExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AAttrReassignExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AAttrReassignExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AAttrReassignExpr < Prod: superclass typecheck marker */},
+  {(bigint) 4559 /* 6: AAttrReassignExpr < AAttrFormExpr: superclass typecheck marker */},
+  {(bigint) 3811 /* 7: AAttrReassignExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 4331 /* 8: AAttrReassignExpr < AReassignFormExpr: superclass typecheck marker */},
+  {(bigint) 4791 /* 9: AAttrReassignExpr < AAttrReassignExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -37152,7 +76791,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TSlash[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TSlash < Object: superclass init_table position */},
+  {(bigint) 4 /* 19: AAttrReassignExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -37168,7 +76807,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TSlash[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -37181,139 +76822,246 @@ const classtable_elt_t VFT_parser___parser_nodes___TSlash[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TSlash < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AAttrReassignExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AAttrReassignExpr___visit_all},
+  {(bigint) 3 /* 63: AAttrReassignExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TSlash___parser_index},
-  {(bigint) 0 /* 70: TSlash < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TSlash___init_tk},
-  {(bigint) 3 /* 72: TSlash < TSlash: superclass init_table position */},
+  {(bigint) syntax___typing___AAttrReassignExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 2 /* 72: AAttrReassignExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 1 /* 81: AAttrReassignExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___AAttrReassignExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {(bigint) parser___parser_prod___AAttrReassignExpr___empty_init},
+  {(bigint) parser___parser_prod___AAttrReassignExpr___init_aattrreassignexpr},
+  {(bigint) 6 /* 91: AAttrReassignExpr < AAttrReassignExpr: superclass init_table position */},
+  {(bigint) syntax___typing___AReassignFormExpr___do_rvalue_typing},
+  {(bigint) syntax___typing___AReassignFormExpr___assign_method},
+  {(bigint) 5 /* 94: AAttrReassignExpr < AReassignFormExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AReassignFormExpr___n_assign_op},
+  {(bigint) parser___parser_nodes___AReassignFormExpr___n_value},
+  {(bigint) syntax___typing___AAttrFormExpr___do_typing},
+  {(bigint) syntax___typing___AAttrFormExpr___prop},
+  {(bigint) syntax___typing___AAttrFormExpr___attr_type},
+  {(bigint) 0 /* 100: AAttrReassignExpr < AAttrFormExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AAttrFormExpr___n_expr},
+  {(bigint) parser___parser_nodes___AAttrFormExpr___n_id},
 };
 /* 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__parser___parser_nodes___TSlash(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AAttrReassignExpr::_parent */
+/* 3: Attribute AAttrReassignExpr::_location */
+/* 4: Attribute AAttrReassignExpr::_first_location */
+/* 5: Attribute AAttrReassignExpr::_last_location */
+/* 6: Attribute AAttrReassignExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute AAttrReassignExpr::_is_typed */
+/* 9: Attribute AAttrReassignExpr::_stype */
+/* 10: Attribute AAttrReassignExpr::_if_true_flow_ctx */
+/* 11: Attribute AAttrReassignExpr::_if_false_flow_ctx */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 14: Attribute AAttrReassignExpr::_assign_method */
+/* 15: Attribute AAttrReassignExpr::_n_assign_op */
+/* 16: Attribute AAttrReassignExpr::_n_value */
+/* 17: Attribute AAttrReassignExpr::_prop */
+/* 18: Attribute AAttrReassignExpr::_attr_type */
+/* 19: Attribute AAttrReassignExpr::_n_expr */
+/* 20: Attribute AAttrReassignExpr::_n_id */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AAttrReassignExpr[] = "init var of AAttrReassignExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___AAttrReassignExpr(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__parser___parser_nodes___TSlash;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AAttrReassignExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TSlash(void)
+val_t NEW_parser___parser_nodes___AAttrReassignExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TSlash;
+  obj = alloc(sizeof(val_t) * 21);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AAttrReassignExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TSlash(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AAttrReassignExpr[] = "check new AAttrReassignExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TSlash;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AAttrReassignExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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___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___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___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_TSlash_parser___lexer___TSlash___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AAttrReassignExpr_parser___parser_prod___AAttrReassignExpr___empty_init[] = "new AAttrReassignExpr parser_prod::AAttrReassignExpr::empty_init";
+val_t NEW_AAttrReassignExpr_parser___parser_prod___AAttrReassignExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 895;
-  fra.me.meth = LOCATE_NEW_TSlash_parser___lexer___TSlash___init_tk;
+  fra.me.line = 5862;
+  fra.me.meth = LOCATE_NEW_AAttrReassignExpr_parser___parser_prod___AAttrReassignExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TSlash();
-  INIT_ATTRIBUTES__parser___parser_nodes___TSlash(fra.me.REG[1]);
-  parser___lexer___TSlash___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TSlash(fra.me.REG[1]);
+  /* parser/parser_prod.nit:5862 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AAttrReassignExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AAttrReassignExpr(fra.me.REG[0]);
+  parser___parser_prod___AAttrReassignExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AAttrReassignExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-val_t NEW_TSlash_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AAttrReassignExpr_parser___parser_prod___AAttrReassignExpr___init_aattrreassignexpr[] = "new AAttrReassignExpr parser_prod::AAttrReassignExpr::init_aattrreassignexpr";
+val_t NEW_AAttrReassignExpr_parser___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[4] = {0, 0, 0, 0};
+  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_TSlash_parser___parser_nodes___ANode___init;
+  fra.me.line = 5864;
+  fra.me.meth = LOCATE_NEW_AAttrReassignExpr_parser___parser_prod___AAttrReassignExpr___init_aattrreassignexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
   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] = NEW_parser___parser_nodes___TSlash();
-  INIT_ATTRIBUTES__parser___parser_nodes___TSlash(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TSlash(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  /* parser/parser_prod.nit:5864 */
+  fra.me.REG[4] = NEW_parser___parser_nodes___AAttrReassignExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AAttrReassignExpr(fra.me.REG[4]);
+  parser___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_parser___parser_nodes___AAttrReassignExpr(fra.me.REG[4]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[4];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TPercent[73] = {
-  {(bigint) 2451 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TPercent" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TPercent < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TPercent < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TPercent < Token: superclass typecheck marker */},
-  {(bigint) 2451 /* 6: TPercent < TPercent: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+static const char LOCATE_NEW_AAttrReassignExpr_parser___parser_nodes___ANode___init[] = "new AAttrReassignExpr parser_nodes::ANode::init";
+val_t NEW_AAttrReassignExpr_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AAttrReassignExpr_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AAttrReassignExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AAttrReassignExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AAttrReassignExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___ACallExpr[126] = {
+  {(bigint) 4951 /* 0: Identity */},
+  {(bigint) 23 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ACallExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ACallExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: ACallExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: ACallExpr < Prod: superclass typecheck marker */},
+  {(bigint) 4595 /* 6: ACallExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3811 /* 7: ACallExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 4819 /* 9: ACallExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 4831 /* 10: ACallExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 4859 /* 11: ACallExpr < ASendExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) 4879 /* 14: ACallExpr < ACallFormExpr: superclass typecheck marker */},
+  {(bigint) 4951 /* 15: ACallExpr < ACallExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TPercent < Object: superclass init_table position */},
+  {(bigint) 8 /* 19: ACallExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -37329,7 +77077,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TPercent[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -37342,139 +77092,321 @@ const classtable_elt_t VFT_parser___parser_nodes___TPercent[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TPercent < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___ACallExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___ACallExpr___visit_all},
+  {(bigint) 7 /* 63: ACallExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TPercent___parser_index},
-  {(bigint) 0 /* 70: TPercent < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TPercent___init_tk},
-  {(bigint) 3 /* 72: TPercent < TPercent: superclass init_table position */},
+  {(bigint) syntax___typing___ACallFormExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 6 /* 72: ACallExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
+  {(bigint) 2 /* 76: ACallExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 5 /* 81: ACallExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) syntax___typing___ACallExpr___compute_raw_arguments},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 4 /* 101: ACallExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
+  {(bigint) syntax___typing___AAbsSendExpr___get_property},
+  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
+  {(bigint) 3 /* 107: ACallExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) syntax___typing___AAbsSendExpr___prop},
+  {(bigint) syntax___typing___AAbsSendExpr___return_type},
+  {(bigint) syntax___typing___ACallExpr___name},
+  {(bigint) syntax___typing___ASendExpr___do_all_typing},
+  {(bigint) syntax___typing___ACallFormExpr___closure_defs},
+  {(bigint) parser___parser_prod___ASendExpr___empty_init},
+  {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
+  {(bigint) 1 /* 115: ACallExpr < ASendExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
+  {(bigint) syntax___typing___ASendExpr___after_typing},
+  {(bigint) syntax___typing___ACallExpr___variable_create},
+  {(bigint) 0 /* 120: ACallExpr < ACallFormExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ACallFormExpr___n_id},
+  {(bigint) parser___parser_nodes___ACallFormExpr___n_args},
+  {(bigint) parser___parser_prod___ACallExpr___empty_init},
+  {(bigint) parser___parser_prod___ACallExpr___init_acallexpr},
+  {(bigint) 9 /* 125: ACallExpr < ACallExpr: 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__parser___parser_nodes___TPercent(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute ACallExpr::_parent */
+/* 3: Attribute ACallExpr::_location */
+/* 4: Attribute ACallExpr::_first_location */
+/* 5: Attribute ACallExpr::_last_location */
+/* 6: Attribute ACallExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute ACallExpr::_is_typed */
+/* 9: Attribute ACallExpr::_stype */
+/* 10: Attribute ACallExpr::_if_true_flow_ctx */
+/* 11: Attribute ACallExpr::_if_false_flow_ctx */
+/* 12: Attribute ACallExpr::_prop_signature */
+/* 13: Attribute ACallExpr::_raw_arguments_cache */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 17: Attribute ACallExpr::_prop */
+/* 18: Attribute ACallExpr::_return_type */
+/* 19: Attribute ACallExpr::_n_expr */
+/* 20: Attribute ACallExpr::_n_closure_defs */
+/* 21: Attribute ACallExpr::_n_id */
+/* 22: Attribute ACallExpr::_n_args */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ACallExpr[] = "init var of ACallExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TPercent;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ACallExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* syntax/typing.nit:1441 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:860 */
+  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TPercent(void)
+val_t NEW_parser___parser_nodes___ACallExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TPercent;
+  obj = alloc(sizeof(val_t) * 23);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ACallExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TPercent(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___ACallExpr[] = "check new ACallExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TPercent;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___ACallExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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___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___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___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);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TPercent_parser___lexer___TPercent___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ACallExpr_parser___parser_prod___ASendExpr___empty_init[] = "new ACallExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_ACallExpr_parser___parser_prod___ASendExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 908;
-  fra.me.meth = LOCATE_NEW_TPercent_parser___lexer___TPercent___init_tk;
+  fra.me.line = 4646;
+  fra.me.meth = LOCATE_NEW_ACallExpr_parser___parser_prod___ASendExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:4646 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ACallExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ACallExpr(fra.me.REG[0]);
+  parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ACallExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_ACallExpr_parser___parser_prod___ACallExpr___empty_init[] = "new ACallExpr parser_prod::ACallExpr::empty_init";
+val_t NEW_ACallExpr_parser___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 = 5935;
+  fra.me.meth = LOCATE_NEW_ACallExpr_parser___parser_prod___ACallExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:5935 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ACallExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ACallExpr(fra.me.REG[0]);
+  parser___parser_prod___ACallExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ACallExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_ACallExpr_parser___parser_prod___ACallExpr___init_acallexpr[] = "new ACallExpr parser_prod::ACallExpr::init_acallexpr";
+val_t NEW_ACallExpr_parser___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 = 5937;
+  fra.me.meth = LOCATE_NEW_ACallExpr_parser___parser_prod___ACallExpr___init_acallexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
   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;
-  /* ./parser//lexer.nit:908 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___TPercent();
-  INIT_ATTRIBUTES__parser___parser_nodes___TPercent(fra.me.REG[1]);
-  parser___lexer___TPercent___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TPercent(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  /* parser/parser_prod.nit:5937 */
+  fra.me.REG[4] = NEW_parser___parser_nodes___ACallExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ACallExpr(fra.me.REG[4]);
+  parser___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_parser___parser_nodes___ACallExpr(fra.me.REG[4]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[4];
+}
+static const char LOCATE_NEW_ACallExpr_parser___parser_nodes___ANode___init[] = "new ACallExpr parser_nodes::ANode::init";
+val_t NEW_ACallExpr_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_ACallExpr_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ACallExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ACallExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ACallExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-val_t NEW_TPercent_parser___parser_nodes___ANode___init(val_t p0){
+static const char LOCATE_NEW_ACallExpr_parser___parser_prod___ASendExpr___init_asendexpr[] = "new ACallExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_ACallExpr_parser___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[4] = {0, 0, 0, 0};
+  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_TPercent_parser___parser_nodes___ANode___init;
+  fra.me.line = 4648;
+  fra.me.meth = LOCATE_NEW_ACallExpr_parser___parser_prod___ASendExpr___init_asendexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___TPercent();
-  INIT_ATTRIBUTES__parser___parser_nodes___TPercent(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TPercent(fra.me.REG[1]);
+  /* parser/parser_prod.nit:4648 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___ACallExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ACallExpr(fra.me.REG[1]);
+  parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ACallExpr(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TEq[73] = {
-  {(bigint) 2711 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TEq" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TEq < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TEq < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TEq < Token: superclass typecheck marker */},
-  {(bigint) 2711 /* 6: TEq < TEq: 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_parser___parser_nodes___ACallAssignExpr[123] = {
+  {(bigint) 4955 /* 0: Identity */},
+  {(bigint) 23 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ACallAssignExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ACallAssignExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: ACallAssignExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: ACallAssignExpr < Prod: superclass typecheck marker */},
+  {(bigint) 4595 /* 6: ACallAssignExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3811 /* 7: ACallAssignExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 4571 /* 8: ACallAssignExpr < AAssignFormExpr: superclass typecheck marker */},
+  {(bigint) 4819 /* 9: ACallAssignExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 4831 /* 10: ACallAssignExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 4859 /* 11: ACallAssignExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 4955 /* 12: ACallAssignExpr < ACallAssignExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 4879 /* 14: ACallAssignExpr < ACallFormExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TEq < Object: superclass init_table position */},
+  {(bigint) 8 /* 19: ACallAssignExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -37490,7 +77422,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TEq[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -37503,139 +77437,330 @@ const classtable_elt_t VFT_parser___parser_nodes___TEq[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TEq < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___ACallAssignExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___ACallAssignExpr___visit_all},
+  {(bigint) 7 /* 63: ACallAssignExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TEq___parser_index},
-  {(bigint) 0 /* 70: TEq < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TEq___init_tk},
-  {(bigint) 3 /* 72: TEq < TEq: superclass init_table position */},
+  {(bigint) syntax___typing___ACallFormExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 6 /* 72: ACallAssignExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
+  {(bigint) 2 /* 76: ACallAssignExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 5 /* 81: ACallAssignExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {(bigint) parser___parser_prod___ACallAssignExpr___empty_init},
+  {(bigint) parser___parser_prod___ACallAssignExpr___init_acallassignexpr},
+  {(bigint) 10 /* 91: ACallAssignExpr < ACallAssignExpr: superclass init_table position */},
+  {(bigint) 9 /* 92: ACallAssignExpr < AAssignFormExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AAssignFormExpr___n_assign},
+  {(bigint) parser___parser_nodes___AAssignFormExpr___n_value},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) syntax___typing___ACallAssignExpr___compute_raw_arguments},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 4 /* 101: ACallAssignExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
+  {(bigint) syntax___typing___AAbsSendExpr___get_property},
+  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
+  {(bigint) 3 /* 107: ACallAssignExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) syntax___typing___AAbsSendExpr___prop},
+  {(bigint) syntax___typing___AAbsSendExpr___return_type},
+  {(bigint) syntax___typing___ACallAssignExpr___name},
+  {(bigint) syntax___typing___ASendExpr___do_all_typing},
+  {(bigint) syntax___typing___ACallFormExpr___closure_defs},
+  {(bigint) parser___parser_prod___ASendExpr___empty_init},
+  {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
+  {(bigint) 1 /* 115: ACallAssignExpr < ASendExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
+  {(bigint) syntax___typing___ASendExpr___after_typing},
+  {(bigint) syntax___typing___ACallAssignExpr___variable_create},
+  {(bigint) 0 /* 120: ACallAssignExpr < ACallFormExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ACallFormExpr___n_id},
+  {(bigint) parser___parser_nodes___ACallFormExpr___n_args},
 };
 /* 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__parser___parser_nodes___TEq(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute ACallAssignExpr::_parent */
+/* 3: Attribute ACallAssignExpr::_location */
+/* 4: Attribute ACallAssignExpr::_first_location */
+/* 5: Attribute ACallAssignExpr::_last_location */
+/* 6: Attribute ACallAssignExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute ACallAssignExpr::_is_typed */
+/* 9: Attribute ACallAssignExpr::_stype */
+/* 10: Attribute ACallAssignExpr::_if_true_flow_ctx */
+/* 11: Attribute ACallAssignExpr::_if_false_flow_ctx */
+/* 12: Attribute ACallAssignExpr::_prop_signature */
+/* 13: Attribute ACallAssignExpr::_raw_arguments_cache */
+/* 14: Attribute ACallAssignExpr::_n_assign */
+/* 15: Attribute ACallAssignExpr::_n_value */
+/* Instance Hole :( */
+/* 17: Attribute ACallAssignExpr::_prop */
+/* 18: Attribute ACallAssignExpr::_return_type */
+/* 19: Attribute ACallAssignExpr::_n_expr */
+/* 20: Attribute ACallAssignExpr::_n_closure_defs */
+/* 21: Attribute ACallAssignExpr::_n_id */
+/* 22: Attribute ACallAssignExpr::_n_args */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ACallAssignExpr[] = "init var of ACallAssignExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TEq;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ACallAssignExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* syntax/typing.nit:1441 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:860 */
+  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TEq(void)
+val_t NEW_parser___parser_nodes___ACallAssignExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TEq;
+  obj = alloc(sizeof(val_t) * 23);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ACallAssignExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TEq(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___ACallAssignExpr[] = "check new ACallAssignExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TEq;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___ACallAssignExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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___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___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___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___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___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;
 }
-val_t NEW_TEq_parser___lexer___TEq___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ACallAssignExpr_parser___parser_prod___ASendExpr___empty_init[] = "new ACallAssignExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_ACallAssignExpr_parser___parser_prod___ASendExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 921;
-  fra.me.meth = LOCATE_NEW_TEq_parser___lexer___TEq___init_tk;
+  fra.me.line = 4646;
+  fra.me.meth = LOCATE_NEW_ACallAssignExpr_parser___parser_prod___ASendExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:4646 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ACallAssignExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ACallAssignExpr(fra.me.REG[0]);
+  parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ACallAssignExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_ACallAssignExpr_parser___parser_prod___ACallAssignExpr___empty_init[] = "new ACallAssignExpr parser_prod::ACallAssignExpr::empty_init";
+val_t NEW_ACallAssignExpr_parser___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 = 6015;
+  fra.me.meth = LOCATE_NEW_ACallAssignExpr_parser___parser_prod___ACallAssignExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:6015 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ACallAssignExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ACallAssignExpr(fra.me.REG[0]);
+  parser___parser_prod___ACallAssignExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ACallAssignExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_ACallAssignExpr_parser___parser_prod___ACallAssignExpr___init_acallassignexpr[] = "new ACallAssignExpr parser_prod::ACallAssignExpr::init_acallassignexpr";
+val_t NEW_ACallAssignExpr_parser___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 = 6017;
+  fra.me.meth = LOCATE_NEW_ACallAssignExpr_parser___parser_prod___ACallAssignExpr___init_acallassignexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
   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;
-  /* ./parser//lexer.nit:921 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___TEq();
-  INIT_ATTRIBUTES__parser___parser_nodes___TEq(fra.me.REG[1]);
-  parser___lexer___TEq___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TEq(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  /* parser/parser_prod.nit:6017 */
+  fra.me.REG[5] = NEW_parser___parser_nodes___ACallAssignExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ACallAssignExpr(fra.me.REG[5]);
+  parser___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_parser___parser_nodes___ACallAssignExpr(fra.me.REG[5]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[5];
+}
+static const char LOCATE_NEW_ACallAssignExpr_parser___parser_nodes___ANode___init[] = "new ACallAssignExpr parser_nodes::ANode::init";
+val_t NEW_ACallAssignExpr_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_ACallAssignExpr_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ACallAssignExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ACallAssignExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ACallAssignExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-val_t NEW_TEq_parser___parser_nodes___ANode___init(val_t p0){
+static const char LOCATE_NEW_ACallAssignExpr_parser___parser_prod___ASendExpr___init_asendexpr[] = "new ACallAssignExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_ACallAssignExpr_parser___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[4] = {0, 0, 0, 0};
+  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_TEq_parser___parser_nodes___ANode___init;
+  fra.me.line = 4648;
+  fra.me.meth = LOCATE_NEW_ACallAssignExpr_parser___parser_prod___ASendExpr___init_asendexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___TEq();
-  INIT_ATTRIBUTES__parser___parser_nodes___TEq(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TEq(fra.me.REG[1]);
+  /* parser/parser_prod.nit:4648 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___ACallAssignExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ACallAssignExpr(fra.me.REG[1]);
+  parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ACallAssignExpr(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TNe[73] = {
-  {(bigint) 2467 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TNe" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TNe < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TNe < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TNe < Token: superclass typecheck marker */},
-  {(bigint) 2467 /* 6: 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 :( */,
+const classtable_elt_t VFT_parser___parser_nodes___ACallReassignExpr[126] = {
+  {(bigint) 4947 /* 0: Identity */},
+  {(bigint) 23 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ACallReassignExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ACallReassignExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: ACallReassignExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: ACallReassignExpr < Prod: superclass typecheck marker */},
+  {(bigint) 4595 /* 6: ACallReassignExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3811 /* 7: ACallReassignExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 4331 /* 8: ACallReassignExpr < AReassignFormExpr: superclass typecheck marker */},
+  {(bigint) 4819 /* 9: ACallReassignExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 4831 /* 10: ACallReassignExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 4859 /* 11: ACallReassignExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 4867 /* 12: ACallReassignExpr < ASendReassignFormExpr: superclass typecheck marker */},
+  {(bigint) 4871 /* 13: ACallReassignExpr < ASendReassignExpr: superclass typecheck marker */},
+  {(bigint) 4879 /* 14: ACallReassignExpr < ACallFormExpr: superclass typecheck marker */},
+  {(bigint) 4947 /* 15: ACallReassignExpr < ACallReassignExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TNe < Object: superclass init_table position */},
+  {(bigint) 9 /* 19: ACallReassignExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -37651,7 +77776,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TNe[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -37664,131 +77791,325 @@ const classtable_elt_t VFT_parser___parser_nodes___TNe[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TNe < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___ACallReassignExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___ACallReassignExpr___visit_all},
+  {(bigint) 8 /* 63: ACallReassignExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TNe___parser_index},
-  {(bigint) 0 /* 70: TNe < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TNe___init_tk},
-  {(bigint) 3 /* 72: TNe < TNe: superclass init_table position */},
+  {(bigint) syntax___typing___ACallFormExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 7 /* 72: ACallReassignExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
+  {(bigint) 2 /* 76: ACallReassignExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 6 /* 81: ACallReassignExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___ASendReassignExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {(bigint) 11 /* 89: ACallReassignExpr < ASendReassignFormExpr: superclass init_table position */},
+  {(bigint) 0 /* 90: ACallReassignExpr < ASendReassignExpr: superclass init_table position */},
+  {(bigint) syntax___typing___ASendReassignExpr___read_prop},
+  {(bigint) syntax___typing___AReassignFormExpr___do_rvalue_typing},
+  {(bigint) syntax___typing___AReassignFormExpr___assign_method},
+  {(bigint) 5 /* 94: ACallReassignExpr < AReassignFormExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AReassignFormExpr___n_assign_op},
+  {(bigint) parser___parser_nodes___AReassignFormExpr___n_value},
+  {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) syntax___typing___ACallReassignExpr___compute_raw_arguments},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 4 /* 101: ACallReassignExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
+  {(bigint) syntax___typing___AAbsSendExpr___get_property},
+  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
+  {(bigint) 3 /* 107: ACallReassignExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) syntax___typing___AAbsSendExpr___prop},
+  {(bigint) syntax___typing___AAbsSendExpr___return_type},
+  {(bigint) syntax___typing___ACallReassignExpr___name},
+  {(bigint) syntax___typing___ASendReassignExpr___do_all_typing},
+  {(bigint) syntax___typing___ACallFormExpr___closure_defs},
+  {(bigint) parser___parser_prod___ASendExpr___empty_init},
+  {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
+  {(bigint) 1 /* 115: ACallReassignExpr < ASendExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
+  {(bigint) syntax___typing___ASendExpr___after_typing},
+  {(bigint) syntax___typing___ACallReassignExpr___variable_create},
+  {(bigint) 10 /* 120: ACallReassignExpr < ACallFormExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ACallFormExpr___n_id},
+  {(bigint) parser___parser_nodes___ACallFormExpr___n_args},
+  {(bigint) parser___parser_prod___ACallReassignExpr___empty_init},
+  {(bigint) parser___parser_prod___ACallReassignExpr___init_acallreassignexpr},
+  {(bigint) 12 /* 125: ACallReassignExpr < ACallReassignExpr: 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__parser___parser_nodes___TNe(val_t p0){
+/* 2: Attribute ACallReassignExpr::_parent */
+/* 3: Attribute ACallReassignExpr::_location */
+/* 4: Attribute ACallReassignExpr::_first_location */
+/* 5: Attribute ACallReassignExpr::_last_location */
+/* 6: Attribute ACallReassignExpr::_n_annotations */
+/* 7: Attribute ACallReassignExpr::_read_prop */
+/* 8: Attribute ACallReassignExpr::_is_typed */
+/* 9: Attribute ACallReassignExpr::_stype */
+/* 10: Attribute ACallReassignExpr::_if_true_flow_ctx */
+/* 11: Attribute ACallReassignExpr::_if_false_flow_ctx */
+/* 12: Attribute ACallReassignExpr::_prop_signature */
+/* 13: Attribute ACallReassignExpr::_raw_arguments_cache */
+/* 14: Attribute ACallReassignExpr::_assign_method */
+/* 15: Attribute ACallReassignExpr::_n_assign_op */
+/* 16: Attribute ACallReassignExpr::_n_value */
+/* 17: Attribute ACallReassignExpr::_prop */
+/* 18: Attribute ACallReassignExpr::_return_type */
+/* 19: Attribute ACallReassignExpr::_n_expr */
+/* 20: Attribute ACallReassignExpr::_n_closure_defs */
+/* 21: Attribute ACallReassignExpr::_n_id */
+/* 22: Attribute ACallReassignExpr::_n_args */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ACallReassignExpr[] = "init var of ACallReassignExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___ACallReassignExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* syntax/typing.nit:1441 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:860 */
+  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___parser_nodes___ACallReassignExpr(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 23);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ACallReassignExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___parser_nodes___ACallReassignExpr[] = "check new ACallReassignExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___ACallReassignExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_syntax___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___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___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___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___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___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___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);
+  }
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_ACallReassignExpr_parser___parser_prod___ASendExpr___empty_init[] = "new ACallReassignExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_ACallReassignExpr_parser___parser_prod___ASendExpr___empty_init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
+  int init_table[13] = {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 = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TNe;
+  fra.me.line = 4646;
+  fra.me.meth = LOCATE_NEW_ACallReassignExpr_parser___parser_prod___ASendExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:4646 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ACallReassignExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ACallReassignExpr(fra.me.REG[0]);
+  parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ACallReassignExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-val_t NEW_parser___parser_nodes___TNe(void)
-{
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TNe;
-  obj[1].object_id = object_id_counter;
-  object_id_counter = object_id_counter + 1;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_parser___parser_nodes___TNe(val_t p0){
+static const char LOCATE_NEW_ACallReassignExpr_parser___parser_prod___ACallReassignExpr___empty_init[] = "new ACallReassignExpr parser_prod::ACallReassignExpr::empty_init";
+val_t NEW_ACallReassignExpr_parser___parser_prod___ACallReassignExpr___empty_init(void){
   struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
   val_t tmp;
+  int init_table[13] = {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 = 0;
-  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___TNe;
+  fra.me.line = 6102;
+  fra.me.meth = LOCATE_NEW_ACallReassignExpr_parser___parser_prod___ACallReassignExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
-  }
+  /* parser/parser_prod.nit:6102 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ACallReassignExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ACallReassignExpr(fra.me.REG[0]);
+  parser___parser_prod___ACallReassignExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ACallReassignExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-val_t NEW_TNe_parser___lexer___TNe___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ACallReassignExpr_parser___parser_prod___ACallReassignExpr___init_acallreassignexpr[] = "new ACallReassignExpr parser_prod::ACallReassignExpr::init_acallreassignexpr";
+val_t NEW_ACallReassignExpr_parser___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[4] = {0, 0, 0, 0};
+  int init_table[13] = {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 = 934;
-  fra.me.meth = LOCATE_NEW_TNe_parser___lexer___TNe___init_tk;
+  fra.me.line = 6104;
+  fra.me.meth = LOCATE_NEW_ACallReassignExpr_parser___parser_prod___ACallReassignExpr___init_acallreassignexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
   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;
-  /* ./parser//lexer.nit:934 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___TNe();
-  INIT_ATTRIBUTES__parser___parser_nodes___TNe(fra.me.REG[1]);
-  parser___lexer___TNe___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TNe(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  /* parser/parser_prod.nit:6104 */
+  fra.me.REG[5] = NEW_parser___parser_nodes___ACallReassignExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ACallReassignExpr(fra.me.REG[5]);
+  parser___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_parser___parser_nodes___ACallReassignExpr(fra.me.REG[5]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[5];
+}
+static const char LOCATE_NEW_ACallReassignExpr_parser___parser_nodes___ANode___init[] = "new ACallReassignExpr parser_nodes::ANode::init";
+val_t NEW_ACallReassignExpr_parser___parser_nodes___ANode___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[13] = {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 = 32;
+  fra.me.meth = LOCATE_NEW_ACallReassignExpr_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ACallReassignExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ACallReassignExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ACallReassignExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-val_t NEW_TNe_parser___parser_nodes___ANode___init(val_t p0){
+static const char LOCATE_NEW_ACallReassignExpr_parser___parser_prod___ASendExpr___init_asendexpr[] = "new ACallReassignExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_ACallReassignExpr_parser___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[4] = {0, 0, 0, 0};
+  int init_table[13] = {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 = 0;
-  fra.me.meth = LOCATE_NEW_TNe_parser___parser_nodes___ANode___init;
+  fra.me.line = 4648;
+  fra.me.meth = LOCATE_NEW_ACallReassignExpr_parser___parser_prod___ASendExpr___init_asendexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___TNe();
-  INIT_ATTRIBUTES__parser___parser_nodes___TNe(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TNe(fra.me.REG[1]);
+  /* parser/parser_prod.nit:4648 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___ACallReassignExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ACallReassignExpr(fra.me.REG[1]);
+  parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ACallReassignExpr(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TLt[73] = {
-  {(bigint) 2483 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TLt" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TLt < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TLt < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TLt < Token: superclass typecheck marker */},
-  {(bigint) 2483 /* 6: TLt < TLt: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_parser___parser_nodes___ASuperExpr[117] = {
+  {(bigint) 4855 /* 0: Identity */},
+  {(bigint) 23 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ASuperExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ASuperExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: ASuperExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: ASuperExpr < Prod: superclass typecheck marker */},
+  {(bigint) 4595 /* 6: ASuperExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3811 /* 7: ASuperExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 4819 /* 9: ASuperExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 4831 /* 10: ASuperExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 4855 /* 11: ASuperExpr < ASuperExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -37796,7 +78117,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TLt[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TLt < Object: superclass init_table position */},
+  {(bigint) 6 /* 19: ASuperExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -37812,7 +78133,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TLt[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -37825,139 +78148,256 @@ const classtable_elt_t VFT_parser___parser_nodes___TLt[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TLt < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___ASuperExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___ASuperExpr___visit_all},
+  {(bigint) 5 /* 63: ASuperExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TLt___parser_index},
-  {(bigint) 0 /* 70: TLt < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TLt___init_tk},
-  {(bigint) 3 /* 72: TLt < TLt: superclass init_table position */},
+  {(bigint) syntax___typing___ASuperExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 4 /* 72: ASuperExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
+  {(bigint) 0 /* 76: ASuperExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 3 /* 81: ASuperExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___ASuperExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) syntax___typing___ASuperExpr___compute_raw_arguments},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 2 /* 101: ASuperExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
+  {(bigint) syntax___typing___AAbsSendExpr___get_property},
+  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
+  {(bigint) 1 /* 107: ASuperExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) syntax___typing___AAbsSendExpr___prop},
+  {(bigint) syntax___typing___AAbsSendExpr___return_type},
+  {(bigint) syntax___typing___ASuperExpr___init_in_superclass},
+  {(bigint) parser___parser_prod___ASuperExpr___empty_init},
+  {(bigint) parser___parser_prod___ASuperExpr___init_asuperexpr},
+  {(bigint) 7 /* 113: ASuperExpr < ASuperExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ASuperExpr___n_qualified},
+  {(bigint) parser___parser_nodes___ASuperExpr___n_kwsuper},
+  {(bigint) parser___parser_nodes___ASuperExpr___n_args},
 };
 /* 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__parser___parser_nodes___TLt(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute ASuperExpr::_parent */
+/* 3: Attribute ASuperExpr::_location */
+/* 4: Attribute ASuperExpr::_first_location */
+/* 5: Attribute ASuperExpr::_last_location */
+/* 6: Attribute ASuperExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute ASuperExpr::_is_typed */
+/* 9: Attribute ASuperExpr::_stype */
+/* 10: Attribute ASuperExpr::_if_true_flow_ctx */
+/* 11: Attribute ASuperExpr::_if_false_flow_ctx */
+/* 12: Attribute ASuperExpr::_prop_signature */
+/* 13: Attribute ASuperExpr::_raw_arguments_cache */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 17: Attribute ASuperExpr::_prop */
+/* 18: Attribute ASuperExpr::_return_type */
+/* 19: Attribute ASuperExpr::_init_in_superclass */
+/* 20: Attribute ASuperExpr::_n_qualified */
+/* 21: Attribute ASuperExpr::_n_kwsuper */
+/* 22: Attribute ASuperExpr::_n_args */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ASuperExpr[] = "init var of ASuperExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TLt;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ASuperExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* syntax/typing.nit:1441 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:992 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ASuperExpr____n_qualified(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TLt(void)
+val_t NEW_parser___parser_nodes___ASuperExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TLt;
+  obj = alloc(sizeof(val_t) * 23);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ASuperExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TLt(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___ASuperExpr[] = "check new ASuperExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TLt;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___ASuperExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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___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_TLt_parser___lexer___TLt___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ASuperExpr_parser___parser_prod___ASuperExpr___empty_init[] = "new ASuperExpr parser_prod::ASuperExpr::empty_init";
+val_t NEW_ASuperExpr_parser___parser_prod___ASuperExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 947;
-  fra.me.meth = LOCATE_NEW_TLt_parser___lexer___TLt___init_tk;
+  fra.me.line = 6189;
+  fra.me.meth = LOCATE_NEW_ASuperExpr_parser___parser_prod___ASuperExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TLt();
-  INIT_ATTRIBUTES__parser___parser_nodes___TLt(fra.me.REG[1]);
-  parser___lexer___TLt___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TLt(fra.me.REG[1]);
+  /* parser/parser_prod.nit:6189 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ASuperExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ASuperExpr(fra.me.REG[0]);
+  parser___parser_prod___ASuperExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ASuperExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-val_t NEW_TLt_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ASuperExpr_parser___parser_prod___ASuperExpr___init_asuperexpr[] = "new ASuperExpr parser_prod::ASuperExpr::init_asuperexpr";
+val_t NEW_ASuperExpr_parser___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[4] = {0, 0, 0, 0};
+  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_TLt_parser___parser_nodes___ANode___init;
+  fra.me.line = 6191;
+  fra.me.meth = LOCATE_NEW_ASuperExpr_parser___parser_prod___ASuperExpr___init_asuperexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   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] = NEW_parser___parser_nodes___TLt();
-  INIT_ATTRIBUTES__parser___parser_nodes___TLt(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TLt(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* parser/parser_prod.nit:6191 */
+  fra.me.REG[3] = NEW_parser___parser_nodes___ASuperExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ASuperExpr(fra.me.REG[3]);
+  parser___parser_prod___ASuperExpr___init_asuperexpr(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_parser___parser_nodes___ASuperExpr(fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[3];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TLe[73] = {
-  {(bigint) 2491 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TLe" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TLe < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TLe < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TLe < Token: superclass typecheck marker */},
-  {(bigint) 2491 /* 6: TLe < TLe: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+static const char LOCATE_NEW_ASuperExpr_parser___parser_nodes___ANode___init[] = "new ASuperExpr parser_nodes::ANode::init";
+val_t NEW_ASuperExpr_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_ASuperExpr_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ASuperExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ASuperExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ASuperExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___AInitExpr[123] = {
+  {(bigint) 4875 /* 0: Identity */},
+  {(bigint) 23 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AInitExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AInitExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AInitExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AInitExpr < Prod: superclass typecheck marker */},
+  {(bigint) 4595 /* 6: AInitExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3811 /* 7: AInitExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 4819 /* 9: AInitExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 4831 /* 10: AInitExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 4859 /* 11: AInitExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 4875 /* 12: AInitExpr < AInitExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TLe < Object: superclass init_table position */},
+  {(bigint) 7 /* 19: AInitExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -37973,7 +78413,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TLe[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -37986,139 +78428,316 @@ const classtable_elt_t VFT_parser___parser_nodes___TLe[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TLe < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AInitExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AInitExpr___visit_all},
+  {(bigint) 6 /* 63: AInitExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TLe___parser_index},
-  {(bigint) 0 /* 70: TLe < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TLe___init_tk},
-  {(bigint) 3 /* 72: TLe < TLe: superclass init_table position */},
+  {(bigint) syntax___typing___ASendExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 5 /* 72: AInitExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
+  {(bigint) 1 /* 76: AInitExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 4 /* 81: AInitExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) syntax___typing___AInitExpr___compute_raw_arguments},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 3 /* 101: AInitExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
+  {(bigint) syntax___typing___AAbsSendExpr___get_property},
+  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
+  {(bigint) 2 /* 107: AInitExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) syntax___typing___AAbsSendExpr___prop},
+  {(bigint) syntax___typing___AAbsSendExpr___return_type},
+  {(bigint) syntax___typing___AInitExpr___name},
+  {(bigint) syntax___typing___ASendExpr___do_all_typing},
+  {(bigint) syntax___typing___ASendExpr___closure_defs},
+  {(bigint) parser___parser_prod___ASendExpr___empty_init},
+  {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
+  {(bigint) 0 /* 115: AInitExpr < ASendExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
+  {(bigint) parser___parser_prod___AInitExpr___empty_init},
+  {(bigint) parser___parser_prod___AInitExpr___init_ainitexpr},
+  {(bigint) 8 /* 120: AInitExpr < AInitExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AInitExpr___n_kwinit},
+  {(bigint) parser___parser_nodes___AInitExpr___n_args},
 };
 /* 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__parser___parser_nodes___TLe(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AInitExpr::_parent */
+/* 3: Attribute AInitExpr::_location */
+/* 4: Attribute AInitExpr::_first_location */
+/* 5: Attribute AInitExpr::_last_location */
+/* 6: Attribute AInitExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute AInitExpr::_is_typed */
+/* 9: Attribute AInitExpr::_stype */
+/* 10: Attribute AInitExpr::_if_true_flow_ctx */
+/* 11: Attribute AInitExpr::_if_false_flow_ctx */
+/* 12: Attribute AInitExpr::_prop_signature */
+/* 13: Attribute AInitExpr::_raw_arguments_cache */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 17: Attribute AInitExpr::_prop */
+/* 18: Attribute AInitExpr::_return_type */
+/* 19: Attribute AInitExpr::_n_expr */
+/* 20: Attribute AInitExpr::_n_closure_defs */
+/* 21: Attribute AInitExpr::_n_kwinit */
+/* 22: Attribute AInitExpr::_n_args */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AInitExpr[] = "init var of AInitExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TLe;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AInitExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* syntax/typing.nit:1441 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:860 */
+  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TLe(void)
+val_t NEW_parser___parser_nodes___AInitExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TLe;
+  obj = alloc(sizeof(val_t) * 23);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AInitExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TLe(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AInitExpr[] = "check new AInitExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TLe;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AInitExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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___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___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___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);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TLe_parser___lexer___TLe___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AInitExpr_parser___parser_prod___ASendExpr___empty_init[] = "new AInitExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_AInitExpr_parser___parser_prod___ASendExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 960;
-  fra.me.meth = LOCATE_NEW_TLe_parser___lexer___TLe___init_tk;
+  fra.me.line = 4646;
+  fra.me.meth = LOCATE_NEW_AInitExpr_parser___parser_prod___ASendExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:4646 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AInitExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AInitExpr(fra.me.REG[0]);
+  parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AInitExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AInitExpr_parser___parser_prod___AInitExpr___empty_init[] = "new AInitExpr parser_prod::AInitExpr::empty_init";
+val_t NEW_AInitExpr_parser___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 = 6252;
+  fra.me.meth = LOCATE_NEW_AInitExpr_parser___parser_prod___AInitExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:6252 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AInitExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AInitExpr(fra.me.REG[0]);
+  parser___parser_prod___AInitExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AInitExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AInitExpr_parser___parser_prod___AInitExpr___init_ainitexpr[] = "new AInitExpr parser_prod::AInitExpr::init_ainitexpr";
+val_t NEW_AInitExpr_parser___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 = 6254;
+  fra.me.meth = LOCATE_NEW_AInitExpr_parser___parser_prod___AInitExpr___init_ainitexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   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;
-  /* ./parser//lexer.nit:960 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___TLe();
-  INIT_ATTRIBUTES__parser___parser_nodes___TLe(fra.me.REG[1]);
-  parser___lexer___TLe___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TLe(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* parser/parser_prod.nit:6254 */
+  fra.me.REG[3] = NEW_parser___parser_nodes___AInitExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AInitExpr(fra.me.REG[3]);
+  parser___parser_prod___AInitExpr___init_ainitexpr(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_parser___parser_nodes___AInitExpr(fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[3];
+}
+static const char LOCATE_NEW_AInitExpr_parser___parser_nodes___ANode___init[] = "new AInitExpr parser_nodes::ANode::init";
+val_t NEW_AInitExpr_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AInitExpr_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AInitExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AInitExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AInitExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-val_t NEW_TLe_parser___parser_nodes___ANode___init(val_t p0){
+static const char LOCATE_NEW_AInitExpr_parser___parser_prod___ASendExpr___init_asendexpr[] = "new AInitExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_AInitExpr_parser___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[4] = {0, 0, 0, 0};
+  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_TLe_parser___parser_nodes___ANode___init;
+  fra.me.line = 4648;
+  fra.me.meth = LOCATE_NEW_AInitExpr_parser___parser_prod___ASendExpr___init_asendexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___TLe();
-  INIT_ATTRIBUTES__parser___parser_nodes___TLe(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TLe(fra.me.REG[1]);
+  /* parser/parser_prod.nit:4648 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___AInitExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AInitExpr(fra.me.REG[1]);
+  parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AInitExpr(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TLl[73] = {
-  {(bigint) 2487 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TLl" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TLl < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TLl < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TLl < Token: superclass typecheck marker */},
-  {(bigint) 2487 /* 6: TLl < TLl: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_parser___parser_nodes___ABraExpr[123] = {
+  {(bigint) 4963 /* 0: Identity */},
+  {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ABraExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ABraExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: ABraExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: ABraExpr < Prod: superclass typecheck marker */},
+  {(bigint) 4595 /* 6: ABraExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3811 /* 7: ABraExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 4819 /* 9: ABraExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 4831 /* 10: ABraExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 4859 /* 11: ABraExpr < ASendExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) 4883 /* 14: ABraExpr < ABraFormExpr: superclass typecheck marker */},
+  {(bigint) 4963 /* 15: ABraExpr < ABraExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TLl < Object: superclass init_table position */},
+  {(bigint) 8 /* 19: ABraExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -38134,7 +78753,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TLl[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -38147,139 +78768,310 @@ const classtable_elt_t VFT_parser___parser_nodes___TLl[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TLl < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___ABraExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___ABraExpr___visit_all},
+  {(bigint) 7 /* 63: ABraExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TLl___parser_index},
-  {(bigint) 0 /* 70: TLl < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TLl___init_tk},
-  {(bigint) 3 /* 72: TLl < TLl: superclass init_table position */},
+  {(bigint) syntax___typing___ASendExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 6 /* 72: ABraExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
+  {(bigint) 2 /* 76: ABraExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 5 /* 81: ABraExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) syntax___typing___ABraExpr___compute_raw_arguments},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 4 /* 101: ABraExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
+  {(bigint) syntax___typing___AAbsSendExpr___get_property},
+  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
+  {(bigint) 3 /* 107: ABraExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) syntax___typing___AAbsSendExpr___prop},
+  {(bigint) syntax___typing___AAbsSendExpr___return_type},
+  {(bigint) syntax___typing___ABraExpr___name},
+  {(bigint) syntax___typing___ASendExpr___do_all_typing},
+  {(bigint) syntax___typing___ABraExpr___closure_defs},
+  {(bigint) parser___parser_prod___ASendExpr___empty_init},
+  {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
+  {(bigint) 1 /* 115: ABraExpr < ASendExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
+  {(bigint) 0 /* 118: ABraExpr < ABraFormExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ABraFormExpr___n_args},
+  {(bigint) parser___parser_prod___ABraExpr___empty_init},
+  {(bigint) parser___parser_prod___ABraExpr___init_abraexpr},
+  {(bigint) 9 /* 122: ABraExpr < ABraExpr: 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__parser___parser_nodes___TLl(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute ABraExpr::_parent */
+/* 3: Attribute ABraExpr::_location */
+/* 4: Attribute ABraExpr::_first_location */
+/* 5: Attribute ABraExpr::_last_location */
+/* 6: Attribute ABraExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute ABraExpr::_is_typed */
+/* 9: Attribute ABraExpr::_stype */
+/* 10: Attribute ABraExpr::_if_true_flow_ctx */
+/* 11: Attribute ABraExpr::_if_false_flow_ctx */
+/* 12: Attribute ABraExpr::_prop_signature */
+/* 13: Attribute ABraExpr::_raw_arguments_cache */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 17: Attribute ABraExpr::_prop */
+/* 18: Attribute ABraExpr::_return_type */
+/* 19: Attribute ABraExpr::_n_expr */
+/* 20: Attribute ABraExpr::_n_closure_defs */
+/* 21: Attribute ABraExpr::_n_args */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ABraExpr[] = "init var of ABraExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TLl;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ABraExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* syntax/typing.nit:1441 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:860 */
+  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TLl(void)
+val_t NEW_parser___parser_nodes___ABraExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TLl;
+  obj = alloc(sizeof(val_t) * 22);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ABraExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TLl(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___ABraExpr[] = "check new ABraExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TLl;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___ABraExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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___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___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);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TLl_parser___lexer___TLl___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ABraExpr_parser___parser_prod___ASendExpr___empty_init[] = "new ABraExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_ABraExpr_parser___parser_prod___ASendExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 973;
-  fra.me.meth = LOCATE_NEW_TLl_parser___lexer___TLl___init_tk;
+  fra.me.line = 4646;
+  fra.me.meth = LOCATE_NEW_ABraExpr_parser___parser_prod___ASendExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:4646 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ABraExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ABraExpr(fra.me.REG[0]);
+  parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ABraExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_ABraExpr_parser___parser_prod___ABraExpr___empty_init[] = "new ABraExpr parser_prod::ABraExpr::empty_init";
+val_t NEW_ABraExpr_parser___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 = 6311;
+  fra.me.meth = LOCATE_NEW_ABraExpr_parser___parser_prod___ABraExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:6311 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ABraExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ABraExpr(fra.me.REG[0]);
+  parser___parser_prod___ABraExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ABraExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_ABraExpr_parser___parser_prod___ABraExpr___init_abraexpr[] = "new ABraExpr parser_prod::ABraExpr::init_abraexpr";
+val_t NEW_ABraExpr_parser___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 = 6313;
+  fra.me.meth = LOCATE_NEW_ABraExpr_parser___parser_prod___ABraExpr___init_abraexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   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;
-  /* ./parser//lexer.nit:973 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___TLl();
-  INIT_ATTRIBUTES__parser___parser_nodes___TLl(fra.me.REG[1]);
-  parser___lexer___TLl___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TLl(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* parser/parser_prod.nit:6313 */
+  fra.me.REG[3] = NEW_parser___parser_nodes___ABraExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ABraExpr(fra.me.REG[3]);
+  parser___parser_prod___ABraExpr___init_abraexpr(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_parser___parser_nodes___ABraExpr(fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[3];
+}
+static const char LOCATE_NEW_ABraExpr_parser___parser_nodes___ANode___init[] = "new ABraExpr parser_nodes::ANode::init";
+val_t NEW_ABraExpr_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_ABraExpr_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ABraExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ABraExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ABraExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-val_t NEW_TLl_parser___parser_nodes___ANode___init(val_t p0){
+static const char LOCATE_NEW_ABraExpr_parser___parser_prod___ASendExpr___init_asendexpr[] = "new ABraExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_ABraExpr_parser___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[4] = {0, 0, 0, 0};
+  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_TLl_parser___parser_nodes___ANode___init;
+  fra.me.line = 4648;
+  fra.me.meth = LOCATE_NEW_ABraExpr_parser___parser_prod___ASendExpr___init_asendexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___TLl();
-  INIT_ATTRIBUTES__parser___parser_nodes___TLl(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TLl(fra.me.REG[1]);
+  /* parser/parser_prod.nit:4648 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___ABraExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ABraExpr(fra.me.REG[1]);
+  parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ABraExpr(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TGt[73] = {
-  {(bigint) 2695 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TGt" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TGt < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TGt < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TGt < Token: superclass typecheck marker */},
-  {(bigint) 2695 /* 6: TGt < TGt: 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_parser___parser_nodes___ABraAssignExpr[120] = {
+  {(bigint) 4967 /* 0: Identity */},
+  {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ABraAssignExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ABraAssignExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: ABraAssignExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: ABraAssignExpr < Prod: superclass typecheck marker */},
+  {(bigint) 4595 /* 6: ABraAssignExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3811 /* 7: ABraAssignExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 4571 /* 8: ABraAssignExpr < AAssignFormExpr: superclass typecheck marker */},
+  {(bigint) 4819 /* 9: ABraAssignExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 4831 /* 10: ABraAssignExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 4859 /* 11: ABraAssignExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 4967 /* 12: ABraAssignExpr < ABraAssignExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 4883 /* 14: ABraAssignExpr < ABraFormExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TGt < Object: superclass init_table position */},
+  {(bigint) 8 /* 19: ABraAssignExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -38295,7 +79087,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TGt[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -38308,300 +79102,319 @@ const classtable_elt_t VFT_parser___parser_nodes___TGt[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TGt < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___ABraAssignExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___ABraAssignExpr___visit_all},
+  {(bigint) 7 /* 63: ABraAssignExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TGt___parser_index},
-  {(bigint) 0 /* 70: TGt < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TGt___init_tk},
-  {(bigint) 3 /* 72: TGt < TGt: superclass init_table position */},
+  {(bigint) syntax___typing___ASendExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 6 /* 72: ABraAssignExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
+  {(bigint) 2 /* 76: ABraAssignExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 5 /* 81: ABraAssignExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {(bigint) parser___parser_prod___ABraAssignExpr___empty_init},
+  {(bigint) parser___parser_prod___ABraAssignExpr___init_abraassignexpr},
+  {(bigint) 10 /* 91: ABraAssignExpr < ABraAssignExpr: superclass init_table position */},
+  {(bigint) 9 /* 92: ABraAssignExpr < AAssignFormExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AAssignFormExpr___n_assign},
+  {(bigint) parser___parser_nodes___AAssignFormExpr___n_value},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) syntax___typing___ABraAssignExpr___compute_raw_arguments},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 4 /* 101: ABraAssignExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
+  {(bigint) syntax___typing___AAbsSendExpr___get_property},
+  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
+  {(bigint) 3 /* 107: ABraAssignExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) syntax___typing___AAbsSendExpr___prop},
+  {(bigint) syntax___typing___AAbsSendExpr___return_type},
+  {(bigint) syntax___typing___ABraAssignExpr___name},
+  {(bigint) syntax___typing___ASendExpr___do_all_typing},
+  {(bigint) syntax___typing___ASendExpr___closure_defs},
+  {(bigint) parser___parser_prod___ASendExpr___empty_init},
+  {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
+  {(bigint) 1 /* 115: ABraAssignExpr < ASendExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
+  {(bigint) 0 /* 118: ABraAssignExpr < ABraFormExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ABraFormExpr___n_args},
 };
 /* 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__parser___parser_nodes___TGt(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute ABraAssignExpr::_parent */
+/* 3: Attribute ABraAssignExpr::_location */
+/* 4: Attribute ABraAssignExpr::_first_location */
+/* 5: Attribute ABraAssignExpr::_last_location */
+/* 6: Attribute ABraAssignExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute ABraAssignExpr::_is_typed */
+/* 9: Attribute ABraAssignExpr::_stype */
+/* 10: Attribute ABraAssignExpr::_if_true_flow_ctx */
+/* 11: Attribute ABraAssignExpr::_if_false_flow_ctx */
+/* 12: Attribute ABraAssignExpr::_prop_signature */
+/* 13: Attribute ABraAssignExpr::_raw_arguments_cache */
+/* 14: Attribute ABraAssignExpr::_n_assign */
+/* 15: Attribute ABraAssignExpr::_n_value */
+/* Instance Hole :( */
+/* 17: Attribute ABraAssignExpr::_prop */
+/* 18: Attribute ABraAssignExpr::_return_type */
+/* 19: Attribute ABraAssignExpr::_n_expr */
+/* 20: Attribute ABraAssignExpr::_n_closure_defs */
+/* 21: Attribute ABraAssignExpr::_n_args */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ABraAssignExpr[] = "init var of ABraAssignExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TGt;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ABraAssignExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* syntax/typing.nit:1441 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:860 */
+  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TGt(void)
+val_t NEW_parser___parser_nodes___ABraAssignExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TGt;
+  obj = alloc(sizeof(val_t) * 22);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ABraAssignExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TGt(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___ABraAssignExpr[] = "check new ABraAssignExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TGt;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___ABraAssignExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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___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___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___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___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);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TGt_parser___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_parser___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_parser___parser_nodes___TGt();
-  INIT_ATTRIBUTES__parser___parser_nodes___TGt(fra.me.REG[1]);
-  parser___lexer___TGt___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TGt(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_TGt_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ABraAssignExpr_parser___parser_prod___ASendExpr___empty_init[] = "new ABraAssignExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_ABraAssignExpr_parser___parser_prod___ASendExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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_TGt_parser___parser_nodes___ANode___init;
+  fra.me.line = 4646;
+  fra.me.meth = LOCATE_NEW_ABraAssignExpr_parser___parser_prod___ASendExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___TGt();
-  INIT_ATTRIBUTES__parser___parser_nodes___TGt(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TGt(fra.me.REG[1]);
+  /* parser/parser_prod.nit:4646 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ABraAssignExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ABraAssignExpr(fra.me.REG[0]);
+  parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ABraAssignExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TGe[73] = {
-  {(bigint) 2703 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TGe" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TGe < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TGe < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TGe < Token: superclass typecheck marker */},
-  {(bigint) 2703 /* 6: 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 :( */,
-  {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TGe < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
-  {(bigint) standard___file___Object___printn},
-  {(bigint) standard___file___Object___print},
-  {(bigint) standard___file___Object___getc},
-  {(bigint) standard___file___Object___gets},
-  {(bigint) standard___file___Object___stdin},
-  {(bigint) standard___file___Object___stdout},
-  {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
-  {(bigint) standard___string___Object___native_class_name},
-  {(bigint) standard___string___Object___class_name},
-  {(bigint) standard___string___Object___inspect},
-  {(bigint) standard___string___Object___inspect_head},
-  {(bigint) standard___string___Object___args},
-  {(bigint) standard___hash___Object___hash},
-  {(bigint) standard___math___Object___atan2},
-  {(bigint) standard___math___Object___pi},
-  {(bigint) standard___math___Object___srand_from},
-  {(bigint) standard___math___Object___srand},
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TGe < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TGe___parser_index},
-  {(bigint) 0 /* 70: TGe < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TGe___init_tk},
-  {(bigint) 3 /* 72: 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__parser___parser_nodes___TGe(val_t p0){
+static const char LOCATE_NEW_ABraAssignExpr_parser___parser_prod___ABraAssignExpr___empty_init[] = "new ABraAssignExpr parser_prod::ABraAssignExpr::empty_init";
+val_t NEW_ABraAssignExpr_parser___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 = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___TGe;
+  fra.me.line = 6377;
+  fra.me.meth = LOCATE_NEW_ABraAssignExpr_parser___parser_prod___ABraAssignExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:6377 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ABraAssignExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ABraAssignExpr(fra.me.REG[0]);
+  parser___parser_prod___ABraAssignExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ABraAssignExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-val_t NEW_parser___parser_nodes___TGe(void)
-{
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TGe;
-  obj[1].object_id = object_id_counter;
-  object_id_counter = object_id_counter + 1;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_parser___parser_nodes___TGe(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
+static const char LOCATE_NEW_ABraAssignExpr_parser___parser_prod___ABraAssignExpr___init_abraassignexpr[] = "new ABraAssignExpr parser_prod::ABraAssignExpr::init_abraassignexpr";
+val_t NEW_ABraAssignExpr_parser___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 = 0;
-  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___TGe;
+  fra.me.line = 6379;
+  fra.me.meth = LOCATE_NEW_ABraAssignExpr_parser___parser_prod___ABraAssignExpr___init_abraassignexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
   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;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
-  }
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  /* parser/parser_prod.nit:6379 */
+  fra.me.REG[4] = NEW_parser___parser_nodes___ABraAssignExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ABraAssignExpr(fra.me.REG[4]);
+  parser___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_parser___parser_nodes___ABraAssignExpr(fra.me.REG[4]);
   stack_frame_head = fra.me.prev;
+  return fra.me.REG[4];
 }
-val_t NEW_TGe_parser___lexer___TGe___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ABraAssignExpr_parser___parser_nodes___ANode___init[] = "new ABraAssignExpr parser_nodes::ANode::init";
+val_t NEW_ABraAssignExpr_parser___parser_nodes___ANode___init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 999;
-  fra.me.meth = LOCATE_NEW_TGe_parser___lexer___TGe___init_tk;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_ABraAssignExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TGe();
-  INIT_ATTRIBUTES__parser___parser_nodes___TGe(fra.me.REG[1]);
-  parser___lexer___TGe___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TGe(fra.me.REG[1]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ABraAssignExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ABraAssignExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ABraAssignExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-val_t NEW_TGe_parser___parser_nodes___ANode___init(val_t p0){
+static const char LOCATE_NEW_ABraAssignExpr_parser___parser_prod___ASendExpr___init_asendexpr[] = "new ABraAssignExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_ABraAssignExpr_parser___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[4] = {0, 0, 0, 0};
+  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_TGe_parser___parser_nodes___ANode___init;
+  fra.me.line = 4648;
+  fra.me.meth = LOCATE_NEW_ABraAssignExpr_parser___parser_prod___ASendExpr___init_asendexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___TGe();
-  INIT_ATTRIBUTES__parser___parser_nodes___TGe(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TGe(fra.me.REG[1]);
+  /* parser/parser_prod.nit:4648 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___ABraAssignExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ABraAssignExpr(fra.me.REG[1]);
+  parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ABraAssignExpr(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TGg[73] = {
-  {(bigint) 2699 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TGg" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TGg < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TGg < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TGg < Token: superclass typecheck marker */},
-  {(bigint) 2699 /* 6: TGg < TGg: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_parser___parser_nodes___ABraReassignExpr[123] = {
+  {(bigint) 4959 /* 0: Identity */},
+  {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ABraReassignExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ABraReassignExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: ABraReassignExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: ABraReassignExpr < Prod: superclass typecheck marker */},
+  {(bigint) 4595 /* 6: ABraReassignExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3811 /* 7: ABraReassignExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 4331 /* 8: ABraReassignExpr < AReassignFormExpr: superclass typecheck marker */},
+  {(bigint) 4819 /* 9: ABraReassignExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 4831 /* 10: ABraReassignExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 4859 /* 11: ABraReassignExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 4867 /* 12: ABraReassignExpr < ASendReassignFormExpr: superclass typecheck marker */},
+  {(bigint) 4871 /* 13: ABraReassignExpr < ASendReassignExpr: superclass typecheck marker */},
+  {(bigint) 4883 /* 14: ABraReassignExpr < ABraFormExpr: superclass typecheck marker */},
+  {(bigint) 4959 /* 15: ABraReassignExpr < ABraReassignExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TGg < Object: superclass init_table position */},
+  {(bigint) 9 /* 19: ABraReassignExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -38617,7 +79430,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TGg[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -38630,128 +79445,311 @@ const classtable_elt_t VFT_parser___parser_nodes___TGg[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TGg < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___ABraReassignExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___ABraReassignExpr___visit_all},
+  {(bigint) 8 /* 63: ABraReassignExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TGg___parser_index},
-  {(bigint) 0 /* 70: TGg < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TGg___init_tk},
-  {(bigint) 3 /* 72: TGg < TGg: superclass init_table position */},
+  {(bigint) syntax___typing___ASendExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 7 /* 72: ABraReassignExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
+  {(bigint) 2 /* 76: ABraReassignExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 6 /* 81: ABraReassignExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___ASendReassignExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {(bigint) 11 /* 89: ABraReassignExpr < ASendReassignFormExpr: superclass init_table position */},
+  {(bigint) 0 /* 90: ABraReassignExpr < ASendReassignExpr: superclass init_table position */},
+  {(bigint) syntax___typing___ASendReassignExpr___read_prop},
+  {(bigint) syntax___typing___AReassignFormExpr___do_rvalue_typing},
+  {(bigint) syntax___typing___AReassignFormExpr___assign_method},
+  {(bigint) 5 /* 94: ABraReassignExpr < AReassignFormExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AReassignFormExpr___n_assign_op},
+  {(bigint) parser___parser_nodes___AReassignFormExpr___n_value},
+  {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) syntax___typing___ABraReassignExpr___compute_raw_arguments},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 4 /* 101: ABraReassignExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
+  {(bigint) syntax___typing___AAbsSendExpr___get_property},
+  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
+  {(bigint) 3 /* 107: ABraReassignExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) syntax___typing___AAbsSendExpr___prop},
+  {(bigint) syntax___typing___AAbsSendExpr___return_type},
+  {(bigint) syntax___typing___ABraReassignExpr___name},
+  {(bigint) syntax___typing___ASendReassignExpr___do_all_typing},
+  {(bigint) syntax___typing___ASendExpr___closure_defs},
+  {(bigint) parser___parser_prod___ASendExpr___empty_init},
+  {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
+  {(bigint) 1 /* 115: ABraReassignExpr < ASendExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
+  {(bigint) 10 /* 118: ABraReassignExpr < ABraFormExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ABraFormExpr___n_args},
+  {(bigint) parser___parser_prod___ABraReassignExpr___empty_init},
+  {(bigint) parser___parser_prod___ABraReassignExpr___init_abrareassignexpr},
+  {(bigint) 12 /* 122: ABraReassignExpr < ABraReassignExpr: 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__parser___parser_nodes___TGg(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute ABraReassignExpr::_parent */
+/* 3: Attribute ABraReassignExpr::_location */
+/* 4: Attribute ABraReassignExpr::_first_location */
+/* 5: Attribute ABraReassignExpr::_last_location */
+/* 6: Attribute ABraReassignExpr::_n_annotations */
+/* 7: Attribute ABraReassignExpr::_read_prop */
+/* 8: Attribute ABraReassignExpr::_is_typed */
+/* 9: Attribute ABraReassignExpr::_stype */
+/* 10: Attribute ABraReassignExpr::_if_true_flow_ctx */
+/* 11: Attribute ABraReassignExpr::_if_false_flow_ctx */
+/* 12: Attribute ABraReassignExpr::_prop_signature */
+/* 13: Attribute ABraReassignExpr::_raw_arguments_cache */
+/* 14: Attribute ABraReassignExpr::_assign_method */
+/* 15: Attribute ABraReassignExpr::_n_assign_op */
+/* 16: Attribute ABraReassignExpr::_n_value */
+/* 17: Attribute ABraReassignExpr::_prop */
+/* 18: Attribute ABraReassignExpr::_return_type */
+/* 19: Attribute ABraReassignExpr::_n_expr */
+/* 20: Attribute ABraReassignExpr::_n_closure_defs */
+/* 21: Attribute ABraReassignExpr::_n_args */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ABraReassignExpr[] = "init var of ABraReassignExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TGg;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ABraReassignExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* syntax/typing.nit:1441 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:860 */
+  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TGg(void)
+val_t NEW_parser___parser_nodes___ABraReassignExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TGg;
+  obj = alloc(sizeof(val_t) * 22);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ABraReassignExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TGg(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___ABraReassignExpr[] = "check new ABraReassignExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TGg;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___ABraReassignExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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___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___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___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___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);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TGg_parser___lexer___TGg___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ABraReassignExpr_parser___parser_prod___ASendExpr___empty_init[] = "new ABraReassignExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_ABraReassignExpr_parser___parser_prod___ASendExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  int init_table[13] = {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 = 1012;
-  fra.me.meth = LOCATE_NEW_TGg_parser___lexer___TGg___init_tk;
+  fra.me.line = 4646;
+  fra.me.meth = LOCATE_NEW_ABraReassignExpr_parser___parser_prod___ASendExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:4646 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ABraReassignExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ABraReassignExpr(fra.me.REG[0]);
+  parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ABraReassignExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_ABraReassignExpr_parser___parser_prod___ABraReassignExpr___empty_init[] = "new ABraReassignExpr parser_prod::ABraReassignExpr::empty_init";
+val_t NEW_ABraReassignExpr_parser___parser_prod___ABraReassignExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[13] = {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 = 6450;
+  fra.me.meth = LOCATE_NEW_ABraReassignExpr_parser___parser_prod___ABraReassignExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:6450 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ABraReassignExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ABraReassignExpr(fra.me.REG[0]);
+  parser___parser_prod___ABraReassignExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ABraReassignExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_ABraReassignExpr_parser___parser_prod___ABraReassignExpr___init_abrareassignexpr[] = "new ABraReassignExpr parser_prod::ABraReassignExpr::init_abrareassignexpr";
+val_t NEW_ABraReassignExpr_parser___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[13] = {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 = 6452;
+  fra.me.meth = LOCATE_NEW_ABraReassignExpr_parser___parser_prod___ABraReassignExpr___init_abrareassignexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
   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;
-  /* ./parser//lexer.nit:1012 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___TGg();
-  INIT_ATTRIBUTES__parser___parser_nodes___TGg(fra.me.REG[1]);
-  parser___lexer___TGg___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TGg(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  /* parser/parser_prod.nit:6452 */
+  fra.me.REG[4] = NEW_parser___parser_nodes___ABraReassignExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ABraReassignExpr(fra.me.REG[4]);
+  parser___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_parser___parser_nodes___ABraReassignExpr(fra.me.REG[4]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[4];
+}
+static const char LOCATE_NEW_ABraReassignExpr_parser___parser_nodes___ANode___init[] = "new ABraReassignExpr parser_nodes::ANode::init";
+val_t NEW_ABraReassignExpr_parser___parser_nodes___ANode___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[13] = {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 = 32;
+  fra.me.meth = LOCATE_NEW_ABraReassignExpr_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ABraReassignExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ABraReassignExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ABraReassignExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-val_t NEW_TGg_parser___parser_nodes___ANode___init(val_t p0){
+static const char LOCATE_NEW_ABraReassignExpr_parser___parser_prod___ASendExpr___init_asendexpr[] = "new ABraReassignExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_ABraReassignExpr_parser___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[4] = {0, 0, 0, 0};
+  int init_table[13] = {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 = 0;
-  fra.me.meth = LOCATE_NEW_TGg_parser___parser_nodes___ANode___init;
+  fra.me.line = 4648;
+  fra.me.meth = LOCATE_NEW_ABraReassignExpr_parser___parser_prod___ASendExpr___init_asendexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___TGg();
-  INIT_ATTRIBUTES__parser___parser_nodes___TGg(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TGg(fra.me.REG[1]);
+  /* parser/parser_prod.nit:4648 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___ABraReassignExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ABraReassignExpr(fra.me.REG[1]);
+  parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ABraReassignExpr(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TStarship[73] = {
-  {(bigint) 2427 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TStarship" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TStarship < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TStarship < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TStarship < Token: superclass typecheck marker */},
-  {(bigint) 2427 /* 6: TStarship < TStarship: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_parser___parser_nodes___AClosureCallExpr[111] = {
+  {(bigint) 4779 /* 0: Identity */},
+  {(bigint) 18 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AClosureCallExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AClosureCallExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AClosureCallExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AClosureCallExpr < Prod: superclass typecheck marker */},
+  {(bigint) 4595 /* 6: AClosureCallExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3811 /* 7: AClosureCallExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 4779 /* 8: AClosureCallExpr < AClosureCallExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -38762,7 +79760,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TStarship[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TStarship < Object: superclass init_table position */},
+  {(bigint) 4 /* 19: AClosureCallExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -38778,7 +79776,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TStarship[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -38791,128 +79791,239 @@ const classtable_elt_t VFT_parser___parser_nodes___TStarship[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TStarship < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AClosureCallExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AClosureCallExpr___visit_all},
+  {(bigint) 3 /* 63: AClosureCallExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TStarship___parser_index},
-  {(bigint) 0 /* 70: TStarship < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TStarship___init_tk},
-  {(bigint) 3 /* 72: TStarship < TStarship: superclass init_table position */},
+  {(bigint) syntax___typing___AClosureCallExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 2 /* 72: AClosureCallExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 1 /* 81: AClosureCallExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___AClosureCallExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) syntax___typing___AClosureCallExpr___compute_raw_arguments},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 0 /* 101: AClosureCallExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) syntax___typing___AClosureCallExpr___variable},
+  {(bigint) parser___parser_prod___AClosureCallExpr___empty_init},
+  {(bigint) parser___parser_prod___AClosureCallExpr___init_aclosurecallexpr},
+  {(bigint) 5 /* 107: AClosureCallExpr < AClosureCallExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AClosureCallExpr___n_id},
+  {(bigint) parser___parser_nodes___AClosureCallExpr___n_args},
+  {(bigint) parser___parser_nodes___AClosureCallExpr___n_closure_defs},
 };
 /* 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__parser___parser_nodes___TStarship(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AClosureCallExpr::_parent */
+/* 3: Attribute AClosureCallExpr::_location */
+/* 4: Attribute AClosureCallExpr::_first_location */
+/* 5: Attribute AClosureCallExpr::_last_location */
+/* 6: Attribute AClosureCallExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute AClosureCallExpr::_is_typed */
+/* 9: Attribute AClosureCallExpr::_stype */
+/* 10: Attribute AClosureCallExpr::_if_true_flow_ctx */
+/* 11: Attribute AClosureCallExpr::_if_false_flow_ctx */
+/* 12: Attribute AClosureCallExpr::_prop_signature */
+/* 13: Attribute AClosureCallExpr::_raw_arguments_cache */
+/* 14: Attribute AClosureCallExpr::_variable */
+/* 15: Attribute AClosureCallExpr::_n_id */
+/* 16: Attribute AClosureCallExpr::_n_args */
+/* 17: Attribute AClosureCallExpr::_n_closure_defs */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AClosureCallExpr[] = "init var of AClosureCallExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TStarship;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AClosureCallExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* syntax/typing.nit:1441 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:1024 */
+  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  ATTR_parser___parser_nodes___AClosureCallExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TStarship(void)
+val_t NEW_parser___parser_nodes___AClosureCallExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TStarship;
+  obj = alloc(sizeof(val_t) * 18);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AClosureCallExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TStarship(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AClosureCallExpr[] = "check new AClosureCallExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TStarship;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AClosureCallExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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___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___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;
 }
-val_t NEW_TStarship_parser___lexer___TStarship___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AClosureCallExpr_parser___parser_prod___AClosureCallExpr___init_aclosurecallexpr[] = "new AClosureCallExpr parser_prod::AClosureCallExpr::init_aclosurecallexpr";
+val_t NEW_AClosureCallExpr_parser___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[4] = {0, 0, 0, 0};
+  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 = 1025;
-  fra.me.meth = LOCATE_NEW_TStarship_parser___lexer___TStarship___init_tk;
+  fra.me.line = 6525;
+  fra.me.meth = LOCATE_NEW_AClosureCallExpr_parser___parser_prod___AClosureCallExpr___init_aclosurecallexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   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;
-  /* ./parser//lexer.nit:1025 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___TStarship();
-  INIT_ATTRIBUTES__parser___parser_nodes___TStarship(fra.me.REG[1]);
-  parser___lexer___TStarship___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TStarship(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* parser/parser_prod.nit:6525 */
+  fra.me.REG[3] = NEW_parser___parser_nodes___AClosureCallExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AClosureCallExpr(fra.me.REG[3]);
+  parser___parser_prod___AClosureCallExpr___init_aclosurecallexpr(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_parser___parser_nodes___AClosureCallExpr(fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[3];
 }
-val_t NEW_TStarship_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AClosureCallExpr_parser___parser_prod___AClosureCallExpr___empty_init[] = "new AClosureCallExpr parser_prod::AClosureCallExpr::empty_init";
+val_t NEW_AClosureCallExpr_parser___parser_prod___AClosureCallExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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_TStarship_parser___parser_nodes___ANode___init;
+  fra.me.line = 6523;
+  fra.me.meth = LOCATE_NEW_AClosureCallExpr_parser___parser_prod___AClosureCallExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___TStarship();
-  INIT_ATTRIBUTES__parser___parser_nodes___TStarship(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TStarship(fra.me.REG[1]);
+  /* parser/parser_prod.nit:6523 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AClosureCallExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AClosureCallExpr(fra.me.REG[0]);
+  parser___parser_prod___AClosureCallExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AClosureCallExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TBang[73] = {
-  {(bigint) 2763 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TBang" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TBang < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TBang < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TBang < Token: superclass typecheck marker */},
-  {(bigint) 2763 /* 6: TBang < TBang: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+static const char LOCATE_NEW_AClosureCallExpr_parser___parser_nodes___ANode___init[] = "new AClosureCallExpr parser_nodes::ANode::init";
+val_t NEW_AClosureCallExpr_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AClosureCallExpr_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AClosureCallExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AClosureCallExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AClosureCallExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___AVarExpr[95] = {
+  {(bigint) 4647 /* 0: Identity */},
+  {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AVarExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AVarExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AVarExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AVarExpr < Prod: superclass typecheck marker */},
+  {(bigint) 4267 /* 6: AVarExpr < AVarFormExpr: superclass typecheck marker */},
+  {(bigint) 3811 /* 7: AVarExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 4647 /* 8: AVarExpr < AVarExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -38923,7 +80034,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TBang[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TBang < Object: superclass init_table position */},
+  {(bigint) 4 /* 19: AVarExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -38939,7 +80050,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TBang[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -38952,129 +80065,200 @@ const classtable_elt_t VFT_parser___parser_nodes___TBang[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TBang < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AVarExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AVarExpr___visit_all},
+  {(bigint) 3 /* 63: AVarExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TBang___parser_index},
-  {(bigint) 0 /* 70: TBang < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TBang___init_tk},
-  {(bigint) 3 /* 72: TBang < TBang: superclass init_table position */},
+  {(bigint) syntax___typing___AVarExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 2 /* 72: AVarExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 1 /* 81: AVarExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___AVarExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AVarExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {(bigint) syntax___typing___AVarFormExpr___variable},
+  {(bigint) 0 /* 90: AVarExpr < AVarFormExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AVarFormExpr___n_id},
+  {(bigint) parser___parser_prod___AVarExpr___empty_init},
+  {(bigint) parser___parser_prod___AVarExpr___init_avarexpr},
+  {(bigint) 5 /* 94: AVarExpr < AVarExpr: 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__parser___parser_nodes___TBang(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AVarExpr::_parent */
+/* 3: Attribute AVarExpr::_location */
+/* 4: Attribute AVarExpr::_first_location */
+/* 5: Attribute AVarExpr::_last_location */
+/* 6: Attribute AVarExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute AVarExpr::_is_typed */
+/* 9: Attribute AVarExpr::_stype */
+/* 10: Attribute AVarExpr::_if_true_flow_ctx */
+/* 11: Attribute AVarExpr::_if_false_flow_ctx */
+/* 12: Attribute AVarExpr::_variable */
+/* 13: Attribute AVarExpr::_n_id */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AVarExpr[] = "init var of AVarExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___AVarExpr(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__parser___parser_nodes___TBang;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AVarExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TBang(void)
+val_t NEW_parser___parser_nodes___AVarExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TBang;
+  obj = alloc(sizeof(val_t) * 14);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AVarExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TBang(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AVarExpr[] = "check new AVarExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TBang;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AVarExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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;
 }
-val_t NEW_TBang_parser___lexer___TBang___init_tk(val_t p0){
+static const char LOCATE_NEW_AVarExpr_parser___parser_prod___AVarExpr___init_avarexpr[] = "new AVarExpr parser_prod::AVarExpr::init_avarexpr";
+val_t NEW_AVarExpr_parser___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[4] = {0, 0, 0, 0};
+  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 = 1038;
-  fra.me.meth = LOCATE_NEW_TBang_parser___lexer___TBang___init_tk;
+  fra.me.line = 6591;
+  fra.me.meth = LOCATE_NEW_AVarExpr_parser___parser_prod___AVarExpr___init_avarexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TBang();
-  INIT_ATTRIBUTES__parser___parser_nodes___TBang(fra.me.REG[1]);
-  parser___lexer___TBang___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TBang(fra.me.REG[1]);
+  /* parser/parser_prod.nit:6591 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___AVarExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AVarExpr(fra.me.REG[1]);
+  parser___parser_prod___AVarExpr___init_avarexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AVarExpr(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-val_t NEW_TBang_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AVarExpr_parser___parser_prod___AVarExpr___empty_init[] = "new AVarExpr parser_prod::AVarExpr::empty_init";
+val_t NEW_AVarExpr_parser___parser_prod___AVarExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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_TBang_parser___parser_nodes___ANode___init;
+  fra.me.line = 6589;
+  fra.me.meth = LOCATE_NEW_AVarExpr_parser___parser_prod___AVarExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___TBang();
-  INIT_ATTRIBUTES__parser___parser_nodes___TBang(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TBang(fra.me.REG[1]);
+  /* parser/parser_prod.nit:6589 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AVarExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AVarExpr(fra.me.REG[0]);
+  parser___parser_prod___AVarExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AVarExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TClassid[73] = {
-  {(bigint) 2751 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TClassid" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TClassid < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TClassid < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TClassid < Token: superclass typecheck marker */},
-  {(bigint) 2751 /* 6: TClassid < TClassid: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+static const char LOCATE_NEW_AVarExpr_parser___parser_nodes___ANode___init[] = "new AVarExpr parser_nodes::ANode::init";
+val_t NEW_AVarExpr_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AVarExpr_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AVarExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AVarExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AVarExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___AVarAssignExpr[98] = {
+  {(bigint) 4651 /* 0: Identity */},
+  {(bigint) 16 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AVarAssignExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AVarAssignExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AVarAssignExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AVarAssignExpr < Prod: superclass typecheck marker */},
+  {(bigint) 4267 /* 6: AVarAssignExpr < AVarFormExpr: superclass typecheck marker */},
+  {(bigint) 3811 /* 7: AVarAssignExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 4571 /* 8: AVarAssignExpr < AAssignFormExpr: superclass typecheck marker */},
+  {(bigint) 4651 /* 9: AVarAssignExpr < AVarAssignExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -39084,7 +80268,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TClassid[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TClassid < Object: superclass init_table position */},
+  {(bigint) 4 /* 19: AVarAssignExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -39100,7 +80284,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TClassid[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -39113,131 +80299,219 @@ const classtable_elt_t VFT_parser___parser_nodes___TClassid[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TClassid < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AVarAssignExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AVarAssignExpr___visit_all},
+  {(bigint) 3 /* 63: AVarAssignExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TClassid___parser_index},
-  {(bigint) 0 /* 70: TClassid < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TClassid___init_tk},
-  {(bigint) 3 /* 72: TClassid < TClassid: superclass init_table position */},
+  {(bigint) syntax___typing___AVarAssignExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 2 /* 72: AVarAssignExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 1 /* 81: AVarAssignExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___AVarAssignExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {(bigint) syntax___typing___AVarFormExpr___variable},
+  {(bigint) 0 /* 90: AVarAssignExpr < AVarFormExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AVarFormExpr___n_id},
+  {(bigint) 5 /* 92: AVarAssignExpr < AAssignFormExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AAssignFormExpr___n_assign},
+  {(bigint) parser___parser_nodes___AAssignFormExpr___n_value},
+  {(bigint) parser___parser_prod___AVarAssignExpr___empty_init},
+  {(bigint) parser___parser_prod___AVarAssignExpr___init_avarassignexpr},
+  {(bigint) 6 /* 97: AVarAssignExpr < AVarAssignExpr: 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__parser___parser_nodes___TClassid(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AVarAssignExpr::_parent */
+/* 3: Attribute AVarAssignExpr::_location */
+/* 4: Attribute AVarAssignExpr::_first_location */
+/* 5: Attribute AVarAssignExpr::_last_location */
+/* 6: Attribute AVarAssignExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute AVarAssignExpr::_is_typed */
+/* 9: Attribute AVarAssignExpr::_stype */
+/* 10: Attribute AVarAssignExpr::_if_true_flow_ctx */
+/* 11: Attribute AVarAssignExpr::_if_false_flow_ctx */
+/* 12: Attribute AVarAssignExpr::_variable */
+/* 13: Attribute AVarAssignExpr::_n_id */
+/* 14: Attribute AVarAssignExpr::_n_assign */
+/* 15: Attribute AVarAssignExpr::_n_value */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AVarAssignExpr[] = "init var of AVarAssignExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___AVarAssignExpr(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__parser___parser_nodes___TClassid;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AVarAssignExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TClassid(void)
+val_t NEW_parser___parser_nodes___AVarAssignExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TClassid;
+  obj = alloc(sizeof(val_t) * 16);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AVarAssignExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TClassid(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AVarAssignExpr[] = "check new AVarAssignExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TClassid;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AVarAssignExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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___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___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;
 }
-val_t NEW_TClassid_parser___lexer___TClassid___init_tk(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_AVarAssignExpr_parser___parser_prod___AVarAssignExpr___init_avarassignexpr[] = "new AVarAssignExpr parser_prod::AVarAssignExpr::init_avarassignexpr";
+val_t NEW_AVarAssignExpr_parser___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[4] = {0, 0, 0, 0};
+  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 = 1051;
-  fra.me.meth = LOCATE_NEW_TClassid_parser___lexer___TClassid___init_tk;
+  fra.me.line = 6622;
+  fra.me.meth = LOCATE_NEW_AVarAssignExpr_parser___parser_prod___AVarAssignExpr___init_avarassignexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   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;
-  /* ./parser//lexer.nit:1051 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___TClassid();
-  INIT_ATTRIBUTES__parser___parser_nodes___TClassid(fra.me.REG[2]);
-  parser___lexer___TClassid___init_tk(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___TClassid(fra.me.REG[2]);
+  fra.me.REG[2] = p2;
+  /* parser/parser_prod.nit:6622 */
+  fra.me.REG[3] = NEW_parser___parser_nodes___AVarAssignExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AVarAssignExpr(fra.me.REG[3]);
+  parser___parser_prod___AVarAssignExpr___init_avarassignexpr(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_parser___parser_nodes___AVarAssignExpr(fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[3];
 }
-val_t NEW_TClassid_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AVarAssignExpr_parser___parser_prod___AVarAssignExpr___empty_init[] = "new AVarAssignExpr parser_prod::AVarAssignExpr::empty_init";
+val_t NEW_AVarAssignExpr_parser___parser_prod___AVarAssignExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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_TClassid_parser___parser_nodes___ANode___init;
+  fra.me.line = 6620;
+  fra.me.meth = LOCATE_NEW_AVarAssignExpr_parser___parser_prod___AVarAssignExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___TClassid();
-  INIT_ATTRIBUTES__parser___parser_nodes___TClassid(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TClassid(fra.me.REG[1]);
+  /* parser/parser_prod.nit:6620 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AVarAssignExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AVarAssignExpr(fra.me.REG[0]);
+  parser___parser_prod___AVarAssignExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AVarAssignExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TId[73] = {
-  {(bigint) 2691 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TId" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TId < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TId < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TId < Token: superclass typecheck marker */},
-  {(bigint) 2691 /* 6: TId < TId: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+static const char LOCATE_NEW_AVarAssignExpr_parser___parser_nodes___ANode___init[] = "new AVarAssignExpr parser_nodes::ANode::init";
+val_t NEW_AVarAssignExpr_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AVarAssignExpr_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AVarAssignExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AVarAssignExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AVarAssignExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___AVarReassignExpr[100] = {
+  {(bigint) 4643 /* 0: Identity */},
+  {(bigint) 17 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AVarReassignExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AVarReassignExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AVarReassignExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AVarReassignExpr < Prod: superclass typecheck marker */},
+  {(bigint) 4267 /* 6: AVarReassignExpr < AVarFormExpr: superclass typecheck marker */},
+  {(bigint) 3811 /* 7: AVarReassignExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 4331 /* 8: AVarReassignExpr < AReassignFormExpr: superclass typecheck marker */},
+  {(bigint) 4643 /* 9: AVarReassignExpr < AVarReassignExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -39247,7 +80521,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TId[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TId < Object: superclass init_table position */},
+  {(bigint) 4 /* 19: AVarReassignExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -39263,7 +80537,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TId[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -39276,131 +80552,222 @@ const classtable_elt_t VFT_parser___parser_nodes___TId[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TId < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AVarReassignExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AVarReassignExpr___visit_all},
+  {(bigint) 3 /* 63: AVarReassignExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TId___parser_index},
-  {(bigint) 0 /* 70: TId < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TId___init_tk},
-  {(bigint) 3 /* 72: TId < TId: superclass init_table position */},
+  {(bigint) syntax___typing___AVarReassignExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 2 /* 72: AVarReassignExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 1 /* 81: AVarReassignExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___AVarReassignExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {(bigint) syntax___typing___AVarFormExpr___variable},
+  {(bigint) 0 /* 90: AVarReassignExpr < AVarFormExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AVarFormExpr___n_id},
+  {(bigint) syntax___typing___AReassignFormExpr___do_rvalue_typing},
+  {(bigint) syntax___typing___AReassignFormExpr___assign_method},
+  {(bigint) 5 /* 94: AVarReassignExpr < AReassignFormExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AReassignFormExpr___n_assign_op},
+  {(bigint) parser___parser_nodes___AReassignFormExpr___n_value},
+  {(bigint) parser___parser_prod___AVarReassignExpr___empty_init},
+  {(bigint) parser___parser_prod___AVarReassignExpr___init_avarreassignexpr},
+  {(bigint) 6 /* 99: AVarReassignExpr < AVarReassignExpr: 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__parser___parser_nodes___TId(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AVarReassignExpr::_parent */
+/* 3: Attribute AVarReassignExpr::_location */
+/* 4: Attribute AVarReassignExpr::_first_location */
+/* 5: Attribute AVarReassignExpr::_last_location */
+/* 6: Attribute AVarReassignExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute AVarReassignExpr::_is_typed */
+/* 9: Attribute AVarReassignExpr::_stype */
+/* 10: Attribute AVarReassignExpr::_if_true_flow_ctx */
+/* 11: Attribute AVarReassignExpr::_if_false_flow_ctx */
+/* 12: Attribute AVarReassignExpr::_variable */
+/* 13: Attribute AVarReassignExpr::_n_id */
+/* 14: Attribute AVarReassignExpr::_assign_method */
+/* 15: Attribute AVarReassignExpr::_n_assign_op */
+/* 16: Attribute AVarReassignExpr::_n_value */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AVarReassignExpr[] = "init var of AVarReassignExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___AVarReassignExpr(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__parser___parser_nodes___TId;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AVarReassignExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TId(void)
+val_t NEW_parser___parser_nodes___AVarReassignExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TId;
+  obj = alloc(sizeof(val_t) * 17);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AVarReassignExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TId(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AVarReassignExpr[] = "check new AVarReassignExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TId;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AVarReassignExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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___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___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;
 }
-val_t NEW_TId_parser___lexer___TId___init_tk(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_AVarReassignExpr_parser___parser_prod___AVarReassignExpr___init_avarreassignexpr[] = "new AVarReassignExpr parser_prod::AVarReassignExpr::init_avarreassignexpr";
+val_t NEW_AVarReassignExpr_parser___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[4] = {0, 0, 0, 0};
+  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 = 1064;
-  fra.me.meth = LOCATE_NEW_TId_parser___lexer___TId___init_tk;
+  fra.me.line = 6681;
+  fra.me.meth = LOCATE_NEW_AVarReassignExpr_parser___parser_prod___AVarReassignExpr___init_avarreassignexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   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;
-  /* ./parser//lexer.nit:1064 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___TId();
-  INIT_ATTRIBUTES__parser___parser_nodes___TId(fra.me.REG[2]);
-  parser___lexer___TId___init_tk(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___TId(fra.me.REG[2]);
+  fra.me.REG[2] = p2;
+  /* parser/parser_prod.nit:6681 */
+  fra.me.REG[3] = NEW_parser___parser_nodes___AVarReassignExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AVarReassignExpr(fra.me.REG[3]);
+  parser___parser_prod___AVarReassignExpr___init_avarreassignexpr(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_parser___parser_nodes___AVarReassignExpr(fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[3];
 }
-val_t NEW_TId_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AVarReassignExpr_parser___parser_prod___AVarReassignExpr___empty_init[] = "new AVarReassignExpr parser_prod::AVarReassignExpr::empty_init";
+val_t NEW_AVarReassignExpr_parser___parser_prod___AVarReassignExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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_TId_parser___parser_nodes___ANode___init;
+  fra.me.line = 6679;
+  fra.me.meth = LOCATE_NEW_AVarReassignExpr_parser___parser_prod___AVarReassignExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___TId();
-  INIT_ATTRIBUTES__parser___parser_nodes___TId(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TId(fra.me.REG[1]);
+  /* parser/parser_prod.nit:6679 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AVarReassignExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AVarReassignExpr(fra.me.REG[0]);
+  parser___parser_prod___AVarReassignExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AVarReassignExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TAttrid[73] = {
-  {(bigint) 2767 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TAttrid" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TAttrid < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TAttrid < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TAttrid < Token: superclass typecheck marker */},
-  {(bigint) 2767 /* 6: TAttrid < TAttrid: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+static const char LOCATE_NEW_AVarReassignExpr_parser___parser_nodes___ANode___init[] = "new AVarReassignExpr parser_nodes::ANode::init";
+val_t NEW_AVarReassignExpr_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AVarReassignExpr_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AVarReassignExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AVarReassignExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AVarReassignExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___ACrangeExpr[99] = {
+  {(bigint) 4767 /* 0: Identity */},
+  {(bigint) 16 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ACrangeExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ACrangeExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: ACrangeExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: ACrangeExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3811 /* 7: ACrangeExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 4339 /* 8: ACrangeExpr < ARangeExpr: superclass typecheck marker */},
+  {(bigint) 4767 /* 9: ACrangeExpr < ACrangeExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -39410,7 +80777,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TAttrid[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TAttrid < Object: superclass init_table position */},
+  {(bigint) 4 /* 19: ACrangeExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -39426,7 +80793,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TAttrid[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -39439,131 +80808,277 @@ const classtable_elt_t VFT_parser___parser_nodes___TAttrid[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TAttrid < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___ACrangeExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___ACrangeExpr___visit_all},
+  {(bigint) 3 /* 63: ACrangeExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TAttrid___parser_index},
-  {(bigint) 0 /* 70: TAttrid < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TAttrid___init_tk},
-  {(bigint) 3 /* 72: TAttrid < TAttrid: superclass init_table position */},
+  {(bigint) syntax___typing___ARangeExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 2 /* 72: ACrangeExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 1 /* 81: ACrangeExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___ACrangeExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {(bigint) parser___parser_prod___ARangeExpr___empty_init},
+  {(bigint) parser___parser_prod___ARangeExpr___init_arangeexpr},
+  {(bigint) 0 /* 91: ACrangeExpr < ARangeExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ARangeExpr___n_expr},
+  {(bigint) parser___parser_nodes___ARangeExpr___n_expr2},
+  {(bigint) parser___parser_prod___ACrangeExpr___empty_init},
+  {(bigint) parser___parser_prod___ACrangeExpr___init_acrangeexpr},
+  {(bigint) 5 /* 96: ACrangeExpr < ACrangeExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ACrangeExpr___n_obra},
+  {(bigint) parser___parser_nodes___ACrangeExpr___n_cbra},
 };
 /* 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__parser___parser_nodes___TAttrid(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute ACrangeExpr::_parent */
+/* 3: Attribute ACrangeExpr::_location */
+/* 4: Attribute ACrangeExpr::_first_location */
+/* 5: Attribute ACrangeExpr::_last_location */
+/* 6: Attribute ACrangeExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute ACrangeExpr::_is_typed */
+/* 9: Attribute ACrangeExpr::_stype */
+/* 10: Attribute ACrangeExpr::_if_true_flow_ctx */
+/* 11: Attribute ACrangeExpr::_if_false_flow_ctx */
+/* 12: Attribute ACrangeExpr::_n_expr */
+/* 13: Attribute ACrangeExpr::_n_expr2 */
+/* 14: Attribute ACrangeExpr::_n_obra */
+/* 15: Attribute ACrangeExpr::_n_cbra */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ACrangeExpr[] = "init var of ACrangeExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___ACrangeExpr(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__parser___parser_nodes___TAttrid;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ACrangeExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TAttrid(void)
+val_t NEW_parser___parser_nodes___ACrangeExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TAttrid;
+  obj = alloc(sizeof(val_t) * 16);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ACrangeExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TAttrid(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___ACrangeExpr[] = "check new ACrangeExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TAttrid;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___ACrangeExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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___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_parser___parser_nodes___ACrangeExpr____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___parser_nodes___ACrangeExpr____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;
 }
-val_t NEW_TAttrid_parser___lexer___TAttrid___init_tk(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_ACrangeExpr_parser___parser_prod___ARangeExpr___empty_init[] = "new ACrangeExpr parser_prod::ARangeExpr::empty_init";
+val_t NEW_ACrangeExpr_parser___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 = 6738;
+  fra.me.meth = LOCATE_NEW_ACrangeExpr_parser___parser_prod___ARangeExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:6738 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ACrangeExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ACrangeExpr(fra.me.REG[0]);
+  parser___parser_prod___ARangeExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ACrangeExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_ACrangeExpr_parser___parser_prod___ACrangeExpr___empty_init[] = "new ACrangeExpr parser_prod::ACrangeExpr::empty_init";
+val_t NEW_ACrangeExpr_parser___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 = 6801;
+  fra.me.meth = LOCATE_NEW_ACrangeExpr_parser___parser_prod___ACrangeExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:6801 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ACrangeExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ACrangeExpr(fra.me.REG[0]);
+  parser___parser_prod___ACrangeExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ACrangeExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_ACrangeExpr_parser___parser_prod___ACrangeExpr___init_acrangeexpr[] = "new ACrangeExpr parser_prod::ACrangeExpr::init_acrangeexpr";
+val_t NEW_ACrangeExpr_parser___parser_prod___ACrangeExpr___init_acrangeexpr(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 = 6803;
+  fra.me.meth = LOCATE_NEW_ACrangeExpr_parser___parser_prod___ACrangeExpr___init_acrangeexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
+  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:6803 */
+  fra.me.REG[5] = NEW_parser___parser_nodes___ACrangeExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ACrangeExpr(fra.me.REG[5]);
+  parser___parser_prod___ACrangeExpr___init_acrangeexpr(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_parser___parser_nodes___ACrangeExpr(fra.me.REG[5]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[5];
+}
+static const char LOCATE_NEW_ACrangeExpr_parser___parser_nodes___ANode___init[] = "new ACrangeExpr parser_nodes::ANode::init";
+val_t NEW_ACrangeExpr_parser___parser_nodes___ANode___init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 1077;
-  fra.me.meth = LOCATE_NEW_TAttrid_parser___lexer___TAttrid___init_tk;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_ACrangeExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TAttrid();
-  INIT_ATTRIBUTES__parser___parser_nodes___TAttrid(fra.me.REG[2]);
-  parser___lexer___TAttrid___init_tk(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___TAttrid(fra.me.REG[2]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ACrangeExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ACrangeExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ACrangeExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[0];
 }
-val_t NEW_TAttrid_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ACrangeExpr_parser___parser_prod___ARangeExpr___init_arangeexpr[] = "new ACrangeExpr parser_prod::ARangeExpr::init_arangeexpr";
+val_t NEW_ACrangeExpr_parser___parser_prod___ARangeExpr___init_arangeexpr(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};
+  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_TAttrid_parser___parser_nodes___ANode___init;
+  fra.me.line = 6740;
+  fra.me.meth = LOCATE_NEW_ACrangeExpr_parser___parser_prod___ARangeExpr___init_arangeexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   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] = NEW_parser___parser_nodes___TAttrid();
-  INIT_ATTRIBUTES__parser___parser_nodes___TAttrid(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TAttrid(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* parser/parser_prod.nit:6740 */
+  fra.me.REG[3] = NEW_parser___parser_nodes___ACrangeExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ACrangeExpr(fra.me.REG[3]);
+  parser___parser_prod___ARangeExpr___init_arangeexpr(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_parser___parser_nodes___ACrangeExpr(fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[3];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TNumber[73] = {
-  {(bigint) 2463 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TNumber" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TNumber < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TNumber < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TNumber < Token: superclass typecheck marker */},
-  {(bigint) 2463 /* 6: TNumber < TNumber: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_parser___parser_nodes___AOrangeExpr[99] = {
+  {(bigint) 4675 /* 0: Identity */},
+  {(bigint) 16 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AOrangeExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AOrangeExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AOrangeExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AOrangeExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3811 /* 7: AOrangeExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 4339 /* 8: AOrangeExpr < ARangeExpr: superclass typecheck marker */},
+  {(bigint) 4675 /* 9: AOrangeExpr < AOrangeExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -39573,7 +81088,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TNumber[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TNumber < Object: superclass init_table position */},
+  {(bigint) 4 /* 19: AOrangeExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -39589,7 +81104,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TNumber[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -39602,130 +81119,276 @@ const classtable_elt_t VFT_parser___parser_nodes___TNumber[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TNumber < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AOrangeExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AOrangeExpr___visit_all},
+  {(bigint) 3 /* 63: AOrangeExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TNumber___parser_index},
-  {(bigint) 0 /* 70: TNumber < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TNumber___init_tk},
-  {(bigint) 3 /* 72: TNumber < TNumber: superclass init_table position */},
+  {(bigint) syntax___typing___ARangeExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 2 /* 72: AOrangeExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 1 /* 81: AOrangeExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___AOrangeExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {(bigint) parser___parser_prod___ARangeExpr___empty_init},
+  {(bigint) parser___parser_prod___ARangeExpr___init_arangeexpr},
+  {(bigint) 0 /* 91: AOrangeExpr < ARangeExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ARangeExpr___n_expr},
+  {(bigint) parser___parser_nodes___ARangeExpr___n_expr2},
+  {(bigint) parser___parser_prod___AOrangeExpr___empty_init},
+  {(bigint) parser___parser_prod___AOrangeExpr___init_aorangeexpr},
+  {(bigint) 5 /* 96: AOrangeExpr < AOrangeExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AOrangeExpr___n_obra},
+  {(bigint) parser___parser_nodes___AOrangeExpr___n_cbra},
 };
 /* 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__parser___parser_nodes___TNumber(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AOrangeExpr::_parent */
+/* 3: Attribute AOrangeExpr::_location */
+/* 4: Attribute AOrangeExpr::_first_location */
+/* 5: Attribute AOrangeExpr::_last_location */
+/* 6: Attribute AOrangeExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute AOrangeExpr::_is_typed */
+/* 9: Attribute AOrangeExpr::_stype */
+/* 10: Attribute AOrangeExpr::_if_true_flow_ctx */
+/* 11: Attribute AOrangeExpr::_if_false_flow_ctx */
+/* 12: Attribute AOrangeExpr::_n_expr */
+/* 13: Attribute AOrangeExpr::_n_expr2 */
+/* 14: Attribute AOrangeExpr::_n_obra */
+/* 15: Attribute AOrangeExpr::_n_cbra */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AOrangeExpr[] = "init var of AOrangeExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___AOrangeExpr(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__parser___parser_nodes___TNumber;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AOrangeExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TNumber(void)
+val_t NEW_parser___parser_nodes___AOrangeExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TNumber;
+  obj = alloc(sizeof(val_t) * 16);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AOrangeExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TNumber(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AOrangeExpr[] = "check new AOrangeExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TNumber;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AOrangeExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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___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_parser___parser_nodes___AOrangeExpr____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___parser_nodes___AOrangeExpr____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;
 }
-val_t NEW_TNumber_parser___lexer___TNumber___init_tk(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_AOrangeExpr_parser___parser_prod___ARangeExpr___empty_init[] = "new AOrangeExpr parser_prod::ARangeExpr::empty_init";
+val_t NEW_AOrangeExpr_parser___parser_prod___ARangeExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 1090;
-  fra.me.meth = LOCATE_NEW_TNumber_parser___lexer___TNumber___init_tk;
+  fra.me.line = 6738;
+  fra.me.meth = LOCATE_NEW_AOrangeExpr_parser___parser_prod___ARangeExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:6738 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AOrangeExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AOrangeExpr(fra.me.REG[0]);
+  parser___parser_prod___ARangeExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AOrangeExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AOrangeExpr_parser___parser_prod___AOrangeExpr___empty_init[] = "new AOrangeExpr parser_prod::AOrangeExpr::empty_init";
+val_t NEW_AOrangeExpr_parser___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 = 6892;
+  fra.me.meth = LOCATE_NEW_AOrangeExpr_parser___parser_prod___AOrangeExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:6892 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AOrangeExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AOrangeExpr(fra.me.REG[0]);
+  parser___parser_prod___AOrangeExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AOrangeExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AOrangeExpr_parser___parser_prod___AOrangeExpr___init_aorangeexpr[] = "new AOrangeExpr parser_prod::AOrangeExpr::init_aorangeexpr";
+val_t NEW_AOrangeExpr_parser___parser_prod___AOrangeExpr___init_aorangeexpr(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 = 6894;
+  fra.me.meth = LOCATE_NEW_AOrangeExpr_parser___parser_prod___AOrangeExpr___init_aorangeexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
   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;
-  /* ./parser//lexer.nit:1090 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___TNumber();
-  INIT_ATTRIBUTES__parser___parser_nodes___TNumber(fra.me.REG[2]);
-  parser___lexer___TNumber___init_tk(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___TNumber(fra.me.REG[2]);
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  /* parser/parser_prod.nit:6894 */
+  fra.me.REG[5] = NEW_parser___parser_nodes___AOrangeExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AOrangeExpr(fra.me.REG[5]);
+  parser___parser_prod___AOrangeExpr___init_aorangeexpr(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_parser___parser_nodes___AOrangeExpr(fra.me.REG[5]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[5];
 }
-val_t NEW_TNumber_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AOrangeExpr_parser___parser_nodes___ANode___init[] = "new AOrangeExpr parser_nodes::ANode::init";
+val_t NEW_AOrangeExpr_parser___parser_nodes___ANode___init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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_TNumber_parser___parser_nodes___ANode___init;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_AOrangeExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AOrangeExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AOrangeExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AOrangeExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AOrangeExpr_parser___parser_prod___ARangeExpr___init_arangeexpr[] = "new AOrangeExpr parser_prod::ARangeExpr::init_arangeexpr";
+val_t NEW_AOrangeExpr_parser___parser_prod___ARangeExpr___init_arangeexpr(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 = 6740;
+  fra.me.meth = LOCATE_NEW_AOrangeExpr_parser___parser_prod___ARangeExpr___init_arangeexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   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] = NEW_parser___parser_nodes___TNumber();
-  INIT_ATTRIBUTES__parser___parser_nodes___TNumber(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TNumber(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* parser/parser_prod.nit:6740 */
+  fra.me.REG[3] = NEW_parser___parser_nodes___AOrangeExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AOrangeExpr(fra.me.REG[3]);
+  parser___parser_prod___ARangeExpr___init_arangeexpr(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_parser___parser_nodes___AOrangeExpr(fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[3];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TFloat[73] = {
-  {(bigint) 2707 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TFloat" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TFloat < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TFloat < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TFloat < Token: superclass typecheck marker */},
-  {(bigint) 2707 /* 6: TFloat < TFloat: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___parser_nodes___AArrayExpr[94] = {
+  {(bigint) 4583 /* 0: Identity */},
+  {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AArrayExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AArrayExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AArrayExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AArrayExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3811 /* 7: AArrayExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 4583 /* 8: AArrayExpr < AArrayExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -39736,7 +81399,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TFloat[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TFloat < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: AArrayExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -39752,7 +81415,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TFloat[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -39765,130 +81430,199 @@ const classtable_elt_t VFT_parser___parser_nodes___TFloat[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TFloat < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AArrayExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AArrayExpr___visit_all},
+  {(bigint) 2 /* 63: AArrayExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TFloat___parser_index},
-  {(bigint) 0 /* 70: TFloat < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TFloat___init_tk},
-  {(bigint) 3 /* 72: TFloat < TFloat: superclass init_table position */},
+  {(bigint) syntax___typing___AArrayExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: AArrayExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 0 /* 81: AArrayExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___AArrayExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {(bigint) syntax___typing___AArrayExpr___do_typing},
+  {(bigint) parser___parser_prod___AArrayExpr___empty_init},
+  {(bigint) parser___parser_prod___AArrayExpr___init_aarrayexpr},
+  {(bigint) 4 /* 92: AArrayExpr < AArrayExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AArrayExpr___n_exprs},
 };
 /* 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__parser___parser_nodes___TFloat(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AArrayExpr::_parent */
+/* 3: Attribute AArrayExpr::_location */
+/* 4: Attribute AArrayExpr::_first_location */
+/* 5: Attribute AArrayExpr::_last_location */
+/* 6: Attribute AArrayExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute AArrayExpr::_is_typed */
+/* 9: Attribute AArrayExpr::_stype */
+/* 10: Attribute AArrayExpr::_if_true_flow_ctx */
+/* 11: Attribute AArrayExpr::_if_false_flow_ctx */
+/* 12: Attribute AArrayExpr::_n_exprs */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AArrayExpr[] = "init var of AArrayExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___TFloat;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AArrayExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TFloat(void)
+val_t NEW_parser___parser_nodes___AArrayExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TFloat;
+  obj = alloc(sizeof(val_t) * 13);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AArrayExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TFloat(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AArrayExpr[] = "check new AArrayExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TFloat;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AArrayExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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;
 }
-val_t NEW_TFloat_parser___lexer___TFloat___init_tk(val_t p0, val_t p1){
+static const char LOCATE_NEW_AArrayExpr_parser___parser_prod___AArrayExpr___empty_init[] = "new AArrayExpr parser_prod::AArrayExpr::empty_init";
+val_t NEW_AArrayExpr_parser___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 = 6983;
+  fra.me.meth = LOCATE_NEW_AArrayExpr_parser___parser_prod___AArrayExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:6983 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AArrayExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AArrayExpr(fra.me.REG[0]);
+  parser___parser_prod___AArrayExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AArrayExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AArrayExpr_parser___parser_prod___AArrayExpr___init_aarrayexpr[] = "new AArrayExpr parser_prod::AArrayExpr::init_aarrayexpr";
+val_t NEW_AArrayExpr_parser___parser_prod___AArrayExpr___init_aarrayexpr(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};
+  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 = 1103;
-  fra.me.meth = LOCATE_NEW_TFloat_parser___lexer___TFloat___init_tk;
+  fra.me.line = 6985;
+  fra.me.meth = LOCATE_NEW_AArrayExpr_parser___parser_prod___AArrayExpr___init_aarrayexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TFloat();
-  INIT_ATTRIBUTES__parser___parser_nodes___TFloat(fra.me.REG[2]);
-  parser___lexer___TFloat___init_tk(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___TFloat(fra.me.REG[2]);
+  /* parser/parser_prod.nit:6985 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___AArrayExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AArrayExpr(fra.me.REG[2]);
+  parser___parser_prod___AArrayExpr___init_aarrayexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___AArrayExpr(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-val_t NEW_TFloat_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AArrayExpr_parser___parser_nodes___ANode___init[] = "new AArrayExpr parser_nodes::ANode::init";
+val_t NEW_AArrayExpr_parser___parser_nodes___ANode___init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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_TFloat_parser___parser_nodes___ANode___init;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_AArrayExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___TFloat();
-  INIT_ATTRIBUTES__parser___parser_nodes___TFloat(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TFloat(fra.me.REG[1]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AArrayExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AArrayExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AArrayExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TChar[73] = {
-  {(bigint) 2755 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TChar" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TChar < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TChar < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TChar < Token: superclass typecheck marker */},
-  {(bigint) 2755 /* 6: TChar < TChar: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___parser_nodes___ASelfExpr[94] = {
+  {(bigint) 4323 /* 0: Identity */},
+  {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ASelfExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ASelfExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: ASelfExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: ASelfExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3811 /* 7: ASelfExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 4323 /* 8: ASelfExpr < ASelfExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -39899,7 +81633,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TChar[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TChar < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: ASelfExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -39915,7 +81649,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TChar[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -39928,131 +81664,196 @@ const classtable_elt_t VFT_parser___parser_nodes___TChar[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TChar < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___ASelfExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___ASelfExpr___visit_all},
+  {(bigint) 2 /* 63: ASelfExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TChar___parser_index},
-  {(bigint) 0 /* 70: TChar < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TChar___init_tk},
-  {(bigint) 3 /* 72: TChar < TChar: superclass init_table position */},
+  {(bigint) syntax___typing___ASelfExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: ASelfExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 0 /* 81: ASelfExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___ASelfExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___ASelfExpr___is_self},
+  {(bigint) syntax___typing___ASelfExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {(bigint) syntax___typing___ASelfExpr___variable},
+  {(bigint) parser___parser_prod___ASelfExpr___empty_init},
+  {(bigint) parser___parser_prod___ASelfExpr___init_aselfexpr},
+  {(bigint) 4 /* 92: ASelfExpr < ASelfExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ASelfExpr___n_kwself},
 };
 /* 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__parser___parser_nodes___TChar(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute ASelfExpr::_parent */
+/* 3: Attribute ASelfExpr::_location */
+/* 4: Attribute ASelfExpr::_first_location */
+/* 5: Attribute ASelfExpr::_last_location */
+/* 6: Attribute ASelfExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute ASelfExpr::_is_typed */
+/* 9: Attribute ASelfExpr::_stype */
+/* 10: Attribute ASelfExpr::_if_true_flow_ctx */
+/* 11: Attribute ASelfExpr::_if_false_flow_ctx */
+/* 12: Attribute ASelfExpr::_variable */
+/* 13: Attribute ASelfExpr::_n_kwself */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ASelfExpr[] = "init var of ASelfExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___ASelfExpr(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__parser___parser_nodes___TChar;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ASelfExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TChar(void)
+val_t NEW_parser___parser_nodes___ASelfExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TChar;
+  obj = alloc(sizeof(val_t) * 14);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ASelfExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TChar(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___ASelfExpr[] = "check new ASelfExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TChar;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___ASelfExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TChar_parser___lexer___TChar___init_tk(val_t p0, val_t p1){
+static const char LOCATE_NEW_ASelfExpr_parser___parser_prod___ASelfExpr___empty_init[] = "new ASelfExpr parser_prod::ASelfExpr::empty_init";
+val_t NEW_ASelfExpr_parser___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 = 7032;
+  fra.me.meth = LOCATE_NEW_ASelfExpr_parser___parser_prod___ASelfExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:7032 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ASelfExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ASelfExpr(fra.me.REG[0]);
+  parser___parser_prod___ASelfExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ASelfExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_ASelfExpr_parser___parser_prod___ASelfExpr___init_aselfexpr[] = "new ASelfExpr parser_prod::ASelfExpr::init_aselfexpr";
+val_t NEW_ASelfExpr_parser___parser_prod___ASelfExpr___init_aselfexpr(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};
+  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 = 1116;
-  fra.me.meth = LOCATE_NEW_TChar_parser___lexer___TChar___init_tk;
+  fra.me.line = 7034;
+  fra.me.meth = LOCATE_NEW_ASelfExpr_parser___parser_prod___ASelfExpr___init_aselfexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TChar();
-  INIT_ATTRIBUTES__parser___parser_nodes___TChar(fra.me.REG[2]);
-  parser___lexer___TChar___init_tk(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___TChar(fra.me.REG[2]);
+  /* parser/parser_prod.nit:7034 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___ASelfExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ASelfExpr(fra.me.REG[2]);
+  parser___parser_prod___ASelfExpr___init_aselfexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___ASelfExpr(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-val_t NEW_TChar_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ASelfExpr_parser___parser_nodes___ANode___init[] = "new ASelfExpr parser_nodes::ANode::init";
+val_t NEW_ASelfExpr_parser___parser_nodes___ANode___init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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_TChar_parser___parser_nodes___ANode___init;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_ASelfExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___TChar();
-  INIT_ATTRIBUTES__parser___parser_nodes___TChar(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TChar(fra.me.REG[1]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ASelfExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ASelfExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ASelfExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TString[73] = {
-  {(bigint) 2419 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TString" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TString < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TString < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TString < Token: superclass typecheck marker */},
-  {(bigint) 2419 /* 6: TString < TString: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_parser___parser_nodes___AImplicitSelfExpr[97] = {
+  {(bigint) 4731 /* 0: Identity */},
+  {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AImplicitSelfExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AImplicitSelfExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AImplicitSelfExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AImplicitSelfExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3811 /* 7: AImplicitSelfExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 4323 /* 8: AImplicitSelfExpr < ASelfExpr: superclass typecheck marker */},
+  {(bigint) 4731 /* 9: AImplicitSelfExpr < AImplicitSelfExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -40062,7 +81863,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TString[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TString < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: AImplicitSelfExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -40078,7 +81879,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TString[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -40091,131 +81894,241 @@ const classtable_elt_t VFT_parser___parser_nodes___TString[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TString < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AImplicitSelfExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AImplicitSelfExpr___visit_all},
+  {(bigint) 2 /* 63: AImplicitSelfExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TString___parser_index},
-  {(bigint) 0 /* 70: TString < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TString___init_tk},
-  {(bigint) 3 /* 72: TString < TString: superclass init_table position */},
+  {(bigint) syntax___typing___ASelfExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: AImplicitSelfExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 0 /* 81: AImplicitSelfExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___ASelfExpr___generate_icode},
+  {(bigint) syntax___typing___AImplicitSelfExpr___is_implicit_self},
+  {(bigint) syntax___typing___ASelfExpr___is_self},
+  {(bigint) syntax___typing___ASelfExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {(bigint) syntax___typing___ASelfExpr___variable},
+  {(bigint) parser___parser_prod___ASelfExpr___empty_init},
+  {(bigint) parser___parser_prod___ASelfExpr___init_aselfexpr},
+  {(bigint) 4 /* 92: AImplicitSelfExpr < ASelfExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ASelfExpr___n_kwself},
+  {(bigint) parser___parser_prod___AImplicitSelfExpr___empty_init},
+  {(bigint) parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr},
+  {(bigint) 5 /* 96: AImplicitSelfExpr < AImplicitSelfExpr: 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__parser___parser_nodes___TString(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AImplicitSelfExpr::_parent */
+/* 3: Attribute AImplicitSelfExpr::_location */
+/* 4: Attribute AImplicitSelfExpr::_first_location */
+/* 5: Attribute AImplicitSelfExpr::_last_location */
+/* 6: Attribute AImplicitSelfExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute AImplicitSelfExpr::_is_typed */
+/* 9: Attribute AImplicitSelfExpr::_stype */
+/* 10: Attribute AImplicitSelfExpr::_if_true_flow_ctx */
+/* 11: Attribute AImplicitSelfExpr::_if_false_flow_ctx */
+/* 12: Attribute AImplicitSelfExpr::_variable */
+/* 13: Attribute AImplicitSelfExpr::_n_kwself */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AImplicitSelfExpr[] = "init var of AImplicitSelfExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___AImplicitSelfExpr(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__parser___parser_nodes___TString;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AImplicitSelfExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TString(void)
+val_t NEW_parser___parser_nodes___AImplicitSelfExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TString;
+  obj = alloc(sizeof(val_t) * 14);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AImplicitSelfExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TString(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AImplicitSelfExpr[] = "check new AImplicitSelfExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TString;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AImplicitSelfExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TString_parser___lexer___TString___init_tk(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_AImplicitSelfExpr_parser___parser_prod___ASelfExpr___empty_init[] = "new AImplicitSelfExpr parser_prod::ASelfExpr::empty_init";
+val_t NEW_AImplicitSelfExpr_parser___parser_prod___ASelfExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 1129;
-  fra.me.meth = LOCATE_NEW_TString_parser___lexer___TString___init_tk;
+  fra.me.line = 7032;
+  fra.me.meth = LOCATE_NEW_AImplicitSelfExpr_parser___parser_prod___ASelfExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TString();
-  INIT_ATTRIBUTES__parser___parser_nodes___TString(fra.me.REG[2]);
-  parser___lexer___TString___init_tk(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___TString(fra.me.REG[2]);
+  /* parser/parser_prod.nit:7032 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AImplicitSelfExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AImplicitSelfExpr(fra.me.REG[0]);
+  parser___parser_prod___ASelfExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AImplicitSelfExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[0];
 }
-val_t NEW_TString_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___empty_init[] = "new AImplicitSelfExpr parser_prod::AImplicitSelfExpr::empty_init";
+val_t NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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_TString_parser___parser_nodes___ANode___init;
+  fra.me.line = 7081;
+  fra.me.meth = LOCATE_NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:7081 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AImplicitSelfExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AImplicitSelfExpr(fra.me.REG[0]);
+  parser___parser_prod___AImplicitSelfExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AImplicitSelfExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr[] = "new AImplicitSelfExpr parser_prod::AImplicitSelfExpr::init_aimplicitselfexpr";
+val_t NEW_AImplicitSelfExpr_parser___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 = 7083;
+  fra.me.meth = LOCATE_NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:7083 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AImplicitSelfExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AImplicitSelfExpr(fra.me.REG[0]);
+  parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AImplicitSelfExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AImplicitSelfExpr_parser___parser_nodes___ANode___init[] = "new AImplicitSelfExpr parser_nodes::ANode::init";
+val_t NEW_AImplicitSelfExpr_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AImplicitSelfExpr_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AImplicitSelfExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AImplicitSelfExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AImplicitSelfExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AImplicitSelfExpr_parser___parser_prod___ASelfExpr___init_aselfexpr[] = "new AImplicitSelfExpr parser_prod::ASelfExpr::init_aselfexpr";
+val_t NEW_AImplicitSelfExpr_parser___parser_prod___ASelfExpr___init_aselfexpr(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 = 7034;
+  fra.me.meth = LOCATE_NEW_AImplicitSelfExpr_parser___parser_prod___ASelfExpr___init_aselfexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   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] = NEW_parser___parser_nodes___TString();
-  INIT_ATTRIBUTES__parser___parser_nodes___TString(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TString(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:7034 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___AImplicitSelfExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AImplicitSelfExpr(fra.me.REG[2]);
+  parser___parser_prod___ASelfExpr___init_aselfexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___AImplicitSelfExpr(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[2];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TStartString[73] = {
-  {(bigint) 2423 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TStartString" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TStartString < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TStartString < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TStartString < Token: superclass typecheck marker */},
-  {(bigint) 2423 /* 6: TStartString < TStartString: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_parser___parser_nodes___ATrueExpr[94] = {
+  {(bigint) 4655 /* 0: Identity */},
+  {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ATrueExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ATrueExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: ATrueExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: ATrueExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3811 /* 7: ATrueExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 4547 /* 8: ATrueExpr < ABoolExpr: superclass typecheck marker */},
+  {(bigint) 4655 /* 9: ATrueExpr < ATrueExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -40225,7 +82138,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TStartString[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TStartString < Object: superclass init_table position */},
+  {(bigint) 4 /* 19: ATrueExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -40241,7 +82154,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TStartString[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -40254,131 +82169,200 @@ const classtable_elt_t VFT_parser___parser_nodes___TStartString[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TStartString < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___ATrueExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___ATrueExpr___visit_all},
+  {(bigint) 3 /* 63: ATrueExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TStartString___parser_index},
-  {(bigint) 0 /* 70: TStartString < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TStartString___init_tk},
-  {(bigint) 3 /* 72: TStartString < TStartString: superclass init_table position */},
+  {(bigint) syntax___typing___ABoolExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 2 /* 72: ATrueExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___mmbuilder___ABoolExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 1 /* 81: ATrueExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___ATrueExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {(bigint) 0 /* 89: ATrueExpr < ABoolExpr: superclass init_table position */},
+  {(bigint) parser___parser_prod___ATrueExpr___empty_init},
+  {(bigint) parser___parser_prod___ATrueExpr___init_atrueexpr},
+  {(bigint) 5 /* 92: ATrueExpr < ATrueExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ATrueExpr___n_kwtrue},
 };
 /* 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__parser___parser_nodes___TStartString(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute ATrueExpr::_parent */
+/* 3: Attribute ATrueExpr::_location */
+/* 4: Attribute ATrueExpr::_first_location */
+/* 5: Attribute ATrueExpr::_last_location */
+/* 6: Attribute ATrueExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute ATrueExpr::_is_typed */
+/* 9: Attribute ATrueExpr::_stype */
+/* 10: Attribute ATrueExpr::_if_true_flow_ctx */
+/* 11: Attribute ATrueExpr::_if_false_flow_ctx */
+/* 12: Attribute ATrueExpr::_n_kwtrue */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ATrueExpr[] = "init var of ATrueExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___ATrueExpr(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__parser___parser_nodes___TStartString;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ATrueExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TStartString(void)
+val_t NEW_parser___parser_nodes___ATrueExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TStartString;
+  obj = alloc(sizeof(val_t) * 13);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ATrueExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TStartString(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___ATrueExpr[] = "check new ATrueExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TStartString;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___ATrueExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TStartString_parser___lexer___TStartString___init_tk(val_t p0, val_t p1){
+static const char LOCATE_NEW_ATrueExpr_parser___parser_prod___ATrueExpr___empty_init[] = "new ATrueExpr parser_prod::ATrueExpr::empty_init";
+val_t NEW_ATrueExpr_parser___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 = 7097;
+  fra.me.meth = LOCATE_NEW_ATrueExpr_parser___parser_prod___ATrueExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:7097 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ATrueExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ATrueExpr(fra.me.REG[0]);
+  parser___parser_prod___ATrueExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ATrueExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_ATrueExpr_parser___parser_prod___ATrueExpr___init_atrueexpr[] = "new ATrueExpr parser_prod::ATrueExpr::init_atrueexpr";
+val_t NEW_ATrueExpr_parser___parser_prod___ATrueExpr___init_atrueexpr(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};
+  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 = 1142;
-  fra.me.meth = LOCATE_NEW_TStartString_parser___lexer___TStartString___init_tk;
+  fra.me.line = 7099;
+  fra.me.meth = LOCATE_NEW_ATrueExpr_parser___parser_prod___ATrueExpr___init_atrueexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TStartString();
-  INIT_ATTRIBUTES__parser___parser_nodes___TStartString(fra.me.REG[2]);
-  parser___lexer___TStartString___init_tk(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___TStartString(fra.me.REG[2]);
+  /* parser/parser_prod.nit:7099 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___ATrueExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ATrueExpr(fra.me.REG[2]);
+  parser___parser_prod___ATrueExpr___init_atrueexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___ATrueExpr(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-val_t NEW_TStartString_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ATrueExpr_parser___parser_nodes___ANode___init[] = "new ATrueExpr parser_nodes::ANode::init";
+val_t NEW_ATrueExpr_parser___parser_nodes___ANode___init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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_TStartString_parser___parser_nodes___ANode___init;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_ATrueExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___TStartString();
-  INIT_ATTRIBUTES__parser___parser_nodes___TStartString(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TStartString(fra.me.REG[1]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ATrueExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ATrueExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ATrueExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TMidString[73] = {
-  {(bigint) 2479 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TMidString" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TMidString < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TMidString < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TMidString < Token: superclass typecheck marker */},
-  {(bigint) 2479 /* 6: TMidString < TMidString: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_parser___parser_nodes___AFalseExpr[94] = {
+  {(bigint) 4743 /* 0: Identity */},
+  {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AFalseExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AFalseExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AFalseExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AFalseExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3811 /* 7: AFalseExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 4547 /* 8: AFalseExpr < ABoolExpr: superclass typecheck marker */},
+  {(bigint) 4743 /* 9: AFalseExpr < AFalseExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -40388,7 +82372,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TMidString[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TMidString < Object: superclass init_table position */},
+  {(bigint) 4 /* 19: AFalseExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -40404,7 +82388,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TMidString[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -40417,130 +82403,199 @@ const classtable_elt_t VFT_parser___parser_nodes___TMidString[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TMidString < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AFalseExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AFalseExpr___visit_all},
+  {(bigint) 3 /* 63: AFalseExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TMidString___parser_index},
-  {(bigint) 0 /* 70: TMidString < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TMidString___init_tk},
-  {(bigint) 3 /* 72: TMidString < TMidString: superclass init_table position */},
+  {(bigint) syntax___typing___ABoolExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 2 /* 72: AFalseExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___mmbuilder___ABoolExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 1 /* 81: AFalseExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___AFalseExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {(bigint) 0 /* 89: AFalseExpr < ABoolExpr: superclass init_table position */},
+  {(bigint) parser___parser_prod___AFalseExpr___empty_init},
+  {(bigint) parser___parser_prod___AFalseExpr___init_afalseexpr},
+  {(bigint) 5 /* 92: AFalseExpr < AFalseExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AFalseExpr___n_kwfalse},
 };
 /* 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__parser___parser_nodes___TMidString(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AFalseExpr::_parent */
+/* 3: Attribute AFalseExpr::_location */
+/* 4: Attribute AFalseExpr::_first_location */
+/* 5: Attribute AFalseExpr::_last_location */
+/* 6: Attribute AFalseExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute AFalseExpr::_is_typed */
+/* 9: Attribute AFalseExpr::_stype */
+/* 10: Attribute AFalseExpr::_if_true_flow_ctx */
+/* 11: Attribute AFalseExpr::_if_false_flow_ctx */
+/* 12: Attribute AFalseExpr::_n_kwfalse */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AFalseExpr[] = "init var of AFalseExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___AFalseExpr(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__parser___parser_nodes___TMidString;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AFalseExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TMidString(void)
+val_t NEW_parser___parser_nodes___AFalseExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TMidString;
+  obj = alloc(sizeof(val_t) * 13);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AFalseExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TMidString(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AFalseExpr[] = "check new AFalseExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TMidString;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AFalseExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
   }
+  REGB0 = TAG_Bool(ATTR_parser___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);
+  }
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_AFalseExpr_parser___parser_prod___AFalseExpr___empty_init[] = "new AFalseExpr parser_prod::AFalseExpr::empty_init";
+val_t NEW_AFalseExpr_parser___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 = 7146;
+  fra.me.meth = LOCATE_NEW_AFalseExpr_parser___parser_prod___AFalseExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:7146 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AFalseExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AFalseExpr(fra.me.REG[0]);
+  parser___parser_prod___AFalseExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AFalseExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-val_t NEW_TMidString_parser___lexer___TMidString___init_tk(val_t p0, val_t p1){
+static const char LOCATE_NEW_AFalseExpr_parser___parser_prod___AFalseExpr___init_afalseexpr[] = "new AFalseExpr parser_prod::AFalseExpr::init_afalseexpr";
+val_t NEW_AFalseExpr_parser___parser_prod___AFalseExpr___init_afalseexpr(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};
+  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 = 1155;
-  fra.me.meth = LOCATE_NEW_TMidString_parser___lexer___TMidString___init_tk;
+  fra.me.line = 7148;
+  fra.me.meth = LOCATE_NEW_AFalseExpr_parser___parser_prod___AFalseExpr___init_afalseexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TMidString();
-  INIT_ATTRIBUTES__parser___parser_nodes___TMidString(fra.me.REG[2]);
-  parser___lexer___TMidString___init_tk(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___TMidString(fra.me.REG[2]);
+  /* parser/parser_prod.nit:7148 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___AFalseExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AFalseExpr(fra.me.REG[2]);
+  parser___parser_prod___AFalseExpr___init_afalseexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___AFalseExpr(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-val_t NEW_TMidString_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AFalseExpr_parser___parser_nodes___ANode___init[] = "new AFalseExpr parser_nodes::ANode::init";
+val_t NEW_AFalseExpr_parser___parser_nodes___ANode___init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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_TMidString_parser___parser_nodes___ANode___init;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_AFalseExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___TMidString();
-  INIT_ATTRIBUTES__parser___parser_nodes___TMidString(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TMidString(fra.me.REG[1]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AFalseExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AFalseExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AFalseExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TEndString[73] = {
-  {(bigint) 2719 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TEndString" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TEndString < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: TEndString < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TEndString < Token: superclass typecheck marker */},
-  {(bigint) 2719 /* 6: TEndString < TEndString: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___parser_nodes___ANullExpr[93] = {
+  {(bigint) 4379 /* 0: Identity */},
+  {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ANullExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ANullExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: ANullExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: ANullExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3811 /* 7: ANullExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 4379 /* 8: ANullExpr < ANullExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -40551,7 +82606,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TEndString[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TEndString < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: ANullExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -40567,7 +82622,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TEndString[73] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -40580,130 +82637,198 @@ const classtable_elt_t VFT_parser___parser_nodes___TEndString[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: TEndString < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___ANullExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___ANullExpr___visit_all},
+  {(bigint) 2 /* 63: ANullExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___TEndString___parser_index},
-  {(bigint) 0 /* 70: TEndString < Token: superclass init_table position */},
-  {(bigint) parser___lexer___TEndString___init_tk},
-  {(bigint) 3 /* 72: TEndString < TEndString: superclass init_table position */},
+  {(bigint) syntax___typing___ANullExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: ANullExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 0 /* 81: ANullExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___ANullExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {(bigint) parser___parser_prod___ANullExpr___empty_init},
+  {(bigint) parser___parser_prod___ANullExpr___init_anullexpr},
+  {(bigint) 4 /* 91: ANullExpr < ANullExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANullExpr___n_kwnull},
 };
 /* 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__parser___parser_nodes___TEndString(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute ANullExpr::_parent */
+/* 3: Attribute ANullExpr::_location */
+/* 4: Attribute ANullExpr::_first_location */
+/* 5: Attribute ANullExpr::_last_location */
+/* 6: Attribute ANullExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute ANullExpr::_is_typed */
+/* 9: Attribute ANullExpr::_stype */
+/* 10: Attribute ANullExpr::_if_true_flow_ctx */
+/* 11: Attribute ANullExpr::_if_false_flow_ctx */
+/* 12: Attribute ANullExpr::_n_kwnull */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ANullExpr[] = "init var of ANullExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___ANullExpr(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__parser___parser_nodes___TEndString;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ANullExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___TEndString(void)
+val_t NEW_parser___parser_nodes___ANullExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___TEndString;
+  obj = alloc(sizeof(val_t) * 13);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ANullExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___TEndString(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___ANullExpr[] = "check new ANullExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___TEndString;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___ANullExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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;
 }
-val_t NEW_TEndString_parser___lexer___TEndString___init_tk(val_t p0, val_t p1){
+static const char LOCATE_NEW_ANullExpr_parser___parser_prod___ANullExpr___empty_init[] = "new ANullExpr parser_prod::ANullExpr::empty_init";
+val_t NEW_ANullExpr_parser___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 = 7195;
+  fra.me.meth = LOCATE_NEW_ANullExpr_parser___parser_prod___ANullExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:7195 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ANullExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ANullExpr(fra.me.REG[0]);
+  parser___parser_prod___ANullExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ANullExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_ANullExpr_parser___parser_prod___ANullExpr___init_anullexpr[] = "new ANullExpr parser_prod::ANullExpr::init_anullexpr";
+val_t NEW_ANullExpr_parser___parser_prod___ANullExpr___init_anullexpr(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};
+  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 = 1168;
-  fra.me.meth = LOCATE_NEW_TEndString_parser___lexer___TEndString___init_tk;
+  fra.me.line = 7197;
+  fra.me.meth = LOCATE_NEW_ANullExpr_parser___parser_prod___ANullExpr___init_anullexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___TEndString();
-  INIT_ATTRIBUTES__parser___parser_nodes___TEndString(fra.me.REG[2]);
-  parser___lexer___TEndString___init_tk(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___TEndString(fra.me.REG[2]);
+  /* parser/parser_prod.nit:7197 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___ANullExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ANullExpr(fra.me.REG[2]);
+  parser___parser_prod___ANullExpr___init_anullexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___ANullExpr(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-val_t NEW_TEndString_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ANullExpr_parser___parser_nodes___ANode___init[] = "new ANullExpr parser_nodes::ANode::init";
+val_t NEW_ANullExpr_parser___parser_nodes___ANode___init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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_TEndString_parser___parser_nodes___ANode___init;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_ANullExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___TEndString();
-  INIT_ATTRIBUTES__parser___parser_nodes___TEndString(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___TEndString(fra.me.REG[1]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ANullExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ANullExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ANullExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___EOF[74] = {
-  {(bigint) 2987 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "EOF" /* 2: Class Name */},
-  {(bigint) 3 /* 3: EOF < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: EOF < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: EOF < Token: superclass typecheck marker */},
-  {(bigint) 2987 /* 6: EOF < EOF: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___parser_nodes___AIntExpr[93] = {
+  {(bigint) 4451 /* 0: Identity */},
+  {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AIntExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AIntExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AIntExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AIntExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3811 /* 7: AIntExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 4451 /* 8: AIntExpr < AIntExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -40714,7 +82839,7 @@ const classtable_elt_t VFT_parser___parser_nodes___EOF[74] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: EOF < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: AIntExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -40730,7 +82855,9 @@ const classtable_elt_t VFT_parser___parser_nodes___EOF[74] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -40743,128 +82870,198 @@ const classtable_elt_t VFT_parser___parser_nodes___EOF[74] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: EOF < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AIntExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AIntExpr___visit_all},
+  {(bigint) 2 /* 63: AIntExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___EOF___parser_index},
-  {(bigint) 0 /* 70: EOF < Token: superclass init_table position */},
-  {(bigint) parser___lexer___EOF___init},
-  {(bigint) 3 /* 72: EOF < EOF: superclass init_table position */},
-  {(bigint) parser___parser_nodes___EOF___noinit},
+  {(bigint) syntax___typing___AIntExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: AIntExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___mmbuilder___AIntExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 0 /* 81: AIntExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___AIntExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {(bigint) parser___parser_prod___AIntExpr___empty_init},
+  {(bigint) parser___parser_prod___AIntExpr___init_aintexpr},
+  {(bigint) 4 /* 91: AIntExpr < AIntExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AIntExpr___n_number},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute EOF::_parent */
-/* 3: Attribute EOF::_location */
-/* 4: Attribute EOF::_symbol_cache */
-/* 5: Attribute EOF::_text */
-void INIT_ATTRIBUTES__parser___parser_nodes___EOF(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AIntExpr::_parent */
+/* 3: Attribute AIntExpr::_location */
+/* 4: Attribute AIntExpr::_first_location */
+/* 5: Attribute AIntExpr::_last_location */
+/* 6: Attribute AIntExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute AIntExpr::_is_typed */
+/* 9: Attribute AIntExpr::_stype */
+/* 10: Attribute AIntExpr::_if_true_flow_ctx */
+/* 11: Attribute AIntExpr::_if_false_flow_ctx */
+/* 12: Attribute AIntExpr::_n_number */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AIntExpr[] = "init var of AIntExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___AIntExpr(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__parser___parser_nodes___EOF;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AIntExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___EOF(void)
+val_t NEW_parser___parser_nodes___AIntExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___EOF;
+  obj = alloc(sizeof(val_t) * 13);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AIntExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___EOF(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AIntExpr[] = "check new AIntExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___EOF;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AIntExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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;
 }
-val_t NEW_EOF_parser___lexer___EOF___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AIntExpr_parser___parser_prod___AIntExpr___empty_init[] = "new AIntExpr parser_prod::AIntExpr::empty_init";
+val_t NEW_AIntExpr_parser___parser_prod___AIntExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 1182;
-  fra.me.meth = LOCATE_NEW_EOF_parser___lexer___EOF___init;
+  fra.me.line = 7244;
+  fra.me.meth = LOCATE_NEW_AIntExpr_parser___parser_prod___AIntExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:7244 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AIntExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AIntExpr(fra.me.REG[0]);
+  parser___parser_prod___AIntExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AIntExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AIntExpr_parser___parser_prod___AIntExpr___init_aintexpr[] = "new AIntExpr parser_prod::AIntExpr::init_aintexpr";
+val_t NEW_AIntExpr_parser___parser_prod___AIntExpr___init_aintexpr(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 = 7246;
+  fra.me.meth = LOCATE_NEW_AIntExpr_parser___parser_prod___AIntExpr___init_aintexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./parser//lexer.nit:1182 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___EOF();
-  INIT_ATTRIBUTES__parser___parser_nodes___EOF(fra.me.REG[1]);
-  parser___lexer___EOF___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___EOF(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:7246 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___AIntExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AIntExpr(fra.me.REG[2]);
+  parser___parser_prod___AIntExpr___init_aintexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___AIntExpr(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[2];
 }
-val_t NEW_EOF_parser___parser_nodes___EOF___noinit(void){
+static const char LOCATE_NEW_AIntExpr_parser___parser_nodes___ANode___init[] = "new AIntExpr parser_nodes::ANode::init";
+val_t NEW_AIntExpr_parser___parser_nodes___ANode___init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 313;
-  fra.me.meth = LOCATE_NEW_EOF_parser___parser_nodes___EOF___noinit;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_AIntExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_nodes.nit:313 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___EOF();
-  INIT_ATTRIBUTES__parser___parser_nodes___EOF(fra.me.REG[0]);
-  parser___parser_nodes___EOF___noinit(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___EOF(fra.me.REG[0]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AIntExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AIntExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AIntExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AError[78] = {
-  {(bigint) 3443 /* 0: Identity */},
-  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AError" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AError < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AError < ANode: superclass typecheck marker */},
-  {(bigint) 331 /* 5: AError < Token: superclass typecheck marker */},
-  {(bigint) 2987 /* 6: AError < EOF: superclass typecheck marker */},
-  {(bigint) 3443 /* 7: AError < AError: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___parser_nodes___AFloatExpr[93] = {
+  {(bigint) 4483 /* 0: Identity */},
+  {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AFloatExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AFloatExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AFloatExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AFloatExpr < Prod: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {(bigint) 3811 /* 7: AFloatExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 4483 /* 8: AFloatExpr < AFloatExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -40875,7 +83072,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AError[78] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AError < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: AFloatExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -40891,7 +83088,9 @@ const classtable_elt_t VFT_parser___parser_nodes___AError[78] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) parser___lexer___Token___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -40904,140 +83103,198 @@ const classtable_elt_t VFT_parser___parser_nodes___AError[78] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Token___replace_child},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 60: AError < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AFloatExpr___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AFloatExpr___visit_all},
+  {(bigint) 2 /* 63: AFloatExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) syntax___syntax_base___Token___to_symbol},
-  {(bigint) parser___lexer___Token___text},
-  {(bigint) parser___lexer___EOF___parser_index},
-  {(bigint) 0 /* 70: AError < Token: superclass init_table position */},
-  {(bigint) parser___lexer___EOF___init},
-  {(bigint) 3 /* 72: AError < EOF: superclass init_table position */},
-  {(bigint) parser___parser_nodes___EOF___noinit},
-  {(bigint) parser___lexer___AError___message},
-  {(bigint) parser___lexer___AError___init_error},
-  {(bigint) 4 /* 76: AError < AError: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AError___noinit},
+  {(bigint) syntax___typing___AFloatExpr___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: AFloatExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___mmbuilder___AFloatExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 0 /* 81: AFloatExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___AFloatExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {(bigint) parser___parser_prod___AFloatExpr___empty_init},
+  {(bigint) parser___parser_prod___AFloatExpr___init_afloatexpr},
+  {(bigint) 4 /* 91: AFloatExpr < AFloatExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AFloatExpr___n_float},
 };
 /* 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__parser___parser_nodes___AError(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AFloatExpr::_parent */
+/* 3: Attribute AFloatExpr::_location */
+/* 4: Attribute AFloatExpr::_first_location */
+/* 5: Attribute AFloatExpr::_last_location */
+/* 6: Attribute AFloatExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute AFloatExpr::_is_typed */
+/* 9: Attribute AFloatExpr::_stype */
+/* 10: Attribute AFloatExpr::_if_true_flow_ctx */
+/* 11: Attribute AFloatExpr::_if_false_flow_ctx */
+/* 12: Attribute AFloatExpr::_n_float */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AFloatExpr[] = "init var of AFloatExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___AFloatExpr(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__parser___parser_nodes___AError;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AFloatExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AError(void)
+val_t NEW_parser___parser_nodes___AFloatExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AError;
+  obj = alloc(sizeof(val_t) * 13);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AFloatExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AError(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AFloatExpr[] = "check new AFloatExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___AError;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AFloatExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___lexer___AError____message(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_message", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_parser___lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AFloatExpr____n_float(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_float", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AError_parser___lexer___AError___init_error(val_t p0, val_t p1){
+static const char LOCATE_NEW_AFloatExpr_parser___parser_prod___AFloatExpr___empty_init[] = "new AFloatExpr parser_prod::AFloatExpr::empty_init";
+val_t NEW_AFloatExpr_parser___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 = 7293;
+  fra.me.meth = LOCATE_NEW_AFloatExpr_parser___parser_prod___AFloatExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:7293 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AFloatExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AFloatExpr(fra.me.REG[0]);
+  parser___parser_prod___AFloatExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AFloatExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AFloatExpr_parser___parser_prod___AFloatExpr___init_afloatexpr[] = "new AFloatExpr parser_prod::AFloatExpr::init_afloatexpr";
+val_t NEW_AFloatExpr_parser___parser_prod___AFloatExpr___init_afloatexpr(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_parser___lexer___AError___init_error;
+  fra.me.line = 7295;
+  fra.me.meth = LOCATE_NEW_AFloatExpr_parser___parser_prod___AFloatExpr___init_afloatexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___AError();
-  INIT_ATTRIBUTES__parser___parser_nodes___AError(fra.me.REG[2]);
-  parser___lexer___AError___init_error(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___AError(fra.me.REG[2]);
+  /* parser/parser_prod.nit:7295 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___AFloatExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AFloatExpr(fra.me.REG[2]);
+  parser___parser_prod___AFloatExpr___init_afloatexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___AFloatExpr(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-val_t NEW_AError_parser___parser_nodes___AError___noinit(void){
+static const char LOCATE_NEW_AFloatExpr_parser___parser_nodes___ANode___init[] = "new AFloatExpr parser_nodes::ANode::init";
+val_t NEW_AFloatExpr_parser___parser_nodes___ANode___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 = 317;
-  fra.me.meth = LOCATE_NEW_AError_parser___parser_nodes___AError___noinit;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_AFloatExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_nodes.nit:317 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AError();
-  INIT_ATTRIBUTES__parser___parser_nodes___AError(fra.me.REG[0]);
-  parser___parser_nodes___AError___noinit(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AError(fra.me.REG[0]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AFloatExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AFloatExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AFloatExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AModule[79] = {
-  {(bigint) 3079 /* 0: Identity */},
-  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AModule" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AModule < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AModule < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___parser_nodes___ACharExpr[93] = {
+  {(bigint) 4523 /* 0: Identity */},
+  {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ACharExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ACharExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: ACharExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: ACharExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AModule < Prod: superclass typecheck marker */},
-  {(bigint) 3079 /* 7: AModule < AModule: superclass typecheck marker */},
+  {(bigint) 3811 /* 7: ACharExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 4523 /* 8: ACharExpr < ACharExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -41048,7 +83305,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AModule[79] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AModule < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: ACharExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -41064,6 +83321,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AModule[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -41077,178 +83336,199 @@ const classtable_elt_t VFT_parser___parser_nodes___AModule[79] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AModule___replace_child},
+  {(bigint) parser___parser_prod___ACharExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AModule___visit_all},
-  {(bigint) 1 /* 60: AModule < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___ACharExpr___visit_all},
+  {(bigint) 2 /* 63: ACharExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) syntax___typing___ACharExpr___after_typing},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AModule < Prod: superclass init_table position */},
+  {(bigint) 1 /* 72: ACharExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___AModule___import_super_modules},
-  {(bigint) parser___parser_prod___AModule___empty_init},
-  {(bigint) parser___parser_prod___AModule___init_amodule},
-  {(bigint) 3 /* 75: AModule < AModule: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AModule___n_moduledecl},
-  {(bigint) parser___parser_nodes___AModule___n_imports},
-  {(bigint) parser___parser_nodes___AModule___n_classdefs},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___mmbuilder___ACharExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 0 /* 81: ACharExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___ACharExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {(bigint) parser___parser_prod___ACharExpr___empty_init},
+  {(bigint) parser___parser_prod___ACharExpr___init_acharexpr},
+  {(bigint) 4 /* 91: ACharExpr < ACharExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ACharExpr___n_char},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AModule(val_t p0){
+/* 2: Attribute ACharExpr::_parent */
+/* 3: Attribute ACharExpr::_location */
+/* 4: Attribute ACharExpr::_first_location */
+/* 5: Attribute ACharExpr::_last_location */
+/* 6: Attribute ACharExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute ACharExpr::_is_typed */
+/* 9: Attribute ACharExpr::_stype */
+/* 10: Attribute ACharExpr::_if_true_flow_ctx */
+/* 11: Attribute ACharExpr::_if_false_flow_ctx */
+/* 12: Attribute ACharExpr::_n_char */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ACharExpr[] = "init var of ACharExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___ACharExpr(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__parser___parser_nodes___AModule;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ACharExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./parser//parser_nodes.nit:322 */
+  /* parser/parser_nodes.nit:56 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AModule____n_moduledecl(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:323 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___AModule____n_imports(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:324 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___AModule____n_classdefs(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AModule(void)
+val_t NEW_parser___parser_nodes___ACharExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 9);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AModule;
+  obj = alloc(sizeof(val_t) * 13);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ACharExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AModule(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___ACharExpr[] = "check new ACharExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___AModule;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___ACharExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AModule____n_imports(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_imports", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AModule____n_classdefs(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ACharExpr____n_char(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_classdefs", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_char", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AModule_parser___parser_prod___AModule___empty_init(void){
+static const char LOCATE_NEW_ACharExpr_parser___parser_prod___ACharExpr___empty_init[] = "new ACharExpr parser_prod::ACharExpr::empty_init";
+val_t NEW_ACharExpr_parser___parser_prod___ACharExpr___empty_init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 71;
-  fra.me.meth = LOCATE_NEW_AModule_parser___parser_prod___AModule___empty_init;
+  fra.me.line = 7342;
+  fra.me.meth = LOCATE_NEW_ACharExpr_parser___parser_prod___ACharExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:71 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AModule();
-  INIT_ATTRIBUTES__parser___parser_nodes___AModule(fra.me.REG[0]);
-  parser___parser_prod___AModule___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AModule(fra.me.REG[0]);
+  /* parser/parser_prod.nit:7342 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ACharExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ACharExpr(fra.me.REG[0]);
+  parser___parser_prod___ACharExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ACharExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AModule_parser___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;
+static const char LOCATE_NEW_ACharExpr_parser___parser_prod___ACharExpr___init_acharexpr[] = "new ACharExpr parser_prod::ACharExpr::init_acharexpr";
+val_t NEW_ACharExpr_parser___parser_prod___ACharExpr___init_acharexpr(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};
+  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 = 73;
-  fra.me.meth = LOCATE_NEW_AModule_parser___parser_prod___AModule___init_amodule;
+  fra.me.line = 7344;
+  fra.me.meth = LOCATE_NEW_ACharExpr_parser___parser_prod___ACharExpr___init_acharexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___AModule();
-  INIT_ATTRIBUTES__parser___parser_nodes___AModule(fra.me.REG[3]);
-  parser___parser_prod___AModule___init_amodule(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
-  CHECKNEW_parser___parser_nodes___AModule(fra.me.REG[3]);
+  /* parser/parser_prod.nit:7344 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___ACharExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ACharExpr(fra.me.REG[2]);
+  parser___parser_prod___ACharExpr___init_acharexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___ACharExpr(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[3];
+  return fra.me.REG[2];
 }
-val_t NEW_AModule_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ACharExpr_parser___parser_nodes___ANode___init[] = "new ACharExpr parser_nodes::ANode::init";
+val_t NEW_ACharExpr_parser___parser_nodes___ANode___init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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_AModule_parser___parser_nodes___ANode___init;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_ACharExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___AModule();
-  INIT_ATTRIBUTES__parser___parser_nodes___AModule(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AModule(fra.me.REG[1]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ACharExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ACharExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ACharExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AModuledecl[78] = {
-  {(bigint) 3071 /* 0: Identity */},
-  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AModuledecl" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AModuledecl < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AModuledecl < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AModuledecl < Prod: superclass typecheck marker */},
-  {(bigint) 3071 /* 7: AModuledecl < AModuledecl: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___parser_nodes___AStringExpr[96] = {
+  {(bigint) 4659 /* 0: Identity */},
+  {(bigint) 15 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AStringExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AStringExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AStringExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AStringExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3811 /* 7: AStringExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 4295 /* 8: AStringExpr < AStringFormExpr: superclass typecheck marker */},
+  {(bigint) 4659 /* 9: AStringExpr < AStringExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -41258,7 +83538,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AModuledecl[78] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AModuledecl < Object: superclass init_table position */},
+  {(bigint) 4 /* 19: AStringExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -41274,6 +83554,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AModuledecl[78] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -41287,171 +83569,204 @@ const classtable_elt_t VFT_parser___parser_nodes___AModuledecl[78] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AModuledecl___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AModuledecl___replace_child},
+  {(bigint) parser___parser_prod___AStringExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AModuledecl___visit_all},
-  {(bigint) 1 /* 60: AModuledecl < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AStringExpr___visit_all},
+  {(bigint) 3 /* 63: AStringExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) syntax___typing___AStringFormExpr___after_typing},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AModuledecl < Prod: superclass init_table position */},
+  {(bigint) 2 /* 72: AStringExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) parser___parser_prod___AModuledecl___empty_init},
-  {(bigint) parser___parser_prod___AModuledecl___init_amoduledecl},
-  {(bigint) 3 /* 74: AModuledecl < AModuledecl: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AModuledecl___n_doc},
-  {(bigint) parser___parser_nodes___AModuledecl___n_kwmodule},
-  {(bigint) parser___parser_nodes___AModuledecl___n_name},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___mmbuilder___AStringExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 1 /* 81: AStringExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___AStringFormExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {(bigint) syntax___icode_generation___AStringExpr___string_text},
+  {(bigint) syntax___icode_generation___AStringFormExpr___compute_string_infos},
+  {(bigint) 0 /* 91: AStringExpr < AStringFormExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AStringFormExpr___n_string},
+  {(bigint) parser___parser_prod___AStringExpr___empty_init},
+  {(bigint) parser___parser_prod___AStringExpr___init_astringexpr},
+  {(bigint) 5 /* 95: AStringExpr < AStringExpr: superclass init_table position */},
 };
 /* 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_name */
-void INIT_ATTRIBUTES__parser___parser_nodes___AModuledecl(val_t p0){
+/* 2: Attribute AStringExpr::_parent */
+/* 3: Attribute AStringExpr::_location */
+/* 4: Attribute AStringExpr::_first_location */
+/* 5: Attribute AStringExpr::_last_location */
+/* 6: Attribute AStringExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute AStringExpr::_is_typed */
+/* 9: Attribute AStringExpr::_stype */
+/* 10: Attribute AStringExpr::_if_true_flow_ctx */
+/* 11: Attribute AStringExpr::_if_false_flow_ctx */
+/* 12: Attribute AStringExpr::_cstring */
+/* 13: Attribute AStringExpr::_cstring_length */
+/* 14: Attribute AStringExpr::_n_string */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AStringExpr[] = "init var of AStringExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___AStringExpr(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__parser___parser_nodes___AModuledecl;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AStringExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./parser//parser_nodes.nit:328 */
+  /* parser/parser_nodes.nit:56 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AModuledecl____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AModuledecl(void)
+val_t NEW_parser___parser_nodes___AStringExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 9);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AModuledecl;
+  obj = alloc(sizeof(val_t) * 15);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AStringExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AModuledecl(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AStringExpr[] = "check new AStringExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___AModuledecl;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AStringExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AModuledecl____n_kwmodule(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwmodule", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AModuledecl____n_name(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStringFormExpr____n_string(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_name", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_string", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AModuledecl_parser___parser_prod___AModuledecl___empty_init(void){
+static const char LOCATE_NEW_AStringExpr_parser___parser_prod___AStringExpr___empty_init[] = "new AStringExpr parser_prod::AStringExpr::empty_init";
+val_t NEW_AStringExpr_parser___parser_prod___AStringExpr___empty_init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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_AModuledecl_parser___parser_prod___AModuledecl___empty_init;
+  fra.me.line = 7391;
+  fra.me.meth = LOCATE_NEW_AStringExpr_parser___parser_prod___AStringExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:148 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AModuledecl();
-  INIT_ATTRIBUTES__parser___parser_nodes___AModuledecl(fra.me.REG[0]);
-  parser___parser_prod___AModuledecl___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AModuledecl(fra.me.REG[0]);
+  /* parser/parser_prod.nit:7391 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AStringExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AStringExpr(fra.me.REG[0]);
+  parser___parser_prod___AStringExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AStringExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AModuledecl_parser___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;
+static const char LOCATE_NEW_AStringExpr_parser___parser_prod___AStringExpr___init_astringexpr[] = "new AStringExpr parser_prod::AStringExpr::init_astringexpr";
+val_t NEW_AStringExpr_parser___parser_prod___AStringExpr___init_astringexpr(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};
+  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 = 150;
-  fra.me.meth = LOCATE_NEW_AModuledecl_parser___parser_prod___AModuledecl___init_amoduledecl;
+  fra.me.line = 7393;
+  fra.me.meth = LOCATE_NEW_AStringExpr_parser___parser_prod___AStringExpr___init_astringexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___AModuledecl();
-  INIT_ATTRIBUTES__parser___parser_nodes___AModuledecl(fra.me.REG[3]);
-  parser___parser_prod___AModuledecl___init_amoduledecl(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
-  CHECKNEW_parser___parser_nodes___AModuledecl(fra.me.REG[3]);
+  /* parser/parser_prod.nit:7393 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___AStringExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AStringExpr(fra.me.REG[2]);
+  parser___parser_prod___AStringExpr___init_astringexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___AStringExpr(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[3];
+  return fra.me.REG[2];
 }
-val_t NEW_AModuledecl_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AStringExpr_parser___parser_nodes___ANode___init[] = "new AStringExpr parser_nodes::ANode::init";
+val_t NEW_AStringExpr_parser___parser_nodes___ANode___init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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_AModuledecl_parser___parser_nodes___ANode___init;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_AStringExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___AModuledecl();
-  INIT_ATTRIBUTES__parser___parser_nodes___AModuledecl(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AModuledecl(fra.me.REG[1]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AStringExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AStringExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AStringExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AImport[75] = {
-  {(bigint) 3095 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AImport" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AImport < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AImport < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AImport < Prod: superclass typecheck marker */},
-  {(bigint) 3095 /* 7: AImport < AImport: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___parser_nodes___AStartStringExpr[96] = {
+  {(bigint) 4663 /* 0: Identity */},
+  {(bigint) 15 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AStartStringExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AStartStringExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AStartStringExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AStartStringExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3811 /* 7: AStartStringExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 4295 /* 8: AStartStringExpr < AStringFormExpr: superclass typecheck marker */},
+  {(bigint) 4663 /* 9: AStartStringExpr < AStartStringExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -41461,7 +83776,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AImport[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AImport < Object: superclass init_table position */},
+  {(bigint) 4 /* 19: AStartStringExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -41477,6 +83792,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AImport[75] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -41490,102 +83807,202 @@ const classtable_elt_t VFT_parser___parser_nodes___AImport[75] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ANode___replace_child},
+  {(bigint) parser___parser_prod___AStartStringExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ANode___visit_all},
-  {(bigint) 1 /* 60: AImport < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AStartStringExpr___visit_all},
+  {(bigint) 3 /* 63: AStartStringExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) syntax___typing___AStringFormExpr___after_typing},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AImport < Prod: superclass init_table position */},
+  {(bigint) 2 /* 72: AStartStringExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___AImport___module_name},
-  {(bigint) syntax___mmbuilder___AImport___visibility_level},
-  {(bigint) 3 /* 74: AImport < AImport: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 1 /* 81: AStartStringExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___AStringFormExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {(bigint) syntax___icode_generation___AStartStringExpr___string_text},
+  {(bigint) syntax___icode_generation___AStringFormExpr___compute_string_infos},
+  {(bigint) 0 /* 91: AStartStringExpr < AStringFormExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AStringFormExpr___n_string},
+  {(bigint) parser___parser_prod___AStartStringExpr___empty_init},
+  {(bigint) parser___parser_prod___AStartStringExpr___init_astartstringexpr},
+  {(bigint) 5 /* 95: AStartStringExpr < AStartStringExpr: 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__parser___parser_nodes___AImport(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AStartStringExpr::_parent */
+/* 3: Attribute AStartStringExpr::_location */
+/* 4: Attribute AStartStringExpr::_first_location */
+/* 5: Attribute AStartStringExpr::_last_location */
+/* 6: Attribute AStartStringExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute AStartStringExpr::_is_typed */
+/* 9: Attribute AStartStringExpr::_stype */
+/* 10: Attribute AStartStringExpr::_if_true_flow_ctx */
+/* 11: Attribute AStartStringExpr::_if_false_flow_ctx */
+/* 12: Attribute AStartStringExpr::_cstring */
+/* 13: Attribute AStartStringExpr::_cstring_length */
+/* 14: Attribute AStartStringExpr::_n_string */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AStartStringExpr[] = "init var of AStartStringExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___AStartStringExpr(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__parser___parser_nodes___AImport;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AStartStringExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AImport(void)
+val_t NEW_parser___parser_nodes___AStartStringExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AImport;
+  obj = alloc(sizeof(val_t) * 15);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AStartStringExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AImport(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AStartStringExpr[] = "check new AStartStringExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___AImport;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AStartStringExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_syntax___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___parser_nodes___AStringFormExpr____n_string(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_string", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_AStartStringExpr_parser___parser_prod___AStartStringExpr___empty_init[] = "new AStartStringExpr parser_prod::AStartStringExpr::empty_init";
+val_t NEW_AStartStringExpr_parser___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 = 7440;
+  fra.me.meth = LOCATE_NEW_AStartStringExpr_parser___parser_prod___AStartStringExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:7440 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AStartStringExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AStartStringExpr(fra.me.REG[0]);
+  parser___parser_prod___AStartStringExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AStartStringExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-val_t NEW_AImport_parser___parser_nodes___ANode___init(val_t p0){
+static const char LOCATE_NEW_AStartStringExpr_parser___parser_prod___AStartStringExpr___init_astartstringexpr[] = "new AStartStringExpr parser_prod::AStartStringExpr::init_astartstringexpr";
+val_t NEW_AStartStringExpr_parser___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[4] = {0, 0, 0, 0};
+  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_AImport_parser___parser_nodes___ANode___init;
+  fra.me.line = 7442;
+  fra.me.meth = LOCATE_NEW_AStartStringExpr_parser___parser_prod___AStartStringExpr___init_astartstringexpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___AImport();
-  INIT_ATTRIBUTES__parser___parser_nodes___AImport(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AImport(fra.me.REG[1]);
+  /* parser/parser_prod.nit:7442 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___AStartStringExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AStartStringExpr(fra.me.REG[1]);
+  parser___parser_prod___AStartStringExpr___init_astartstringexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AStartStringExpr(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AStdImport[81] = {
-  {(bigint) 3279 /* 0: Identity */},
-  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AStdImport" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AStdImport < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AStdImport < ANode: superclass typecheck marker */},
+static const char LOCATE_NEW_AStartStringExpr_parser___parser_nodes___ANode___init[] = "new AStartStringExpr parser_nodes::ANode::init";
+val_t NEW_AStartStringExpr_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AStartStringExpr_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AStartStringExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AStartStringExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AStartStringExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___AMidStringExpr[96] = {
+  {(bigint) 4695 /* 0: Identity */},
+  {(bigint) 15 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AMidStringExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AMidStringExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AMidStringExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AMidStringExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AStdImport < Prod: superclass typecheck marker */},
-  {(bigint) 3095 /* 7: AStdImport < AImport: superclass typecheck marker */},
-  {(bigint) 3279 /* 8: AStdImport < AStdImport: superclass typecheck marker */},
+  {(bigint) 3811 /* 7: AMidStringExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 4295 /* 8: AMidStringExpr < AStringFormExpr: superclass typecheck marker */},
+  {(bigint) 4695 /* 9: AMidStringExpr < AMidStringExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -41595,7 +84012,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AStdImport[81] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AStdImport < Object: superclass init_table position */},
+  {(bigint) 4 /* 19: AMidStringExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -41611,6 +84028,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AStdImport[81] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -41624,173 +84043,202 @@ const classtable_elt_t VFT_parser___parser_nodes___AStdImport[81] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AStdImport___replace_child},
+  {(bigint) parser___parser_prod___AMidStringExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AStdImport___visit_all},
-  {(bigint) 1 /* 60: AStdImport < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AMidStringExpr___visit_all},
+  {(bigint) 3 /* 63: AMidStringExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) syntax___typing___AStringFormExpr___after_typing},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AStdImport < Prod: superclass init_table position */},
+  {(bigint) 2 /* 72: AMidStringExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___AStdImport___module_name},
-  {(bigint) syntax___mmbuilder___AStdImport___visibility_level},
-  {(bigint) 3 /* 74: AStdImport < AImport: superclass init_table position */},
-  {(bigint) parser___parser_prod___AStdImport___empty_init},
-  {(bigint) parser___parser_prod___AStdImport___init_astdimport},
-  {(bigint) 4 /* 77: AStdImport < AStdImport: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AStdImport___n_visibility},
-  {(bigint) parser___parser_nodes___AStdImport___n_kwimport},
-  {(bigint) parser___parser_nodes___AStdImport___n_name},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 1 /* 81: AMidStringExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___AStringFormExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {(bigint) syntax___icode_generation___AMidStringExpr___string_text},
+  {(bigint) syntax___icode_generation___AStringFormExpr___compute_string_infos},
+  {(bigint) 0 /* 91: AMidStringExpr < AStringFormExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AStringFormExpr___n_string},
+  {(bigint) parser___parser_prod___AMidStringExpr___empty_init},
+  {(bigint) parser___parser_prod___AMidStringExpr___init_amidstringexpr},
+  {(bigint) 5 /* 95: AMidStringExpr < AMidStringExpr: superclass init_table position */},
 };
 /* 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_name */
-void INIT_ATTRIBUTES__parser___parser_nodes___AStdImport(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AMidStringExpr::_parent */
+/* 3: Attribute AMidStringExpr::_location */
+/* 4: Attribute AMidStringExpr::_first_location */
+/* 5: Attribute AMidStringExpr::_last_location */
+/* 6: Attribute AMidStringExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute AMidStringExpr::_is_typed */
+/* 9: Attribute AMidStringExpr::_stype */
+/* 10: Attribute AMidStringExpr::_if_true_flow_ctx */
+/* 11: Attribute AMidStringExpr::_if_false_flow_ctx */
+/* 12: Attribute AMidStringExpr::_cstring */
+/* 13: Attribute AMidStringExpr::_cstring_length */
+/* 14: Attribute AMidStringExpr::_n_string */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AMidStringExpr[] = "init var of AMidStringExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___AMidStringExpr(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__parser___parser_nodes___AStdImport;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AMidStringExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AStdImport(void)
+val_t NEW_parser___parser_nodes___AMidStringExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 9);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AStdImport;
+  obj = alloc(sizeof(val_t) * 15);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AMidStringExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AStdImport(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AMidStringExpr[] = "check new AMidStringExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___AStdImport;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AMidStringExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___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___parser_nodes___AStdImport____n_kwimport(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwimport", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStdImport____n_name(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStringFormExpr____n_string(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_name", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_string", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AStdImport_parser___parser_prod___AStdImport___empty_init(void){
+static const char LOCATE_NEW_AMidStringExpr_parser___parser_prod___AMidStringExpr___empty_init[] = "new AMidStringExpr parser_prod::AMidStringExpr::empty_init";
+val_t NEW_AMidStringExpr_parser___parser_prod___AMidStringExpr___empty_init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[5] = {0, 0, 0, 0, 0};
+  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 = 211;
-  fra.me.meth = LOCATE_NEW_AStdImport_parser___parser_prod___AStdImport___empty_init;
+  fra.me.line = 7471;
+  fra.me.meth = LOCATE_NEW_AMidStringExpr_parser___parser_prod___AMidStringExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:211 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AStdImport();
-  INIT_ATTRIBUTES__parser___parser_nodes___AStdImport(fra.me.REG[0]);
-  parser___parser_prod___AStdImport___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AStdImport(fra.me.REG[0]);
+  /* parser/parser_prod.nit:7471 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AMidStringExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AMidStringExpr(fra.me.REG[0]);
+  parser___parser_prod___AMidStringExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AMidStringExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AStdImport_parser___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;
+static const char LOCATE_NEW_AMidStringExpr_parser___parser_prod___AMidStringExpr___init_amidstringexpr[] = "new AMidStringExpr parser_prod::AMidStringExpr::init_amidstringexpr";
+val_t NEW_AMidStringExpr_parser___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[5] = {0, 0, 0, 0, 0};
+  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 = 213;
-  fra.me.meth = LOCATE_NEW_AStdImport_parser___parser_prod___AStdImport___init_astdimport;
+  fra.me.line = 7473;
+  fra.me.meth = LOCATE_NEW_AMidStringExpr_parser___parser_prod___AMidStringExpr___init_amidstringexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___AStdImport();
-  INIT_ATTRIBUTES__parser___parser_nodes___AStdImport(fra.me.REG[3]);
-  parser___parser_prod___AStdImport___init_astdimport(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
-  CHECKNEW_parser___parser_nodes___AStdImport(fra.me.REG[3]);
+  /* parser/parser_prod.nit:7473 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___AMidStringExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AMidStringExpr(fra.me.REG[1]);
+  parser___parser_prod___AMidStringExpr___init_amidstringexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AMidStringExpr(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[3];
+  return fra.me.REG[1];
 }
-val_t NEW_AStdImport_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AMidStringExpr_parser___parser_nodes___ANode___init[] = "new AMidStringExpr parser_nodes::ANode::init";
+val_t NEW_AMidStringExpr_parser___parser_nodes___ANode___init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[5] = {0, 0, 0, 0, 0};
+  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_AStdImport_parser___parser_nodes___ANode___init;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_AMidStringExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___AStdImport();
-  INIT_ATTRIBUTES__parser___parser_nodes___AStdImport(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AStdImport(fra.me.REG[1]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AMidStringExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AMidStringExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AMidStringExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ANoImport[81] = {
-  {(bigint) 3359 /* 0: Identity */},
-  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ANoImport" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ANoImport < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ANoImport < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___parser_nodes___AEndStringExpr[96] = {
+  {(bigint) 4751 /* 0: Identity */},
+  {(bigint) 15 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AEndStringExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AEndStringExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AEndStringExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AEndStringExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: ANoImport < Prod: superclass typecheck marker */},
-  {(bigint) 3095 /* 7: ANoImport < AImport: superclass typecheck marker */},
-  {(bigint) 3359 /* 8: ANoImport < ANoImport: superclass typecheck marker */},
+  {(bigint) 3811 /* 7: AEndStringExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 4295 /* 8: AEndStringExpr < AStringFormExpr: superclass typecheck marker */},
+  {(bigint) 4751 /* 9: AEndStringExpr < AEndStringExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -41800,7 +84248,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ANoImport[81] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: ANoImport < Object: superclass init_table position */},
+  {(bigint) 4 /* 19: AEndStringExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -41816,6 +84264,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ANoImport[81] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -41829,172 +84279,201 @@ const classtable_elt_t VFT_parser___parser_nodes___ANoImport[81] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ANoImport___replace_child},
+  {(bigint) parser___parser_prod___AEndStringExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ANoImport___visit_all},
-  {(bigint) 1 /* 60: ANoImport < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AEndStringExpr___visit_all},
+  {(bigint) 3 /* 63: AEndStringExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) syntax___typing___AStringFormExpr___after_typing},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: ANoImport < Prod: superclass init_table position */},
+  {(bigint) 2 /* 72: AEndStringExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___ANoImport___module_name},
-  {(bigint) syntax___mmbuilder___AImport___visibility_level},
-  {(bigint) 3 /* 74: ANoImport < AImport: superclass init_table position */},
-  {(bigint) parser___parser_prod___ANoImport___empty_init},
-  {(bigint) parser___parser_prod___ANoImport___init_anoimport},
-  {(bigint) 4 /* 77: ANoImport < ANoImport: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANoImport___n_visibility},
-  {(bigint) parser___parser_nodes___ANoImport___n_kwimport},
-  {(bigint) parser___parser_nodes___ANoImport___n_kwend},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 1 /* 81: AEndStringExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___AStringFormExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {(bigint) syntax___icode_generation___AEndStringExpr___string_text},
+  {(bigint) syntax___icode_generation___AStringFormExpr___compute_string_infos},
+  {(bigint) 0 /* 91: AEndStringExpr < AStringFormExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AStringFormExpr___n_string},
+  {(bigint) parser___parser_prod___AEndStringExpr___empty_init},
+  {(bigint) parser___parser_prod___AEndStringExpr___init_aendstringexpr},
+  {(bigint) 5 /* 95: AEndStringExpr < AEndStringExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___ANoImport(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AEndStringExpr::_parent */
+/* 3: Attribute AEndStringExpr::_location */
+/* 4: Attribute AEndStringExpr::_first_location */
+/* 5: Attribute AEndStringExpr::_last_location */
+/* 6: Attribute AEndStringExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute AEndStringExpr::_is_typed */
+/* 9: Attribute AEndStringExpr::_stype */
+/* 10: Attribute AEndStringExpr::_if_true_flow_ctx */
+/* 11: Attribute AEndStringExpr::_if_false_flow_ctx */
+/* 12: Attribute AEndStringExpr::_cstring */
+/* 13: Attribute AEndStringExpr::_cstring_length */
+/* 14: Attribute AEndStringExpr::_n_string */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AEndStringExpr[] = "init var of AEndStringExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___AEndStringExpr(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__parser___parser_nodes___ANoImport;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AEndStringExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___ANoImport(void)
+val_t NEW_parser___parser_nodes___AEndStringExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 9);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ANoImport;
+  obj = alloc(sizeof(val_t) * 15);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AEndStringExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___ANoImport(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AEndStringExpr[] = "check new AEndStringExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___ANoImport;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AEndStringExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___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___parser_nodes___ANoImport____n_kwimport(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwimport", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ANoImport____n_kwend(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStringFormExpr____n_string(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwend", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_string", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ANoImport_parser___parser_prod___ANoImport___empty_init(void){
+static const char LOCATE_NEW_AEndStringExpr_parser___parser_prod___AEndStringExpr___empty_init[] = "new AEndStringExpr parser_prod::AEndStringExpr::empty_init";
+val_t NEW_AEndStringExpr_parser___parser_prod___AEndStringExpr___empty_init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[5] = {0, 0, 0, 0, 0};
+  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 = 270;
-  fra.me.meth = LOCATE_NEW_ANoImport_parser___parser_prod___ANoImport___empty_init;
+  fra.me.line = 7502;
+  fra.me.meth = LOCATE_NEW_AEndStringExpr_parser___parser_prod___AEndStringExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:270 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ANoImport();
-  INIT_ATTRIBUTES__parser___parser_nodes___ANoImport(fra.me.REG[0]);
-  parser___parser_prod___ANoImport___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ANoImport(fra.me.REG[0]);
+  /* parser/parser_prod.nit:7502 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AEndStringExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AEndStringExpr(fra.me.REG[0]);
+  parser___parser_prod___AEndStringExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AEndStringExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_ANoImport_parser___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;
+static const char LOCATE_NEW_AEndStringExpr_parser___parser_prod___AEndStringExpr___init_aendstringexpr[] = "new AEndStringExpr parser_prod::AEndStringExpr::init_aendstringexpr";
+val_t NEW_AEndStringExpr_parser___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[5] = {0, 0, 0, 0, 0};
+  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 = 272;
-  fra.me.meth = LOCATE_NEW_ANoImport_parser___parser_prod___ANoImport___init_anoimport;
+  fra.me.line = 7504;
+  fra.me.meth = LOCATE_NEW_AEndStringExpr_parser___parser_prod___AEndStringExpr___init_aendstringexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___ANoImport();
-  INIT_ATTRIBUTES__parser___parser_nodes___ANoImport(fra.me.REG[3]);
-  parser___parser_prod___ANoImport___init_anoimport(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
-  CHECKNEW_parser___parser_nodes___ANoImport(fra.me.REG[3]);
+  /* parser/parser_prod.nit:7504 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___AEndStringExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AEndStringExpr(fra.me.REG[1]);
+  parser___parser_prod___AEndStringExpr___init_aendstringexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AEndStringExpr(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[3];
+  return fra.me.REG[1];
 }
-val_t NEW_ANoImport_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AEndStringExpr_parser___parser_nodes___ANode___init[] = "new AEndStringExpr parser_nodes::ANode::init";
+val_t NEW_AEndStringExpr_parser___parser_nodes___ANode___init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[5] = {0, 0, 0, 0, 0};
+  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_ANoImport_parser___parser_nodes___ANode___init;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_AEndStringExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___ANoImport();
-  INIT_ATTRIBUTES__parser___parser_nodes___ANoImport(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ANoImport(fra.me.REG[1]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AEndStringExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AEndStringExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AEndStringExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AVisibility[74] = {
-  {(bigint) 3043 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AVisibility" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AVisibility < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AVisibility < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___parser_nodes___ASuperstringExpr[94] = {
+  {(bigint) 4287 /* 0: Identity */},
+  {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ASuperstringExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ASuperstringExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: ASuperstringExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: ASuperstringExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AVisibility < Prod: superclass typecheck marker */},
-  {(bigint) 3043 /* 7: AVisibility < AVisibility: superclass typecheck marker */},
+  {(bigint) 3811 /* 7: ASuperstringExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 4287 /* 8: ASuperstringExpr < ASuperstringExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -42005,7 +84484,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AVisibility[74] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AVisibility < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: ASuperstringExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -42021,6 +84500,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AVisibility[74] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -42034,101 +84515,204 @@ const classtable_elt_t VFT_parser___parser_nodes___AVisibility[74] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ANode___replace_child},
+  {(bigint) parser___parser_prod___ASuperstringExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ANode___visit_all},
-  {(bigint) 1 /* 60: AVisibility < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___ASuperstringExpr___visit_all},
+  {(bigint) 2 /* 63: ASuperstringExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) syntax___typing___ASuperstringExpr___after_typing},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AVisibility < Prod: superclass init_table position */},
+  {(bigint) 1 /* 72: ASuperstringExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___AVisibility___level},
-  {(bigint) 3 /* 73: AVisibility < AVisibility: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 0 /* 81: ASuperstringExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___ASuperstringExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {(bigint) syntax___typing___ASuperstringExpr___atype},
+  {(bigint) parser___parser_prod___ASuperstringExpr___empty_init},
+  {(bigint) parser___parser_prod___ASuperstringExpr___init_asuperstringexpr},
+  {(bigint) 4 /* 92: ASuperstringExpr < ASuperstringExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ASuperstringExpr___n_exprs},
 };
 /* 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__parser___parser_nodes___AVisibility(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute ASuperstringExpr::_parent */
+/* 3: Attribute ASuperstringExpr::_location */
+/* 4: Attribute ASuperstringExpr::_first_location */
+/* 5: Attribute ASuperstringExpr::_last_location */
+/* 6: Attribute ASuperstringExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute ASuperstringExpr::_is_typed */
+/* 9: Attribute ASuperstringExpr::_stype */
+/* 10: Attribute ASuperstringExpr::_if_true_flow_ctx */
+/* 11: Attribute ASuperstringExpr::_if_false_flow_ctx */
+/* 12: Attribute ASuperstringExpr::_atype */
+/* 13: Attribute ASuperstringExpr::_n_exprs */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ASuperstringExpr[] = "init var of ASuperstringExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___AVisibility;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ASuperstringExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* parser/parser_nodes.nit:1105 */
+  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  ATTR_parser___parser_nodes___ASuperstringExpr____n_exprs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AVisibility(void)
+val_t NEW_parser___parser_nodes___ASuperstringExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AVisibility;
+  obj = alloc(sizeof(val_t) * 14);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ASuperstringExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AVisibility(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___ASuperstringExpr[] = "check new ASuperstringExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___AVisibility;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___ASuperstringExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_syntax___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___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;
 }
-val_t NEW_AVisibility_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ASuperstringExpr_parser___parser_prod___ASuperstringExpr___empty_init[] = "new ASuperstringExpr parser_prod::ASuperstringExpr::empty_init";
+val_t NEW_ASuperstringExpr_parser___parser_prod___ASuperstringExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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_AVisibility_parser___parser_nodes___ANode___init;
+  fra.me.line = 7533;
+  fra.me.meth = LOCATE_NEW_ASuperstringExpr_parser___parser_prod___ASuperstringExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:7533 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ASuperstringExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ASuperstringExpr(fra.me.REG[0]);
+  parser___parser_prod___ASuperstringExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ASuperstringExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_ASuperstringExpr_parser___parser_prod___ASuperstringExpr___init_asuperstringexpr[] = "new ASuperstringExpr parser_prod::ASuperstringExpr::init_asuperstringexpr";
+val_t NEW_ASuperstringExpr_parser___parser_prod___ASuperstringExpr___init_asuperstringexpr(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 = 7535;
+  fra.me.meth = LOCATE_NEW_ASuperstringExpr_parser___parser_prod___ASuperstringExpr___init_asuperstringexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   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] = NEW_parser___parser_nodes___AVisibility();
-  INIT_ATTRIBUTES__parser___parser_nodes___AVisibility(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AVisibility(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:7535 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___ASuperstringExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ASuperstringExpr(fra.me.REG[2]);
+  parser___parser_prod___ASuperstringExpr___init_asuperstringexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___ASuperstringExpr(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[2];
 }
-const classtable_elt_t VFT_parser___parser_nodes___APublicVisibility[77] = {
-  {(bigint) 3323 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "APublicVisibility" /* 2: Class Name */},
-  {(bigint) 3 /* 3: APublicVisibility < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: APublicVisibility < ANode: superclass typecheck marker */},
+static const char LOCATE_NEW_ASuperstringExpr_parser___parser_nodes___ANode___init[] = "new ASuperstringExpr parser_nodes::ANode::init";
+val_t NEW_ASuperstringExpr_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_ASuperstringExpr_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ASuperstringExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ASuperstringExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ASuperstringExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___AParExpr[96] = {
+  {(bigint) 4671 /* 0: Identity */},
+  {(bigint) 15 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AParExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AParExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AParExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AParExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: APublicVisibility < Prod: superclass typecheck marker */},
-  {(bigint) 3043 /* 7: APublicVisibility < AVisibility: superclass typecheck marker */},
-  {(bigint) 3323 /* 8: APublicVisibility < APublicVisibility: superclass typecheck marker */},
+  {(bigint) 3811 /* 7: AParExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 4347 /* 8: AParExpr < AProxyExpr: superclass typecheck marker */},
+  {(bigint) 4671 /* 9: AParExpr < AParExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -42138,7 +84722,7 @@ const classtable_elt_t VFT_parser___parser_nodes___APublicVisibility[77] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: APublicVisibility < Object: superclass init_table position */},
+  {(bigint) 4 /* 19: AParExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -42154,6 +84738,8 @@ const classtable_elt_t VFT_parser___parser_nodes___APublicVisibility[77] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -42167,142 +84753,218 @@ const classtable_elt_t VFT_parser___parser_nodes___APublicVisibility[77] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___APublicVisibility___replace_child},
+  {(bigint) parser___parser_prod___AParExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___APublicVisibility___visit_all},
-  {(bigint) 1 /* 60: APublicVisibility < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AParExpr___visit_all},
+  {(bigint) 3 /* 63: AParExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) syntax___typing___AProxyExpr___after_typing},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: APublicVisibility < Prod: superclass init_table position */},
+  {(bigint) 2 /* 72: AParExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___APublicVisibility___level},
-  {(bigint) 3 /* 73: APublicVisibility < AVisibility: superclass init_table position */},
-  {(bigint) parser___parser_prod___APublicVisibility___empty_init},
-  {(bigint) parser___parser_prod___APublicVisibility___init_apublicvisibility},
-  {(bigint) 4 /* 76: APublicVisibility < APublicVisibility: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 1 /* 81: AParExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___AProxyExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AProxyExpr___is_self},
+  {(bigint) syntax___typing___AProxyExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AParExpr___warn_parentheses},
+  {(bigint) 0 /* 89: AParExpr < AProxyExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AProxyExpr___n_expr},
+  {(bigint) parser___parser_prod___AParExpr___empty_init},
+  {(bigint) parser___parser_prod___AParExpr___init_aparexpr},
+  {(bigint) 5 /* 93: AParExpr < AParExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AParExpr___n_opar},
+  {(bigint) parser___parser_nodes___AParExpr___n_cpar},
 };
 /* 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__parser___parser_nodes___APublicVisibility(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AParExpr::_parent */
+/* 3: Attribute AParExpr::_location */
+/* 4: Attribute AParExpr::_first_location */
+/* 5: Attribute AParExpr::_last_location */
+/* 6: Attribute AParExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute AParExpr::_is_typed */
+/* 9: Attribute AParExpr::_stype */
+/* 10: Attribute AParExpr::_if_true_flow_ctx */
+/* 11: Attribute AParExpr::_if_false_flow_ctx */
+/* 12: Attribute AParExpr::_n_expr */
+/* 13: Attribute AParExpr::_n_opar */
+/* 14: Attribute AParExpr::_n_cpar */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AParExpr[] = "init var of AParExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___AParExpr(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__parser___parser_nodes___APublicVisibility;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AParExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___APublicVisibility(void)
+val_t NEW_parser___parser_nodes___AParExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___APublicVisibility;
+  obj = alloc(sizeof(val_t) * 15);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AParExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___APublicVisibility(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AParExpr[] = "check new AParExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___APublicVisibility;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AParExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_syntax___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___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_parser___parser_nodes___AParExpr____n_opar(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_opar", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AParExpr____n_cpar(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_cpar", LOCATE_nitc, 0);
+  }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_APublicVisibility_parser___parser_prod___APublicVisibility___empty_init(void){
+static const char LOCATE_NEW_AParExpr_parser___parser_prod___AParExpr___empty_init[] = "new AParExpr parser_prod::AParExpr::empty_init";
+val_t NEW_AParExpr_parser___parser_prod___AParExpr___empty_init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[5] = {0, 0, 0, 0, 0};
+  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 = 329;
-  fra.me.meth = LOCATE_NEW_APublicVisibility_parser___parser_prod___APublicVisibility___empty_init;
+  fra.me.line = 7589;
+  fra.me.meth = LOCATE_NEW_AParExpr_parser___parser_prod___AParExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:329 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___APublicVisibility();
-  INIT_ATTRIBUTES__parser___parser_nodes___APublicVisibility(fra.me.REG[0]);
-  parser___parser_prod___APublicVisibility___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___APublicVisibility(fra.me.REG[0]);
+  /* parser/parser_prod.nit:7589 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AParExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AParExpr(fra.me.REG[0]);
+  parser___parser_prod___AParExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AParExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_APublicVisibility_parser___parser_prod___APublicVisibility___init_apublicvisibility(void){
-  struct {struct stack_frame_t me;} fra;
+static const char LOCATE_NEW_AParExpr_parser___parser_prod___AParExpr___init_aparexpr[] = "new AParExpr parser_prod::AParExpr::init_aparexpr";
+val_t NEW_AParExpr_parser___parser_prod___AParExpr___init_aparexpr(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};
+  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 = 331;
-  fra.me.meth = LOCATE_NEW_APublicVisibility_parser___parser_prod___APublicVisibility___init_apublicvisibility;
+  fra.me.line = 7591;
+  fra.me.meth = LOCATE_NEW_AParExpr_parser___parser_prod___AParExpr___init_aparexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:331 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___APublicVisibility();
-  INIT_ATTRIBUTES__parser___parser_nodes___APublicVisibility(fra.me.REG[0]);
-  parser___parser_prod___APublicVisibility___init_apublicvisibility(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___APublicVisibility(fra.me.REG[0]);
+  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:7591 */
+  fra.me.REG[4] = NEW_parser___parser_nodes___AParExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AParExpr(fra.me.REG[4]);
+  parser___parser_prod___AParExpr___init_aparexpr(fra.me.REG[4], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], init_table);
+  CHECKNEW_parser___parser_nodes___AParExpr(fra.me.REG[4]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[4];
 }
-val_t NEW_APublicVisibility_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AParExpr_parser___parser_nodes___ANode___init[] = "new AParExpr parser_nodes::ANode::init";
+val_t NEW_AParExpr_parser___parser_nodes___ANode___init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[5] = {0, 0, 0, 0, 0};
+  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_APublicVisibility_parser___parser_nodes___ANode___init;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_AParExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___APublicVisibility();
-  INIT_ATTRIBUTES__parser___parser_nodes___APublicVisibility(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___APublicVisibility(fra.me.REG[1]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AParExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AParExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AParExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___APrivateVisibility[78] = {
-  {(bigint) 3339 /* 0: Identity */},
-  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "APrivateVisibility" /* 2: Class Name */},
-  {(bigint) 3 /* 3: APrivateVisibility < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: APrivateVisibility < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___parser_nodes___AAsCastExpr[97] = {
+  {(bigint) 4811 /* 0: Identity */},
+  {(bigint) 17 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AAsCastExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AAsCastExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AAsCastExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AAsCastExpr < Prod: superclass typecheck marker */},
+  {(bigint) 4275 /* 6: AAsCastExpr < ATypeCheckExpr: superclass typecheck marker */},
+  {(bigint) 3811 /* 7: AAsCastExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 4811 /* 8: AAsCastExpr < AAsCastExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: APrivateVisibility < Prod: superclass typecheck marker */},
-  {(bigint) 3043 /* 7: APrivateVisibility < AVisibility: superclass typecheck marker */},
-  {(bigint) 3339 /* 8: APrivateVisibility < APrivateVisibility: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -42312,7 +84974,7 @@ const classtable_elt_t VFT_parser___parser_nodes___APrivateVisibility[78] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: APrivateVisibility < Object: superclass init_table position */},
+  {(bigint) 4 /* 19: AAsCastExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -42328,6 +84990,8 @@ const classtable_elt_t VFT_parser___parser_nodes___APrivateVisibility[78] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -42341,154 +85005,233 @@ const classtable_elt_t VFT_parser___parser_nodes___APrivateVisibility[78] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___APrivateVisibility___replace_child},
+  {(bigint) parser___parser_prod___AAsCastExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___APrivateVisibility___visit_all},
-  {(bigint) 1 /* 60: APrivateVisibility < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AAsCastExpr___visit_all},
+  {(bigint) 3 /* 63: AAsCastExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) syntax___typing___AAsCastExpr___after_typing},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: APrivateVisibility < Prod: superclass init_table position */},
+  {(bigint) 2 /* 72: AAsCastExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___APrivateVisibility___level},
-  {(bigint) 3 /* 73: APrivateVisibility < AVisibility: superclass init_table position */},
-  {(bigint) parser___parser_prod___APrivateVisibility___empty_init},
-  {(bigint) parser___parser_prod___APrivateVisibility___init_aprivatevisibility},
-  {(bigint) 4 /* 76: APrivateVisibility < APrivateVisibility: superclass init_table position */},
-  {(bigint) parser___parser_nodes___APrivateVisibility___n_kwprivate},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) 0 /* 75: AAsCastExpr < ATypeCheckExpr: superclass init_table position */},
+  {(bigint) syntax___typing___ATypeCheckExpr___check_expr_cast},
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 1 /* 81: AAsCastExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___AAsCastExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {(bigint) parser___parser_prod___AAsCastExpr___empty_init},
+  {(bigint) parser___parser_prod___AAsCastExpr___init_aascastexpr},
+  {(bigint) 5 /* 91: AAsCastExpr < AAsCastExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AAsCastExpr___n_expr},
+  {(bigint) parser___parser_nodes___AAsCastExpr___n_kwas},
+  {(bigint) parser___parser_nodes___AAsCastExpr___n_opar},
+  {(bigint) parser___parser_nodes___AAsCastExpr___n_type},
+  {(bigint) parser___parser_nodes___AAsCastExpr___n_cpar},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___APrivateVisibility(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AAsCastExpr::_parent */
+/* 3: Attribute AAsCastExpr::_location */
+/* 4: Attribute AAsCastExpr::_first_location */
+/* 5: Attribute AAsCastExpr::_last_location */
+/* 6: Attribute AAsCastExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute AAsCastExpr::_is_typed */
+/* 9: Attribute AAsCastExpr::_stype */
+/* 10: Attribute AAsCastExpr::_if_true_flow_ctx */
+/* 11: Attribute AAsCastExpr::_if_false_flow_ctx */
+/* 12: Attribute AAsCastExpr::_n_expr */
+/* 13: Attribute AAsCastExpr::_n_kwas */
+/* 14: Attribute AAsCastExpr::_n_opar */
+/* 15: Attribute AAsCastExpr::_n_type */
+/* 16: Attribute AAsCastExpr::_n_cpar */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AAsCastExpr[] = "init var of AAsCastExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___AAsCastExpr(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__parser___parser_nodes___APrivateVisibility;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AAsCastExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___APrivateVisibility(void)
+val_t NEW_parser___parser_nodes___AAsCastExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___APrivateVisibility;
+  obj = alloc(sizeof(val_t) * 17);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AAsCastExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___APrivateVisibility(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AAsCastExpr[] = "check new AAsCastExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___APrivateVisibility;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AAsCastExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___APrivateVisibility____n_kwprivate(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwprivate", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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___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___parser_nodes___AAsCastExpr____n_opar(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_opar", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsCastExpr____n_cpar(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_cpar", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_APrivateVisibility_parser___parser_prod___APrivateVisibility___empty_init(void){
+static const char LOCATE_NEW_AAsCastExpr_parser___parser_prod___AAsCastExpr___empty_init[] = "new AAsCastExpr parser_prod::AAsCastExpr::empty_init";
+val_t NEW_AAsCastExpr_parser___parser_prod___AAsCastExpr___empty_init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[5] = {0, 0, 0, 0, 0};
+  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 = 345;
-  fra.me.meth = LOCATE_NEW_APrivateVisibility_parser___parser_prod___APrivateVisibility___empty_init;
+  fra.me.line = 7666;
+  fra.me.meth = LOCATE_NEW_AAsCastExpr_parser___parser_prod___AAsCastExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:345 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___APrivateVisibility();
-  INIT_ATTRIBUTES__parser___parser_nodes___APrivateVisibility(fra.me.REG[0]);
-  parser___parser_prod___APrivateVisibility___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___APrivateVisibility(fra.me.REG[0]);
+  /* parser/parser_prod.nit:7666 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AAsCastExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AAsCastExpr(fra.me.REG[0]);
+  parser___parser_prod___AAsCastExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AAsCastExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_APrivateVisibility_parser___parser_prod___APrivateVisibility___init_aprivatevisibility(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AAsCastExpr_parser___parser_prod___AAsCastExpr___init_aascastexpr[] = "new AAsCastExpr parser_prod::AAsCastExpr::init_aascastexpr";
+val_t NEW_AAsCastExpr_parser___parser_prod___AAsCastExpr___init_aascastexpr(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};
+  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 = 347;
-  fra.me.meth = LOCATE_NEW_APrivateVisibility_parser___parser_prod___APrivateVisibility___init_aprivatevisibility;
+  fra.me.line = 7668;
+  fra.me.meth = LOCATE_NEW_AAsCastExpr_parser___parser_prod___AAsCastExpr___init_aascastexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
   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;
-  /* ./parser//parser_prod.nit:347 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___APrivateVisibility();
-  INIT_ATTRIBUTES__parser___parser_nodes___APrivateVisibility(fra.me.REG[1]);
-  parser___parser_prod___APrivateVisibility___init_aprivatevisibility(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___APrivateVisibility(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  /* parser/parser_prod.nit:7668 */
+  fra.me.REG[5] = NEW_parser___parser_nodes___AAsCastExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AAsCastExpr(fra.me.REG[5]);
+  parser___parser_prod___AAsCastExpr___init_aascastexpr(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_parser___parser_nodes___AAsCastExpr(fra.me.REG[5]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[5];
 }
-val_t NEW_APrivateVisibility_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AAsCastExpr_parser___parser_nodes___ANode___init[] = "new AAsCastExpr parser_nodes::ANode::init";
+val_t NEW_AAsCastExpr_parser___parser_nodes___ANode___init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[5] = {0, 0, 0, 0, 0};
+  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_APrivateVisibility_parser___parser_nodes___ANode___init;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_AAsCastExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___APrivateVisibility();
-  INIT_ATTRIBUTES__parser___parser_nodes___APrivateVisibility(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___APrivateVisibility(fra.me.REG[1]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AAsCastExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AAsCastExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AAsCastExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AProtectedVisibility[78] = {
-  {(bigint) 3331 /* 0: Identity */},
-  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AProtectedVisibility" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AProtectedVisibility < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AProtectedVisibility < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___parser_nodes___AAsNotnullExpr[98] = {
+  {(bigint) 4579 /* 0: Identity */},
+  {(bigint) 18 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AAsNotnullExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AAsNotnullExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AAsNotnullExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AAsNotnullExpr < Prod: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {(bigint) 3811 /* 7: AAsNotnullExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 4579 /* 8: AAsNotnullExpr < AAsNotnullExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AProtectedVisibility < Prod: superclass typecheck marker */},
-  {(bigint) 3043 /* 7: AProtectedVisibility < AVisibility: superclass typecheck marker */},
-  {(bigint) 3331 /* 8: AProtectedVisibility < AProtectedVisibility: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -42498,7 +85241,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AProtectedVisibility[78] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AProtectedVisibility < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: AAsNotnullExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -42514,6 +85257,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AProtectedVisibility[78] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -42527,154 +85272,242 @@ const classtable_elt_t VFT_parser___parser_nodes___AProtectedVisibility[78] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AProtectedVisibility___replace_child},
+  {(bigint) parser___parser_prod___AAsNotnullExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AProtectedVisibility___visit_all},
-  {(bigint) 1 /* 60: AProtectedVisibility < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AAsNotnullExpr___visit_all},
+  {(bigint) 2 /* 63: AAsNotnullExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) syntax___typing___AAsNotnullExpr___after_typing},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AProtectedVisibility < Prod: superclass init_table position */},
+  {(bigint) 1 /* 72: AAsNotnullExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___AProtectedVisibility___level},
-  {(bigint) 3 /* 73: AProtectedVisibility < AVisibility: superclass init_table position */},
-  {(bigint) parser___parser_prod___AProtectedVisibility___empty_init},
-  {(bigint) parser___parser_prod___AProtectedVisibility___init_aprotectedvisibility},
-  {(bigint) 4 /* 76: AProtectedVisibility < AProtectedVisibility: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AProtectedVisibility___n_kwprotected},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 0 /* 81: AAsNotnullExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___AAsNotnullExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {(bigint) parser___parser_prod___AAsNotnullExpr___empty_init},
+  {(bigint) parser___parser_prod___AAsNotnullExpr___init_aasnotnullexpr},
+  {(bigint) 4 /* 91: AAsNotnullExpr < AAsNotnullExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AAsNotnullExpr___n_expr},
+  {(bigint) parser___parser_nodes___AAsNotnullExpr___n_kwas},
+  {(bigint) parser___parser_nodes___AAsNotnullExpr___n_opar},
+  {(bigint) parser___parser_nodes___AAsNotnullExpr___n_kwnot},
+  {(bigint) parser___parser_nodes___AAsNotnullExpr___n_kwnull},
+  {(bigint) parser___parser_nodes___AAsNotnullExpr___n_cpar},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AProtectedVisibility(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AAsNotnullExpr::_parent */
+/* 3: Attribute AAsNotnullExpr::_location */
+/* 4: Attribute AAsNotnullExpr::_first_location */
+/* 5: Attribute AAsNotnullExpr::_last_location */
+/* 6: Attribute AAsNotnullExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute AAsNotnullExpr::_is_typed */
+/* 9: Attribute AAsNotnullExpr::_stype */
+/* 10: Attribute AAsNotnullExpr::_if_true_flow_ctx */
+/* 11: Attribute AAsNotnullExpr::_if_false_flow_ctx */
+/* 12: Attribute AAsNotnullExpr::_n_expr */
+/* 13: Attribute AAsNotnullExpr::_n_kwas */
+/* 14: Attribute AAsNotnullExpr::_n_opar */
+/* 15: Attribute AAsNotnullExpr::_n_kwnot */
+/* 16: Attribute AAsNotnullExpr::_n_kwnull */
+/* 17: Attribute AAsNotnullExpr::_n_cpar */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AAsNotnullExpr[] = "init var of AAsNotnullExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___AAsNotnullExpr(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__parser___parser_nodes___AProtectedVisibility;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AAsNotnullExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AProtectedVisibility(void)
+val_t NEW_parser___parser_nodes___AAsNotnullExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AProtectedVisibility;
+  obj = alloc(sizeof(val_t) * 18);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AAsNotnullExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AProtectedVisibility(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AAsNotnullExpr[] = "check new AAsNotnullExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___AProtectedVisibility;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AAsNotnullExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AProtectedVisibility____n_kwprotected(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwprotected", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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___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___parser_nodes___AAsNotnullExpr____n_opar(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_opar", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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___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);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsNotnullExpr____n_cpar(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_cpar", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AProtectedVisibility_parser___parser_prod___AProtectedVisibility___empty_init(void){
+static const char LOCATE_NEW_AAsNotnullExpr_parser___parser_prod___AAsNotnullExpr___empty_init[] = "new AAsNotnullExpr parser_prod::AAsNotnullExpr::empty_init";
+val_t NEW_AAsNotnullExpr_parser___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 = 376;
-  fra.me.meth = LOCATE_NEW_AProtectedVisibility_parser___parser_prod___AProtectedVisibility___empty_init;
+  fra.me.line = 7753;
+  fra.me.meth = LOCATE_NEW_AAsNotnullExpr_parser___parser_prod___AAsNotnullExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:376 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AProtectedVisibility();
-  INIT_ATTRIBUTES__parser___parser_nodes___AProtectedVisibility(fra.me.REG[0]);
-  parser___parser_prod___AProtectedVisibility___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AProtectedVisibility(fra.me.REG[0]);
+  /* parser/parser_prod.nit:7753 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AAsNotnullExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AAsNotnullExpr(fra.me.REG[0]);
+  parser___parser_prod___AAsNotnullExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AAsNotnullExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AProtectedVisibility_parser___parser_prod___AProtectedVisibility___init_aprotectedvisibility(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AAsNotnullExpr_parser___parser_prod___AAsNotnullExpr___init_aasnotnullexpr[] = "new AAsNotnullExpr parser_prod::AAsNotnullExpr::init_aasnotnullexpr";
+val_t NEW_AAsNotnullExpr_parser___parser_prod___AAsNotnullExpr___init_aasnotnullexpr(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 = 378;
-  fra.me.meth = LOCATE_NEW_AProtectedVisibility_parser___parser_prod___AProtectedVisibility___init_aprotectedvisibility;
+  fra.me.line = 7755;
+  fra.me.meth = LOCATE_NEW_AAsNotnullExpr_parser___parser_prod___AAsNotnullExpr___init_aasnotnullexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
   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;
-  /* ./parser//parser_prod.nit:378 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___AProtectedVisibility();
-  INIT_ATTRIBUTES__parser___parser_nodes___AProtectedVisibility(fra.me.REG[1]);
-  parser___parser_prod___AProtectedVisibility___init_aprotectedvisibility(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AProtectedVisibility(fra.me.REG[1]);
+  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:7755 */
+  fra.me.REG[6] = NEW_parser___parser_nodes___AAsNotnullExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AAsNotnullExpr(fra.me.REG[6]);
+  parser___parser_prod___AAsNotnullExpr___init_aasnotnullexpr(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_parser___parser_nodes___AAsNotnullExpr(fra.me.REG[6]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[6];
 }
-val_t NEW_AProtectedVisibility_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AAsNotnullExpr_parser___parser_nodes___ANode___init[] = "new AAsNotnullExpr parser_nodes::ANode::init";
+val_t NEW_AAsNotnullExpr_parser___parser_nodes___ANode___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_AProtectedVisibility_parser___parser_nodes___ANode___init;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_AAsNotnullExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___AProtectedVisibility();
-  INIT_ATTRIBUTES__parser___parser_nodes___AProtectedVisibility(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AProtectedVisibility(fra.me.REG[1]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AAsNotnullExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AAsNotnullExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AAsNotnullExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AIntrudeVisibility[78] = {
-  {(bigint) 3395 /* 0: Identity */},
-  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AIntrudeVisibility" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AIntrudeVisibility < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AIntrudeVisibility < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___parser_nodes___AIssetAttrExpr[107] = {
+  {(bigint) 4711 /* 0: Identity */},
+  {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AIssetAttrExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AIssetAttrExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AIssetAttrExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AIssetAttrExpr < Prod: superclass typecheck marker */},
+  {(bigint) 4559 /* 6: AIssetAttrExpr < AAttrFormExpr: superclass typecheck marker */},
+  {(bigint) 3811 /* 7: AIssetAttrExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 4711 /* 8: AIssetAttrExpr < AIssetAttrExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AIntrudeVisibility < Prod: superclass typecheck marker */},
-  {(bigint) 3043 /* 7: AIntrudeVisibility < AVisibility: superclass typecheck marker */},
-  {(bigint) 3395 /* 8: AIntrudeVisibility < AIntrudeVisibility: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -42684,7 +85517,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AIntrudeVisibility[78] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AIntrudeVisibility < Object: superclass init_table position */},
+  {(bigint) 4 /* 19: AIssetAttrExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -42700,6 +85533,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AIntrudeVisibility[78] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -42713,153 +85548,233 @@ const classtable_elt_t VFT_parser___parser_nodes___AIntrudeVisibility[78] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AIntrudeVisibility___replace_child},
+  {(bigint) parser___parser_prod___AIssetAttrExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AIntrudeVisibility___visit_all},
-  {(bigint) 1 /* 60: AIntrudeVisibility < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AIssetAttrExpr___visit_all},
+  {(bigint) 3 /* 63: AIssetAttrExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) syntax___typing___AIssetAttrExpr___after_typing},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AIntrudeVisibility < Prod: superclass init_table position */},
+  {(bigint) 2 /* 72: AIssetAttrExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___AIntrudeVisibility___level},
-  {(bigint) 3 /* 73: AIntrudeVisibility < AVisibility: superclass init_table position */},
-  {(bigint) parser___parser_prod___AIntrudeVisibility___empty_init},
-  {(bigint) parser___parser_prod___AIntrudeVisibility___init_aintrudevisibility},
-  {(bigint) 4 /* 76: AIntrudeVisibility < AIntrudeVisibility: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AIntrudeVisibility___n_kwintrude},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 1 /* 81: AIssetAttrExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___AIssetAttrExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___typing___AAttrFormExpr___do_typing},
+  {(bigint) syntax___typing___AAttrFormExpr___prop},
+  {(bigint) syntax___typing___AAttrFormExpr___attr_type},
+  {(bigint) 0 /* 100: AIssetAttrExpr < AAttrFormExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AAttrFormExpr___n_expr},
+  {(bigint) parser___parser_nodes___AAttrFormExpr___n_id},
+  {(bigint) parser___parser_prod___AIssetAttrExpr___empty_init},
+  {(bigint) parser___parser_prod___AIssetAttrExpr___init_aissetattrexpr},
+  {(bigint) 5 /* 105: AIssetAttrExpr < AIssetAttrExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AIssetAttrExpr___n_kwisset},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AIntrudeVisibility(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AIssetAttrExpr::_parent */
+/* 3: Attribute AIssetAttrExpr::_location */
+/* 4: Attribute AIssetAttrExpr::_first_location */
+/* 5: Attribute AIssetAttrExpr::_last_location */
+/* 6: Attribute AIssetAttrExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute AIssetAttrExpr::_is_typed */
+/* 9: Attribute AIssetAttrExpr::_stype */
+/* 10: Attribute AIssetAttrExpr::_if_true_flow_ctx */
+/* 11: Attribute AIssetAttrExpr::_if_false_flow_ctx */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 17: Attribute AIssetAttrExpr::_prop */
+/* 18: Attribute AIssetAttrExpr::_attr_type */
+/* 19: Attribute AIssetAttrExpr::_n_expr */
+/* 20: Attribute AIssetAttrExpr::_n_id */
+/* 21: Attribute AIssetAttrExpr::_n_kwisset */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AIssetAttrExpr[] = "init var of AIssetAttrExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___AIssetAttrExpr(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__parser___parser_nodes___AIntrudeVisibility;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AIssetAttrExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AIntrudeVisibility(void)
+val_t NEW_parser___parser_nodes___AIssetAttrExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AIntrudeVisibility;
+  obj = alloc(sizeof(val_t) * 22);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AIssetAttrExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AIntrudeVisibility(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AIssetAttrExpr[] = "check new AIssetAttrExpr";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___AIntrudeVisibility;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AIssetAttrExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AIntrudeVisibility____n_kwintrude(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwintrude", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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___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___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);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AIntrudeVisibility_parser___parser_prod___AIntrudeVisibility___empty_init(void){
+static const char LOCATE_NEW_AIssetAttrExpr_parser___parser_prod___AIssetAttrExpr___empty_init[] = "new AIssetAttrExpr parser_prod::AIssetAttrExpr::empty_init";
+val_t NEW_AIssetAttrExpr_parser___parser_prod___AIssetAttrExpr___empty_init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[5] = {0, 0, 0, 0, 0};
+  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 = 407;
-  fra.me.meth = LOCATE_NEW_AIntrudeVisibility_parser___parser_prod___AIntrudeVisibility___empty_init;
+  fra.me.line = 7854;
+  fra.me.meth = LOCATE_NEW_AIssetAttrExpr_parser___parser_prod___AIssetAttrExpr___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:407 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AIntrudeVisibility();
-  INIT_ATTRIBUTES__parser___parser_nodes___AIntrudeVisibility(fra.me.REG[0]);
-  parser___parser_prod___AIntrudeVisibility___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AIntrudeVisibility(fra.me.REG[0]);
+  /* parser/parser_prod.nit:7854 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AIssetAttrExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AIssetAttrExpr(fra.me.REG[0]);
+  parser___parser_prod___AIssetAttrExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AIssetAttrExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AIntrudeVisibility_parser___parser_prod___AIntrudeVisibility___init_aintrudevisibility(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AIssetAttrExpr_parser___parser_prod___AIssetAttrExpr___init_aissetattrexpr[] = "new AIssetAttrExpr parser_prod::AIssetAttrExpr::init_aissetattrexpr";
+val_t NEW_AIssetAttrExpr_parser___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[5] = {0, 0, 0, 0, 0};
+  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 = 409;
-  fra.me.meth = LOCATE_NEW_AIntrudeVisibility_parser___parser_prod___AIntrudeVisibility___init_aintrudevisibility;
+  fra.me.line = 7856;
+  fra.me.meth = LOCATE_NEW_AIssetAttrExpr_parser___parser_prod___AIssetAttrExpr___init_aissetattrexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   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;
-  /* ./parser//parser_prod.nit:409 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___AIntrudeVisibility();
-  INIT_ATTRIBUTES__parser___parser_nodes___AIntrudeVisibility(fra.me.REG[1]);
-  parser___parser_prod___AIntrudeVisibility___init_aintrudevisibility(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AIntrudeVisibility(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* parser/parser_prod.nit:7856 */
+  fra.me.REG[3] = NEW_parser___parser_nodes___AIssetAttrExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AIssetAttrExpr(fra.me.REG[3]);
+  parser___parser_prod___AIssetAttrExpr___init_aissetattrexpr(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_parser___parser_nodes___AIssetAttrExpr(fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[3];
 }
-val_t NEW_AIntrudeVisibility_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AIssetAttrExpr_parser___parser_nodes___ANode___init[] = "new AIssetAttrExpr parser_nodes::ANode::init";
+val_t NEW_AIssetAttrExpr_parser___parser_nodes___ANode___init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[5] = {0, 0, 0, 0, 0};
+  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_AIntrudeVisibility_parser___parser_nodes___ANode___init;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_AIssetAttrExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___AIntrudeVisibility();
-  INIT_ATTRIBUTES__parser___parser_nodes___AIntrudeVisibility(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AIntrudeVisibility(fra.me.REG[1]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AIssetAttrExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___AIssetAttrExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AIssetAttrExpr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AClassdef[85] = {
-  {(bigint) 3131 /* 0: Identity */},
-  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AClassdef" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AClassdef < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AClassdef < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___parser_nodes___ADebugTypeExpr[96] = {
+  {(bigint) 4511 /* 0: Identity */},
+  {(bigint) 16 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ADebugTypeExpr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ADebugTypeExpr < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: ADebugTypeExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: ADebugTypeExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AClassdef < Prod: superclass typecheck marker */},
-  {(bigint) 3131 /* 7: AClassdef < AClassdef: superclass typecheck marker */},
+  {(bigint) 3811 /* 7: ADebugTypeExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 4511 /* 8: ADebugTypeExpr < ADebugTypeExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -42870,7 +85785,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AClassdef[85] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AClassdef < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: ADebugTypeExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -42886,6 +85801,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AClassdef[85] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -42899,120 +85816,224 @@ const classtable_elt_t VFT_parser___parser_nodes___AClassdef[85] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AClassdef___accept_class_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___AClassdef___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___mmbuilder___AClassdef___accept_abs_syntax_visitor},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
+  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ANode___replace_child},
+  {(bigint) parser___parser_prod___ADebugTypeExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ANode___visit_all},
-  {(bigint) 1 /* 60: AClassdef < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___ADebugTypeExpr___visit_all},
+  {(bigint) 2 /* 63: ADebugTypeExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___AClassdef___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ADebugTypeExpr___after_typing},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AClassdef < Prod: superclass init_table position */},
+  {(bigint) 1 /* 72: ADebugTypeExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___AClassdef___name},
-  {(bigint) syntax___mmbuilder___AClassdef___arity},
-  {(bigint) syntax___mmbuilder___AClassdef___visibility_level},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___AClassdef___build_class_introduction},
-  {(bigint) syntax___mmbuilder___AClassdef___build_class_refinement},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) syntax___mmbuilder___AClassdef___local_class},
-  {(bigint) syntax___syntax_base___AClassdef___next_node},
-  {(bigint) syntax___syntax_base___AClassdef___next_node__eq},
-  {(bigint) 3 /* 83: AClassdef < AClassdef: superclass init_table position */},
-  {(bigint) syntax___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__parser___parser_nodes___AClassdef(val_t p0){
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) syntax___mmbuilder___AExpr___get_easy_stype},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 0 /* 81: ADebugTypeExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___ADebugTypeExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) syntax___typing___AExpr___warn_parentheses},
+  {(bigint) parser___parser_prod___ADebugTypeExpr___empty_init},
+  {(bigint) parser___parser_prod___ADebugTypeExpr___init_adebugtypeexpr},
+  {(bigint) 4 /* 91: ADebugTypeExpr < ADebugTypeExpr: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ADebugTypeExpr___n_kwdebug},
+  {(bigint) parser___parser_nodes___ADebugTypeExpr___n_kwtype},
+  {(bigint) parser___parser_nodes___ADebugTypeExpr___n_expr},
+  {(bigint) parser___parser_nodes___ADebugTypeExpr___n_type},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ADebugTypeExpr::_parent */
+/* 3: Attribute ADebugTypeExpr::_location */
+/* 4: Attribute ADebugTypeExpr::_first_location */
+/* 5: Attribute ADebugTypeExpr::_last_location */
+/* 6: Attribute ADebugTypeExpr::_n_annotations */
+/* Instance Hole :( */
+/* 8: Attribute ADebugTypeExpr::_is_typed */
+/* 9: Attribute ADebugTypeExpr::_stype */
+/* 10: Attribute ADebugTypeExpr::_if_true_flow_ctx */
+/* 11: Attribute ADebugTypeExpr::_if_false_flow_ctx */
+/* 12: Attribute ADebugTypeExpr::_n_kwdebug */
+/* 13: Attribute ADebugTypeExpr::_n_kwtype */
+/* 14: Attribute ADebugTypeExpr::_n_expr */
+/* 15: Attribute ADebugTypeExpr::_n_type */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ADebugTypeExpr[] = "init var of ADebugTypeExpr";
+void INIT_ATTRIBUTES__parser___parser_nodes___ADebugTypeExpr(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__parser___parser_nodes___AClassdef;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ADebugTypeExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//syntax_base.nit:533 */
+  /* parser/parser_nodes.nit:56 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_syntax___syntax_base___AClassdef____next_node(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:365 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AClassdef(void)
+val_t NEW_parser___parser_nodes___ADebugTypeExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 8);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AClassdef;
+  obj = alloc(sizeof(val_t) * 16);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ADebugTypeExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AClassdef(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___ADebugTypeExpr[] = "check new ADebugTypeExpr";
+void CHECKNEW_parser___parser_nodes___ADebugTypeExpr(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
   fra.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___parser_nodes___AClassdef;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___ADebugTypeExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_syntax___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___parser_nodes___ADebugTypeExpr____n_kwdebug(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwdebug", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ADebugTypeExpr____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___parser_nodes___ADebugTypeExpr____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___parser_nodes___ADebugTypeExpr____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;
 }
-val_t NEW_AClassdef_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ADebugTypeExpr_parser___parser_prod___ADebugTypeExpr___empty_init[] = "new ADebugTypeExpr parser_prod::ADebugTypeExpr::empty_init";
+val_t NEW_ADebugTypeExpr_parser___parser_prod___ADebugTypeExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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_AClassdef_parser___parser_nodes___ANode___init;
+  fra.me.line = 7913;
+  fra.me.meth = LOCATE_NEW_ADebugTypeExpr_parser___parser_prod___ADebugTypeExpr___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:7913 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ADebugTypeExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ADebugTypeExpr(fra.me.REG[0]);
+  parser___parser_prod___ADebugTypeExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ADebugTypeExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_ADebugTypeExpr_parser___parser_prod___ADebugTypeExpr___init_adebugtypeexpr[] = "new ADebugTypeExpr parser_prod::ADebugTypeExpr::init_adebugtypeexpr";
+val_t NEW_ADebugTypeExpr_parser___parser_prod___ADebugTypeExpr___init_adebugtypeexpr(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 = 7915;
+  fra.me.meth = LOCATE_NEW_ADebugTypeExpr_parser___parser_prod___ADebugTypeExpr___init_adebugtypeexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
   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] = NEW_parser___parser_nodes___AClassdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___AClassdef(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AClassdef(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  /* parser/parser_prod.nit:7915 */
+  fra.me.REG[4] = NEW_parser___parser_nodes___ADebugTypeExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ADebugTypeExpr(fra.me.REG[4]);
+  parser___parser_prod___ADebugTypeExpr___init_adebugtypeexpr(fra.me.REG[4], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], init_table);
+  CHECKNEW_parser___parser_nodes___ADebugTypeExpr(fra.me.REG[4]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[4];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AStdClassdef[98] = {
-  {(bigint) 3283 /* 0: Identity */},
-  {(bigint) 16 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AStdClassdef" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AStdClassdef < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AStdClassdef < ANode: superclass typecheck marker */},
+static const char LOCATE_NEW_ADebugTypeExpr_parser___parser_nodes___ANode___init[] = "new ADebugTypeExpr parser_nodes::ANode::init";
+val_t NEW_ADebugTypeExpr_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_ADebugTypeExpr_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ADebugTypeExpr();
+  INIT_ATTRIBUTES__parser___parser_nodes___ADebugTypeExpr(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ADebugTypeExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___AListExprs[81] = {
+  {(bigint) 4415 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AListExprs" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AListExprs < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AListExprs < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AListExprs < Prod: superclass typecheck marker */},
+  {(bigint) 3807 /* 6: AListExprs < AExprs: superclass typecheck marker */},
+  {(bigint) 4415 /* 7: AListExprs < AListExprs: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AStdClassdef < Prod: superclass typecheck marker */},
-  {(bigint) 3131 /* 7: AStdClassdef < AClassdef: superclass typecheck marker */},
-  {(bigint) 3283 /* 8: AStdClassdef < AStdClassdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -43022,7 +86043,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AStdClassdef[98] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AStdClassdef < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: AListExprs < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -43038,6 +86059,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AStdClassdef[98] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -43051,241 +86074,174 @@ const classtable_elt_t VFT_parser___parser_nodes___AStdClassdef[98] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AClassdef___accept_class_builder},
-  {(bigint) syntax___mmbuilder___AStdClassdef___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___AStdClassdef___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___mmbuilder___AClassdef___accept_abs_syntax_visitor},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AStdClassdef___replace_child},
+  {(bigint) parser___parser_prod___AListExprs___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AStdClassdef___visit_all},
-  {(bigint) 1 /* 60: AStdClassdef < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AListExprs___visit_all},
+  {(bigint) 2 /* 63: AListExprs < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___AStdClassdef___hot_location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___AClassdef___accept_typing},
+  {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AStdClassdef < Prod: superclass init_table position */},
+  {(bigint) 1 /* 72: AListExprs < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___AStdClassdef___name},
-  {(bigint) syntax___mmbuilder___AStdClassdef___arity},
-  {(bigint) syntax___mmbuilder___AStdClassdef___visibility_level},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___AClassdef___build_class_introduction},
-  {(bigint) syntax___mmbuilder___AClassdef___build_class_refinement},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) syntax___mmbuilder___AClassdef___local_class},
-  {(bigint) syntax___syntax_base___AClassdef___next_node},
-  {(bigint) syntax___syntax_base___AClassdef___next_node__eq},
-  {(bigint) 3 /* 83: AStdClassdef < AClassdef: superclass init_table position */},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___AClassdef___accept_class_verifier},
-  {(bigint) parser___parser_prod___AStdClassdef___empty_init},
-  {(bigint) parser___parser_prod___AStdClassdef___init_astdclassdef},
-  {(bigint) 4 /* 89: AStdClassdef < AStdClassdef: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AStdClassdef___n_doc},
-  {(bigint) parser___parser_nodes___AStdClassdef___n_kwredef},
-  {(bigint) parser___parser_nodes___AStdClassdef___n_visibility},
-  {(bigint) parser___parser_nodes___AStdClassdef___n_classkind},
-  {(bigint) parser___parser_nodes___AStdClassdef___n_id},
-  {(bigint) parser___parser_nodes___AStdClassdef___n_formaldefs},
-  {(bigint) parser___parser_nodes___AStdClassdef___n_superclasses},
-  {(bigint) parser___parser_nodes___AStdClassdef___n_propdefs},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___syntax_base___AExprs___to_a},
+  {(bigint) 0 /* 76: AListExprs < AExprs: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AExprs___n_exprs},
+  {(bigint) parser___parser_prod___AListExprs___empty_init},
+  {(bigint) parser___parser_prod___AListExprs___init_alistexprs},
+  {(bigint) 4 /* 80: AListExprs < AListExprs: superclass init_table position */},
 };
 /* 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__parser___parser_nodes___AStdClassdef(val_t p0){
+/* 2: Attribute AListExprs::_parent */
+/* 3: Attribute AListExprs::_location */
+/* 4: Attribute AListExprs::_first_location */
+/* 5: Attribute AListExprs::_last_location */
+/* 6: Attribute AListExprs::_n_annotations */
+/* 7: Attribute AListExprs::_n_exprs */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AListExprs[] = "init var of AListExprs";
+void INIT_ATTRIBUTES__parser___parser_nodes___AListExprs(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__parser___parser_nodes___AStdClassdef;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AListExprs;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./parser//parser_nodes.nit:364 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AStdClassdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:365 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AStdClassdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:368 */
+  /* parser/parser_nodes.nit:56 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AStdClassdef____n_id(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:369 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___AStdClassdef____n_formaldefs(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:370 */
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:1139 */
   fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___AStdClassdef____n_superclasses(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:371 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___AStdClassdef____n_propdefs(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//syntax_base.nit:533 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_syntax___syntax_base___AClassdef____next_node(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AExprs____n_exprs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AStdClassdef(void)
+val_t NEW_parser___parser_nodes___AListExprs(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 16);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AStdClassdef;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AListExprs;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AStdClassdef(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AListExprs[] = "check new AListExprs";
+void CHECKNEW_parser___parser_nodes___AListExprs(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___parser_nodes___AStdClassdef;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AListExprs;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___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___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___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___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___parser_nodes___AStdClassdef____n_propdefs(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AExprs____n_exprs(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AStdClassdef_parser___parser_prod___AStdClassdef___empty_init(void){
+static const char LOCATE_NEW_AListExprs_parser___parser_prod___AListExprs___empty_init[] = "new AListExprs parser_prod::AListExprs::empty_init";
+val_t NEW_AListExprs_parser___parser_prod___AListExprs___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___parser_prod___AStdClassdef___empty_init;
+  fra.me.line = 7986;
+  fra.me.meth = LOCATE_NEW_AListExprs_parser___parser_prod___AListExprs___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:438 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AStdClassdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___AStdClassdef(fra.me.REG[0]);
-  parser___parser_prod___AStdClassdef___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AStdClassdef(fra.me.REG[0]);
+  /* parser/parser_prod.nit:7986 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AListExprs();
+  INIT_ATTRIBUTES__parser___parser_nodes___AListExprs(fra.me.REG[0]);
+  parser___parser_prod___AListExprs___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AListExprs(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AStdClassdef_parser___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;
+static const char LOCATE_NEW_AListExprs_parser___parser_prod___AListExprs___init_alistexprs[] = "new AListExprs parser_prod::AListExprs::init_alistexprs";
+val_t NEW_AListExprs_parser___parser_prod___AListExprs___init_alistexprs(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 = 440;
-  fra.me.meth = LOCATE_NEW_AStdClassdef_parser___parser_prod___AStdClassdef___init_astdclassdef;
+  fra.me.line = 7988;
+  fra.me.meth = LOCATE_NEW_AListExprs_parser___parser_prod___AListExprs___init_alistexprs;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 9;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___AStdClassdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___AStdClassdef(fra.me.REG[8]);
-  parser___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_parser___parser_nodes___AStdClassdef(fra.me.REG[8]);
+  /* parser/parser_prod.nit:7988 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___AListExprs();
+  INIT_ATTRIBUTES__parser___parser_nodes___AListExprs(fra.me.REG[1]);
+  parser___parser_prod___AListExprs___init_alistexprs(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AListExprs(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[8];
+  return fra.me.REG[1];
 }
-val_t NEW_AStdClassdef_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AListExprs_parser___parser_nodes___ANode___init[] = "new AListExprs parser_nodes::ANode::init";
+val_t NEW_AListExprs_parser___parser_nodes___ANode___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_AStdClassdef_parser___parser_nodes___ANode___init;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_AListExprs_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___AStdClassdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___AStdClassdef(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AStdClassdef(fra.me.REG[1]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AListExprs();
+  INIT_ATTRIBUTES__parser___parser_nodes___AListExprs(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AListExprs(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ATopClassdef[89] = {
-  {(bigint) 3263 /* 0: Identity */},
-  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ATopClassdef" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ATopClassdef < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ATopClassdef < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___parser_nodes___AParExprs[83] = {
+  {(bigint) 4375 /* 0: Identity */},
+  {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AParExprs" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AParExprs < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AParExprs < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AParExprs < Prod: superclass typecheck marker */},
+  {(bigint) 3807 /* 6: AParExprs < AExprs: superclass typecheck marker */},
+  {(bigint) 4375 /* 7: AParExprs < AParExprs: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: ATopClassdef < Prod: superclass typecheck marker */},
-  {(bigint) 3131 /* 7: ATopClassdef < AClassdef: superclass typecheck marker */},
-  {(bigint) 3263 /* 8: ATopClassdef < ATopClassdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -43295,7 +86251,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ATopClassdef[89] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: ATopClassdef < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: AParExprs < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -43311,6 +86267,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ATopClassdef[89] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -43324,176 +86282,192 @@ const classtable_elt_t VFT_parser___parser_nodes___ATopClassdef[89] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AClassdef___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___AClassdef___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___mmbuilder___AClassdef___accept_abs_syntax_visitor},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ATopClassdef___replace_child},
+  {(bigint) parser___parser_prod___AParExprs___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ATopClassdef___visit_all},
-  {(bigint) 1 /* 60: ATopClassdef < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AParExprs___visit_all},
+  {(bigint) 2 /* 63: AParExprs < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___AClassdef___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___AParExprs___after_typing},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: ATopClassdef < Prod: superclass init_table position */},
+  {(bigint) 1 /* 72: AParExprs < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___ATopClassdef___name},
-  {(bigint) syntax___mmbuilder___AClassdef___arity},
-  {(bigint) syntax___mmbuilder___AClassdef___visibility_level},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___AClassdef___build_class_introduction},
-  {(bigint) syntax___mmbuilder___AClassdef___build_class_refinement},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) syntax___mmbuilder___AClassdef___local_class},
-  {(bigint) syntax___syntax_base___AClassdef___next_node},
-  {(bigint) syntax___syntax_base___AClassdef___next_node__eq},
-  {(bigint) 3 /* 83: ATopClassdef < AClassdef: superclass init_table position */},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) parser___parser_prod___ATopClassdef___empty_init},
-  {(bigint) parser___parser_prod___ATopClassdef___init_atopclassdef},
-  {(bigint) 4 /* 87: ATopClassdef < ATopClassdef: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ATopClassdef___n_propdefs},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___syntax_base___AExprs___to_a},
+  {(bigint) 0 /* 76: AParExprs < AExprs: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AExprs___n_exprs},
+  {(bigint) parser___parser_prod___AParExprs___empty_init},
+  {(bigint) parser___parser_prod___AParExprs___init_aparexprs},
+  {(bigint) 4 /* 80: AParExprs < AParExprs: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AParExprs___n_opar},
+  {(bigint) parser___parser_nodes___AParExprs___n_cpar},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___ATopClassdef(val_t p0){
+/* 2: Attribute AParExprs::_parent */
+/* 3: Attribute AParExprs::_location */
+/* 4: Attribute AParExprs::_first_location */
+/* 5: Attribute AParExprs::_last_location */
+/* 6: Attribute AParExprs::_n_annotations */
+/* 7: Attribute AParExprs::_n_exprs */
+/* 8: Attribute AParExprs::_n_opar */
+/* 9: Attribute AParExprs::_n_cpar */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AParExprs[] = "init var of AParExprs";
+void INIT_ATTRIBUTES__parser___parser_nodes___AParExprs(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__parser___parser_nodes___ATopClassdef;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AParExprs;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./parser//parser_nodes.nit:376 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___ATopClassdef____n_propdefs(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//syntax_base.nit:533 */
+  /* parser/parser_nodes.nit:56 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_syntax___syntax_base___AClassdef____next_node(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:1139 */
+  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  ATTR_parser___parser_nodes___AExprs____n_exprs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___ATopClassdef(void)
+val_t NEW_parser___parser_nodes___AParExprs(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 9);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ATopClassdef;
+  obj = alloc(sizeof(val_t) * 10);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AParExprs;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___ATopClassdef(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AParExprs[] = "check new AParExprs";
+void CHECKNEW_parser___parser_nodes___AParExprs(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___parser_nodes___ATopClassdef;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AParExprs;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ATopClassdef____n_propdefs(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AExprs____n_exprs(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AParExprs____n_opar(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_opar", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AParExprs____n_cpar(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_cpar", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ATopClassdef_parser___parser_prod___ATopClassdef___empty_init(void){
+static const char LOCATE_NEW_AParExprs_parser___parser_prod___AParExprs___empty_init[] = "new AParExprs parser_prod::AParExprs::empty_init";
+val_t NEW_AParExprs_parser___parser_prod___AParExprs___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___parser_prod___ATopClassdef___empty_init;
+  fra.me.line = 8024;
+  fra.me.meth = LOCATE_NEW_AParExprs_parser___parser_prod___AParExprs___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:600 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ATopClassdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___ATopClassdef(fra.me.REG[0]);
-  parser___parser_prod___ATopClassdef___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ATopClassdef(fra.me.REG[0]);
+  /* parser/parser_prod.nit:8024 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AParExprs();
+  INIT_ATTRIBUTES__parser___parser_nodes___AParExprs(fra.me.REG[0]);
+  parser___parser_prod___AParExprs___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AParExprs(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AParExprs_parser___parser_prod___AParExprs___init_aparexprs[] = "new AParExprs parser_prod::AParExprs::init_aparexprs";
+val_t NEW_AParExprs_parser___parser_prod___AParExprs___init_aparexprs(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 = 602;
-  fra.me.meth = LOCATE_NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef;
+  fra.me.line = 8026;
+  fra.me.meth = LOCATE_NEW_AParExprs_parser___parser_prod___AParExprs___init_aparexprs;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   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;
-  /* ./parser//parser_prod.nit:602 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___ATopClassdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___ATopClassdef(fra.me.REG[1]);
-  parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ATopClassdef(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* parser/parser_prod.nit:8026 */
+  fra.me.REG[3] = NEW_parser___parser_nodes___AParExprs();
+  INIT_ATTRIBUTES__parser___parser_nodes___AParExprs(fra.me.REG[3]);
+  parser___parser_prod___AParExprs___init_aparexprs(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_parser___parser_nodes___AParExprs(fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[3];
 }
-val_t NEW_ATopClassdef_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AParExprs_parser___parser_nodes___ANode___init[] = "new AParExprs parser_nodes::ANode::init";
+val_t NEW_AParExprs_parser___parser_nodes___ANode___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_ATopClassdef_parser___parser_nodes___ANode___init;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_AParExprs_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___ATopClassdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___ATopClassdef(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ATopClassdef(fra.me.REG[1]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AParExprs();
+  INIT_ATTRIBUTES__parser___parser_nodes___AParExprs(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AParExprs(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AMainClassdef[89] = {
-  {(bigint) 3379 /* 0: Identity */},
-  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AMainClassdef" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AMainClassdef < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AMainClassdef < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___parser_nodes___ABraExprs[83] = {
+  {(bigint) 4543 /* 0: Identity */},
+  {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ABraExprs" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ABraExprs < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: ABraExprs < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: ABraExprs < Prod: superclass typecheck marker */},
+  {(bigint) 3807 /* 6: ABraExprs < AExprs: superclass typecheck marker */},
+  {(bigint) 4543 /* 7: ABraExprs < ABraExprs: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AMainClassdef < Prod: superclass typecheck marker */},
-  {(bigint) 3131 /* 7: AMainClassdef < AClassdef: superclass typecheck marker */},
-  {(bigint) 3379 /* 8: AMainClassdef < AMainClassdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -43503,7 +86477,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AMainClassdef[89] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AMainClassdef < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: ABraExprs < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -43519,6 +86493,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AMainClassdef[89] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -43532,175 +86508,191 @@ const classtable_elt_t VFT_parser___parser_nodes___AMainClassdef[89] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AClassdef___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___AClassdef___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___mmbuilder___AClassdef___accept_abs_syntax_visitor},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AMainClassdef___replace_child},
+  {(bigint) parser___parser_prod___ABraExprs___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AMainClassdef___visit_all},
-  {(bigint) 1 /* 60: AMainClassdef < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___ABraExprs___visit_all},
+  {(bigint) 2 /* 63: ABraExprs < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___AClassdef___accept_typing},
+  {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AMainClassdef < Prod: superclass init_table position */},
+  {(bigint) 1 /* 72: ABraExprs < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___AMainClassdef___name},
-  {(bigint) syntax___mmbuilder___AClassdef___arity},
-  {(bigint) syntax___mmbuilder___AClassdef___visibility_level},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___AClassdef___build_class_introduction},
-  {(bigint) syntax___mmbuilder___AClassdef___build_class_refinement},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) syntax___mmbuilder___AClassdef___local_class},
-  {(bigint) syntax___syntax_base___AClassdef___next_node},
-  {(bigint) syntax___syntax_base___AClassdef___next_node__eq},
-  {(bigint) 3 /* 83: AMainClassdef < AClassdef: superclass init_table position */},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) parser___parser_prod___AMainClassdef___empty_init},
-  {(bigint) parser___parser_prod___AMainClassdef___init_amainclassdef},
-  {(bigint) 4 /* 87: AMainClassdef < AMainClassdef: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AMainClassdef___n_propdefs},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___syntax_base___AExprs___to_a},
+  {(bigint) 0 /* 76: ABraExprs < AExprs: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AExprs___n_exprs},
+  {(bigint) parser___parser_prod___ABraExprs___empty_init},
+  {(bigint) parser___parser_prod___ABraExprs___init_abraexprs},
+  {(bigint) 4 /* 80: ABraExprs < ABraExprs: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ABraExprs___n_obra},
+  {(bigint) parser___parser_nodes___ABraExprs___n_cbra},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AMainClassdef(val_t p0){
+/* 2: Attribute ABraExprs::_parent */
+/* 3: Attribute ABraExprs::_location */
+/* 4: Attribute ABraExprs::_first_location */
+/* 5: Attribute ABraExprs::_last_location */
+/* 6: Attribute ABraExprs::_n_annotations */
+/* 7: Attribute ABraExprs::_n_exprs */
+/* 8: Attribute ABraExprs::_n_obra */
+/* 9: Attribute ABraExprs::_n_cbra */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ABraExprs[] = "init var of ABraExprs";
+void INIT_ATTRIBUTES__parser___parser_nodes___ABraExprs(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__parser___parser_nodes___AMainClassdef;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ABraExprs;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./parser//parser_nodes.nit:380 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___AMainClassdef____n_propdefs(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//syntax_base.nit:533 */
+  /* parser/parser_nodes.nit:56 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_syntax___syntax_base___AClassdef____next_node(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:1139 */
+  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  ATTR_parser___parser_nodes___AExprs____n_exprs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AMainClassdef(void)
+val_t NEW_parser___parser_nodes___ABraExprs(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 9);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AMainClassdef;
+  obj = alloc(sizeof(val_t) * 10);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ABraExprs;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AMainClassdef(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___ABraExprs[] = "check new ABraExprs";
+void CHECKNEW_parser___parser_nodes___ABraExprs(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___parser_nodes___AMainClassdef;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___ABraExprs;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AMainClassdef____n_propdefs(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AExprs____n_exprs(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABraExprs____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___parser_nodes___ABraExprs____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;
 }
-val_t NEW_AMainClassdef_parser___parser_prod___AMainClassdef___empty_init(void){
+static const char LOCATE_NEW_ABraExprs_parser___parser_prod___ABraExprs___empty_init[] = "new ABraExprs parser_prod::ABraExprs::empty_init";
+val_t NEW_ABraExprs_parser___parser_prod___ABraExprs___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___parser_prod___AMainClassdef___empty_init;
+  fra.me.line = 8090;
+  fra.me.meth = LOCATE_NEW_ABraExprs_parser___parser_prod___ABraExprs___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:638 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AMainClassdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___AMainClassdef(fra.me.REG[0]);
-  parser___parser_prod___AMainClassdef___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AMainClassdef(fra.me.REG[0]);
+  /* parser/parser_prod.nit:8090 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ABraExprs();
+  INIT_ATTRIBUTES__parser___parser_nodes___ABraExprs(fra.me.REG[0]);
+  parser___parser_prod___ABraExprs___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ABraExprs(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AMainClassdef_parser___parser_prod___AMainClassdef___init_amainclassdef(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ABraExprs_parser___parser_prod___ABraExprs___init_abraexprs[] = "new ABraExprs parser_prod::ABraExprs::init_abraexprs";
+val_t NEW_ABraExprs_parser___parser_prod___ABraExprs___init_abraexprs(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 = 640;
-  fra.me.meth = LOCATE_NEW_AMainClassdef_parser___parser_prod___AMainClassdef___init_amainclassdef;
+  fra.me.line = 8092;
+  fra.me.meth = LOCATE_NEW_ABraExprs_parser___parser_prod___ABraExprs___init_abraexprs;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   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;
-  /* ./parser//parser_prod.nit:640 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___AMainClassdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___AMainClassdef(fra.me.REG[1]);
-  parser___parser_prod___AMainClassdef___init_amainclassdef(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AMainClassdef(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* parser/parser_prod.nit:8092 */
+  fra.me.REG[3] = NEW_parser___parser_nodes___ABraExprs();
+  INIT_ATTRIBUTES__parser___parser_nodes___ABraExprs(fra.me.REG[3]);
+  parser___parser_prod___ABraExprs___init_abraexprs(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_parser___parser_nodes___ABraExprs(fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[3];
 }
-val_t NEW_AMainClassdef_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ABraExprs_parser___parser_nodes___ANode___init[] = "new ABraExprs parser_nodes::ANode::init";
+val_t NEW_ABraExprs_parser___parser_nodes___ANode___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_AMainClassdef_parser___parser_nodes___ANode___init;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_ABraExprs_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___AMainClassdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___AMainClassdef(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AMainClassdef(fra.me.REG[1]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ABraExprs();
+  INIT_ATTRIBUTES__parser___parser_nodes___ABraExprs(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ABraExprs(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AClasskind[77] = {
-  {(bigint) 3127 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AClasskind" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AClasskind < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AClasskind < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___parser_nodes___APlusAssignOp[81] = {
+  {(bigint) 4367 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "APlusAssignOp" /* 2: Class Name */},
+  {(bigint) 3 /* 3: APlusAssignOp < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: APlusAssignOp < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: APlusAssignOp < Prod: superclass typecheck marker */},
+  {(bigint) 3843 /* 6: APlusAssignOp < AAssignOp: superclass typecheck marker */},
+  {(bigint) 4367 /* 7: APlusAssignOp < APlusAssignOp: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AClasskind < Prod: superclass typecheck marker */},
-  {(bigint) 3127 /* 7: AClasskind < AClasskind: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -43711,7 +86703,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AClasskind[77] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AClasskind < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: APlusAssignOp < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -43727,6 +86719,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AClasskind[77] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -43750,94 +86744,161 @@ const classtable_elt_t VFT_parser___parser_nodes___AClasskind[77] = {
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ANode___replace_child},
+  {(bigint) parser___parser_prod___APlusAssignOp___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ANode___visit_all},
-  {(bigint) 1 /* 60: AClasskind < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___APlusAssignOp___visit_all},
+  {(bigint) 2 /* 63: APlusAssignOp < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AClasskind < Prod: superclass init_table position */},
+  {(bigint) 1 /* 72: APlusAssignOp < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___AClasskind___is_interface},
-  {(bigint) syntax___mmbuilder___AClasskind___is_enum},
-  {(bigint) syntax___mmbuilder___AClasskind___is_abstract},
-  {(bigint) syntax___mmbuilder___AClasskind___is_extern},
-  {(bigint) 3 /* 76: AClasskind < AClasskind: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___typing___APlusAssignOp___method_name},
+  {(bigint) 0 /* 76: APlusAssignOp < AAssignOp: superclass init_table position */},
+  {(bigint) parser___parser_prod___APlusAssignOp___empty_init},
+  {(bigint) parser___parser_prod___APlusAssignOp___init_aplusassignop},
+  {(bigint) 4 /* 79: APlusAssignOp < APlusAssignOp: superclass init_table position */},
+  {(bigint) parser___parser_nodes___APlusAssignOp___n_pluseq},
 };
 /* 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__parser___parser_nodes___AClasskind(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute APlusAssignOp::_parent */
+/* 3: Attribute APlusAssignOp::_location */
+/* 4: Attribute APlusAssignOp::_first_location */
+/* 5: Attribute APlusAssignOp::_last_location */
+/* 6: Attribute APlusAssignOp::_n_annotations */
+/* 7: Attribute APlusAssignOp::_n_pluseq */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___APlusAssignOp[] = "init var of APlusAssignOp";
+void INIT_ATTRIBUTES__parser___parser_nodes___APlusAssignOp(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__parser___parser_nodes___AClasskind;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___APlusAssignOp;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AClasskind(void)
+val_t NEW_parser___parser_nodes___APlusAssignOp(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AClasskind;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___APlusAssignOp;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AClasskind(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___APlusAssignOp[] = "check new APlusAssignOp";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___AClasskind;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___APlusAssignOp;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___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;
+}
+static const char LOCATE_NEW_APlusAssignOp_parser___parser_prod___APlusAssignOp___empty_init[] = "new APlusAssignOp parser_prod::APlusAssignOp::empty_init";
+val_t NEW_APlusAssignOp_parser___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 = 8156;
+  fra.me.meth = LOCATE_NEW_APlusAssignOp_parser___parser_prod___APlusAssignOp___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:8156 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___APlusAssignOp();
+  INIT_ATTRIBUTES__parser___parser_nodes___APlusAssignOp(fra.me.REG[0]);
+  parser___parser_prod___APlusAssignOp___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___APlusAssignOp(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-val_t NEW_AClasskind_parser___parser_nodes___ANode___init(val_t p0){
+static const char LOCATE_NEW_APlusAssignOp_parser___parser_prod___APlusAssignOp___init_aplusassignop[] = "new APlusAssignOp parser_prod::APlusAssignOp::init_aplusassignop";
+val_t NEW_APlusAssignOp_parser___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[4] = {0, 0, 0, 0};
+  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_AClasskind_parser___parser_nodes___ANode___init;
+  fra.me.line = 8158;
+  fra.me.meth = LOCATE_NEW_APlusAssignOp_parser___parser_prod___APlusAssignOp___init_aplusassignop;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___AClasskind();
-  INIT_ATTRIBUTES__parser___parser_nodes___AClasskind(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AClasskind(fra.me.REG[1]);
+  /* parser/parser_prod.nit:8158 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___APlusAssignOp();
+  INIT_ATTRIBUTES__parser___parser_nodes___APlusAssignOp(fra.me.REG[1]);
+  parser___parser_prod___APlusAssignOp___init_aplusassignop(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___APlusAssignOp(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AConcreteClasskind[81] = {
-  {(bigint) 3455 /* 0: Identity */},
-  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AConcreteClasskind" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AConcreteClasskind < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AConcreteClasskind < ANode: superclass typecheck marker */},
+static const char LOCATE_NEW_APlusAssignOp_parser___parser_nodes___ANode___init[] = "new APlusAssignOp parser_nodes::ANode::init";
+val_t NEW_APlusAssignOp_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_APlusAssignOp_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___APlusAssignOp();
+  INIT_ATTRIBUTES__parser___parser_nodes___APlusAssignOp(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___APlusAssignOp(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___AMinusAssignOp[81] = {
+  {(bigint) 4395 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AMinusAssignOp" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AMinusAssignOp < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AMinusAssignOp < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AMinusAssignOp < Prod: superclass typecheck marker */},
+  {(bigint) 3843 /* 6: AMinusAssignOp < AAssignOp: superclass typecheck marker */},
+  {(bigint) 4395 /* 7: AMinusAssignOp < AMinusAssignOp: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AConcreteClasskind < Prod: superclass typecheck marker */},
-  {(bigint) 3127 /* 7: AConcreteClasskind < AClasskind: superclass typecheck marker */},
-  {(bigint) 3455 /* 8: AConcreteClasskind < AConcreteClasskind: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -43847,7 +86908,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AConcreteClasskind[81] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AConcreteClasskind < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: AMinusAssignOp < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -43863,6 +86924,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AConcreteClasskind[81] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -43886,147 +86949,161 @@ const classtable_elt_t VFT_parser___parser_nodes___AConcreteClasskind[81] = {
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AConcreteClasskind___replace_child},
+  {(bigint) parser___parser_prod___AMinusAssignOp___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AConcreteClasskind___visit_all},
-  {(bigint) 1 /* 60: AConcreteClasskind < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AMinusAssignOp___visit_all},
+  {(bigint) 2 /* 63: AMinusAssignOp < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AConcreteClasskind < Prod: superclass init_table position */},
+  {(bigint) 1 /* 72: AMinusAssignOp < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___AClasskind___is_interface},
-  {(bigint) syntax___mmbuilder___AClasskind___is_enum},
-  {(bigint) syntax___mmbuilder___AClasskind___is_abstract},
-  {(bigint) syntax___mmbuilder___AClasskind___is_extern},
-  {(bigint) 3 /* 76: AConcreteClasskind < AClasskind: superclass init_table position */},
-  {(bigint) parser___parser_prod___AConcreteClasskind___empty_init},
-  {(bigint) parser___parser_prod___AConcreteClasskind___init_aconcreteclasskind},
-  {(bigint) 4 /* 79: AConcreteClasskind < AConcreteClasskind: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AConcreteClasskind___n_kwclass},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___typing___AMinusAssignOp___method_name},
+  {(bigint) 0 /* 76: AMinusAssignOp < AAssignOp: superclass init_table position */},
+  {(bigint) parser___parser_prod___AMinusAssignOp___empty_init},
+  {(bigint) parser___parser_prod___AMinusAssignOp___init_aminusassignop},
+  {(bigint) 4 /* 79: AMinusAssignOp < AMinusAssignOp: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AMinusAssignOp___n_minuseq},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AConcreteClasskind(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AMinusAssignOp::_parent */
+/* 3: Attribute AMinusAssignOp::_location */
+/* 4: Attribute AMinusAssignOp::_first_location */
+/* 5: Attribute AMinusAssignOp::_last_location */
+/* 6: Attribute AMinusAssignOp::_n_annotations */
+/* 7: Attribute AMinusAssignOp::_n_minuseq */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AMinusAssignOp[] = "init var of AMinusAssignOp";
+void INIT_ATTRIBUTES__parser___parser_nodes___AMinusAssignOp(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__parser___parser_nodes___AConcreteClasskind;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AMinusAssignOp;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AConcreteClasskind(void)
+val_t NEW_parser___parser_nodes___AMinusAssignOp(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AConcreteClasskind;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AMinusAssignOp;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AConcreteClasskind(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AMinusAssignOp[] = "check new AMinusAssignOp";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___AConcreteClasskind;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AMinusAssignOp;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AConcreteClasskind____n_kwclass(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AMinusAssignOp____n_minuseq(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwclass", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_minuseq", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AConcreteClasskind_parser___parser_prod___AConcreteClasskind___empty_init(void){
+static const char LOCATE_NEW_AMinusAssignOp_parser___parser_prod___AMinusAssignOp___empty_init[] = "new AMinusAssignOp parser_prod::AMinusAssignOp::empty_init";
+val_t NEW_AMinusAssignOp_parser___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 = 676;
-  fra.me.meth = LOCATE_NEW_AConcreteClasskind_parser___parser_prod___AConcreteClasskind___empty_init;
+  fra.me.line = 8187;
+  fra.me.meth = LOCATE_NEW_AMinusAssignOp_parser___parser_prod___AMinusAssignOp___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:676 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AConcreteClasskind();
-  INIT_ATTRIBUTES__parser___parser_nodes___AConcreteClasskind(fra.me.REG[0]);
-  parser___parser_prod___AConcreteClasskind___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AConcreteClasskind(fra.me.REG[0]);
+  /* parser/parser_prod.nit:8187 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AMinusAssignOp();
+  INIT_ATTRIBUTES__parser___parser_nodes___AMinusAssignOp(fra.me.REG[0]);
+  parser___parser_prod___AMinusAssignOp___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AMinusAssignOp(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AConcreteClasskind_parser___parser_prod___AConcreteClasskind___init_aconcreteclasskind(val_t p0){
+static const char LOCATE_NEW_AMinusAssignOp_parser___parser_prod___AMinusAssignOp___init_aminusassignop[] = "new AMinusAssignOp parser_prod::AMinusAssignOp::init_aminusassignop";
+val_t NEW_AMinusAssignOp_parser___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 = 678;
-  fra.me.meth = LOCATE_NEW_AConcreteClasskind_parser___parser_prod___AConcreteClasskind___init_aconcreteclasskind;
+  fra.me.line = 8189;
+  fra.me.meth = LOCATE_NEW_AMinusAssignOp_parser___parser_prod___AMinusAssignOp___init_aminusassignop;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___AConcreteClasskind();
-  INIT_ATTRIBUTES__parser___parser_nodes___AConcreteClasskind(fra.me.REG[1]);
-  parser___parser_prod___AConcreteClasskind___init_aconcreteclasskind(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AConcreteClasskind(fra.me.REG[1]);
+  /* parser/parser_prod.nit:8189 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___AMinusAssignOp();
+  INIT_ATTRIBUTES__parser___parser_nodes___AMinusAssignOp(fra.me.REG[1]);
+  parser___parser_prod___AMinusAssignOp___init_aminusassignop(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AMinusAssignOp(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-val_t NEW_AConcreteClasskind_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AMinusAssignOp_parser___parser_nodes___ANode___init[] = "new AMinusAssignOp parser_nodes::ANode::init";
+val_t NEW_AMinusAssignOp_parser___parser_nodes___ANode___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_AConcreteClasskind_parser___parser_nodes___ANode___init;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_AMinusAssignOp_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___AConcreteClasskind();
-  INIT_ATTRIBUTES__parser___parser_nodes___AConcreteClasskind(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AConcreteClasskind(fra.me.REG[1]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AMinusAssignOp();
+  INIT_ATTRIBUTES__parser___parser_nodes___AMinusAssignOp(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AMinusAssignOp(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AAbstractClasskind[82] = {
-  {(bigint) 3519 /* 0: Identity */},
-  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AAbstractClasskind" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AAbstractClasskind < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AAbstractClasskind < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___parser_nodes___AClosureDef[92] = {
+  {(bigint) 4519 /* 0: Identity */},
+  {(bigint) 18 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AClosureDef" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AClosureDef < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AClosureDef < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AClosureDef < Prod: superclass typecheck marker */},
+  {(bigint) 3775 /* 6: AClosureDef < ALabelable: superclass typecheck marker */},
+  {(bigint) 4519 /* 7: AClosureDef < AClosureDef: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AAbstractClasskind < Prod: superclass typecheck marker */},
-  {(bigint) 3127 /* 7: AAbstractClasskind < AClasskind: superclass typecheck marker */},
-  {(bigint) 3519 /* 8: AAbstractClasskind < AAbstractClasskind: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -44036,7 +87113,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAbstractClasskind[82] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AAbstractClasskind < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: AClosureDef < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -44052,6 +87129,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AAbstractClasskind[82] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -44075,156 +87154,223 @@ const classtable_elt_t VFT_parser___parser_nodes___AAbstractClasskind[82] = {
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AAbstractClasskind___replace_child},
+  {(bigint) parser___parser_prod___AClosureDef___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AAbstractClasskind___visit_all},
-  {(bigint) 1 /* 60: AAbstractClasskind < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AClosureDef___visit_all},
+  {(bigint) 2 /* 63: AClosureDef < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___AClosureDef___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___AClosureDef___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AAbstractClasskind < Prod: superclass init_table position */},
+  {(bigint) 1 /* 72: AClosureDef < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___AClasskind___is_interface},
-  {(bigint) syntax___mmbuilder___AClasskind___is_enum},
-  {(bigint) syntax___mmbuilder___AAbstractClasskind___is_abstract},
-  {(bigint) syntax___mmbuilder___AClasskind___is_extern},
-  {(bigint) 3 /* 76: AAbstractClasskind < AClasskind: superclass init_table position */},
-  {(bigint) parser___parser_prod___AAbstractClasskind___empty_init},
-  {(bigint) parser___parser_prod___AAbstractClasskind___init_aabstractclasskind},
-  {(bigint) 4 /* 79: AAbstractClasskind < AAbstractClasskind: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AAbstractClasskind___n_kwabstract},
-  {(bigint) parser___parser_nodes___AAbstractClasskind___n_kwclass},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) 0 /* 75: AClosureDef < ALabelable: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ALabelable___n_label},
+  {(bigint) syntax___icode_generation___AClosureDef___generate_iclosuredef},
+  {(bigint) syntax___typing___AClosureDef___escapable},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___AClosureDef___accept_typing2},
+  {(bigint) syntax___typing___AClosureDef___closure},
+  {(bigint) syntax___syntax_base___AClosureDef___variables},
+  {(bigint) syntax___syntax_base___AClosureDef___variables__eq},
+  {(bigint) parser___parser_prod___AClosureDef___empty_init},
+  {(bigint) parser___parser_prod___AClosureDef___init_aclosuredef},
+  {(bigint) 4 /* 86: AClosureDef < AClosureDef: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AClosureDef___n_bang},
+  {(bigint) parser___parser_nodes___AClosureDef___n_id},
+  {(bigint) parser___parser_nodes___AClosureDef___n_ids},
+  {(bigint) parser___parser_nodes___AClosureDef___n_kwdo},
+  {(bigint) parser___parser_nodes___AClosureDef___n_expr},
 };
 /* 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__parser___parser_nodes___AAbstractClasskind(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AClosureDef::_parent */
+/* 3: Attribute AClosureDef::_location */
+/* 4: Attribute AClosureDef::_first_location */
+/* 5: Attribute AClosureDef::_last_location */
+/* 6: Attribute AClosureDef::_n_annotations */
+/* 7: Attribute AClosureDef::_n_label */
+/* 8: Attribute AClosureDef::_iclosure_def */
+/* 9: Attribute AClosureDef::_closure */
+/* 10: Attribute AClosureDef::_escapable */
+/* 11: Attribute AClosureDef::_accept_typing2 */
+/* 12: Attribute AClosureDef::_variables */
+/* 13: Attribute AClosureDef::_n_bang */
+/* 14: Attribute AClosureDef::_n_id */
+/* 15: Attribute AClosureDef::_n_ids */
+/* 16: Attribute AClosureDef::_n_kwdo */
+/* 17: Attribute AClosureDef::_n_expr */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AClosureDef[] = "init var of AClosureDef";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___AAbstractClasskind;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AClosureDef;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:773 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:1174 */
+  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  ATTR_parser___parser_nodes___AClosureDef____n_ids(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:1175 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AClosureDef____n_kwdo(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:1176 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AClosureDef____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:2004 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___typing___AClosureDef____accept_typing2(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AAbstractClasskind(void)
+val_t NEW_parser___parser_nodes___AClosureDef(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 8);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AAbstractClasskind;
+  obj = alloc(sizeof(val_t) * 18);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AClosureDef;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AAbstractClasskind(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AClosureDef[] = "check new AClosureDef";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___AAbstractClasskind;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AClosureDef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAbstractClasskind____n_kwabstract(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AClosureDef____n_bang(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwabstract", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_bang", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAbstractClasskind____n_kwclass(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AClosureDef____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwclass", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___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);
+  }
+  REGB0 = TAG_Bool(ATTR_syntax___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);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AAbstractClasskind_parser___parser_prod___AAbstractClasskind___empty_init(void){
+static const char LOCATE_NEW_AClosureDef_parser___parser_prod___AClosureDef___empty_init[] = "new AClosureDef parser_prod::AClosureDef::empty_init";
+val_t NEW_AClosureDef_parser___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 = 707;
-  fra.me.meth = LOCATE_NEW_AAbstractClasskind_parser___parser_prod___AAbstractClasskind___empty_init;
+  fra.me.line = 8218;
+  fra.me.meth = LOCATE_NEW_AClosureDef_parser___parser_prod___AClosureDef___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:707 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AAbstractClasskind();
-  INIT_ATTRIBUTES__parser___parser_nodes___AAbstractClasskind(fra.me.REG[0]);
-  parser___parser_prod___AAbstractClasskind___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AAbstractClasskind(fra.me.REG[0]);
+  /* parser/parser_prod.nit:8218 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AClosureDef();
+  INIT_ATTRIBUTES__parser___parser_nodes___AClosureDef(fra.me.REG[0]);
+  parser___parser_prod___AClosureDef___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AClosureDef(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AAbstractClasskind_parser___parser_prod___AAbstractClasskind___init_aabstractclasskind(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_AClosureDef_parser___parser_prod___AClosureDef___init_aclosuredef[] = "new AClosureDef parser_prod::AClosureDef::init_aclosuredef";
+val_t NEW_AClosureDef_parser___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 = 709;
-  fra.me.meth = LOCATE_NEW_AAbstractClasskind_parser___parser_prod___AAbstractClasskind___init_aabstractclasskind;
+  fra.me.line = 8220;
+  fra.me.meth = LOCATE_NEW_AClosureDef_parser___parser_prod___AClosureDef___init_aclosuredef;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
   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;
-  /* ./parser//parser_prod.nit:709 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___AAbstractClasskind();
-  INIT_ATTRIBUTES__parser___parser_nodes___AAbstractClasskind(fra.me.REG[2]);
-  parser___parser_prod___AAbstractClasskind___init_aabstractclasskind(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___AAbstractClasskind(fra.me.REG[2]);
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  fra.me.REG[5] = p5;
+  /* parser/parser_prod.nit:8220 */
+  fra.me.REG[6] = NEW_parser___parser_nodes___AClosureDef();
+  INIT_ATTRIBUTES__parser___parser_nodes___AClosureDef(fra.me.REG[6]);
+  parser___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_parser___parser_nodes___AClosureDef(fra.me.REG[6]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[6];
 }
-val_t NEW_AAbstractClasskind_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AClosureDef_parser___parser_nodes___ANode___init[] = "new AClosureDef parser_nodes::ANode::init";
+val_t NEW_AClosureDef_parser___parser_nodes___ANode___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_AAbstractClasskind_parser___parser_nodes___ANode___init;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_AClosureDef_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___AAbstractClasskind();
-  INIT_ATTRIBUTES__parser___parser_nodes___AAbstractClasskind(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AAbstractClasskind(fra.me.REG[1]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AClosureDef();
+  INIT_ATTRIBUTES__parser___parser_nodes___AClosureDef(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AClosureDef(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AInterfaceClasskind[81] = {
-  {(bigint) 3399 /* 0: Identity */},
-  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AInterfaceClasskind" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AInterfaceClasskind < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AInterfaceClasskind < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___parser_nodes___ASimpleClosureId[81] = {
+  {(bigint) 4319 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ASimpleClosureId" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ASimpleClosureId < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: ASimpleClosureId < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: ASimpleClosureId < Prod: superclass typecheck marker */},
+  {(bigint) 3819 /* 6: ASimpleClosureId < AClosureId: superclass typecheck marker */},
+  {(bigint) 4319 /* 7: ASimpleClosureId < ASimpleClosureId: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AInterfaceClasskind < Prod: superclass typecheck marker */},
-  {(bigint) 3127 /* 7: AInterfaceClasskind < AClasskind: superclass typecheck marker */},
-  {(bigint) 3399 /* 8: AInterfaceClasskind < AInterfaceClasskind: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -44234,7 +87380,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AInterfaceClasskind[81] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AInterfaceClasskind < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: ASimpleClosureId < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -44250,6 +87396,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AInterfaceClasskind[81] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -44273,147 +87421,161 @@ const classtable_elt_t VFT_parser___parser_nodes___AInterfaceClasskind[81] = {
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AInterfaceClasskind___replace_child},
+  {(bigint) parser___parser_prod___ASimpleClosureId___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AInterfaceClasskind___visit_all},
-  {(bigint) 1 /* 60: AInterfaceClasskind < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___ASimpleClosureId___visit_all},
+  {(bigint) 2 /* 63: ASimpleClosureId < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AInterfaceClasskind < Prod: superclass init_table position */},
+  {(bigint) 1 /* 72: ASimpleClosureId < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___AInterfaceClasskind___is_interface},
-  {(bigint) syntax___mmbuilder___AClasskind___is_enum},
-  {(bigint) syntax___mmbuilder___AClasskind___is_abstract},
-  {(bigint) syntax___mmbuilder___AClasskind___is_extern},
-  {(bigint) 3 /* 76: AInterfaceClasskind < AClasskind: superclass init_table position */},
-  {(bigint) parser___parser_prod___AInterfaceClasskind___empty_init},
-  {(bigint) parser___parser_prod___AInterfaceClasskind___init_ainterfaceclasskind},
-  {(bigint) 4 /* 79: AInterfaceClasskind < AInterfaceClasskind: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AInterfaceClasskind___n_kwinterface},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___typing___ASimpleClosureId___to_symbol},
+  {(bigint) 0 /* 76: ASimpleClosureId < AClosureId: superclass init_table position */},
+  {(bigint) parser___parser_prod___ASimpleClosureId___empty_init},
+  {(bigint) parser___parser_prod___ASimpleClosureId___init_asimpleclosureid},
+  {(bigint) 4 /* 79: ASimpleClosureId < ASimpleClosureId: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ASimpleClosureId___n_id},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AInterfaceClasskind(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute ASimpleClosureId::_parent */
+/* 3: Attribute ASimpleClosureId::_location */
+/* 4: Attribute ASimpleClosureId::_first_location */
+/* 5: Attribute ASimpleClosureId::_last_location */
+/* 6: Attribute ASimpleClosureId::_n_annotations */
+/* 7: Attribute ASimpleClosureId::_n_id */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ASimpleClosureId[] = "init var of ASimpleClosureId";
+void INIT_ATTRIBUTES__parser___parser_nodes___ASimpleClosureId(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__parser___parser_nodes___AInterfaceClasskind;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ASimpleClosureId;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AInterfaceClasskind(void)
+val_t NEW_parser___parser_nodes___ASimpleClosureId(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AInterfaceClasskind;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ASimpleClosureId;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AInterfaceClasskind(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___ASimpleClosureId[] = "check new ASimpleClosureId";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___AInterfaceClasskind;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___ASimpleClosureId;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AInterfaceClasskind____n_kwinterface(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASimpleClosureId____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwinterface", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AInterfaceClasskind_parser___parser_prod___AInterfaceClasskind___empty_init(void){
+static const char LOCATE_NEW_ASimpleClosureId_parser___parser_prod___ASimpleClosureId___empty_init[] = "new ASimpleClosureId parser_prod::ASimpleClosureId::empty_init";
+val_t NEW_ASimpleClosureId_parser___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 = 752;
-  fra.me.meth = LOCATE_NEW_AInterfaceClasskind_parser___parser_prod___AInterfaceClasskind___empty_init;
+  fra.me.line = 8338;
+  fra.me.meth = LOCATE_NEW_ASimpleClosureId_parser___parser_prod___ASimpleClosureId___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:752 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AInterfaceClasskind();
-  INIT_ATTRIBUTES__parser___parser_nodes___AInterfaceClasskind(fra.me.REG[0]);
-  parser___parser_prod___AInterfaceClasskind___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AInterfaceClasskind(fra.me.REG[0]);
+  /* parser/parser_prod.nit:8338 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ASimpleClosureId();
+  INIT_ATTRIBUTES__parser___parser_nodes___ASimpleClosureId(fra.me.REG[0]);
+  parser___parser_prod___ASimpleClosureId___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ASimpleClosureId(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AInterfaceClasskind_parser___parser_prod___AInterfaceClasskind___init_ainterfaceclasskind(val_t p0){
+static const char LOCATE_NEW_ASimpleClosureId_parser___parser_prod___ASimpleClosureId___init_asimpleclosureid[] = "new ASimpleClosureId parser_prod::ASimpleClosureId::init_asimpleclosureid";
+val_t NEW_ASimpleClosureId_parser___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 = 754;
-  fra.me.meth = LOCATE_NEW_AInterfaceClasskind_parser___parser_prod___AInterfaceClasskind___init_ainterfaceclasskind;
+  fra.me.line = 8340;
+  fra.me.meth = LOCATE_NEW_ASimpleClosureId_parser___parser_prod___ASimpleClosureId___init_asimpleclosureid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___AInterfaceClasskind();
-  INIT_ATTRIBUTES__parser___parser_nodes___AInterfaceClasskind(fra.me.REG[1]);
-  parser___parser_prod___AInterfaceClasskind___init_ainterfaceclasskind(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AInterfaceClasskind(fra.me.REG[1]);
+  /* parser/parser_prod.nit:8340 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___ASimpleClosureId();
+  INIT_ATTRIBUTES__parser___parser_nodes___ASimpleClosureId(fra.me.REG[1]);
+  parser___parser_prod___ASimpleClosureId___init_asimpleclosureid(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ASimpleClosureId(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-val_t NEW_AInterfaceClasskind_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ASimpleClosureId_parser___parser_nodes___ANode___init[] = "new ASimpleClosureId parser_nodes::ANode::init";
+val_t NEW_ASimpleClosureId_parser___parser_nodes___ANode___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_AInterfaceClasskind_parser___parser_nodes___ANode___init;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_ASimpleClosureId_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___AInterfaceClasskind();
-  INIT_ATTRIBUTES__parser___parser_nodes___AInterfaceClasskind(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AInterfaceClasskind(fra.me.REG[1]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ASimpleClosureId();
+  INIT_ATTRIBUTES__parser___parser_nodes___ASimpleClosureId(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ASimpleClosureId(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AEnumClasskind[81] = {
-  {(bigint) 3451 /* 0: Identity */},
-  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AEnumClasskind" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AEnumClasskind < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AEnumClasskind < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___parser_nodes___ABreakClosureId[81] = {
+  {(bigint) 4531 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ABreakClosureId" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ABreakClosureId < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: ABreakClosureId < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: ABreakClosureId < Prod: superclass typecheck marker */},
+  {(bigint) 3819 /* 6: ABreakClosureId < AClosureId: superclass typecheck marker */},
+  {(bigint) 4531 /* 7: ABreakClosureId < ABreakClosureId: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AEnumClasskind < Prod: superclass typecheck marker */},
-  {(bigint) 3127 /* 7: AEnumClasskind < AClasskind: superclass typecheck marker */},
-  {(bigint) 3451 /* 8: AEnumClasskind < AEnumClasskind: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -44423,7 +87585,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AEnumClasskind[81] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AEnumClasskind < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: ABreakClosureId < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -44439,6 +87601,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AEnumClasskind[81] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -44462,147 +87626,161 @@ const classtable_elt_t VFT_parser___parser_nodes___AEnumClasskind[81] = {
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AEnumClasskind___replace_child},
+  {(bigint) parser___parser_prod___ABreakClosureId___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AEnumClasskind___visit_all},
-  {(bigint) 1 /* 60: AEnumClasskind < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___ABreakClosureId___visit_all},
+  {(bigint) 2 /* 63: ABreakClosureId < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AEnumClasskind < Prod: superclass init_table position */},
+  {(bigint) 1 /* 72: ABreakClosureId < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___AClasskind___is_interface},
-  {(bigint) syntax___mmbuilder___AEnumClasskind___is_enum},
-  {(bigint) syntax___mmbuilder___AClasskind___is_abstract},
-  {(bigint) syntax___mmbuilder___AClasskind___is_extern},
-  {(bigint) 3 /* 76: AEnumClasskind < AClasskind: superclass init_table position */},
-  {(bigint) parser___parser_prod___AEnumClasskind___empty_init},
-  {(bigint) parser___parser_prod___AEnumClasskind___init_aenumclasskind},
-  {(bigint) 4 /* 79: AEnumClasskind < AEnumClasskind: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AEnumClasskind___n_kwenum},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___typing___ABreakClosureId___to_symbol},
+  {(bigint) 0 /* 76: ABreakClosureId < AClosureId: superclass init_table position */},
+  {(bigint) parser___parser_prod___ABreakClosureId___empty_init},
+  {(bigint) parser___parser_prod___ABreakClosureId___init_abreakclosureid},
+  {(bigint) 4 /* 79: ABreakClosureId < ABreakClosureId: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ABreakClosureId___n_kwbreak},
 };
 /* 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__parser___parser_nodes___AEnumClasskind(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute ABreakClosureId::_parent */
+/* 3: Attribute ABreakClosureId::_location */
+/* 4: Attribute ABreakClosureId::_first_location */
+/* 5: Attribute ABreakClosureId::_last_location */
+/* 6: Attribute ABreakClosureId::_n_annotations */
+/* 7: Attribute ABreakClosureId::_n_kwbreak */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ABreakClosureId[] = "init var of ABreakClosureId";
+void INIT_ATTRIBUTES__parser___parser_nodes___ABreakClosureId(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__parser___parser_nodes___AEnumClasskind;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ABreakClosureId;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AEnumClasskind(void)
+val_t NEW_parser___parser_nodes___ABreakClosureId(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AEnumClasskind;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ABreakClosureId;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AEnumClasskind(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___ABreakClosureId[] = "check new ABreakClosureId";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___AEnumClasskind;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___ABreakClosureId;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AEnumClasskind____n_kwenum(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABreakClosureId____n_kwbreak(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwenum", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_kwbreak", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AEnumClasskind_parser___parser_prod___AEnumClasskind___empty_init(void){
+static const char LOCATE_NEW_ABreakClosureId_parser___parser_prod___ABreakClosureId___empty_init[] = "new ABreakClosureId parser_prod::ABreakClosureId::empty_init";
+val_t NEW_ABreakClosureId_parser___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 = 783;
-  fra.me.meth = LOCATE_NEW_AEnumClasskind_parser___parser_prod___AEnumClasskind___empty_init;
+  fra.me.line = 8369;
+  fra.me.meth = LOCATE_NEW_ABreakClosureId_parser___parser_prod___ABreakClosureId___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:783 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AEnumClasskind();
-  INIT_ATTRIBUTES__parser___parser_nodes___AEnumClasskind(fra.me.REG[0]);
-  parser___parser_prod___AEnumClasskind___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AEnumClasskind(fra.me.REG[0]);
+  /* parser/parser_prod.nit:8369 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ABreakClosureId();
+  INIT_ATTRIBUTES__parser___parser_nodes___ABreakClosureId(fra.me.REG[0]);
+  parser___parser_prod___ABreakClosureId___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ABreakClosureId(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AEnumClasskind_parser___parser_prod___AEnumClasskind___init_aenumclasskind(val_t p0){
+static const char LOCATE_NEW_ABreakClosureId_parser___parser_prod___ABreakClosureId___init_abreakclosureid[] = "new ABreakClosureId parser_prod::ABreakClosureId::init_abreakclosureid";
+val_t NEW_ABreakClosureId_parser___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 = 785;
-  fra.me.meth = LOCATE_NEW_AEnumClasskind_parser___parser_prod___AEnumClasskind___init_aenumclasskind;
+  fra.me.line = 8371;
+  fra.me.meth = LOCATE_NEW_ABreakClosureId_parser___parser_prod___ABreakClosureId___init_abreakclosureid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___parser_nodes___AEnumClasskind();
-  INIT_ATTRIBUTES__parser___parser_nodes___AEnumClasskind(fra.me.REG[1]);
-  parser___parser_prod___AEnumClasskind___init_aenumclasskind(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AEnumClasskind(fra.me.REG[1]);
+  /* parser/parser_prod.nit:8371 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___ABreakClosureId();
+  INIT_ATTRIBUTES__parser___parser_nodes___ABreakClosureId(fra.me.REG[1]);
+  parser___parser_prod___ABreakClosureId___init_abreakclosureid(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ABreakClosureId(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-val_t NEW_AEnumClasskind_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ABreakClosureId_parser___parser_nodes___ANode___init[] = "new ABreakClosureId parser_nodes::ANode::init";
+val_t NEW_ABreakClosureId_parser___parser_nodes___ANode___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_AEnumClasskind_parser___parser_nodes___ANode___init;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_ABreakClosureId_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___AEnumClasskind();
-  INIT_ATTRIBUTES__parser___parser_nodes___AEnumClasskind(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AEnumClasskind(fra.me.REG[1]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ABreakClosureId();
+  INIT_ATTRIBUTES__parser___parser_nodes___ABreakClosureId(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ABreakClosureId(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AExternClasskind[81] = {
-  {(bigint) 3435 /* 0: Identity */},
-  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AExternClasskind" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AExternClasskind < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AExternClasskind < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___parser_nodes___AModuleName[81] = {
+  {(bigint) 3763 /* 0: Identity */},
+  {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AModuleName" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AModuleName < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AModuleName < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AModuleName < Prod: superclass typecheck marker */},
+  {(bigint) 3763 /* 6: AModuleName < AModuleName: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AExternClasskind < Prod: superclass typecheck marker */},
-  {(bigint) 3127 /* 7: AExternClasskind < AClasskind: superclass typecheck marker */},
-  {(bigint) 3435 /* 8: AExternClasskind < AExternClasskind: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -44612,7 +87790,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternClasskind[81] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AExternClasskind < Object: superclass init_table position */},
+  {(bigint) 2 /* 19: AModuleName < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -44628,6 +87806,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternClasskind[81] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -44651,146 +87831,177 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternClasskind[81] = {
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AExternClasskind___replace_child},
+  {(bigint) parser___parser_prod___AModuleName___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AExternClasskind___visit_all},
-  {(bigint) 1 /* 60: AExternClasskind < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AModuleName___visit_all},
+  {(bigint) 1 /* 63: AModuleName < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AExternClasskind < Prod: superclass init_table position */},
+  {(bigint) 0 /* 72: AModuleName < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___AClasskind___is_interface},
-  {(bigint) syntax___mmbuilder___AClasskind___is_enum},
-  {(bigint) syntax___mmbuilder___AClasskind___is_abstract},
-  {(bigint) syntax___mmbuilder___AExternClasskind___is_extern},
-  {(bigint) 3 /* 76: AExternClasskind < AClasskind: superclass init_table position */},
-  {(bigint) parser___parser_prod___AExternClasskind___empty_init},
-  {(bigint) parser___parser_prod___AExternClasskind___init_aexternclasskind},
-  {(bigint) 4 /* 79: AExternClasskind < AExternClasskind: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AExternClasskind___n_kwextern},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_prod___AModuleName___empty_init},
+  {(bigint) parser___parser_prod___AModuleName___init_amodulename},
+  {(bigint) 3 /* 77: AModuleName < AModuleName: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AModuleName___n_quad},
+  {(bigint) parser___parser_nodes___AModuleName___n_path},
+  {(bigint) parser___parser_nodes___AModuleName___n_id},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AExternClasskind::_parent */
-/* 3: Attribute AExternClasskind::_location */
-/* 4: Attribute AExternClasskind::_first_location */
-/* 5: Attribute AExternClasskind::_last_location */
-/* 6: Attribute AExternClasskind::_n_kwextern */
-void INIT_ATTRIBUTES__parser___parser_nodes___AExternClasskind(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AModuleName::_parent */
+/* 3: Attribute AModuleName::_location */
+/* 4: Attribute AModuleName::_first_location */
+/* 5: Attribute AModuleName::_last_location */
+/* 6: Attribute AModuleName::_n_annotations */
+/* 7: Attribute AModuleName::_n_quad */
+/* 8: Attribute AModuleName::_n_path */
+/* 9: Attribute AModuleName::_n_id */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AModuleName[] = "init var of AModuleName";
+void INIT_ATTRIBUTES__parser___parser_nodes___AModuleName(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__parser___parser_nodes___AExternClasskind;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AModuleName;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:1192 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AModuleName____n_quad(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:1193 */
+  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  ATTR_parser___parser_nodes___AModuleName____n_path(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AExternClasskind(void)
+val_t NEW_parser___parser_nodes___AModuleName(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AExternClasskind;
+  obj = alloc(sizeof(val_t) * 10);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AModuleName;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AExternClasskind(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AModuleName[] = "check new AModuleName";
+void CHECKNEW_parser___parser_nodes___AModuleName(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___parser_nodes___AExternClasskind;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AModuleName;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AExternClasskind____n_kwextern(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AModuleName____n_path(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwextern", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_path", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AModuleName____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_AExternClasskind_parser___parser_prod___AExternClasskind___empty_init(void){
+static const char LOCATE_NEW_AModuleName_parser___parser_prod___AModuleName___empty_init[] = "new AModuleName parser_prod::AModuleName::empty_init";
+val_t NEW_AModuleName_parser___parser_prod___AModuleName___empty_init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[5] = {0, 0, 0, 0, 0};
+  int init_table[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_AExternClasskind_parser___parser_prod___AExternClasskind___empty_init;
+  fra.me.line = 8400;
+  fra.me.meth = LOCATE_NEW_AModuleName_parser___parser_prod___AModuleName___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:814 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AExternClasskind();
-  INIT_ATTRIBUTES__parser___parser_nodes___AExternClasskind(fra.me.REG[0]);
-  parser___parser_prod___AExternClasskind___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AExternClasskind(fra.me.REG[0]);
+  /* parser/parser_prod.nit:8400 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AModuleName();
+  INIT_ATTRIBUTES__parser___parser_nodes___AModuleName(fra.me.REG[0]);
+  parser___parser_prod___AModuleName___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AModuleName(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AExternClasskind_parser___parser_prod___AExternClasskind___init_aexternclasskind(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AModuleName_parser___parser_prod___AModuleName___init_amodulename[] = "new AModuleName parser_prod::AModuleName::init_amodulename";
+val_t NEW_AModuleName_parser___parser_prod___AModuleName___init_amodulename(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};
+  int init_table[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_AExternClasskind_parser___parser_prod___AExternClasskind___init_aexternclasskind;
+  fra.me.line = 8402;
+  fra.me.meth = LOCATE_NEW_AModuleName_parser___parser_prod___AModuleName___init_amodulename;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   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;
-  /* ./parser//parser_prod.nit:816 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___AExternClasskind();
-  INIT_ATTRIBUTES__parser___parser_nodes___AExternClasskind(fra.me.REG[1]);
-  parser___parser_prod___AExternClasskind___init_aexternclasskind(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AExternClasskind(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* parser/parser_prod.nit:8402 */
+  fra.me.REG[3] = NEW_parser___parser_nodes___AModuleName();
+  INIT_ATTRIBUTES__parser___parser_nodes___AModuleName(fra.me.REG[3]);
+  parser___parser_prod___AModuleName___init_amodulename(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_parser___parser_nodes___AModuleName(fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[3];
 }
-val_t NEW_AExternClasskind_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AModuleName_parser___parser_nodes___ANode___init[] = "new AModuleName parser_nodes::ANode::init";
+val_t NEW_AModuleName_parser___parser_nodes___ANode___init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[5] = {0, 0, 0, 0, 0};
+  int init_table[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_AExternClasskind_parser___parser_nodes___ANode___init;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_AModuleName_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___AExternClasskind();
-  INIT_ATTRIBUTES__parser___parser_nodes___AExternClasskind(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AExternClasskind(fra.me.REG[1]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AModuleName();
+  INIT_ATTRIBUTES__parser___parser_nodes___AModuleName(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AModuleName(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AFormaldef[79] = {
-  {(bigint) 3099 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AInLanguage[80] = {
+  {(bigint) 3783 /* 0: Identity */},
   {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AFormaldef" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AFormaldef < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AFormaldef < ANode: superclass typecheck marker */},
+  {(bigint) "AInLanguage" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AInLanguage < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AInLanguage < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AInLanguage < Prod: superclass typecheck marker */},
+  {(bigint) 3783 /* 6: AInLanguage < AInLanguage: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AFormaldef < Prod: superclass typecheck marker */},
-  {(bigint) 3099 /* 7: AFormaldef < AFormaldef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -44801,7 +88012,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AFormaldef[79] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AFormaldef < Object: superclass init_table position */},
+  {(bigint) 2 /* 19: AInLanguage < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -44817,6 +88028,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AFormaldef[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -44830,164 +88043,177 @@ const classtable_elt_t VFT_parser___parser_nodes___AFormaldef[79] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AFormaldef___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___AFormaldef___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AFormaldef___replace_child},
+  {(bigint) parser___parser_prod___AInLanguage___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AFormaldef___visit_all},
-  {(bigint) 1 /* 60: AFormaldef < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AInLanguage___visit_all},
+  {(bigint) 1 /* 63: AInLanguage < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AFormaldef < Prod: superclass init_table position */},
+  {(bigint) 0 /* 72: AInLanguage < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) parser___parser_prod___AFormaldef___empty_init},
-  {(bigint) parser___parser_prod___AFormaldef___init_aformaldef},
-  {(bigint) 3 /* 76: AFormaldef < AFormaldef: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AFormaldef___n_id},
-  {(bigint) parser___parser_nodes___AFormaldef___n_type},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_prod___AInLanguage___empty_init},
+  {(bigint) parser___parser_prod___AInLanguage___init_ainlanguage},
+  {(bigint) 3 /* 77: AInLanguage < AInLanguage: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AInLanguage___n_kwin},
+  {(bigint) parser___parser_nodes___AInLanguage___n_string},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AFormaldef(val_t p0){
+/* 2: Attribute AInLanguage::_parent */
+/* 3: Attribute AInLanguage::_location */
+/* 4: Attribute AInLanguage::_first_location */
+/* 5: Attribute AInLanguage::_last_location */
+/* 6: Attribute AInLanguage::_n_annotations */
+/* 7: Attribute AInLanguage::_n_kwin */
+/* 8: Attribute AInLanguage::_n_string */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AInLanguage[] = "init var of AInLanguage";
+void INIT_ATTRIBUTES__parser___parser_nodes___AInLanguage(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__parser___parser_nodes___AFormaldef;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AInLanguage;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./parser//parser_nodes.nit:407 */
+  /* parser/parser_nodes.nit:56 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AFormaldef____n_type(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AFormaldef(void)
+val_t NEW_parser___parser_nodes___AInLanguage(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 9);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AFormaldef;
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AInLanguage;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AFormaldef(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AInLanguage[] = "check new AInLanguage";
+void CHECKNEW_parser___parser_nodes___AInLanguage(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___parser_nodes___AFormaldef;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AInLanguage;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AFormaldef____n_id(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AInLanguage____n_kwin(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_kwin", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AInLanguage____n_string(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_string", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AFormaldef_parser___parser_prod___AFormaldef___empty_init(void){
+static const char LOCATE_NEW_AInLanguage_parser___parser_prod___AInLanguage___empty_init[] = "new AInLanguage parser_prod::AInLanguage::empty_init";
+val_t NEW_AInLanguage_parser___parser_prod___AInLanguage___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 = 845;
-  fra.me.meth = LOCATE_NEW_AFormaldef_parser___parser_prod___AFormaldef___empty_init;
+  fra.me.line = 8885;
+  fra.me.meth = LOCATE_NEW_AInLanguage_parser___parser_prod___AInLanguage___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:845 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AFormaldef();
-  INIT_ATTRIBUTES__parser___parser_nodes___AFormaldef(fra.me.REG[0]);
-  parser___parser_prod___AFormaldef___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AFormaldef(fra.me.REG[0]);
+  /* parser/parser_prod.nit:8885 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AInLanguage();
+  INIT_ATTRIBUTES__parser___parser_nodes___AInLanguage(fra.me.REG[0]);
+  parser___parser_prod___AInLanguage___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AInLanguage(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AFormaldef_parser___parser_prod___AFormaldef___init_aformaldef(val_t p0, val_t p1){
+static const char LOCATE_NEW_AInLanguage_parser___parser_prod___AInLanguage___init_ainlanguage[] = "new AInLanguage parser_prod::AInLanguage::init_ainlanguage";
+val_t NEW_AInLanguage_parser___parser_prod___AInLanguage___init_ainlanguage(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 = 847;
-  fra.me.meth = LOCATE_NEW_AFormaldef_parser___parser_prod___AFormaldef___init_aformaldef;
+  fra.me.line = 8887;
+  fra.me.meth = LOCATE_NEW_AInLanguage_parser___parser_prod___AInLanguage___init_ainlanguage;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   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:847 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___AFormaldef();
-  INIT_ATTRIBUTES__parser___parser_nodes___AFormaldef(fra.me.REG[2]);
-  parser___parser_prod___AFormaldef___init_aformaldef(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___AFormaldef(fra.me.REG[2]);
+  /* parser/parser_prod.nit:8887 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___AInLanguage();
+  INIT_ATTRIBUTES__parser___parser_nodes___AInLanguage(fra.me.REG[2]);
+  parser___parser_prod___AInLanguage___init_ainlanguage(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___AInLanguage(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-val_t NEW_AFormaldef_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AInLanguage_parser___parser_nodes___ANode___init[] = "new AInLanguage parser_nodes::ANode::init";
+val_t NEW_AInLanguage_parser___parser_nodes___ANode___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_AFormaldef_parser___parser_nodes___ANode___init;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_AInLanguage_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___AFormaldef();
-  INIT_ATTRIBUTES__parser___parser_nodes___AFormaldef(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AFormaldef(fra.me.REG[1]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AInLanguage();
+  INIT_ATTRIBUTES__parser___parser_nodes___AInLanguage(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AInLanguage(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ASuperclass[82] = {
-  {(bigint) 3051 /* 0: Identity */},
-  {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ASuperclass" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ASuperclass < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ASuperclass < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___parser_nodes___AExternCodeBlock[81] = {
+  {(bigint) 3795 /* 0: Identity */},
+  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AExternCodeBlock" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AExternCodeBlock < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AExternCodeBlock < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AExternCodeBlock < Prod: superclass typecheck marker */},
+  {(bigint) 3795 /* 6: AExternCodeBlock < AExternCodeBlock: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: ASuperclass < Prod: superclass typecheck marker */},
-  {(bigint) 3051 /* 7: ASuperclass < ASuperclass: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -44998,7 +88224,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ASuperclass[82] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: ASuperclass < Object: superclass init_table position */},
+  {(bigint) 2 /* 19: AExternCodeBlock < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -45014,6 +88240,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ASuperclass[82] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -45028,172 +88256,175 @@ const classtable_elt_t VFT_parser___parser_nodes___ASuperclass[82] = {
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
   {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ASuperclass___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ASuperclass___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ASuperclass___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
   {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ASuperclass___replace_child},
+  {(bigint) parser___parser_prod___AExternCodeBlock___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ASuperclass___visit_all},
-  {(bigint) 1 /* 60: ASuperclass < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AExternCodeBlock___visit_all},
+  {(bigint) 1 /* 63: AExternCodeBlock < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: ASuperclass < Prod: superclass init_table position */},
+  {(bigint) 0 /* 72: AExternCodeBlock < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___ASuperclass___ancestor},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) parser___parser_prod___ASuperclass___empty_init},
-  {(bigint) parser___parser_prod___ASuperclass___init_asuperclass},
-  {(bigint) 3 /* 78: ASuperclass < ASuperclass: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ASuperclass___n_kwspecial},
-  {(bigint) parser___parser_nodes___ASuperclass___n_kwsuper},
-  {(bigint) parser___parser_nodes___ASuperclass___n_type},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) syntax___extern_inline___AExternCodeBlock___to_extern_code},
+  {(bigint) parser___parser_prod___AExternCodeBlock___empty_init},
+  {(bigint) parser___parser_prod___AExternCodeBlock___init_aexterncodeblock},
+  {(bigint) 3 /* 78: AExternCodeBlock < AExternCodeBlock: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AExternCodeBlock___n_in_language},
+  {(bigint) parser___parser_nodes___AExternCodeBlock___n_extern_code_segment},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___ASuperclass(val_t p0){
+/* 2: Attribute AExternCodeBlock::_parent */
+/* 3: Attribute AExternCodeBlock::_location */
+/* 4: Attribute AExternCodeBlock::_first_location */
+/* 5: Attribute AExternCodeBlock::_last_location */
+/* 6: Attribute AExternCodeBlock::_n_annotations */
+/* 7: Attribute AExternCodeBlock::_n_in_language */
+/* 8: Attribute AExternCodeBlock::_n_extern_code_segment */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AExternCodeBlock[] = "init var of AExternCodeBlock";
+void INIT_ATTRIBUTES__parser___parser_nodes___AExternCodeBlock(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__parser___parser_nodes___ASuperclass;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AExternCodeBlock;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./parser//parser_nodes.nit:411 */
+  /* parser/parser_nodes.nit:56 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___ASuperclass____n_kwspecial(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:412 */
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:1203 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___ASuperclass____n_kwsuper(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AExternCodeBlock____n_in_language(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___ASuperclass(void)
+val_t NEW_parser___parser_nodes___AExternCodeBlock(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 10);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ASuperclass;
+  obj = alloc(sizeof(val_t) * 9);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AExternCodeBlock;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___ASuperclass(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AExternCodeBlock[] = "check new AExternCodeBlock";
+void CHECKNEW_parser___parser_nodes___AExternCodeBlock(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___parser_nodes___ASuperclass;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AExternCodeBlock;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASuperclass____n_type(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AExternCodeBlock____n_extern_code_segment(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_extern_code_segment", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ASuperclass_parser___parser_prod___ASuperclass___empty_init(void){
+static const char LOCATE_NEW_AExternCodeBlock_parser___parser_prod___AExternCodeBlock___empty_init[] = "new AExternCodeBlock parser_prod::AExternCodeBlock::empty_init";
+val_t NEW_AExternCodeBlock_parser___parser_prod___AExternCodeBlock___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 = 894;
-  fra.me.meth = LOCATE_NEW_ASuperclass_parser___parser_prod___ASuperclass___empty_init;
+  fra.me.line = 8930;
+  fra.me.meth = LOCATE_NEW_AExternCodeBlock_parser___parser_prod___AExternCodeBlock___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:894 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ASuperclass();
-  INIT_ATTRIBUTES__parser___parser_nodes___ASuperclass(fra.me.REG[0]);
-  parser___parser_prod___ASuperclass___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ASuperclass(fra.me.REG[0]);
+  /* parser/parser_prod.nit:8930 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AExternCodeBlock();
+  INIT_ATTRIBUTES__parser___parser_nodes___AExternCodeBlock(fra.me.REG[0]);
+  parser___parser_prod___AExternCodeBlock___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AExternCodeBlock(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_ASuperclass_parser___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;
+static const char LOCATE_NEW_AExternCodeBlock_parser___parser_prod___AExternCodeBlock___init_aexterncodeblock[] = "new AExternCodeBlock parser_prod::AExternCodeBlock::init_aexterncodeblock";
+val_t NEW_AExternCodeBlock_parser___parser_prod___AExternCodeBlock___init_aexterncodeblock(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 = 896;
-  fra.me.meth = LOCATE_NEW_ASuperclass_parser___parser_prod___ASuperclass___init_asuperclass;
+  fra.me.line = 8932;
+  fra.me.meth = LOCATE_NEW_AExternCodeBlock_parser___parser_prod___AExternCodeBlock___init_aexterncodeblock;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   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:896 */
-  fra.me.REG[3] = NEW_parser___parser_nodes___ASuperclass();
-  INIT_ATTRIBUTES__parser___parser_nodes___ASuperclass(fra.me.REG[3]);
-  parser___parser_prod___ASuperclass___init_asuperclass(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
-  CHECKNEW_parser___parser_nodes___ASuperclass(fra.me.REG[3]);
+  /* parser/parser_prod.nit:8932 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___AExternCodeBlock();
+  INIT_ATTRIBUTES__parser___parser_nodes___AExternCodeBlock(fra.me.REG[2]);
+  parser___parser_prod___AExternCodeBlock___init_aexterncodeblock(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___AExternCodeBlock(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[3];
+  return fra.me.REG[2];
 }
-val_t NEW_ASuperclass_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AExternCodeBlock_parser___parser_nodes___ANode___init[] = "new AExternCodeBlock parser_nodes::ANode::init";
+val_t NEW_AExternCodeBlock_parser___parser_nodes___ANode___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_ASuperclass_parser___parser_nodes___ANode___init;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_AExternCodeBlock_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___ASuperclass();
-  INIT_ATTRIBUTES__parser___parser_nodes___ASuperclass(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ASuperclass(fra.me.REG[1]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AExternCodeBlock();
+  INIT_ATTRIBUTES__parser___parser_nodes___AExternCodeBlock(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AExternCodeBlock(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___APropdef[79] = {
-  {(bigint) 3063 /* 0: Identity */},
-  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "APropdef" /* 2: Class Name */},
-  {(bigint) 3 /* 3: APropdef < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: APropdef < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___parser_nodes___AQualified[81] = {
+  {(bigint) 3747 /* 0: Identity */},
+  {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AQualified" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AQualified < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AQualified < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AQualified < Prod: superclass typecheck marker */},
+  {(bigint) 3747 /* 6: AQualified < AQualified: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: APropdef < Prod: superclass typecheck marker */},
-  {(bigint) 3063 /* 7: APropdef < APropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -45204,7 +88435,7 @@ const classtable_elt_t VFT_parser___parser_nodes___APropdef[79] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: APropdef < Object: superclass init_table position */},
+  {(bigint) 2 /* 19: AQualified < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -45220,6 +88451,8 @@ const classtable_elt_t VFT_parser___parser_nodes___APropdef[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -45243,104 +88476,174 @@ const classtable_elt_t VFT_parser___parser_nodes___APropdef[79] = {
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ANode___replace_child},
+  {(bigint) parser___parser_prod___AQualified___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ANode___visit_all},
-  {(bigint) 1 /* 60: APropdef < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AQualified___visit_all},
+  {(bigint) 1 /* 63: AQualified < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: APropdef < Prod: superclass init_table position */},
+  {(bigint) 0 /* 72: AQualified < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___APropdef___process_and_check},
-  {(bigint) syntax___mmbuilder___APropdef___do_and_check_intro},
-  {(bigint) syntax___mmbuilder___APropdef___inherit_signature},
-  {(bigint) syntax___mmbuilder___APropdef___do_and_check_redef},
-  {(bigint) syntax___typing___APropdef___self_var},
-  {(bigint) 3 /* 77: APropdef < APropdef: superclass init_table position */},
-  {(bigint) parser___parser_nodes___APropdef___n_doc},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_prod___AQualified___empty_init},
+  {(bigint) parser___parser_prod___AQualified___init_aqualified},
+  {(bigint) 3 /* 77: AQualified < AQualified: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AQualified___n_quad},
+  {(bigint) parser___parser_nodes___AQualified___n_id},
+  {(bigint) parser___parser_nodes___AQualified___n_classid},
 };
 /* 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__parser___parser_nodes___APropdef(val_t p0){
+/* 2: Attribute AQualified::_parent */
+/* 3: Attribute AQualified::_location */
+/* 4: Attribute AQualified::_first_location */
+/* 5: Attribute AQualified::_last_location */
+/* 6: Attribute AQualified::_n_annotations */
+/* 7: Attribute AQualified::_n_quad */
+/* 8: Attribute AQualified::_n_id */
+/* 9: Attribute AQualified::_n_classid */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AQualified[] = "init var of AQualified";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___APropdef;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AQualified;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./parser//parser_nodes.nit:416 */
+  /* parser/parser_nodes.nit:56 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:1208 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AQualified____n_quad(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:1209 */
+  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  ATTR_parser___parser_nodes___AQualified____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:1210 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AQualified____n_classid(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___APropdef(void)
+val_t NEW_parser___parser_nodes___AQualified(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 8);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___APropdef;
+  obj = alloc(sizeof(val_t) * 10);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AQualified;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___APropdef(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AQualified[] = "check new AQualified";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___APropdef;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AQualified;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___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;
 }
-val_t NEW_APropdef_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AQualified_parser___parser_prod___AQualified___empty_init[] = "new AQualified parser_prod::AQualified::empty_init";
+val_t NEW_AQualified_parser___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 = 0;
-  fra.me.meth = LOCATE_NEW_APropdef_parser___parser_nodes___ANode___init;
+  fra.me.line = 8979;
+  fra.me.meth = LOCATE_NEW_AQualified_parser___parser_prod___AQualified___empty_init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:8979 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AQualified();
+  INIT_ATTRIBUTES__parser___parser_nodes___AQualified(fra.me.REG[0]);
+  parser___parser_prod___AQualified___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AQualified(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_NEW_AQualified_parser___parser_prod___AQualified___init_aqualified[] = "new AQualified parser_prod::AQualified::init_aqualified";
+val_t NEW_AQualified_parser___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 = 8981;
+  fra.me.meth = LOCATE_NEW_AQualified_parser___parser_prod___AQualified___init_aqualified;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   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] = NEW_parser___parser_nodes___APropdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___APropdef(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___APropdef(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  /* parser/parser_prod.nit:8981 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___AQualified();
+  INIT_ATTRIBUTES__parser___parser_nodes___AQualified(fra.me.REG[2]);
+  parser___parser_prod___AQualified___init_aqualified(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___AQualified(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[2];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AAttrPropdef[99] = {
-  {(bigint) 3491 /* 0: Identity */},
-  {(bigint) 20 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AAttrPropdef" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AAttrPropdef < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AAttrPropdef < ANode: superclass typecheck marker */},
+static const char LOCATE_NEW_AQualified_parser___parser_nodes___ANode___init[] = "new AQualified parser_nodes::ANode::init";
+val_t NEW_AQualified_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AQualified_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AQualified();
+  INIT_ATTRIBUTES__parser___parser_nodes___AQualified(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AQualified(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___ADoc[79] = {
+  {(bigint) 3815 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ADoc" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ADoc < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: ADoc < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: ADoc < Prod: superclass typecheck marker */},
+  {(bigint) 3815 /* 6: ADoc < ADoc: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AAttrPropdef < Prod: superclass typecheck marker */},
-  {(bigint) 3063 /* 7: AAttrPropdef < APropdef: superclass typecheck marker */},
-  {(bigint) 3491 /* 8: AAttrPropdef < AAttrPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -45350,7 +88653,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrPropdef[99] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AAttrPropdef < Object: superclass init_table position */},
+  {(bigint) 2 /* 19: ADoc < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -45366,6 +88669,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrPropdef[99] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -45383,228 +88688,168 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrPropdef[99] = {
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AAttrPropdef___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AAttrPropdef___accept_property_verifier},
-  {(bigint) syntax___mmbuilder___AAttrPropdef___accept_abs_syntax_visitor},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AAttrPropdef___replace_child},
+  {(bigint) parser___parser_prod___ADoc___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AAttrPropdef___visit_all},
-  {(bigint) 1 /* 60: AAttrPropdef < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___ADoc___visit_all},
+  {(bigint) 1 /* 63: ADoc < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___AAttrPropdef___hot_location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AAttrPropdef___accept_icode_generation},
-  {(bigint) syntax___typing___AAttrPropdef___accept_typing},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AAttrPropdef < Prod: superclass init_table position */},
+  {(bigint) 0 /* 72: ADoc < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___APropdef___process_and_check},
-  {(bigint) syntax___mmbuilder___APropdef___do_and_check_intro},
-  {(bigint) syntax___mmbuilder___APropdef___inherit_signature},
-  {(bigint) syntax___mmbuilder___APropdef___do_and_check_redef},
-  {(bigint) syntax___typing___APropdef___self_var},
-  {(bigint) 3 /* 77: AAttrPropdef < APropdef: superclass init_table position */},
-  {(bigint) parser___parser_nodes___APropdef___n_doc},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) syntax___mmbuilder___AAttrPropdef___prop},
-  {(bigint) syntax___mmbuilder___AAttrPropdef___readmethod},
-  {(bigint) syntax___mmbuilder___AAttrPropdef___writemethod},
-  {(bigint) parser___parser_prod___AAttrPropdef___empty_init},
-  {(bigint) parser___parser_prod___AAttrPropdef___init_aattrpropdef},
-  {(bigint) 4 /* 87: AAttrPropdef < AAttrPropdef: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AAttrPropdef___n_kwredef},
-  {(bigint) parser___parser_nodes___AAttrPropdef___n_visibility},
-  {(bigint) parser___parser_nodes___AAttrPropdef___n_kwvar},
-  {(bigint) parser___parser_nodes___AAttrPropdef___n_id},
-  {(bigint) parser___parser_nodes___AAttrPropdef___n_id2},
-  {(bigint) parser___parser_nodes___AAttrPropdef___n_type},
-  {(bigint) parser___parser_nodes___AAttrPropdef___n_readable},
-  {(bigint) parser___parser_nodes___AAttrPropdef___n_writable},
-  {(bigint) parser___parser_nodes___AAttrPropdef___n_expr},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_prod___ADoc___empty_init},
+  {(bigint) parser___parser_prod___ADoc___init_adoc},
+  {(bigint) 3 /* 77: ADoc < ADoc: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ADoc___n_comment},
 };
 /* 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__parser___parser_nodes___AAttrPropdef(val_t p0){
+/* 2: Attribute ADoc::_parent */
+/* 3: Attribute ADoc::_location */
+/* 4: Attribute ADoc::_first_location */
+/* 5: Attribute ADoc::_last_location */
+/* 6: Attribute ADoc::_n_annotations */
+/* 7: Attribute ADoc::_n_comment */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ADoc[] = "init var of ADoc";
+void INIT_ATTRIBUTES__parser___parser_nodes___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__parser___parser_nodes___AAttrPropdef;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ADoc;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./parser//parser_nodes.nit:416 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:426 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AAttrPropdef____n_readable(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:427 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AAttrPropdef____n_writable(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:420 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AAttrPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:425 */
+  /* parser/parser_nodes.nit:56 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AAttrPropdef____n_type(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:428 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AAttrPropdef____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:1214 */
+  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  ATTR_parser___parser_nodes___ADoc____n_comment(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AAttrPropdef(void)
+val_t NEW_parser___parser_nodes___ADoc(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 20);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AAttrPropdef;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ADoc;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AAttrPropdef(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___ADoc[] = "check new ADoc";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___AAttrPropdef;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___ADoc;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___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___parser_nodes___AAttrPropdef____n_kwvar(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ADoc____n_comment(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwvar", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_comment", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___empty_init(void){
+static const char LOCATE_NEW_ADoc_parser___parser_prod___ADoc___empty_init[] = "new ADoc parser_prod::ADoc::empty_init";
+val_t NEW_ADoc_parser___parser_prod___ADoc___empty_init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[5] = {0, 0, 0, 0, 0};
+  int init_table[4] = {0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 961;
-  fra.me.meth = LOCATE_NEW_AAttrPropdef_parser___parser_prod___AAttrPropdef___empty_init;
+  fra.me.line = 9035;
+  fra.me.meth = LOCATE_NEW_ADoc_parser___parser_prod___ADoc___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:961 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AAttrPropdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___AAttrPropdef(fra.me.REG[0]);
-  parser___parser_prod___AAttrPropdef___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AAttrPropdef(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-val_t NEW_AAttrPropdef_parser___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 = 963;
-  fra.me.meth = LOCATE_NEW_AAttrPropdef_parser___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:963 */
-  fra.me.REG[10] = NEW_parser___parser_nodes___AAttrPropdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___AAttrPropdef(fra.me.REG[10]);
-  parser___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_parser___parser_nodes___AAttrPropdef(fra.me.REG[10]);
+  /* parser/parser_prod.nit:9035 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ADoc();
+  INIT_ATTRIBUTES__parser___parser_nodes___ADoc(fra.me.REG[0]);
+  parser___parser_prod___ADoc___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ADoc(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[10];
+  return fra.me.REG[0];
 }
-val_t NEW_AAttrPropdef_parser___parser_nodes___ANode___init(val_t p0){
+static const char LOCATE_NEW_ADoc_parser___parser_prod___ADoc___init_adoc[] = "new ADoc parser_prod::ADoc::init_adoc";
+val_t NEW_ADoc_parser___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[5] = {0, 0, 0, 0, 0};
+  int init_table[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_AAttrPropdef_parser___parser_nodes___ANode___init;
+  fra.me.line = 9037;
+  fra.me.meth = LOCATE_NEW_ADoc_parser___parser_prod___ADoc___init_adoc;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___AAttrPropdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___AAttrPropdef(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AAttrPropdef(fra.me.REG[1]);
+  /* parser/parser_prod.nit:9037 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___ADoc();
+  INIT_ATTRIBUTES__parser___parser_nodes___ADoc(fra.me.REG[1]);
+  parser___parser_prod___ADoc___init_adoc(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ADoc(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AMethPropdef[94] = {
-  {(bigint) 3375 /* 0: Identity */},
-  {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AMethPropdef" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AMethPropdef < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AMethPropdef < ANode: superclass typecheck marker */},
+static const char LOCATE_NEW_ADoc_parser___parser_nodes___ANode___init[] = "new ADoc parser_nodes::ANode::init";
+val_t NEW_ADoc_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_ADoc_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ADoc();
+  INIT_ATTRIBUTES__parser___parser_nodes___ADoc(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ADoc(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___AAnnotations[82] = {
+  {(bigint) 3847 /* 0: Identity */},
+  {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AAnnotations" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AAnnotations < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AAnnotations < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AAnnotations < Prod: superclass typecheck marker */},
+  {(bigint) 3847 /* 6: AAnnotations < AAnnotations: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AMethPropdef < Prod: superclass typecheck marker */},
-  {(bigint) 3063 /* 7: AMethPropdef < APropdef: superclass typecheck marker */},
-  {(bigint) 3375 /* 8: AMethPropdef < AMethPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -45614,7 +88859,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AMethPropdef[94] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AMethPropdef < Object: superclass init_table position */},
+  {(bigint) 2 /* 19: AAnnotations < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -45630,6 +88875,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AMethPropdef[94] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -45647,186 +88894,190 @@ const classtable_elt_t VFT_parser___parser_nodes___AMethPropdef[94] = {
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AMethPropdef___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AMethPropdef___accept_property_verifier},
-  {(bigint) syntax___mmbuilder___AMethPropdef___accept_abs_syntax_visitor},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AMethPropdef___replace_child},
+  {(bigint) parser___parser_prod___AAnnotations___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AMethPropdef___visit_all},
-  {(bigint) 1 /* 60: AMethPropdef < ANode: superclass init_table position */},
+  {(bigint) abstracttool___AAnnotations___visit_all},
+  {(bigint) 1 /* 63: AAnnotations < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___AMethPropdef___hot_location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AMethPropdef___accept_icode_generation},
-  {(bigint) syntax___typing___AMethPropdef___accept_typing},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AMethPropdef < Prod: superclass init_table position */},
+  {(bigint) 0 /* 72: AAnnotations < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___APropdef___process_and_check},
-  {(bigint) syntax___mmbuilder___APropdef___do_and_check_intro},
-  {(bigint) syntax___mmbuilder___APropdef___inherit_signature},
-  {(bigint) syntax___mmbuilder___APropdef___do_and_check_redef},
-  {(bigint) syntax___typing___APropdef___self_var},
-  {(bigint) 3 /* 77: AMethPropdef < APropdef: superclass init_table position */},
-  {(bigint) parser___parser_nodes___APropdef___n_doc},
-  {(bigint) syntax___mmbuilder___AMethPropdef___name},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) syntax___mmbuilder___AMethPropdef___method},
-  {(bigint) parser___parser_prod___AMethPropdef___empty_init},
-  {(bigint) parser___parser_prod___AMethPropdef___init_amethpropdef},
-  {(bigint) 4 /* 86: AMethPropdef < AMethPropdef: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AMethPropdef___n_kwredef},
-  {(bigint) parser___parser_nodes___AMethPropdef___n_visibility},
-  {(bigint) parser___parser_nodes___AMethPropdef___n_methid},
-  {(bigint) parser___parser_nodes___AMethPropdef___n_signature},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___icode_generation___AMethPropdef___fill_iroutine},
-  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_prod___AAnnotations___empty_init},
+  {(bigint) parser___parser_prod___AAnnotations___init_aannotations},
+  {(bigint) 3 /* 77: AAnnotations < AAnnotations: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AAnnotations___n_at},
+  {(bigint) parser___parser_nodes___AAnnotations___n_opar},
+  {(bigint) parser___parser_nodes___AAnnotations___n_items},
+  {(bigint) parser___parser_nodes___AAnnotations___n_cpar},
 };
 /* 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__parser___parser_nodes___AMethPropdef(val_t p0){
+/* 2: Attribute AAnnotations::_parent */
+/* 3: Attribute AAnnotations::_location */
+/* 4: Attribute AAnnotations::_first_location */
+/* 5: Attribute AAnnotations::_last_location */
+/* 6: Attribute AAnnotations::_n_annotations */
+/* 7: Attribute AAnnotations::_n_at */
+/* 8: Attribute AAnnotations::_n_opar */
+/* 9: Attribute AAnnotations::_n_items */
+/* 10: Attribute AAnnotations::_n_cpar */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AAnnotations[] = "init var of AAnnotations";
+void INIT_ATTRIBUTES__parser___parser_nodes___AAnnotations(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__parser___parser_nodes___AMethPropdef;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AAnnotations;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./parser//parser_nodes.nit:416 */
+  /* parser/parser_nodes.nit:56 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:436 */
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:1219 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:438 */
+  ATTR_parser___parser_nodes___AAnnotations____n_at(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:1220 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AAnnotations____n_opar(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:1221 */
+  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  ATTR_parser___parser_nodes___AAnnotations____n_items(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:1222 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___AAnnotations____n_cpar(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AMethPropdef(void)
+val_t NEW_parser___parser_nodes___AAnnotations(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 14);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AMethPropdef;
+  obj = alloc(sizeof(val_t) * 11);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AAnnotations;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AMethPropdef(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AAnnotations[] = "check new AAnnotations";
+void CHECKNEW_parser___parser_nodes___AAnnotations(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
   fra.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___parser_nodes___AMethPropdef;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AAnnotations;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAnnotations____n_items(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_items", LOCATE_nitc, 0);
+  }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AMethPropdef_parser___parser_prod___AMethPropdef___empty_init(void){
+static const char LOCATE_NEW_AAnnotations_parser___parser_prod___AAnnotations___empty_init[] = "new AAnnotations parser_prod::AAnnotations::empty_init";
+val_t NEW_AAnnotations_parser___parser_prod___AAnnotations___empty_init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[5] = {0, 0, 0, 0, 0};
+  int init_table[4] = {0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1150;
-  fra.me.meth = LOCATE_NEW_AMethPropdef_parser___parser_prod___AMethPropdef___empty_init;
+  fra.me.line = 9073;
+  fra.me.meth = LOCATE_NEW_AAnnotations_parser___parser_prod___AAnnotations___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:1150 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AMethPropdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___AMethPropdef(fra.me.REG[0]);
-  parser___parser_prod___AMethPropdef___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AMethPropdef(fra.me.REG[0]);
+  /* parser/parser_prod.nit:9073 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AAnnotations();
+  INIT_ATTRIBUTES__parser___parser_nodes___AAnnotations(fra.me.REG[0]);
+  parser___parser_prod___AAnnotations___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AAnnotations(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AMethPropdef_parser___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;
+static const char LOCATE_NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations[] = "new AAnnotations parser_prod::AAnnotations::init_aannotations";
+val_t NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations(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};
+  int init_table[4] = {0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1152;
-  fra.me.meth = LOCATE_NEW_AMethPropdef_parser___parser_prod___AMethPropdef___init_amethpropdef;
+  fra.me.line = 9075;
+  fra.me.meth = LOCATE_NEW_AAnnotations_parser___parser_prod___AAnnotations___init_aannotations;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 6;
+  fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
   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:1152 */
-  fra.me.REG[5] = NEW_parser___parser_nodes___AMethPropdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___AMethPropdef(fra.me.REG[5]);
-  parser___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_parser___parser_nodes___AMethPropdef(fra.me.REG[5]);
+  /* parser/parser_prod.nit:9075 */
+  fra.me.REG[4] = NEW_parser___parser_nodes___AAnnotations();
+  INIT_ATTRIBUTES__parser___parser_nodes___AAnnotations(fra.me.REG[4]);
+  parser___parser_prod___AAnnotations___init_aannotations(fra.me.REG[4], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], init_table);
+  CHECKNEW_parser___parser_nodes___AAnnotations(fra.me.REG[4]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[5];
+  return fra.me.REG[4];
 }
-val_t NEW_AMethPropdef_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AAnnotations_parser___parser_nodes___ANode___init[] = "new AAnnotations parser_nodes::ANode::init";
+val_t NEW_AAnnotations_parser___parser_nodes___ANode___init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[5] = {0, 0, 0, 0, 0};
+  int init_table[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_AMethPropdef_parser___parser_nodes___ANode___init;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_AAnnotations_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___AMethPropdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___AMethPropdef(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AMethPropdef(fra.me.REG[1]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AAnnotations();
+  INIT_ATTRIBUTES__parser___parser_nodes___AAnnotations(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AAnnotations(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ADeferredMethPropdef[98] = {
-  {(bigint) 3683 /* 0: Identity */},
-  {(bigint) 15 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ADeferredMethPropdef" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ADeferredMethPropdef < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ADeferredMethPropdef < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___parser_nodes___AAnnotation[82] = {
+  {(bigint) 3851 /* 0: Identity */},
+  {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AAnnotation" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AAnnotation < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AAnnotation < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AAnnotation < Prod: superclass typecheck marker */},
+  {(bigint) 3851 /* 6: AAnnotation < AAnnotation: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: ADeferredMethPropdef < Prod: superclass typecheck marker */},
-  {(bigint) 3063 /* 7: ADeferredMethPropdef < APropdef: superclass typecheck marker */},
-  {(bigint) 3375 /* 8: ADeferredMethPropdef < AMethPropdef: superclass typecheck marker */},
-  {(bigint) 3683 /* 9: ADeferredMethPropdef < ADeferredMethPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -45835,7 +89086,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ADeferredMethPropdef[98] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: ADeferredMethPropdef < Object: superclass init_table position */},
+  {(bigint) 2 /* 19: AAnnotation < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -45851,6 +89102,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ADeferredMethPropdef[98] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -45868,249 +89121,194 @@ const classtable_elt_t VFT_parser___parser_nodes___ADeferredMethPropdef[98] = {
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AMethPropdef___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AMethPropdef___accept_property_verifier},
-  {(bigint) syntax___mmbuilder___AMethPropdef___accept_abs_syntax_visitor},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ADeferredMethPropdef___replace_child},
+  {(bigint) parser___parser_prod___AAnnotation___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ADeferredMethPropdef___visit_all},
-  {(bigint) 1 /* 60: ADeferredMethPropdef < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AAnnotation___visit_all},
+  {(bigint) 1 /* 63: AAnnotation < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___AMethPropdef___hot_location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AMethPropdef___accept_icode_generation},
-  {(bigint) syntax___typing___AMethPropdef___accept_typing},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: ADeferredMethPropdef < Prod: superclass init_table position */},
+  {(bigint) 0 /* 72: AAnnotation < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___APropdef___process_and_check},
-  {(bigint) syntax___mmbuilder___APropdef___do_and_check_intro},
-  {(bigint) syntax___mmbuilder___APropdef___inherit_signature},
-  {(bigint) syntax___mmbuilder___APropdef___do_and_check_redef},
-  {(bigint) syntax___typing___APropdef___self_var},
-  {(bigint) 3 /* 77: ADeferredMethPropdef < APropdef: superclass init_table position */},
-  {(bigint) parser___parser_nodes___APropdef___n_doc},
-  {(bigint) syntax___mmbuilder___AMethPropdef___name},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) syntax___mmbuilder___AMethPropdef___method},
-  {(bigint) parser___parser_prod___AMethPropdef___empty_init},
-  {(bigint) parser___parser_prod___AMethPropdef___init_amethpropdef},
-  {(bigint) 4 /* 86: ADeferredMethPropdef < AMethPropdef: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AMethPropdef___n_kwredef},
-  {(bigint) parser___parser_nodes___AMethPropdef___n_visibility},
-  {(bigint) parser___parser_nodes___AMethPropdef___n_methid},
-  {(bigint) parser___parser_nodes___AMethPropdef___n_signature},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___icode_generation___ADeferredMethPropdef___fill_iroutine},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) parser___parser_prod___ADeferredMethPropdef___empty_init},
-  {(bigint) parser___parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef},
-  {(bigint) 5 /* 96: ADeferredMethPropdef < ADeferredMethPropdef: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ADeferredMethPropdef___n_kwmeth},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) parser___parser_prod___AAnnotation___empty_init},
+  {(bigint) parser___parser_prod___AAnnotation___init_aannotation},
+  {(bigint) 3 /* 77: AAnnotation < AAnnotation: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AAnnotation___n_atid},
+  {(bigint) parser___parser_nodes___AAnnotation___n_opar},
+  {(bigint) parser___parser_nodes___AAnnotation___n_args},
+  {(bigint) parser___parser_nodes___AAnnotation___n_cpar},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___ADeferredMethPropdef(val_t p0){
+/* 2: Attribute AAnnotation::_parent */
+/* 3: Attribute AAnnotation::_location */
+/* 4: Attribute AAnnotation::_first_location */
+/* 5: Attribute AAnnotation::_last_location */
+/* 6: Attribute AAnnotation::_n_annotations */
+/* 7: Attribute AAnnotation::_n_atid */
+/* 8: Attribute AAnnotation::_n_opar */
+/* 9: Attribute AAnnotation::_n_args */
+/* 10: Attribute AAnnotation::_n_cpar */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AAnnotation[] = "init var of AAnnotation";
+void INIT_ATTRIBUTES__parser___parser_nodes___AAnnotation(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__parser___parser_nodes___ADeferredMethPropdef;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AAnnotation;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./parser//parser_nodes.nit:416 */
+  /* parser/parser_nodes.nit:56 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:436 */
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:1227 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:438 */
+  ATTR_parser___parser_nodes___AAnnotation____n_opar(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:1228 */
+  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  ATTR_parser___parser_nodes___AAnnotation____n_args(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:1229 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AAnnotation____n_cpar(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___ADeferredMethPropdef(void)
+val_t NEW_parser___parser_nodes___AAnnotation(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 15);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ADeferredMethPropdef;
+  obj = alloc(sizeof(val_t) * 11);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AAnnotation;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___ADeferredMethPropdef(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AAnnotation[] = "check new AAnnotation";
+void CHECKNEW_parser___parser_nodes___AAnnotation(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___parser_nodes___ADeferredMethPropdef;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AAnnotation;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ADeferredMethPropdef____n_kwmeth(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAnnotation____n_atid(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwmeth", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_atid", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAnnotation____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_ADeferredMethPropdef_parser___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 = 1150;
-  fra.me.meth = LOCATE_NEW_ADeferredMethPropdef_parser___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:1150 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ADeferredMethPropdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___ADeferredMethPropdef(fra.me.REG[0]);
-  parser___parser_prod___AMethPropdef___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ADeferredMethPropdef(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-val_t NEW_ADeferredMethPropdef_parser___parser_prod___ADeferredMethPropdef___empty_init(void){
+static const char LOCATE_NEW_AAnnotation_parser___parser_prod___AAnnotation___empty_init[] = "new AAnnotation parser_prod::AAnnotation::empty_init";
+val_t NEW_AAnnotation_parser___parser_prod___AAnnotation___empty_init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  int init_table[4] = {0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1245;
-  fra.me.meth = LOCATE_NEW_ADeferredMethPropdef_parser___parser_prod___ADeferredMethPropdef___empty_init;
+  fra.me.line = 9165;
+  fra.me.meth = LOCATE_NEW_AAnnotation_parser___parser_prod___AAnnotation___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:1245 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ADeferredMethPropdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___ADeferredMethPropdef(fra.me.REG[0]);
-  parser___parser_prod___ADeferredMethPropdef___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ADeferredMethPropdef(fra.me.REG[0]);
+  /* parser/parser_prod.nit:9165 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AAnnotation();
+  INIT_ATTRIBUTES__parser___parser_nodes___AAnnotation(fra.me.REG[0]);
+  parser___parser_prod___AAnnotation___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AAnnotation(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_ADeferredMethPropdef_parser___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;
+static const char LOCATE_NEW_AAnnotation_parser___parser_prod___AAnnotation___init_aannotation[] = "new AAnnotation parser_prod::AAnnotation::init_aannotation";
+val_t NEW_AAnnotation_parser___parser_prod___AAnnotation___init_aannotation(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};
+  int init_table[4] = {0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1247;
-  fra.me.meth = LOCATE_NEW_ADeferredMethPropdef_parser___parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef;
+  fra.me.line = 9167;
+  fra.me.meth = LOCATE_NEW_AAnnotation_parser___parser_prod___AAnnotation___init_aannotation;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 7;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
   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:1247 */
-  fra.me.REG[6] = NEW_parser___parser_nodes___ADeferredMethPropdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___ADeferredMethPropdef(fra.me.REG[6]);
-  parser___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_parser___parser_nodes___ADeferredMethPropdef(fra.me.REG[6]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[6];
-}
-val_t NEW_ADeferredMethPropdef_parser___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___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_parser___parser_nodes___ADeferredMethPropdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___ADeferredMethPropdef(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ADeferredMethPropdef(fra.me.REG[1]);
+  /* parser/parser_prod.nit:9167 */
+  fra.me.REG[5] = NEW_parser___parser_nodes___AAnnotation();
+  INIT_ATTRIBUTES__parser___parser_nodes___AAnnotation(fra.me.REG[5]);
+  parser___parser_prod___AAnnotation___init_aannotation(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_parser___parser_nodes___AAnnotation(fra.me.REG[5]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[5];
 }
-val_t NEW_ADeferredMethPropdef_parser___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;
+static const char LOCATE_NEW_AAnnotation_parser___parser_nodes___ANode___init[] = "new AAnnotation parser_nodes::ANode::init";
+val_t NEW_AAnnotation_parser___parser_nodes___ANode___init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  int init_table[4] = {0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1152;
-  fra.me.meth = LOCATE_NEW_ADeferredMethPropdef_parser___parser_prod___AMethPropdef___init_amethpropdef;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_AAnnotation_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 6;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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:1152 */
-  fra.me.REG[5] = NEW_parser___parser_nodes___ADeferredMethPropdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___ADeferredMethPropdef(fra.me.REG[5]);
-  parser___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_parser___parser_nodes___ADeferredMethPropdef(fra.me.REG[5]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AAnnotation();
+  INIT_ATTRIBUTES__parser___parser_nodes___AAnnotation(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AAnnotation(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[5];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AInternMethPropdef[98] = {
-  {(bigint) 3643 /* 0: Identity */},
-  {(bigint) 15 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AInternMethPropdef" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AInternMethPropdef < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AInternMethPropdef < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___parser_nodes___ATypeAtArg[80] = {
+  {(bigint) 4279 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ATypeAtArg" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ATypeAtArg < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: ATypeAtArg < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: ATypeAtArg < Prod: superclass typecheck marker */},
+  {(bigint) 3839 /* 6: ATypeAtArg < AAtArg: superclass typecheck marker */},
+  {(bigint) 4279 /* 7: ATypeAtArg < ATypeAtArg: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AInternMethPropdef < Prod: superclass typecheck marker */},
-  {(bigint) 3063 /* 7: AInternMethPropdef < APropdef: superclass typecheck marker */},
-  {(bigint) 3375 /* 8: AInternMethPropdef < AMethPropdef: superclass typecheck marker */},
-  {(bigint) 3643 /* 9: AInternMethPropdef < AInternMethPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -46119,7 +89317,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AInternMethPropdef[98] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AInternMethPropdef < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: ATypeAtArg < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -46135,6 +89333,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AInternMethPropdef[98] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -46152,249 +89352,167 @@ const classtable_elt_t VFT_parser___parser_nodes___AInternMethPropdef[98] = {
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AMethPropdef___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AMethPropdef___accept_property_verifier},
-  {(bigint) syntax___mmbuilder___AMethPropdef___accept_abs_syntax_visitor},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AInternMethPropdef___replace_child},
+  {(bigint) parser___parser_prod___ATypeAtArg___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AInternMethPropdef___visit_all},
-  {(bigint) 1 /* 60: AInternMethPropdef < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___ATypeAtArg___visit_all},
+  {(bigint) 2 /* 63: ATypeAtArg < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___AMethPropdef___hot_location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AMethPropdef___accept_icode_generation},
-  {(bigint) syntax___typing___AMethPropdef___accept_typing},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AInternMethPropdef < Prod: superclass init_table position */},
+  {(bigint) 1 /* 72: ATypeAtArg < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___APropdef___process_and_check},
-  {(bigint) syntax___mmbuilder___APropdef___do_and_check_intro},
-  {(bigint) syntax___mmbuilder___APropdef___inherit_signature},
-  {(bigint) syntax___mmbuilder___APropdef___do_and_check_redef},
-  {(bigint) syntax___typing___APropdef___self_var},
-  {(bigint) 3 /* 77: AInternMethPropdef < APropdef: superclass init_table position */},
-  {(bigint) parser___parser_nodes___APropdef___n_doc},
-  {(bigint) syntax___mmbuilder___AMethPropdef___name},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) syntax___mmbuilder___AMethPropdef___method},
-  {(bigint) parser___parser_prod___AMethPropdef___empty_init},
-  {(bigint) parser___parser_prod___AMethPropdef___init_amethpropdef},
-  {(bigint) 4 /* 86: AInternMethPropdef < AMethPropdef: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AMethPropdef___n_kwredef},
-  {(bigint) parser___parser_nodes___AMethPropdef___n_visibility},
-  {(bigint) parser___parser_nodes___AMethPropdef___n_methid},
-  {(bigint) parser___parser_nodes___AMethPropdef___n_signature},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___icode_generation___AInternMethPropdef___fill_iroutine},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) parser___parser_prod___AInternMethPropdef___empty_init},
-  {(bigint) parser___parser_prod___AInternMethPropdef___init_ainternmethpropdef},
-  {(bigint) 5 /* 96: AInternMethPropdef < AInternMethPropdef: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AInternMethPropdef___n_kwmeth},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) 0 /* 75: ATypeAtArg < AAtArg: superclass init_table position */},
+  {(bigint) parser___parser_prod___ATypeAtArg___empty_init},
+  {(bigint) parser___parser_prod___ATypeAtArg___init_atypeatarg},
+  {(bigint) 4 /* 78: ATypeAtArg < ATypeAtArg: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ATypeAtArg___n_type},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AInternMethPropdef(val_t p0){
+/* 2: Attribute ATypeAtArg::_parent */
+/* 3: Attribute ATypeAtArg::_location */
+/* 4: Attribute ATypeAtArg::_first_location */
+/* 5: Attribute ATypeAtArg::_last_location */
+/* 6: Attribute ATypeAtArg::_n_annotations */
+/* 7: Attribute ATypeAtArg::_n_type */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ATypeAtArg[] = "init var of ATypeAtArg";
+void INIT_ATTRIBUTES__parser___parser_nodes___ATypeAtArg(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__parser___parser_nodes___AInternMethPropdef;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___ATypeAtArg;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./parser//parser_nodes.nit:416 */
+  /* parser/parser_nodes.nit:56 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:436 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:438 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AInternMethPropdef(void)
+val_t NEW_parser___parser_nodes___ATypeAtArg(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 15);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AInternMethPropdef;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ATypeAtArg;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AInternMethPropdef(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___ATypeAtArg[] = "check new ATypeAtArg";
+void CHECKNEW_parser___parser_nodes___ATypeAtArg(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___parser_nodes___AInternMethPropdef;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___ATypeAtArg;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AInternMethPropdef____n_kwmeth(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ATypeAtArg____n_type(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwmeth", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AInternMethPropdef_parser___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 = 1150;
-  fra.me.meth = LOCATE_NEW_AInternMethPropdef_parser___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:1150 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AInternMethPropdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___AInternMethPropdef(fra.me.REG[0]);
-  parser___parser_prod___AMethPropdef___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AInternMethPropdef(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-val_t NEW_AInternMethPropdef_parser___parser_prod___AInternMethPropdef___empty_init(void){
+static const char LOCATE_NEW_ATypeAtArg_parser___parser_prod___ATypeAtArg___empty_init[] = "new ATypeAtArg parser_prod::ATypeAtArg::empty_init";
+val_t NEW_ATypeAtArg_parser___parser_prod___ATypeAtArg___empty_init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  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 = 1354;
-  fra.me.meth = LOCATE_NEW_AInternMethPropdef_parser___parser_prod___AInternMethPropdef___empty_init;
+  fra.me.line = 9271;
+  fra.me.meth = LOCATE_NEW_ATypeAtArg_parser___parser_prod___ATypeAtArg___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:1354 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AInternMethPropdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___AInternMethPropdef(fra.me.REG[0]);
-  parser___parser_prod___AInternMethPropdef___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AInternMethPropdef(fra.me.REG[0]);
+  /* parser/parser_prod.nit:9271 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ATypeAtArg();
+  INIT_ATTRIBUTES__parser___parser_nodes___ATypeAtArg(fra.me.REG[0]);
+  parser___parser_prod___ATypeAtArg___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ATypeAtArg(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AInternMethPropdef_parser___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 = 1356;
-  fra.me.meth = LOCATE_NEW_AInternMethPropdef_parser___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:1356 */
-  fra.me.REG[6] = NEW_parser___parser_nodes___AInternMethPropdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___AInternMethPropdef(fra.me.REG[6]);
-  parser___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_parser___parser_nodes___AInternMethPropdef(fra.me.REG[6]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[6];
-}
-val_t NEW_AInternMethPropdef_parser___parser_nodes___ANode___init(val_t p0){
+static const char LOCATE_NEW_ATypeAtArg_parser___parser_prod___ATypeAtArg___init_atypeatarg[] = "new ATypeAtArg parser_prod::ATypeAtArg::init_atypeatarg";
+val_t NEW_ATypeAtArg_parser___parser_prod___ATypeAtArg___init_atypeatarg(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};
+  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_AInternMethPropdef_parser___parser_nodes___ANode___init;
+  fra.me.line = 9273;
+  fra.me.meth = LOCATE_NEW_ATypeAtArg_parser___parser_prod___ATypeAtArg___init_atypeatarg;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___AInternMethPropdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___AInternMethPropdef(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AInternMethPropdef(fra.me.REG[1]);
+  /* parser/parser_prod.nit:9273 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___ATypeAtArg();
+  INIT_ATTRIBUTES__parser___parser_nodes___ATypeAtArg(fra.me.REG[1]);
+  parser___parser_prod___ATypeAtArg___init_atypeatarg(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ATypeAtArg(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-val_t NEW_AInternMethPropdef_parser___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;
+static const char LOCATE_NEW_ATypeAtArg_parser___parser_nodes___ANode___init[] = "new ATypeAtArg parser_nodes::ANode::init";
+val_t NEW_ATypeAtArg_parser___parser_nodes___ANode___init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  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 = 1152;
-  fra.me.meth = LOCATE_NEW_AInternMethPropdef_parser___parser_prod___AMethPropdef___init_amethpropdef;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_ATypeAtArg_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 6;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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:1152 */
-  fra.me.REG[5] = NEW_parser___parser_nodes___AInternMethPropdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___AInternMethPropdef(fra.me.REG[5]);
-  parser___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_parser___parser_nodes___AInternMethPropdef(fra.me.REG[5]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___ATypeAtArg();
+  INIT_ATTRIBUTES__parser___parser_nodes___ATypeAtArg(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___ATypeAtArg(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[5];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AExternPropdef[98] = {
-  {(bigint) 3667 /* 0: Identity */},
-  {(bigint) 16 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AExternPropdef" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AExternPropdef < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AExternPropdef < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___parser_nodes___AExprAtArg[80] = {
+  {(bigint) 4491 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AExprAtArg" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AExprAtArg < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AExprAtArg < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AExprAtArg < Prod: superclass typecheck marker */},
+  {(bigint) 3839 /* 6: AExprAtArg < AAtArg: superclass typecheck marker */},
+  {(bigint) 4491 /* 7: AExprAtArg < AExprAtArg: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AExternPropdef < Prod: superclass typecheck marker */},
-  {(bigint) 3063 /* 7: AExternPropdef < APropdef: superclass typecheck marker */},
-  {(bigint) 3375 /* 8: AExternPropdef < AMethPropdef: superclass typecheck marker */},
-  {(bigint) 3667 /* 9: AExternPropdef < AExternPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -46403,7 +89521,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternPropdef[98] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AExternPropdef < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: AExprAtArg < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -46419,6 +89537,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternPropdef[98] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -46436,199 +89556,168 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternPropdef[98] = {
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AMethPropdef___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExternPropdef___accept_property_verifier},
-  {(bigint) syntax___mmbuilder___AMethPropdef___accept_abs_syntax_visitor},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AMethPropdef___replace_child},
+  {(bigint) parser___parser_prod___AExprAtArg___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AMethPropdef___visit_all},
-  {(bigint) 1 /* 60: AExternPropdef < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AExprAtArg___visit_all},
+  {(bigint) 2 /* 63: AExprAtArg < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___AMethPropdef___hot_location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AMethPropdef___accept_icode_generation},
-  {(bigint) syntax___typing___AMethPropdef___accept_typing},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AExternPropdef < Prod: superclass init_table position */},
+  {(bigint) 1 /* 72: AExprAtArg < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___APropdef___process_and_check},
-  {(bigint) syntax___mmbuilder___APropdef___do_and_check_intro},
-  {(bigint) syntax___mmbuilder___APropdef___inherit_signature},
-  {(bigint) syntax___mmbuilder___APropdef___do_and_check_redef},
-  {(bigint) syntax___typing___APropdef___self_var},
-  {(bigint) 3 /* 77: AExternPropdef < APropdef: superclass init_table position */},
-  {(bigint) parser___parser_nodes___APropdef___n_doc},
-  {(bigint) syntax___mmbuilder___AMethPropdef___name},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) syntax___mmbuilder___AMethPropdef___method},
-  {(bigint) parser___parser_prod___AMethPropdef___empty_init},
-  {(bigint) parser___parser_prod___AMethPropdef___init_amethpropdef},
-  {(bigint) 4 /* 86: AExternPropdef < AMethPropdef: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AMethPropdef___n_kwredef},
-  {(bigint) parser___parser_nodes___AMethPropdef___n_visibility},
-  {(bigint) parser___parser_nodes___AMethPropdef___n_methid},
-  {(bigint) parser___parser_nodes___AMethPropdef___n_signature},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___icode_generation___AExternPropdef___fill_iroutine},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___mmbuilder___AMethPropdef___accept_property_verifier},
-  {(bigint) 5 /* 95: AExternPropdef < AExternPropdef: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AExternPropdef___n_extern},
-  {(bigint) parser___parser_nodes___AExternPropdef___n_extern_calls},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) 0 /* 75: AExprAtArg < AAtArg: superclass init_table position */},
+  {(bigint) parser___parser_prod___AExprAtArg___empty_init},
+  {(bigint) parser___parser_prod___AExprAtArg___init_aexpratarg},
+  {(bigint) 4 /* 78: AExprAtArg < AExprAtArg: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AExprAtArg___n_expr},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AExternPropdef::_parent */
-/* 3: Attribute AExternPropdef::_location */
-/* 4: Attribute AExternPropdef::_first_location */
-/* 5: Attribute AExternPropdef::_last_location */
-/* 6: Attribute AExternPropdef::_n_doc */
-/* 7: Attribute AExternPropdef::_self_var */
-/* 8: Attribute AExternPropdef::_name */
-/* 9: Attribute AExternPropdef::_method */
-/* 10: Attribute AExternPropdef::_n_kwredef */
-/* 11: Attribute AExternPropdef::_n_visibility */
-/* 12: Attribute AExternPropdef::_n_methid */
-/* 13: Attribute AExternPropdef::_n_signature */
-/* 14: Attribute AExternPropdef::_n_extern */
-/* 15: Attribute AExternPropdef::_n_extern_calls */
-void INIT_ATTRIBUTES__parser___parser_nodes___AExternPropdef(val_t p0){
+/* 2: Attribute AExprAtArg::_parent */
+/* 3: Attribute AExprAtArg::_location */
+/* 4: Attribute AExprAtArg::_first_location */
+/* 5: Attribute AExprAtArg::_last_location */
+/* 6: Attribute AExprAtArg::_n_annotations */
+/* 7: Attribute AExprAtArg::_n_expr */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AExprAtArg[] = "init var of AExprAtArg";
+void INIT_ATTRIBUTES__parser___parser_nodes___AExprAtArg(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__parser___parser_nodes___AExternPropdef;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AExprAtArg;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./parser//parser_nodes.nit:459 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AExternPropdef____n_extern(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:460 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AExternPropdef____n_extern_calls(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:436 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:438 */
+  /* parser/parser_nodes.nit:56 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:416 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AExternPropdef(void)
+val_t NEW_parser___parser_nodes___AExprAtArg(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 16);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AExternPropdef;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AExprAtArg;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AExternPropdef(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AExprAtArg[] = "check new AExprAtArg";
+void CHECKNEW_parser___parser_nodes___AExprAtArg(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
   fra.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___parser_nodes___AExternPropdef;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AExprAtArg;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AExprAtArg____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;
+}
+static const char LOCATE_NEW_AExprAtArg_parser___parser_prod___AExprAtArg___empty_init[] = "new AExprAtArg parser_prod::AExprAtArg::empty_init";
+val_t NEW_AExprAtArg_parser___parser_prod___AExprAtArg___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 = 9302;
+  fra.me.meth = LOCATE_NEW_AExprAtArg_parser___parser_prod___AExprAtArg___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_prod.nit:9302 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AExprAtArg();
+  INIT_ATTRIBUTES__parser___parser_nodes___AExprAtArg(fra.me.REG[0]);
+  parser___parser_prod___AExprAtArg___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AExprAtArg(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-val_t NEW_AExternPropdef_parser___parser_nodes___ANode___init(val_t p0){
+static const char LOCATE_NEW_AExprAtArg_parser___parser_prod___AExprAtArg___init_aexpratarg[] = "new AExprAtArg parser_prod::AExprAtArg::init_aexpratarg";
+val_t NEW_AExprAtArg_parser___parser_prod___AExprAtArg___init_aexpratarg(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};
+  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_AExternPropdef_parser___parser_nodes___ANode___init;
+  fra.me.line = 9304;
+  fra.me.meth = LOCATE_NEW_AExprAtArg_parser___parser_prod___AExprAtArg___init_aexpratarg;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___AExternPropdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___AExternPropdef(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AExternPropdef(fra.me.REG[1]);
+  /* parser/parser_prod.nit:9304 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___AExprAtArg();
+  INIT_ATTRIBUTES__parser___parser_nodes___AExprAtArg(fra.me.REG[1]);
+  parser___parser_prod___AExprAtArg___init_aexpratarg(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AExprAtArg(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-val_t NEW_AExternPropdef_parser___parser_prod___AMethPropdef___empty_init(void){
+static const char LOCATE_NEW_AExprAtArg_parser___parser_nodes___ANode___init[] = "new AExprAtArg parser_nodes::ANode::init";
+val_t NEW_AExprAtArg_parser___parser_nodes___ANode___init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  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 = 1150;
-  fra.me.meth = LOCATE_NEW_AExternPropdef_parser___parser_prod___AMethPropdef___empty_init;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_AExprAtArg_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:1150 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AExternPropdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___AExternPropdef(fra.me.REG[0]);
-  parser___parser_prod___AMethPropdef___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AExternPropdef(fra.me.REG[0]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AExprAtArg();
+  INIT_ATTRIBUTES__parser___parser_nodes___AExprAtArg(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AExprAtArg(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AExternPropdef_parser___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 = 1152;
-  fra.me.meth = LOCATE_NEW_AExternPropdef_parser___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:1152 */
-  fra.me.REG[5] = NEW_parser___parser_nodes___AExternPropdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___AExternPropdef(fra.me.REG[5]);
-  parser___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_parser___parser_nodes___AExternPropdef(fra.me.REG[5]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[5];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AExternMethPropdef[103] = {
-  {(bigint) 3763 /* 0: Identity */},
-  {(bigint) 17 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AExternMethPropdef" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AExternMethPropdef < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AExternMethPropdef < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___parser_nodes___AAtAtArg[79] = {
+  {(bigint) 4563 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AAtAtArg" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AAtAtArg < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AAtAtArg < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AAtAtArg < Prod: superclass typecheck marker */},
+  {(bigint) 3839 /* 6: AAtAtArg < AAtArg: superclass typecheck marker */},
+  {(bigint) 4563 /* 7: AAtAtArg < AAtAtArg: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AExternMethPropdef < Prod: superclass typecheck marker */},
-  {(bigint) 3063 /* 7: AExternMethPropdef < APropdef: superclass typecheck marker */},
-  {(bigint) 3375 /* 8: AExternMethPropdef < AMethPropdef: superclass typecheck marker */},
-  {(bigint) 3667 /* 9: AExternMethPropdef < AExternPropdef: superclass typecheck marker */},
-  {(bigint) 3763 /* 10: AExternMethPropdef < AExternMethPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -46636,7 +89725,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternMethPropdef[103] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AExternMethPropdef < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: AAtAtArg < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -46652,6 +89741,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternMethPropdef[103] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -46669,266 +89760,157 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternMethPropdef[103] = {
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AMethPropdef___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExternPropdef___accept_property_verifier},
-  {(bigint) syntax___mmbuilder___AMethPropdef___accept_abs_syntax_visitor},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AExternMethPropdef___replace_child},
+  {(bigint) parser___parser_prod___AAtAtArg___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AExternMethPropdef___visit_all},
-  {(bigint) 1 /* 60: AExternMethPropdef < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AAtAtArg___visit_all},
+  {(bigint) 2 /* 63: AAtAtArg < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___AMethPropdef___hot_location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AMethPropdef___accept_icode_generation},
-  {(bigint) syntax___typing___AMethPropdef___accept_typing},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AExternMethPropdef < Prod: superclass init_table position */},
+  {(bigint) 1 /* 72: AAtAtArg < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___APropdef___process_and_check},
-  {(bigint) syntax___mmbuilder___APropdef___do_and_check_intro},
-  {(bigint) syntax___mmbuilder___APropdef___inherit_signature},
-  {(bigint) syntax___mmbuilder___APropdef___do_and_check_redef},
-  {(bigint) syntax___typing___APropdef___self_var},
-  {(bigint) 3 /* 77: AExternMethPropdef < APropdef: superclass init_table position */},
-  {(bigint) parser___parser_nodes___APropdef___n_doc},
-  {(bigint) syntax___mmbuilder___AMethPropdef___name},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) syntax___mmbuilder___AMethPropdef___method},
-  {(bigint) parser___parser_prod___AMethPropdef___empty_init},
-  {(bigint) parser___parser_prod___AMethPropdef___init_amethpropdef},
-  {(bigint) 4 /* 86: AExternMethPropdef < AMethPropdef: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AMethPropdef___n_kwredef},
-  {(bigint) parser___parser_nodes___AMethPropdef___n_visibility},
-  {(bigint) parser___parser_nodes___AMethPropdef___n_methid},
-  {(bigint) parser___parser_nodes___AMethPropdef___n_signature},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___icode_generation___AExternMethPropdef___fill_iroutine},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___mmbuilder___AMethPropdef___accept_property_verifier},
-  {(bigint) 5 /* 95: AExternMethPropdef < AExternPropdef: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AExternPropdef___n_extern},
-  {(bigint) parser___parser_nodes___AExternPropdef___n_extern_calls},
-  {(bigint) syntax___icode_generation___AExternPropdef___fill_iroutine},
-  {(bigint) parser___parser_prod___AExternMethPropdef___empty_init},
-  {(bigint) parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef},
-  {(bigint) 6 /* 101: AExternMethPropdef < AExternMethPropdef: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AExternMethPropdef___n_kwmeth},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) 0 /* 75: AAtAtArg < AAtArg: superclass init_table position */},
+  {(bigint) parser___parser_prod___AAtAtArg___empty_init},
+  {(bigint) parser___parser_prod___AAtAtArg___init_aatatarg},
+  {(bigint) 4 /* 78: AAtAtArg < AAtAtArg: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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_extern */
-/* 15: Attribute AExternMethPropdef::_n_extern_calls */
-/* 16: Attribute AExternMethPropdef::_n_kwmeth */
-void INIT_ATTRIBUTES__parser___parser_nodes___AExternMethPropdef(val_t p0){
+/* 2: Attribute AAtAtArg::_parent */
+/* 3: Attribute AAtAtArg::_location */
+/* 4: Attribute AAtAtArg::_first_location */
+/* 5: Attribute AAtAtArg::_last_location */
+/* 6: Attribute AAtAtArg::_n_annotations */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AAtAtArg[] = "init var of AAtAtArg";
+void INIT_ATTRIBUTES__parser___parser_nodes___AAtAtArg(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__parser___parser_nodes___AExternMethPropdef;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AAtAtArg;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./parser//parser_nodes.nit:416 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:436 */
+  /* parser/parser_nodes.nit:56 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:438 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:459 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AExternPropdef____n_extern(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:460 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AExternPropdef____n_extern_calls(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AExternMethPropdef(void)
+val_t NEW_parser___parser_nodes___AAtAtArg(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 17);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AExternMethPropdef;
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AAtAtArg;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AExternMethPropdef(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AAtAtArg[] = "check new AAtAtArg";
+void CHECKNEW_parser___parser_nodes___AAtAtArg(val_t p0){
   struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
   val_t tmp;
   fra.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___parser_nodes___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___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;
-}
-val_t NEW_AExternMethPropdef_parser___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 = 1150;
-  fra.me.meth = LOCATE_NEW_AExternMethPropdef_parser___parser_prod___AMethPropdef___empty_init;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AAtAtArg;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:1150 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AExternMethPropdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___AExternMethPropdef(fra.me.REG[0]);
-  parser___parser_prod___AMethPropdef___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AExternMethPropdef(fra.me.REG[0]);
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
 }
-val_t NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___empty_init(void){
+static const char LOCATE_NEW_AAtAtArg_parser___parser_prod___AAtAtArg___empty_init[] = "new AAtAtArg parser_prod::AAtAtArg::empty_init";
+val_t NEW_AAtAtArg_parser___parser_prod___AAtAtArg___empty_init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  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 = 1463;
-  fra.me.meth = LOCATE_NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___empty_init;
+  fra.me.line = 9333;
+  fra.me.meth = LOCATE_NEW_AAtAtArg_parser___parser_prod___AAtAtArg___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:1463 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AExternMethPropdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___AExternMethPropdef(fra.me.REG[0]);
-  parser___parser_prod___AExternMethPropdef___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AExternMethPropdef(fra.me.REG[0]);
+  /* parser/parser_prod.nit:9333 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AAtAtArg();
+  INIT_ATTRIBUTES__parser___parser_nodes___AAtAtArg(fra.me.REG[0]);
+  parser___parser_prod___AAtAtArg___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AAtAtArg(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AExternMethPropdef_parser___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, val_t p7){
-  struct {struct stack_frame_t me; val_t MORE_REG[8];} 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 = 1465;
-  fra.me.meth = LOCATE_NEW_AExternMethPropdef_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef;
-  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:1465 */
-  fra.me.REG[8] = NEW_parser___parser_nodes___AExternMethPropdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___AExternMethPropdef(fra.me.REG[8]);
-  parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(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_parser___parser_nodes___AExternMethPropdef(fra.me.REG[8]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[8];
-}
-val_t NEW_AExternMethPropdef_parser___parser_nodes___ANode___init(val_t p0){
+static const char LOCATE_NEW_AAtAtArg_parser___parser_prod___AAtAtArg___init_aatatarg[] = "new AAtAtArg parser_prod::AAtAtArg::init_aatatarg";
+val_t NEW_AAtAtArg_parser___parser_prod___AAtAtArg___init_aatatarg(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};
+  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_AExternMethPropdef_parser___parser_nodes___ANode___init;
+  fra.me.line = 9335;
+  fra.me.meth = LOCATE_NEW_AAtAtArg_parser___parser_prod___AAtAtArg___init_aatatarg;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___AExternMethPropdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___AExternMethPropdef(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AExternMethPropdef(fra.me.REG[1]);
+  /* parser/parser_prod.nit:9335 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___AAtAtArg();
+  INIT_ATTRIBUTES__parser___parser_nodes___AAtAtArg(fra.me.REG[1]);
+  parser___parser_prod___AAtAtArg___init_aatatarg(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AAtAtArg(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-val_t NEW_AExternMethPropdef_parser___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;
+static const char LOCATE_NEW_AAtAtArg_parser___parser_nodes___ANode___init[] = "new AAtAtArg parser_nodes::ANode::init";
+val_t NEW_AAtAtArg_parser___parser_nodes___ANode___init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  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 = 1152;
-  fra.me.meth = LOCATE_NEW_AExternMethPropdef_parser___parser_prod___AMethPropdef___init_amethpropdef;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_AAtAtArg_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 6;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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:1152 */
-  fra.me.REG[5] = NEW_parser___parser_nodes___AExternMethPropdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___AExternMethPropdef(fra.me.REG[5]);
-  parser___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_parser___parser_nodes___AExternMethPropdef(fra.me.REG[5]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AAtAtArg();
+  INIT_ATTRIBUTES__parser___parser_nodes___AAtAtArg(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AAtAtArg(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[5];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AConcreteMethPropdef[100] = {
-  {(bigint) 3695 /* 0: Identity */},
-  {(bigint) 16 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AConcreteMethPropdef" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AConcreteMethPropdef < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AConcreteMethPropdef < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___parser_nodes___AIdAtid[80] = {
+  {(bigint) 4467 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AIdAtid" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AIdAtid < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AIdAtid < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AIdAtid < Prod: superclass typecheck marker */},
+  {(bigint) 3835 /* 6: AIdAtid < AAtid: superclass typecheck marker */},
+  {(bigint) 4467 /* 7: AIdAtid < AIdAtid: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AConcreteMethPropdef < Prod: superclass typecheck marker */},
-  {(bigint) 3063 /* 7: AConcreteMethPropdef < APropdef: superclass typecheck marker */},
-  {(bigint) 3375 /* 8: AConcreteMethPropdef < AMethPropdef: superclass typecheck marker */},
-  {(bigint) 3695 /* 9: AConcreteMethPropdef < AConcreteMethPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -46937,7 +89919,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AConcreteMethPropdef[100] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AConcreteMethPropdef < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: AIdAtid < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -46953,6 +89935,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AConcreteMethPropdef[100] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -46970,246 +89954,164 @@ const classtable_elt_t VFT_parser___parser_nodes___AConcreteMethPropdef[100] = {
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AMethPropdef___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AMethPropdef___accept_property_verifier},
-  {(bigint) syntax___mmbuilder___AMethPropdef___accept_abs_syntax_visitor},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AConcreteMethPropdef___replace_child},
+  {(bigint) parser___parser_prod___AIdAtid___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AConcreteMethPropdef___visit_all},
-  {(bigint) 1 /* 60: AConcreteMethPropdef < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AIdAtid___visit_all},
+  {(bigint) 2 /* 63: AIdAtid < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___AMethPropdef___hot_location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AMethPropdef___accept_icode_generation},
-  {(bigint) syntax___typing___AMethPropdef___accept_typing},
-  {(bigint) syntax___typing___AConcreteMethPropdef___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AConcreteMethPropdef < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___APropdef___process_and_check},
-  {(bigint) syntax___mmbuilder___APropdef___do_and_check_intro},
-  {(bigint) syntax___mmbuilder___APropdef___inherit_signature},
-  {(bigint) syntax___mmbuilder___APropdef___do_and_check_redef},
-  {(bigint) syntax___typing___APropdef___self_var},
-  {(bigint) 3 /* 77: AConcreteMethPropdef < APropdef: superclass init_table position */},
-  {(bigint) parser___parser_nodes___APropdef___n_doc},
-  {(bigint) syntax___mmbuilder___AMethPropdef___name},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) syntax___mmbuilder___AMethPropdef___method},
-  {(bigint) parser___parser_prod___AMethPropdef___empty_init},
-  {(bigint) parser___parser_prod___AMethPropdef___init_amethpropdef},
-  {(bigint) 4 /* 86: AConcreteMethPropdef < AMethPropdef: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AMethPropdef___n_kwredef},
-  {(bigint) parser___parser_nodes___AMethPropdef___n_visibility},
-  {(bigint) parser___parser_nodes___AMethPropdef___n_methid},
-  {(bigint) parser___parser_nodes___AMethPropdef___n_signature},
+  {(bigint) parser___parser_nodes___ANode___debug},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___icode_generation___AConcreteMethPropdef___fill_iroutine},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___AConcreteMethPropdef___empty_init},
-  {(bigint) parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef},
-  {(bigint) 5 /* 97: AConcreteMethPropdef < AConcreteMethPropdef: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AConcreteMethPropdef___n_kwmeth},
-  {(bigint) parser___parser_nodes___AConcreteMethPropdef___n_block},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: AIdAtid < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) 0 /* 75: AIdAtid < AAtid: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AAtid___n_id},
+  {(bigint) parser___parser_prod___AIdAtid___empty_init},
+  {(bigint) parser___parser_prod___AIdAtid___init_aidatid},
+  {(bigint) 4 /* 79: AIdAtid < AIdAtid: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AConcreteMethPropdef(val_t p0){
+/* 2: Attribute AIdAtid::_parent */
+/* 3: Attribute AIdAtid::_location */
+/* 4: Attribute AIdAtid::_first_location */
+/* 5: Attribute AIdAtid::_last_location */
+/* 6: Attribute AIdAtid::_n_annotations */
+/* 7: Attribute AIdAtid::_n_id */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AIdAtid[] = "init var of AIdAtid";
+void INIT_ATTRIBUTES__parser___parser_nodes___AIdAtid(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__parser___parser_nodes___AConcreteMethPropdef;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AIdAtid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./parser//parser_nodes.nit:416 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:436 */
+  /* parser/parser_nodes.nit:56 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:438 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:470 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AConcreteMethPropdef(void)
+val_t NEW_parser___parser_nodes___AIdAtid(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 16);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AConcreteMethPropdef;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AIdAtid;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AConcreteMethPropdef(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AIdAtid[] = "check new AIdAtid";
+void CHECKNEW_parser___parser_nodes___AIdAtid(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
   fra.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___parser_nodes___AConcreteMethPropdef;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
-  stack_frame_head = fra.me.prev;
-}
-val_t NEW_AConcreteMethPropdef_parser___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 = 1150;
-  fra.me.meth = LOCATE_NEW_AConcreteMethPropdef_parser___parser_prod___AMethPropdef___empty_init;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AIdAtid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:1150 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AConcreteMethPropdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___AConcreteMethPropdef(fra.me.REG[0]);
-  parser___parser_prod___AMethPropdef___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AConcreteMethPropdef(fra.me.REG[0]);
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAtid____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;
-  return fra.me.REG[0];
 }
-val_t NEW_AConcreteMethPropdef_parser___parser_prod___AConcreteMethPropdef___empty_init(void){
+static const char LOCATE_NEW_AIdAtid_parser___parser_prod___AIdAtid___empty_init[] = "new AIdAtid parser_prod::AIdAtid::empty_init";
+val_t NEW_AIdAtid_parser___parser_prod___AIdAtid___empty_init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  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 = 1608;
-  fra.me.meth = LOCATE_NEW_AConcreteMethPropdef_parser___parser_prod___AConcreteMethPropdef___empty_init;
+  fra.me.line = 9364;
+  fra.me.meth = LOCATE_NEW_AIdAtid_parser___parser_prod___AIdAtid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:1608 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AConcreteMethPropdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___AConcreteMethPropdef(fra.me.REG[0]);
-  parser___parser_prod___AConcreteMethPropdef___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AConcreteMethPropdef(fra.me.REG[0]);
+  /* parser/parser_prod.nit:9364 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AIdAtid();
+  INIT_ATTRIBUTES__parser___parser_nodes___AIdAtid(fra.me.REG[0]);
+  parser___parser_prod___AIdAtid___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AIdAtid(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AConcreteMethPropdef_parser___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 = 1610;
-  fra.me.meth = LOCATE_NEW_AConcreteMethPropdef_parser___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:1610 */
-  fra.me.REG[7] = NEW_parser___parser_nodes___AConcreteMethPropdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___AConcreteMethPropdef(fra.me.REG[7]);
-  parser___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_parser___parser_nodes___AConcreteMethPropdef(fra.me.REG[7]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[7];
-}
-val_t NEW_AConcreteMethPropdef_parser___parser_nodes___ANode___init(val_t p0){
+static const char LOCATE_NEW_AIdAtid_parser___parser_prod___AIdAtid___init_aidatid[] = "new AIdAtid parser_prod::AIdAtid::init_aidatid";
+val_t NEW_AIdAtid_parser___parser_prod___AIdAtid___init_aidatid(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};
+  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_AConcreteMethPropdef_parser___parser_nodes___ANode___init;
+  fra.me.line = 9366;
+  fra.me.meth = LOCATE_NEW_AIdAtid_parser___parser_prod___AIdAtid___init_aidatid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___AConcreteMethPropdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___AConcreteMethPropdef(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AConcreteMethPropdef(fra.me.REG[1]);
+  /* parser/parser_prod.nit:9366 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___AIdAtid();
+  INIT_ATTRIBUTES__parser___parser_nodes___AIdAtid(fra.me.REG[1]);
+  parser___parser_prod___AIdAtid___init_aidatid(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AIdAtid(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-val_t NEW_AConcreteMethPropdef_parser___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;
+static const char LOCATE_NEW_AIdAtid_parser___parser_nodes___ANode___init[] = "new AIdAtid parser_nodes::ANode::init";
+val_t NEW_AIdAtid_parser___parser_nodes___ANode___init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  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 = 1152;
-  fra.me.meth = LOCATE_NEW_AConcreteMethPropdef_parser___parser_prod___AMethPropdef___init_amethpropdef;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_AIdAtid_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 6;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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:1152 */
-  fra.me.REG[5] = NEW_parser___parser_nodes___AConcreteMethPropdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___AConcreteMethPropdef(fra.me.REG[5]);
-  parser___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_parser___parser_nodes___AConcreteMethPropdef(fra.me.REG[5]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AIdAtid();
+  INIT_ATTRIBUTES__parser___parser_nodes___AIdAtid(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AIdAtid(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[5];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AInitPropdef[69] = {
-  {(bigint) 311 /* 0: Identity */},
-  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AInitPropdef" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AInitPropdef < Object: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 311 /* 5: AInitPropdef < AInitPropdef: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_parser___parser_nodes___AKwexternAtid[80] = {
+  {(bigint) 4439 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AKwexternAtid" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AKwexternAtid < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AKwexternAtid < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AKwexternAtid < Prod: superclass typecheck marker */},
+  {(bigint) 3835 /* 6: AKwexternAtid < AAtid: superclass typecheck marker */},
+  {(bigint) 4439 /* 7: AKwexternAtid < AKwexternAtid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -47221,7 +90123,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AInitPropdef[69] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: AInitPropdef < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: AKwexternAtid < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -47237,6 +90139,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AInitPropdef[69] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -47250,92 +90154,172 @@ const classtable_elt_t VFT_parser___parser_nodes___AInitPropdef[69] = {
   {(bigint) standard___math___Object___srand},
   {(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 :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 1 /* 67: AInitPropdef < AInitPropdef: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AInitPropdef___init},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser___parser_prod___ANode___parent},
+  {(bigint) parser___parser_prod___ANode___parent__eq},
+  {(bigint) parser___parser_prod___ANode___remove_child},
+  {(bigint) parser___parser_prod___AKwexternAtid___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___AKwexternAtid___visit_all},
+  {(bigint) 2 /* 63: AKwexternAtid < ANode: superclass init_table position */},
+  {(bigint) parser___parser_nodes___ANode___location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
+  {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
+  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: AKwexternAtid < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) 0 /* 75: AKwexternAtid < AAtid: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AAtid___n_id},
+  {(bigint) parser___parser_prod___AKwexternAtid___empty_init},
+  {(bigint) parser___parser_prod___AKwexternAtid___init_akwexternatid},
+  {(bigint) 4 /* 79: AKwexternAtid < AKwexternAtid: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-void INIT_ATTRIBUTES__parser___parser_nodes___AInitPropdef(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute AKwexternAtid::_parent */
+/* 3: Attribute AKwexternAtid::_location */
+/* 4: Attribute AKwexternAtid::_first_location */
+/* 5: Attribute AKwexternAtid::_last_location */
+/* 6: Attribute AKwexternAtid::_n_annotations */
+/* 7: Attribute AKwexternAtid::_n_id */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AKwexternAtid[] = "init var of AKwexternAtid";
+void INIT_ATTRIBUTES__parser___parser_nodes___AKwexternAtid(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__parser___parser_nodes___AInitPropdef;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AKwexternAtid;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AInitPropdef(void)
+val_t NEW_parser___parser_nodes___AKwexternAtid(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 2);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AInitPropdef;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AKwexternAtid;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AInitPropdef(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AKwexternAtid[] = "check new AKwexternAtid";
+void CHECKNEW_parser___parser_nodes___AKwexternAtid(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
   fra.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___parser_nodes___AInitPropdef;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AKwexternAtid;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAtid____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_AInitPropdef_parser___parser_nodes___AInitPropdef___init(void){
+static const char LOCATE_NEW_AKwexternAtid_parser___parser_prod___AKwexternAtid___empty_init[] = "new AKwexternAtid parser_prod::AKwexternAtid::empty_init";
+val_t NEW_AKwexternAtid_parser___parser_prod___AKwexternAtid___empty_init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[2] = {0, 0};
+  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_AInitPropdef_parser___parser_nodes___AInitPropdef___init;
+  fra.me.line = 9395;
+  fra.me.meth = LOCATE_NEW_AKwexternAtid_parser___parser_prod___AKwexternAtid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = NEW_parser___parser_nodes___AInitPropdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___AInitPropdef(fra.me.REG[0]);
-  parser___parser_nodes___AInitPropdef___init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AInitPropdef(fra.me.REG[0]);
+  /* parser/parser_prod.nit:9395 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AKwexternAtid();
+  INIT_ATTRIBUTES__parser___parser_nodes___AKwexternAtid(fra.me.REG[0]);
+  parser___parser_prod___AKwexternAtid___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AKwexternAtid(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AConcreteInitPropdef[109] = {
-  {(bigint) 3771 /* 0: Identity */},
-  {(bigint) 19 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AConcreteInitPropdef" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AConcreteInitPropdef < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AConcreteInitPropdef < ANode: superclass typecheck marker */},
-  {(bigint) 311 /* 5: AConcreteInitPropdef < AInitPropdef: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: AConcreteInitPropdef < Prod: superclass typecheck marker */},
-  {(bigint) 3063 /* 7: AConcreteInitPropdef < APropdef: superclass typecheck marker */},
-  {(bigint) 3375 /* 8: AConcreteInitPropdef < AMethPropdef: superclass typecheck marker */},
-  {(bigint) 3695 /* 9: AConcreteInitPropdef < AConcreteMethPropdef: superclass typecheck marker */},
-  {(bigint) 3771 /* 10: AConcreteInitPropdef < AConcreteInitPropdef: superclass typecheck marker */},
+static const char LOCATE_NEW_AKwexternAtid_parser___parser_prod___AKwexternAtid___init_akwexternatid[] = "new AKwexternAtid parser_prod::AKwexternAtid::init_akwexternatid";
+val_t NEW_AKwexternAtid_parser___parser_prod___AKwexternAtid___init_akwexternatid(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 = 9397;
+  fra.me.meth = LOCATE_NEW_AKwexternAtid_parser___parser_prod___AKwexternAtid___init_akwexternatid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_prod.nit:9397 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___AKwexternAtid();
+  INIT_ATTRIBUTES__parser___parser_nodes___AKwexternAtid(fra.me.REG[1]);
+  parser___parser_prod___AKwexternAtid___init_akwexternatid(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AKwexternAtid(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_NEW_AKwexternAtid_parser___parser_nodes___ANode___init[] = "new AKwexternAtid parser_nodes::ANode::init";
+val_t NEW_AKwexternAtid_parser___parser_nodes___ANode___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 = 32;
+  fra.me.meth = LOCATE_NEW_AKwexternAtid_parser___parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AKwexternAtid();
+  INIT_ATTRIBUTES__parser___parser_nodes___AKwexternAtid(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AKwexternAtid(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___parser_nodes___AKwinternAtid[80] = {
+  {(bigint) 4431 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AKwinternAtid" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AKwinternAtid < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AKwinternAtid < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AKwinternAtid < Prod: superclass typecheck marker */},
+  {(bigint) 3835 /* 6: AKwinternAtid < AAtid: superclass typecheck marker */},
+  {(bigint) 4431 /* 7: AKwinternAtid < AKwinternAtid: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -47343,7 +90327,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AConcreteInitPropdef[109] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AConcreteInitPropdef < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: AKwinternAtid < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -47359,6 +90343,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AConcreteInitPropdef[109] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -47376,237 +90362,168 @@ const classtable_elt_t VFT_parser___parser_nodes___AConcreteInitPropdef[109] = {
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AMethPropdef___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AMethPropdef___accept_property_verifier},
-  {(bigint) syntax___mmbuilder___AMethPropdef___accept_abs_syntax_visitor},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AConcreteInitPropdef___replace_child},
+  {(bigint) parser___parser_prod___AKwinternAtid___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AConcreteInitPropdef___visit_all},
-  {(bigint) 1 /* 60: AConcreteInitPropdef < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AKwinternAtid___visit_all},
+  {(bigint) 2 /* 63: AKwinternAtid < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___AConcreteInitPropdef___hot_location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AMethPropdef___accept_icode_generation},
-  {(bigint) syntax___typing___AConcreteInitPropdef___accept_typing},
-  {(bigint) syntax___typing___AConcreteInitPropdef___after_typing},
-  {(bigint) 6 /* 67: AConcreteInitPropdef < AInitPropdef: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AInitPropdef___init},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AConcreteInitPropdef < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___APropdef___process_and_check},
-  {(bigint) syntax___mmbuilder___APropdef___do_and_check_intro},
-  {(bigint) syntax___mmbuilder___APropdef___inherit_signature},
-  {(bigint) syntax___mmbuilder___APropdef___do_and_check_redef},
-  {(bigint) syntax___typing___APropdef___self_var},
-  {(bigint) 3 /* 77: AConcreteInitPropdef < APropdef: superclass init_table position */},
-  {(bigint) parser___parser_nodes___APropdef___n_doc},
-  {(bigint) syntax___mmbuilder___AMethPropdef___name},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) syntax___mmbuilder___AMethPropdef___method},
-  {(bigint) parser___parser_prod___AMethPropdef___empty_init},
-  {(bigint) parser___parser_prod___AMethPropdef___init_amethpropdef},
-  {(bigint) 4 /* 86: AConcreteInitPropdef < AMethPropdef: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AMethPropdef___n_kwredef},
-  {(bigint) parser___parser_nodes___AMethPropdef___n_visibility},
-  {(bigint) parser___parser_nodes___AMethPropdef___n_methid},
-  {(bigint) parser___parser_nodes___AMethPropdef___n_signature},
+  {(bigint) parser___parser_nodes___ANode___debug},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___icode_generation___AConcreteMethPropdef___fill_iroutine},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___AConcreteMethPropdef___empty_init},
-  {(bigint) parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef},
-  {(bigint) 5 /* 97: AConcreteInitPropdef < AConcreteMethPropdef: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AConcreteMethPropdef___n_kwmeth},
-  {(bigint) parser___parser_nodes___AConcreteMethPropdef___n_block},
-  {(bigint) syntax___typing___AMethPropdef___accept_typing},
-  {(bigint) syntax___typing___AConcreteMethPropdef___after_typing},
-  {(bigint) syntax___syntax_base___AConcreteInitPropdef___super_init_calls},
-  {(bigint) syntax___syntax_base___AConcreteInitPropdef___explicit_super_init_calls},
-  {(bigint) parser___parser_prod___AConcreteInitPropdef___empty_init},
-  {(bigint) parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef},
-  {(bigint) 7 /* 106: AConcreteInitPropdef < AConcreteInitPropdef: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AConcreteInitPropdef___init},
-  {(bigint) parser___parser_nodes___AConcreteInitPropdef___n_kwinit},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: AKwinternAtid < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) 0 /* 75: AKwinternAtid < AAtid: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AAtid___n_id},
+  {(bigint) parser___parser_prod___AKwinternAtid___empty_init},
+  {(bigint) parser___parser_prod___AKwinternAtid___init_akwinternatid},
+  {(bigint) 4 /* 79: AKwinternAtid < AKwinternAtid: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AConcreteInitPropdef(val_t p0){
+/* 2: Attribute AKwinternAtid::_parent */
+/* 3: Attribute AKwinternAtid::_location */
+/* 4: Attribute AKwinternAtid::_first_location */
+/* 5: Attribute AKwinternAtid::_last_location */
+/* 6: Attribute AKwinternAtid::_n_annotations */
+/* 7: Attribute AKwinternAtid::_n_id */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AKwinternAtid[] = "init var of AKwinternAtid";
+void INIT_ATTRIBUTES__parser___parser_nodes___AKwinternAtid(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__parser___parser_nodes___AConcreteInitPropdef;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AKwinternAtid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//syntax_base.nit:554 */
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-  ATTR_syntax___syntax_base___AConcreteInitPropdef____super_init_calls(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//syntax_base.nit:555 */
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-  ATTR_syntax___syntax_base___AConcreteInitPropdef____explicit_super_init_calls(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:416 */
+  /* parser/parser_nodes.nit:56 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:436 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:438 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:470 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AConcreteInitPropdef(void)
+val_t NEW_parser___parser_nodes___AKwinternAtid(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 19);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AConcreteInitPropdef;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AKwinternAtid;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AConcreteInitPropdef(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AKwinternAtid[] = "check new AKwinternAtid";
+void CHECKNEW_parser___parser_nodes___AKwinternAtid(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___parser_nodes___AConcreteInitPropdef;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AKwinternAtid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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___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___parser_nodes___AConcreteInitPropdef____n_kwinit(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAtid____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwinit", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___empty_init(void){
+static const char LOCATE_NEW_AKwinternAtid_parser___parser_prod___AKwinternAtid___empty_init[] = "new AKwinternAtid parser_prod::AKwinternAtid::empty_init";
+val_t NEW_AKwinternAtid_parser___parser_prod___AKwinternAtid___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};
+  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 = 1735;
-  fra.me.meth = LOCATE_NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___empty_init;
+  fra.me.line = 9426;
+  fra.me.meth = LOCATE_NEW_AKwinternAtid_parser___parser_prod___AKwinternAtid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:1735 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AConcreteInitPropdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___AConcreteInitPropdef(fra.me.REG[0]);
-  parser___parser_prod___AConcreteInitPropdef___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AConcreteInitPropdef(fra.me.REG[0]);
+  /* parser/parser_prod.nit:9426 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AKwinternAtid();
+  INIT_ATTRIBUTES__parser___parser_nodes___AKwinternAtid(fra.me.REG[0]);
+  parser___parser_prod___AKwinternAtid___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AKwinternAtid(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AConcreteInitPropdef_parser___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;
+static const char LOCATE_NEW_AKwinternAtid_parser___parser_prod___AKwinternAtid___init_akwinternatid[] = "new AKwinternAtid parser_prod::AKwinternAtid::init_akwinternatid";
+val_t NEW_AKwinternAtid_parser___parser_prod___AKwinternAtid___init_akwinternatid(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};
+  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 = 1737;
-  fra.me.meth = LOCATE_NEW_AConcreteInitPropdef_parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef;
+  fra.me.line = 9428;
+  fra.me.meth = LOCATE_NEW_AKwinternAtid_parser___parser_prod___AKwinternAtid___init_akwinternatid;
   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:1737 */
-  fra.me.REG[7] = NEW_parser___parser_nodes___AConcreteInitPropdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___AConcreteInitPropdef(fra.me.REG[7]);
-  parser___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_parser___parser_nodes___AConcreteInitPropdef(fra.me.REG[7]);
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_prod.nit:9428 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___AKwinternAtid();
+  INIT_ATTRIBUTES__parser___parser_nodes___AKwinternAtid(fra.me.REG[1]);
+  parser___parser_prod___AKwinternAtid___init_akwinternatid(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AKwinternAtid(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[7];
+  return fra.me.REG[1];
 }
-val_t NEW_AConcreteInitPropdef_parser___parser_nodes___AConcreteInitPropdef___init(void){
+static const char LOCATE_NEW_AKwinternAtid_parser___parser_nodes___ANode___init[] = "new AKwinternAtid parser_nodes::ANode::init";
+val_t NEW_AKwinternAtid_parser___parser_nodes___ANode___init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[8] = {0, 0, 0, 0, 0, 0, 0, 0};
+  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 = 477;
-  fra.me.meth = LOCATE_NEW_AConcreteInitPropdef_parser___parser_nodes___AConcreteInitPropdef___init;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_AKwinternAtid_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_nodes.nit:477 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AConcreteInitPropdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___AConcreteInitPropdef(fra.me.REG[0]);
-  parser___parser_nodes___AConcreteInitPropdef___init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AConcreteInitPropdef(fra.me.REG[0]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AKwinternAtid();
+  INIT_ATTRIBUTES__parser___parser_nodes___AKwinternAtid(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AKwinternAtid(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AExternInitPropdef[106] = {
-  {(bigint) 3767 /* 0: Identity */},
-  {(bigint) 17 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AExternInitPropdef" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AExternInitPropdef < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AExternInitPropdef < ANode: superclass typecheck marker */},
-  {(bigint) 311 /* 5: AExternInitPropdef < AInitPropdef: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: AExternInitPropdef < Prod: superclass typecheck marker */},
-  {(bigint) 3063 /* 7: AExternInitPropdef < APropdef: superclass typecheck marker */},
-  {(bigint) 3375 /* 8: AExternInitPropdef < AMethPropdef: superclass typecheck marker */},
-  {(bigint) 3667 /* 9: AExternInitPropdef < AExternPropdef: superclass typecheck marker */},
-  {(bigint) 3767 /* 10: AExternInitPropdef < AExternInitPropdef: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___parser_nodes___AKwreadableAtid[80] = {
+  {(bigint) 4427 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AKwreadableAtid" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AKwreadableAtid < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AKwreadableAtid < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AKwreadableAtid < Prod: superclass typecheck marker */},
+  {(bigint) 3835 /* 6: AKwreadableAtid < AAtid: superclass typecheck marker */},
+  {(bigint) 4427 /* 7: AKwreadableAtid < AKwreadableAtid: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -47614,7 +90531,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternInitPropdef[106] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AExternInitPropdef < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: AKwreadableAtid < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -47630,6 +90547,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternInitPropdef[106] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -47647,221 +90566,168 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternInitPropdef[106] = {
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AMethPropdef___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExternPropdef___accept_property_verifier},
-  {(bigint) syntax___mmbuilder___AMethPropdef___accept_abs_syntax_visitor},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AExternInitPropdef___replace_child},
+  {(bigint) parser___parser_prod___AKwreadableAtid___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AExternInitPropdef___visit_all},
-  {(bigint) 1 /* 60: AExternInitPropdef < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AKwreadableAtid___visit_all},
+  {(bigint) 2 /* 63: AKwreadableAtid < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___AMethPropdef___hot_location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AMethPropdef___accept_icode_generation},
-  {(bigint) syntax___typing___AExternInitPropdef___accept_typing},
-  {(bigint) syntax___typing___AExternInitPropdef___after_typing},
-  {(bigint) 6 /* 67: AExternInitPropdef < AInitPropdef: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AInitPropdef___init},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AExternInitPropdef < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___APropdef___process_and_check},
-  {(bigint) syntax___mmbuilder___APropdef___do_and_check_intro},
-  {(bigint) syntax___mmbuilder___APropdef___inherit_signature},
-  {(bigint) syntax___mmbuilder___APropdef___do_and_check_redef},
-  {(bigint) syntax___typing___APropdef___self_var},
-  {(bigint) 3 /* 77: AExternInitPropdef < APropdef: superclass init_table position */},
-  {(bigint) parser___parser_nodes___APropdef___n_doc},
-  {(bigint) syntax___mmbuilder___AMethPropdef___name},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) syntax___mmbuilder___AMethPropdef___method},
-  {(bigint) parser___parser_prod___AMethPropdef___empty_init},
-  {(bigint) parser___parser_prod___AMethPropdef___init_amethpropdef},
-  {(bigint) 4 /* 86: AExternInitPropdef < AMethPropdef: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AMethPropdef___n_kwredef},
-  {(bigint) parser___parser_nodes___AMethPropdef___n_visibility},
-  {(bigint) parser___parser_nodes___AMethPropdef___n_methid},
-  {(bigint) parser___parser_nodes___AMethPropdef___n_signature},
+  {(bigint) parser___parser_nodes___ANode___debug},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___icode_generation___AExternInitPropdef___fill_iroutine},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___mmbuilder___AMethPropdef___accept_property_verifier},
-  {(bigint) 5 /* 95: AExternInitPropdef < AExternPropdef: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AExternPropdef___n_extern},
-  {(bigint) parser___parser_nodes___AExternPropdef___n_extern_calls},
-  {(bigint) syntax___icode_generation___AExternPropdef___fill_iroutine},
-  {(bigint) syntax___typing___AMethPropdef___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___AExternInitPropdef___empty_init},
-  {(bigint) parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef},
-  {(bigint) 7 /* 103: AExternInitPropdef < AExternInitPropdef: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AExternInitPropdef___init},
-  {(bigint) parser___parser_nodes___AExternInitPropdef___n_kwnew},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: AKwreadableAtid < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) 0 /* 75: AKwreadableAtid < AAtid: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AAtid___n_id},
+  {(bigint) parser___parser_prod___AKwreadableAtid___empty_init},
+  {(bigint) parser___parser_prod___AKwreadableAtid___init_akwreadableatid},
+  {(bigint) 4 /* 79: AKwreadableAtid < AKwreadableAtid: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AExternInitPropdef::_parent */
-/* 3: Attribute AExternInitPropdef::_location */
-/* 4: Attribute AExternInitPropdef::_first_location */
-/* 5: Attribute AExternInitPropdef::_last_location */
-/* 6: Attribute AExternInitPropdef::_n_doc */
-/* 7: Attribute AExternInitPropdef::_self_var */
-/* 8: Attribute AExternInitPropdef::_name */
-/* 9: Attribute AExternInitPropdef::_method */
-/* 10: Attribute AExternInitPropdef::_n_kwredef */
-/* 11: Attribute AExternInitPropdef::_n_visibility */
-/* 12: Attribute AExternInitPropdef::_n_methid */
-/* 13: Attribute AExternInitPropdef::_n_signature */
-/* 14: Attribute AExternInitPropdef::_n_extern */
-/* 15: Attribute AExternInitPropdef::_n_extern_calls */
-/* 16: Attribute AExternInitPropdef::_n_kwnew */
-void INIT_ATTRIBUTES__parser___parser_nodes___AExternInitPropdef(val_t p0){
+/* 2: Attribute AKwreadableAtid::_parent */
+/* 3: Attribute AKwreadableAtid::_location */
+/* 4: Attribute AKwreadableAtid::_first_location */
+/* 5: Attribute AKwreadableAtid::_last_location */
+/* 6: Attribute AKwreadableAtid::_n_annotations */
+/* 7: Attribute AKwreadableAtid::_n_id */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AKwreadableAtid[] = "init var of AKwreadableAtid";
+void INIT_ATTRIBUTES__parser___parser_nodes___AKwreadableAtid(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__parser___parser_nodes___AExternInitPropdef;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AKwreadableAtid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./parser//parser_nodes.nit:416 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:436 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:438 */
+  /* parser/parser_nodes.nit:56 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:459 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AExternPropdef____n_extern(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:460 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AExternPropdef____n_extern_calls(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AExternInitPropdef(void)
+val_t NEW_parser___parser_nodes___AKwreadableAtid(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 17);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AExternInitPropdef;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AKwreadableAtid;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AExternInitPropdef(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AKwreadableAtid[] = "check new AKwreadableAtid";
+void CHECKNEW_parser___parser_nodes___AKwreadableAtid(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___parser_nodes___AExternInitPropdef;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AKwreadableAtid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AExternInitPropdef____n_kwnew(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAtid____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwnew", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___empty_init(void){
+static const char LOCATE_NEW_AKwreadableAtid_parser___parser_prod___AKwreadableAtid___empty_init[] = "new AKwreadableAtid parser_prod::AKwreadableAtid::empty_init";
+val_t NEW_AKwreadableAtid_parser___parser_prod___AKwreadableAtid___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};
+  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 = 1866;
-  fra.me.meth = LOCATE_NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___empty_init;
+  fra.me.line = 9457;
+  fra.me.meth = LOCATE_NEW_AKwreadableAtid_parser___parser_prod___AKwreadableAtid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:1866 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AExternInitPropdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___AExternInitPropdef(fra.me.REG[0]);
-  parser___parser_prod___AExternInitPropdef___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AExternInitPropdef(fra.me.REG[0]);
+  /* parser/parser_prod.nit:9457 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AKwreadableAtid();
+  INIT_ATTRIBUTES__parser___parser_nodes___AKwreadableAtid(fra.me.REG[0]);
+  parser___parser_prod___AKwreadableAtid___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AKwreadableAtid(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(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;
+static const char LOCATE_NEW_AKwreadableAtid_parser___parser_prod___AKwreadableAtid___init_akwreadableatid[] = "new AKwreadableAtid parser_prod::AKwreadableAtid::init_akwreadableatid";
+val_t NEW_AKwreadableAtid_parser___parser_prod___AKwreadableAtid___init_akwreadableatid(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};
+  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 = 1868;
-  fra.me.meth = LOCATE_NEW_AExternInitPropdef_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef;
+  fra.me.line = 9459;
+  fra.me.meth = LOCATE_NEW_AKwreadableAtid_parser___parser_prod___AKwreadableAtid___init_akwreadableatid;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 9;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   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:1868 */
-  fra.me.REG[8] = NEW_parser___parser_nodes___AExternInitPropdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___AExternInitPropdef(fra.me.REG[8]);
-  parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(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_parser___parser_nodes___AExternInitPropdef(fra.me.REG[8]);
+  /* parser/parser_prod.nit:9459 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___AKwreadableAtid();
+  INIT_ATTRIBUTES__parser___parser_nodes___AKwreadableAtid(fra.me.REG[1]);
+  parser___parser_prod___AKwreadableAtid___init_akwreadableatid(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AKwreadableAtid(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[8];
+  return fra.me.REG[1];
 }
-val_t NEW_AExternInitPropdef_parser___parser_nodes___AExternInitPropdef___init(void){
+static const char LOCATE_NEW_AKwreadableAtid_parser___parser_nodes___ANode___init[] = "new AKwreadableAtid parser_nodes::ANode::init";
+val_t NEW_AKwreadableAtid_parser___parser_nodes___ANode___init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[8] = {0, 0, 0, 0, 0, 0, 0, 0};
+  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 = 484;
-  fra.me.meth = LOCATE_NEW_AExternInitPropdef_parser___parser_nodes___AExternInitPropdef___init;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_AKwreadableAtid_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_nodes.nit:484 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AExternInitPropdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___AExternInitPropdef(fra.me.REG[0]);
-  parser___parser_nodes___AExternInitPropdef___init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AExternInitPropdef(fra.me.REG[0]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AKwreadableAtid();
+  INIT_ATTRIBUTES__parser___parser_nodes___AKwreadableAtid(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AKwreadableAtid(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AMainMethPropdef[103] = {
-  {(bigint) 3759 /* 0: Identity */},
-  {(bigint) 16 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AMainMethPropdef" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AMainMethPropdef < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AMainMethPropdef < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___parser_nodes___AKwwritableAtid[80] = {
+  {(bigint) 4423 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AKwwritableAtid" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AKwwritableAtid < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AKwwritableAtid < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AKwwritableAtid < Prod: superclass typecheck marker */},
+  {(bigint) 3835 /* 6: AKwwritableAtid < AAtid: superclass typecheck marker */},
+  {(bigint) 4423 /* 7: AKwwritableAtid < AKwwritableAtid: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AMainMethPropdef < Prod: superclass typecheck marker */},
-  {(bigint) 3063 /* 7: AMainMethPropdef < APropdef: superclass typecheck marker */},
-  {(bigint) 3375 /* 8: AMainMethPropdef < AMethPropdef: superclass typecheck marker */},
-  {(bigint) 3695 /* 9: AMainMethPropdef < AConcreteMethPropdef: superclass typecheck marker */},
-  {(bigint) 3759 /* 10: AMainMethPropdef < AMainMethPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -47869,7 +90735,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AMainMethPropdef[103] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AMainMethPropdef < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: AKwwritableAtid < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -47885,6 +90751,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AMainMethPropdef[103] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -47902,292 +90770,165 @@ const classtable_elt_t VFT_parser___parser_nodes___AMainMethPropdef[103] = {
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AMethPropdef___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AMethPropdef___accept_property_verifier},
-  {(bigint) syntax___mmbuilder___AMethPropdef___accept_abs_syntax_visitor},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AMainMethPropdef___replace_child},
+  {(bigint) parser___parser_prod___AKwwritableAtid___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AMainMethPropdef___visit_all},
-  {(bigint) 1 /* 60: AMainMethPropdef < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AKwwritableAtid___visit_all},
+  {(bigint) 2 /* 63: AKwwritableAtid < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___AMethPropdef___hot_location},
+  {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AMethPropdef___accept_icode_generation},
-  {(bigint) syntax___typing___AMethPropdef___accept_typing},
-  {(bigint) syntax___typing___AConcreteMethPropdef___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AMainMethPropdef < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___AMainMethPropdef___process_and_check},
-  {(bigint) syntax___mmbuilder___APropdef___do_and_check_intro},
-  {(bigint) syntax___mmbuilder___APropdef___inherit_signature},
-  {(bigint) syntax___mmbuilder___APropdef___do_and_check_redef},
-  {(bigint) syntax___typing___APropdef___self_var},
-  {(bigint) 3 /* 77: AMainMethPropdef < APropdef: superclass init_table position */},
-  {(bigint) parser___parser_nodes___APropdef___n_doc},
-  {(bigint) syntax___mmbuilder___AMethPropdef___name},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) syntax___mmbuilder___AMethPropdef___method},
-  {(bigint) parser___parser_prod___AMethPropdef___empty_init},
-  {(bigint) parser___parser_prod___AMethPropdef___init_amethpropdef},
-  {(bigint) 4 /* 86: AMainMethPropdef < AMethPropdef: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AMethPropdef___n_kwredef},
-  {(bigint) parser___parser_nodes___AMethPropdef___n_visibility},
-  {(bigint) parser___parser_nodes___AMethPropdef___n_methid},
-  {(bigint) parser___parser_nodes___AMethPropdef___n_signature},
+  {(bigint) parser___parser_nodes___ANode___debug},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___icode_generation___AConcreteMethPropdef___fill_iroutine},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) parser___parser_prod___AConcreteMethPropdef___empty_init},
-  {(bigint) parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef},
-  {(bigint) 5 /* 97: AMainMethPropdef < AConcreteMethPropdef: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AConcreteMethPropdef___n_kwmeth},
-  {(bigint) parser___parser_nodes___AConcreteMethPropdef___n_block},
-  {(bigint) parser___parser_prod___AMainMethPropdef___empty_init},
-  {(bigint) parser___parser_prod___AMainMethPropdef___init_amainmethpropdef},
-  {(bigint) 6 /* 102: AMainMethPropdef < AMainMethPropdef: superclass init_table position */},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 72: AKwwritableAtid < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) 0 /* 75: AKwwritableAtid < AAtid: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AAtid___n_id},
+  {(bigint) parser___parser_prod___AKwwritableAtid___empty_init},
+  {(bigint) parser___parser_prod___AKwwritableAtid___init_akwwritableatid},
+  {(bigint) 4 /* 79: AKwwritableAtid < AKwwritableAtid: 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__parser___parser_nodes___AMainMethPropdef(val_t p0){
+/* 2: Attribute AKwwritableAtid::_parent */
+/* 3: Attribute AKwwritableAtid::_location */
+/* 4: Attribute AKwwritableAtid::_first_location */
+/* 5: Attribute AKwwritableAtid::_last_location */
+/* 6: Attribute AKwwritableAtid::_n_annotations */
+/* 7: Attribute AKwwritableAtid::_n_id */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AKwwritableAtid[] = "init var of AKwwritableAtid";
+void INIT_ATTRIBUTES__parser___parser_nodes___AKwwritableAtid(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__parser___parser_nodes___AMainMethPropdef;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AKwwritableAtid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./parser//parser_nodes.nit:436 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:470 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:438 */
+  /* parser/parser_nodes.nit:56 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:416 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AMainMethPropdef(void)
+val_t NEW_parser___parser_nodes___AKwwritableAtid(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 16);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AMainMethPropdef;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AKwwritableAtid;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AMainMethPropdef(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AKwwritableAtid[] = "check new AKwwritableAtid";
+void CHECKNEW_parser___parser_nodes___AKwwritableAtid(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
   fra.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___parser_nodes___AMainMethPropdef;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
-  stack_frame_head = fra.me.prev;
-}
-val_t NEW_AMainMethPropdef_parser___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 = 1608;
-  fra.me.meth = LOCATE_NEW_AMainMethPropdef_parser___parser_prod___AConcreteMethPropdef___empty_init;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AKwwritableAtid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:1608 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AMainMethPropdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___AMainMethPropdef(fra.me.REG[0]);
-  parser___parser_prod___AConcreteMethPropdef___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AMainMethPropdef(fra.me.REG[0]);
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAtid____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;
-  return fra.me.REG[0];
 }
-val_t NEW_AMainMethPropdef_parser___parser_prod___AMainMethPropdef___empty_init(void){
+static const char LOCATE_NEW_AKwwritableAtid_parser___parser_prod___AKwwritableAtid___empty_init[] = "new AKwwritableAtid parser_prod::AKwwritableAtid::empty_init";
+val_t NEW_AKwwritableAtid_parser___parser_prod___AKwwritableAtid___empty_init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  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 = 2015;
-  fra.me.meth = LOCATE_NEW_AMainMethPropdef_parser___parser_prod___AMainMethPropdef___empty_init;
+  fra.me.line = 9488;
+  fra.me.meth = LOCATE_NEW_AKwwritableAtid_parser___parser_prod___AKwwritableAtid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:2015 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AMainMethPropdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___AMainMethPropdef(fra.me.REG[0]);
-  parser___parser_prod___AMainMethPropdef___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AMainMethPropdef(fra.me.REG[0]);
+  /* parser/parser_prod.nit:9488 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AKwwritableAtid();
+  INIT_ATTRIBUTES__parser___parser_nodes___AKwwritableAtid(fra.me.REG[0]);
+  parser___parser_prod___AKwwritableAtid___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AKwwritableAtid(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AMainMethPropdef_parser___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 = 2017;
-  fra.me.meth = LOCATE_NEW_AMainMethPropdef_parser___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:2017 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___AMainMethPropdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___AMainMethPropdef(fra.me.REG[2]);
-  parser___parser_prod___AMainMethPropdef___init_amainmethpropdef(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___AMainMethPropdef(fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
-}
-val_t NEW_AMainMethPropdef_parser___parser_nodes___ANode___init(val_t p0){
+static const char LOCATE_NEW_AKwwritableAtid_parser___parser_prod___AKwwritableAtid___init_akwwritableatid[] = "new AKwwritableAtid parser_prod::AKwwritableAtid::init_akwwritableatid";
+val_t NEW_AKwwritableAtid_parser___parser_prod___AKwwritableAtid___init_akwwritableatid(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};
+  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_AMainMethPropdef_parser___parser_nodes___ANode___init;
+  fra.me.line = 9490;
+  fra.me.meth = LOCATE_NEW_AKwwritableAtid_parser___parser_prod___AKwwritableAtid___init_akwwritableatid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___AMainMethPropdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___AMainMethPropdef(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AMainMethPropdef(fra.me.REG[1]);
+  /* parser/parser_prod.nit:9490 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___AKwwritableAtid();
+  INIT_ATTRIBUTES__parser___parser_nodes___AKwwritableAtid(fra.me.REG[1]);
+  parser___parser_prod___AKwwritableAtid___init_akwwritableatid(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AKwwritableAtid(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-val_t NEW_AMainMethPropdef_parser___parser_prod___AMethPropdef___empty_init(void){
+static const char LOCATE_NEW_AKwwritableAtid_parser___parser_nodes___ANode___init[] = "new AKwwritableAtid parser_nodes::ANode::init";
+val_t NEW_AKwwritableAtid_parser___parser_nodes___ANode___init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  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 = 1150;
-  fra.me.meth = LOCATE_NEW_AMainMethPropdef_parser___parser_prod___AMethPropdef___empty_init;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_AKwwritableAtid_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:1150 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AMainMethPropdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___AMainMethPropdef(fra.me.REG[0]);
-  parser___parser_prod___AMethPropdef___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AMainMethPropdef(fra.me.REG[0]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AKwwritableAtid();
+  INIT_ATTRIBUTES__parser___parser_nodes___AKwwritableAtid(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AKwwritableAtid(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AMainMethPropdef_parser___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 = 1610;
-  fra.me.meth = LOCATE_NEW_AMainMethPropdef_parser___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:1610 */
-  fra.me.REG[7] = NEW_parser___parser_nodes___AMainMethPropdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___AMainMethPropdef(fra.me.REG[7]);
-  parser___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_parser___parser_nodes___AMainMethPropdef(fra.me.REG[7]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[7];
-}
-val_t NEW_AMainMethPropdef_parser___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 = 1152;
-  fra.me.meth = LOCATE_NEW_AMainMethPropdef_parser___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:1152 */
-  fra.me.REG[5] = NEW_parser___parser_nodes___AMainMethPropdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___AMainMethPropdef(fra.me.REG[5]);
-  parser___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_parser___parser_nodes___AMainMethPropdef(fra.me.REG[5]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[5];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AExternCalls[77] = {
-  {(bigint) 3103 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AKwimportAtid[80] = {
+  {(bigint) 4435 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AExternCalls" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AExternCalls < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AExternCalls < ANode: superclass typecheck marker */},
+  {(bigint) "AKwimportAtid" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AKwimportAtid < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: AKwimportAtid < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: AKwimportAtid < Prod: superclass typecheck marker */},
+  {(bigint) 3835 /* 6: AKwimportAtid < AAtid: superclass typecheck marker */},
+  {(bigint) 4435 /* 7: AKwimportAtid < AKwimportAtid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AExternCalls < Prod: superclass typecheck marker */},
-  {(bigint) 3103 /* 7: AExternCalls < AExternCalls: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -48198,7 +90939,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternCalls[77] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AExternCalls < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: AKwimportAtid < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -48214,6 +90955,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternCalls[77] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -48237,156 +90980,159 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternCalls[77] = {
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AExternCalls___replace_child},
+  {(bigint) parser___parser_prod___AKwimportAtid___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AExternCalls___visit_all},
-  {(bigint) 1 /* 60: AExternCalls < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___AKwimportAtid___visit_all},
+  {(bigint) 2 /* 63: AKwimportAtid < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AExternCalls < Prod: superclass init_table position */},
+  {(bigint) 1 /* 72: AKwimportAtid < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) parser___parser_prod___AExternCalls___empty_init},
-  {(bigint) parser___parser_prod___AExternCalls___init_aexterncalls},
-  {(bigint) 3 /* 74: AExternCalls < AExternCalls: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AExternCalls___n_kwimport},
-  {(bigint) parser___parser_nodes___AExternCalls___n_extern_calls},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) 0 /* 75: AKwimportAtid < AAtid: superclass init_table position */},
+  {(bigint) parser___parser_nodes___AAtid___n_id},
+  {(bigint) parser___parser_prod___AKwimportAtid___empty_init},
+  {(bigint) parser___parser_prod___AKwimportAtid___init_akwimportatid},
+  {(bigint) 4 /* 79: AKwimportAtid < AKwimportAtid: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AExternCalls::_parent */
-/* 3: Attribute AExternCalls::_location */
-/* 4: Attribute AExternCalls::_first_location */
-/* 5: Attribute AExternCalls::_last_location */
-/* 6: Attribute AExternCalls::_n_kwimport */
-/* 7: Attribute AExternCalls::_n_extern_calls */
-void INIT_ATTRIBUTES__parser___parser_nodes___AExternCalls(val_t p0){
+/* 2: Attribute AKwimportAtid::_parent */
+/* 3: Attribute AKwimportAtid::_location */
+/* 4: Attribute AKwimportAtid::_first_location */
+/* 5: Attribute AKwimportAtid::_last_location */
+/* 6: Attribute AKwimportAtid::_n_annotations */
+/* 7: Attribute AKwimportAtid::_n_id */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AKwimportAtid[] = "init var of AKwimportAtid";
+void INIT_ATTRIBUTES__parser___parser_nodes___AKwimportAtid(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__parser___parser_nodes___AExternCalls;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___AKwimportAtid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./parser//parser_nodes.nit:493 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___AExternCalls____n_extern_calls(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AExternCalls(void)
+val_t NEW_parser___parser_nodes___AKwimportAtid(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 8);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AExternCalls;
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AKwimportAtid;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AExternCalls(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___AKwimportAtid[] = "check new AKwimportAtid";
+void CHECKNEW_parser___parser_nodes___AKwimportAtid(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___parser_nodes___AExternCalls;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___AKwimportAtid;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AExternCalls____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___parser_nodes___AExternCalls____n_extern_calls(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAtid____n_id(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_extern_calls", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AExternCalls_parser___parser_prod___AExternCalls___empty_init(void){
+static const char LOCATE_NEW_AKwimportAtid_parser___parser_prod___AKwimportAtid___empty_init[] = "new AKwimportAtid parser_prod::AKwimportAtid::empty_init";
+val_t NEW_AKwimportAtid_parser___parser_prod___AKwimportAtid___empty_init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 7539;
-  fra.me.meth = LOCATE_NEW_AExternCalls_parser___parser_prod___AExternCalls___empty_init;
+  fra.me.line = 9519;
+  fra.me.meth = LOCATE_NEW_AKwimportAtid_parser___parser_prod___AKwimportAtid___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:7539 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AExternCalls();
-  INIT_ATTRIBUTES__parser___parser_nodes___AExternCalls(fra.me.REG[0]);
-  parser___parser_prod___AExternCalls___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AExternCalls(fra.me.REG[0]);
+  /* parser/parser_prod.nit:9519 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AKwimportAtid();
+  INIT_ATTRIBUTES__parser___parser_nodes___AKwimportAtid(fra.me.REG[0]);
+  parser___parser_prod___AKwimportAtid___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AKwimportAtid(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AExternCalls_parser___parser_prod___AExternCalls___init_aexterncalls(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_AKwimportAtid_parser___parser_prod___AKwimportAtid___init_akwimportatid[] = "new AKwimportAtid parser_prod::AKwimportAtid::init_akwimportatid";
+val_t NEW_AKwimportAtid_parser___parser_prod___AKwimportAtid___init_akwimportatid(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};
+  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 = 7541;
-  fra.me.meth = LOCATE_NEW_AExternCalls_parser___parser_prod___AExternCalls___init_aexterncalls;
+  fra.me.line = 9521;
+  fra.me.meth = LOCATE_NEW_AKwimportAtid_parser___parser_prod___AKwimportAtid___init_akwimportatid;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   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:7541 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___AExternCalls();
-  INIT_ATTRIBUTES__parser___parser_nodes___AExternCalls(fra.me.REG[2]);
-  parser___parser_prod___AExternCalls___init_aexterncalls(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___AExternCalls(fra.me.REG[2]);
+  /* parser/parser_prod.nit:9521 */
+  fra.me.REG[1] = NEW_parser___parser_nodes___AKwimportAtid();
+  INIT_ATTRIBUTES__parser___parser_nodes___AKwimportAtid(fra.me.REG[1]);
+  parser___parser_prod___AKwimportAtid___init_akwimportatid(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AKwimportAtid(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[1];
 }
-val_t NEW_AExternCalls_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_AKwimportAtid_parser___parser_nodes___ANode___init[] = "new AKwimportAtid parser_nodes::ANode::init";
+val_t NEW_AKwimportAtid_parser___parser_nodes___ANode___init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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_AExternCalls_parser___parser_nodes___ANode___init;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_AKwimportAtid_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___AExternCalls();
-  INIT_ATTRIBUTES__parser___parser_nodes___AExternCalls(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AExternCalls(fra.me.REG[1]);
+  /* parser/parser_nodes.nit:32 */
+  fra.me.REG[0] = NEW_parser___parser_nodes___AKwimportAtid();
+  INIT_ATTRIBUTES__parser___parser_nodes___AKwimportAtid(fra.me.REG[0]);
+  parser___parser_nodes___ANode___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___parser_nodes___AKwimportAtid(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AExternCall[77] = {
-  {(bigint) 3107 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AExternCall" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AExternCall < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AExternCall < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___parser_nodes___Start[79] = {
+  {(bigint) 3455 /* 0: Identity */},
+  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "Start" /* 2: Class Name */},
+  {(bigint) 3 /* 3: Start < Object: superclass typecheck marker */},
+  {(bigint) 315 /* 4: Start < ANode: superclass typecheck marker */},
+  {(bigint) 3019 /* 5: Start < Prod: superclass typecheck marker */},
+  {(bigint) 3455 /* 6: Start < Start: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AExternCall < Prod: superclass typecheck marker */},
-  {(bigint) 3107 /* 7: AExternCall < AExternCall: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -48397,7 +91143,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternCall[77] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AExternCall < Object: superclass init_table position */},
+  {(bigint) 2 /* 19: Start < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -48413,6 +91159,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternCall[77] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -48436,132 +91184,120 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternCall[77] = {
   {(bigint) parser___parser_prod___ANode___parent},
   {(bigint) parser___parser_prod___ANode___parent__eq},
   {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AExternCall___replace_child},
+  {(bigint) parser___parser_prod___Start___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AExternCall___visit_all},
-  {(bigint) 1 /* 60: AExternCall < ANode: superclass init_table position */},
+  {(bigint) parser___parser_prod___Start___visit_all},
+  {(bigint) 1 /* 63: Start < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
+  {(bigint) parser___parser_nodes___ANode___debug},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___AExternCall___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) syntax___typing___ANode___after_typing},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AExternCall < Prod: superclass init_table position */},
+  {(bigint) 0 /* 72: Start < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExternCall___target_class_name},
-  {(bigint) syntax___typing___AExternCall___target_method_name},
-  {(bigint) parser___parser_prod___AExternCall___empty_init},
-  {(bigint) parser___parser_prod___AExternCall___init_aexterncall},
-  {(bigint) 3 /* 76: AExternCall < AExternCall: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___n_annotations},
+  {(bigint) 3 /* 75: Start < Start: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Start___n_base},
+  {(bigint) parser___parser_nodes___Start___n_eof},
+  {(bigint) parser___parser_nodes___Start___init},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AExternCall::_parent */
-/* 3: Attribute AExternCall::_location */
-/* 4: Attribute AExternCall::_first_location */
-/* 5: Attribute AExternCall::_last_location */
-void INIT_ATTRIBUTES__parser___parser_nodes___AExternCall(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute Start::_parent */
+/* 3: Attribute Start::_location */
+/* 4: Attribute Start::_first_location */
+/* 5: Attribute Start::_last_location */
+/* 6: Attribute Start::_n_annotations */
+/* 7: Attribute Start::_n_base */
+/* 8: Attribute Start::_n_eof */
+static const char LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___Start[] = "init var of Start";
+void INIT_ATTRIBUTES__parser___parser_nodes___Start(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__parser___parser_nodes___AExternCall;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___parser_nodes___Start;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/parser_nodes.nit:56 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_nodes___Prod____n_annotations(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AExternCall(void)
+val_t NEW_parser___parser_nodes___Start(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AExternCall;
+  obj = alloc(sizeof(val_t) * 9);
+  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___Start;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AExternCall(val_t p0){
+static const char LOCATE_CHECKNEW_parser___parser_nodes___Start[] = "check new Start";
+void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___AExternCall;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
-  stack_frame_head = fra.me.prev;
-}
-val_t NEW_AExternCall_parser___parser_prod___AExternCall___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 = 7591;
-  fra.me.meth = LOCATE_NEW_AExternCall_parser___parser_prod___AExternCall___empty_init;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:7591 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AExternCall();
-  INIT_ATTRIBUTES__parser___parser_nodes___AExternCall(fra.me.REG[0]);
-  parser___parser_prod___AExternCall___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AExternCall(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-val_t NEW_AExternCall_parser___parser_prod___AExternCall___init_aexterncall(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 = 7593;
-  fra.me.meth = LOCATE_NEW_AExternCall_parser___parser_prod___AExternCall___init_aexterncall;
+  fra.me.meth = LOCATE_CHECKNEW_parser___parser_nodes___Start;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:7593 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AExternCall();
-  INIT_ATTRIBUTES__parser___parser_nodes___AExternCall(fra.me.REG[0]);
-  parser___parser_prod___AExternCall___init_aexterncall(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AExternCall(fra.me.REG[0]);
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___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;
-  return fra.me.REG[0];
 }
-val_t NEW_AExternCall_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_Start_parser___parser_nodes___Start___init[] = "new Start parser_nodes::Start::init";
+val_t NEW_Start_parser___parser_nodes___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 = 0;
-  fra.me.meth = LOCATE_NEW_AExternCall_parser___parser_nodes___ANode___init;
+  fra.me.line = 1272;
+  fra.me.meth = LOCATE_NEW_Start_parser___parser_nodes___Start___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   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] = NEW_parser___parser_nodes___AExternCall();
-  INIT_ATTRIBUTES__parser___parser_nodes___AExternCall(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AExternCall(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  /* parser/parser_nodes.nit:1272 */
+  fra.me.REG[2] = NEW_parser___parser_nodes___Start();
+  INIT_ATTRIBUTES__parser___parser_nodes___Start(fra.me.REG[2]);
+  parser___parser_nodes___Start___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_parser___parser_nodes___Start(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[2];
 }
-const classtable_elt_t VFT_parser___parser_nodes___APropExternCall[78] = {
-  {(bigint) 3335 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "APropExternCall" /* 2: Class Name */},
-  {(bigint) 3 /* 3: APropExternCall < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: APropExternCall < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___lexer___Lexer[62] = {
+  {(bigint) 3147 /* 0: Identity */},
+  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "Lexer" /* 2: Class Name */},
+  {(bigint) 3 /* 3: Lexer < Object: superclass typecheck marker */},
+  {(bigint) 23 /* 4: Lexer < TablesCapable: superclass typecheck marker */},
+  {(bigint) 3147 /* 5: Lexer < Lexer: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: APropExternCall < Prod: superclass typecheck marker */},
-  {(bigint) 3107 /* 7: APropExternCall < AExternCall: superclass typecheck marker */},
-  {(bigint) 3335 /* 8: APropExternCall < APropExternCall: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -48571,7 +91307,7 @@ const classtable_elt_t VFT_parser___parser_nodes___APropExternCall[78] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: APropExternCall < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: Lexer < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -48587,6 +91323,8 @@ const classtable_elt_t VFT_parser___parser_nodes___APropExternCall[78] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -48600,144 +91338,149 @@ const classtable_elt_t VFT_parser___parser_nodes___APropExternCall[78] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AExternCall___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AExternCall___visit_all},
-  {(bigint) 1 /* 60: APropExternCall < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___AExternCall___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: APropExternCall < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExternCall___target_class_name},
-  {(bigint) syntax___typing___AExternCall___target_method_name},
-  {(bigint) parser___parser_prod___AExternCall___empty_init},
-  {(bigint) parser___parser_prod___AExternCall___init_aexterncall},
-  {(bigint) 3 /* 76: APropExternCall < AExternCall: superclass init_table position */},
-  {(bigint) 4 /* 77: APropExternCall < APropExternCall: superclass init_table position */},
+  {(bigint) 0 /* 50: Lexer < TablesCapable: superclass init_table position */},
+  {(bigint) parser___tables___TablesCapable___lexer_goto},
+  {(bigint) parser___tables___TablesCapable___lexer_accept},
+  {(bigint) parser___tables___TablesCapable___parser_goto},
+  {(bigint) parser___tables___TablesCapable___parser_action},
+  {(bigint) 2 /* 55: Lexer < Lexer: superclass init_table position */},
+  {(bigint) parser___lexer___Lexer___file},
+  {(bigint) parser___lexer___Lexer___state_initial},
+  {(bigint) parser___lexer___Lexer___init},
+  {(bigint) parser___lexer___Lexer___peek},
+  {(bigint) parser___lexer___Lexer___next},
+  {(bigint) parser___lexer___Lexer___get_token},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute APropExternCall::_parent */
-/* 3: Attribute APropExternCall::_location */
-/* 4: Attribute APropExternCall::_first_location */
-/* 5: Attribute APropExternCall::_last_location */
-void INIT_ATTRIBUTES__parser___parser_nodes___APropExternCall(val_t p0){
+/* 2: Attribute Lexer::_token */
+/* 3: Attribute Lexer::_state */
+/* 4: Attribute Lexer::_file */
+/* 5: Attribute Lexer::_stream_pos */
+/* 6: Attribute Lexer::_line */
+/* 7: Attribute Lexer::_pos */
+/* 8: Attribute Lexer::_cr */
+static const char LOCATE_INIT_ATTRIBUTES__parser___lexer___Lexer[] = "init var of Lexer";
+void INIT_ATTRIBUTES__parser___lexer___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__parser___parser_nodes___APropExternCall;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___lexer___Lexer;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* parser/lexer.nit:1196 */
+  REGB0 = TAG_Int(0);
+  ATTR_parser___lexer___Lexer____state(fra.me.REG[0]) = REGB0;
+  /* parser/lexer.nit:1202 */
+  REGB0 = TAG_Int(0);
+  ATTR_parser___lexer___Lexer____stream_pos(fra.me.REG[0]) = REGB0;
+  /* parser/lexer.nit:1205 */
+  REGB0 = TAG_Int(0);
+  ATTR_parser___lexer___Lexer____line(fra.me.REG[0]) = REGB0;
+  /* parser/lexer.nit:1208 */
+  REGB0 = TAG_Int(0);
+  ATTR_parser___lexer___Lexer____pos(fra.me.REG[0]) = REGB0;
+  /* parser/lexer.nit:1211 */
+  REGB0 = TAG_Bool(0);
+  ATTR_parser___lexer___Lexer____cr(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___APropExternCall(void)
+val_t NEW_parser___lexer___Lexer(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___APropExternCall;
+  obj = alloc(sizeof(val_t) * 9);
+  obj->vft = (classtable_elt_t*)VFT_parser___lexer___Lexer;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___APropExternCall(val_t p0){
+static const char LOCATE_CHECKNEW_parser___lexer___Lexer[] = "check new Lexer";
+void CHECKNEW_parser___lexer___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_parser___parser_nodes___APropExternCall;
+  fra.me.meth = LOCATE_CHECKNEW_parser___lexer___Lexer;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___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_parser___lexer___Lexer____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_parser___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_parser___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_parser___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_parser___lexer___Lexer____cr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_cr", LOCATE_nitc, 0);
+  }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_APropExternCall_parser___parser_nodes___ANode___init(val_t p0){
+static const char LOCATE_NEW_Lexer_parser___lexer___Lexer___init[] = "new Lexer lexer::Lexer::init";
+val_t NEW_Lexer_parser___lexer___Lexer___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};
+  int init_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_APropExternCall_parser___parser_nodes___ANode___init;
+  fra.me.line = 1216;
+  fra.me.meth = LOCATE_NEW_Lexer_parser___lexer___Lexer___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___APropExternCall();
-  INIT_ATTRIBUTES__parser___parser_nodes___APropExternCall(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___APropExternCall(fra.me.REG[1]);
+  /* parser/lexer.nit:1216 */
+  fra.me.REG[1] = NEW_parser___lexer___Lexer();
+  INIT_ATTRIBUTES__parser___lexer___Lexer(fra.me.REG[1]);
+  parser___lexer___Lexer___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___lexer___Lexer(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-val_t NEW_APropExternCall_parser___parser_prod___AExternCall___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 = 7591;
-  fra.me.meth = LOCATE_NEW_APropExternCall_parser___parser_prod___AExternCall___empty_init;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:7591 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___APropExternCall();
-  INIT_ATTRIBUTES__parser___parser_nodes___APropExternCall(fra.me.REG[0]);
-  parser___parser_prod___AExternCall___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___APropExternCall(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-val_t NEW_APropExternCall_parser___parser_prod___AExternCall___init_aexterncall(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 = 7593;
-  fra.me.meth = LOCATE_NEW_APropExternCall_parser___parser_prod___AExternCall___init_aexterncall;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:7593 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___APropExternCall();
-  INIT_ATTRIBUTES__parser___parser_nodes___APropExternCall(fra.me.REG[0]);
-  parser___parser_prod___AExternCall___init_aexterncall(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___APropExternCall(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-const classtable_elt_t VFT_parser___parser_nodes___ALocalPropExternCall[82] = {
-  {(bigint) 3631 /* 0: Identity */},
-  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ALocalPropExternCall" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ALocalPropExternCall < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ALocalPropExternCall < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___State[56] = {
+  {(bigint) 39 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "State" /* 2: Class Name */},
+  {(bigint) 3 /* 3: State < Object: superclass typecheck marker */},
+  {(bigint) 39 /* 4: State < State: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: ALocalPropExternCall < Prod: superclass typecheck marker */},
-  {(bigint) 3107 /* 7: ALocalPropExternCall < AExternCall: superclass typecheck marker */},
-  {(bigint) 3335 /* 8: ALocalPropExternCall < APropExternCall: superclass typecheck marker */},
-  {(bigint) 3631 /* 9: ALocalPropExternCall < ALocalPropExternCall: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -48746,7 +91489,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ALocalPropExternCall[82] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: ALocalPropExternCall < Object: superclass init_table position */},
+  {(bigint) 0 /* 19: State < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -48762,6 +91505,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ALocalPropExternCall[82] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -48775,197 +91520,249 @@ const classtable_elt_t VFT_parser___parser_nodes___ALocalPropExternCall[82] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ALocalPropExternCall___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ALocalPropExternCall___visit_all},
-  {(bigint) 1 /* 60: ALocalPropExternCall < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___AExternCall___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: ALocalPropExternCall < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___ALocalPropExternCall___target_class_name},
-  {(bigint) syntax___typing___ALocalPropExternCall___target_method_name},
-  {(bigint) parser___parser_prod___AExternCall___empty_init},
-  {(bigint) parser___parser_prod___AExternCall___init_aexterncall},
-  {(bigint) 3 /* 76: ALocalPropExternCall < AExternCall: superclass init_table position */},
-  {(bigint) 4 /* 77: ALocalPropExternCall < APropExternCall: superclass init_table position */},
-  {(bigint) parser___parser_prod___ALocalPropExternCall___empty_init},
-  {(bigint) parser___parser_prod___ALocalPropExternCall___init_alocalpropexterncall},
-  {(bigint) 5 /* 80: ALocalPropExternCall < ALocalPropExternCall: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ALocalPropExternCall___n_methid},
+  {(bigint) 1 /* 50: 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: Object_id */
-/* 2: Attribute ALocalPropExternCall::_parent */
-/* 3: Attribute ALocalPropExternCall::_location */
-/* 4: Attribute ALocalPropExternCall::_first_location */
-/* 5: Attribute ALocalPropExternCall::_last_location */
-/* 6: Attribute ALocalPropExternCall::_n_methid */
-void INIT_ATTRIBUTES__parser___parser_nodes___ALocalPropExternCall(val_t p0){
+/* 2: Attribute State::_state */
+/* 3: Attribute State::_nodes */
+static const char LOCATE_INIT_ATTRIBUTES__parser___State[] = "init var of State";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___ALocalPropExternCall;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___State;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___ALocalPropExternCall(void)
+val_t NEW_parser___State(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ALocalPropExternCall;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_parser___State;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___ALocalPropExternCall(val_t p0){
+static const char LOCATE_CHECKNEW_parser___State[] = "check new State";
+void CHECKNEW_parser___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_parser___parser_nodes___ALocalPropExternCall;
+  fra.me.meth = LOCATE_CHECKNEW_parser___State;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ALocalPropExternCall____n_methid(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___State____state(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_methid", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_state", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ALocalPropExternCall_parser___parser_prod___AExternCall___empty_init(void){
-  struct {struct stack_frame_t me;} fra;
+static const char LOCATE_NEW_State_parser___State___init[] = "new State parser::State::init";
+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[6] = {0, 0, 0, 0, 0, 0};
+  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 = 7591;
-  fra.me.meth = LOCATE_NEW_ALocalPropExternCall_parser___parser_prod___AExternCall___empty_init;
+  fra.me.line = 16;
+  fra.me.meth = LOCATE_NEW_State_parser___State___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:7591 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ALocalPropExternCall();
-  INIT_ATTRIBUTES__parser___parser_nodes___ALocalPropExternCall(fra.me.REG[0]);
-  parser___parser_prod___AExternCall___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ALocalPropExternCall(fra.me.REG[0]);
+  fra.me.REG[1] = NIT_NULL;
+  REGB0 = p0;
+  fra.me.REG[0] = p1;
+  /* parser/parser.nit:16 */
+  fra.me.REG[1] = NEW_parser___State();
+  INIT_ATTRIBUTES__parser___State(fra.me.REG[1]);
+  parser___State___init(fra.me.REG[1], REGB0, fra.me.REG[0], init_table);
+  CHECKNEW_parser___State(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
-val_t NEW_ALocalPropExternCall_parser___parser_prod___ALocalPropExternCall___empty_init(void){
+const classtable_elt_t VFT_parser___Parser[63] = {
+  {(bigint) 3027 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "Parser" /* 2: Class Name */},
+  {(bigint) 3 /* 3: Parser < Object: superclass typecheck marker */},
+  {(bigint) 23 /* 4: Parser < TablesCapable: superclass typecheck marker */},
+  {(bigint) 3027 /* 5: Parser < Parser: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: Parser < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 50: Parser < TablesCapable: superclass init_table position */},
+  {(bigint) parser___tables___TablesCapable___lexer_goto},
+  {(bigint) parser___tables___TablesCapable___lexer_accept},
+  {(bigint) parser___tables___TablesCapable___parser_goto},
+  {(bigint) parser___tables___TablesCapable___parser_action},
+  {(bigint) 2 /* 55: 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 */
+/* 1: Object_id */
+/* 2: Attribute Parser::_lexer */
+/* 3: Attribute Parser::_stack */
+/* 4: Attribute Parser::_stack_pos */
+/* 5: Attribute Parser::_reduce_table */
+static const char LOCATE_INIT_ATTRIBUTES__parser___Parser[] = "init var of Parser";
+void INIT_ATTRIBUTES__parser___Parser(val_t p0){
   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 = 7638;
-  fra.me.meth = LOCATE_NEW_ALocalPropExternCall_parser___parser_prod___ALocalPropExternCall___empty_init;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___Parser;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:7638 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ALocalPropExternCall();
-  INIT_ATTRIBUTES__parser___parser_nodes___ALocalPropExternCall(fra.me.REG[0]);
-  parser___parser_prod___ALocalPropExternCall___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ALocalPropExternCall(fra.me.REG[0]);
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
 }
-val_t NEW_ALocalPropExternCall_parser___parser_prod___ALocalPropExternCall___init_alocalpropexterncall(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+val_t NEW_parser___Parser(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_parser___Parser;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___Parser[] = "check new Parser";
+void CHECKNEW_parser___Parser(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 = 7640;
-  fra.me.meth = LOCATE_NEW_ALocalPropExternCall_parser___parser_prod___ALocalPropExternCall___init_alocalpropexterncall;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_parser___Parser;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./parser//parser_prod.nit:7640 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___ALocalPropExternCall();
-  INIT_ATTRIBUTES__parser___parser_nodes___ALocalPropExternCall(fra.me.REG[1]);
-  parser___parser_prod___ALocalPropExternCall___init_alocalpropexterncall(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ALocalPropExternCall(fra.me.REG[1]);
+  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;
-  return fra.me.REG[1];
 }
-val_t NEW_ALocalPropExternCall_parser___parser_nodes___ANode___init(val_t p0){
+static const char LOCATE_NEW_Parser_parser___Parser___init[] = "new Parser parser::Parser::init";
+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[6] = {0, 0, 0, 0, 0, 0};
+  int init_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_ALocalPropExternCall_parser___parser_nodes___ANode___init;
+  fra.me.line = 34;
+  fra.me.meth = LOCATE_NEW_Parser_parser___Parser___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___ALocalPropExternCall();
-  INIT_ATTRIBUTES__parser___parser_nodes___ALocalPropExternCall(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ALocalPropExternCall(fra.me.REG[1]);
+  /* parser/parser.nit:34 */
+  fra.me.REG[1] = NEW_parser___Parser();
+  INIT_ATTRIBUTES__parser___Parser(fra.me.REG[1]);
+  parser___Parser___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_parser___Parser(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-val_t NEW_ALocalPropExternCall_parser___parser_prod___AExternCall___init_aexterncall(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 = 7593;
-  fra.me.meth = LOCATE_NEW_ALocalPropExternCall_parser___parser_prod___AExternCall___init_aexterncall;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:7593 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ALocalPropExternCall();
-  INIT_ATTRIBUTES__parser___parser_nodes___ALocalPropExternCall(fra.me.REG[0]);
-  parser___parser_prod___AExternCall___init_aexterncall(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ALocalPropExternCall(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AFullPropExternCall[84] = {
-  {(bigint) 3655 /* 0: Identity */},
-  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AFullPropExternCall" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AFullPropExternCall < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AFullPropExternCall < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ComputeProdLocationVisitor[57] = {
+  {(bigint) 3275 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ComputeProdLocationVisitor" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ComputeProdLocationVisitor < Object: superclass typecheck marker */},
+  {(bigint) 15 /* 4: ComputeProdLocationVisitor < Visitor: superclass typecheck marker */},
+  {(bigint) 3275 /* 5: ComputeProdLocationVisitor < ComputeProdLocationVisitor: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AFullPropExternCall < Prod: superclass typecheck marker */},
-  {(bigint) 3107 /* 7: AFullPropExternCall < AExternCall: superclass typecheck marker */},
-  {(bigint) 3335 /* 8: AFullPropExternCall < APropExternCall: superclass typecheck marker */},
-  {(bigint) 3655 /* 9: AFullPropExternCall < AFullPropExternCall: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -48974,7 +91771,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AFullPropExternCall[84] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AFullPropExternCall < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ComputeProdLocationVisitor < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -48990,6 +91787,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AFullPropExternCall[84] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -49003,216 +91802,125 @@ const classtable_elt_t VFT_parser___parser_nodes___AFullPropExternCall[84] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AFullPropExternCall___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AFullPropExternCall___visit_all},
-  {(bigint) 1 /* 60: AFullPropExternCall < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___AExternCall___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AFullPropExternCall < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AFullPropExternCall___target_class_name},
-  {(bigint) syntax___typing___AFullPropExternCall___target_method_name},
-  {(bigint) parser___parser_prod___AExternCall___empty_init},
-  {(bigint) parser___parser_prod___AExternCall___init_aexterncall},
-  {(bigint) 3 /* 76: AFullPropExternCall < AExternCall: superclass init_table position */},
-  {(bigint) 4 /* 77: AFullPropExternCall < APropExternCall: superclass init_table position */},
-  {(bigint) parser___parser_prod___AFullPropExternCall___empty_init},
-  {(bigint) parser___parser_prod___AFullPropExternCall___init_afullpropexterncall},
-  {(bigint) 5 /* 80: AFullPropExternCall < AFullPropExternCall: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AFullPropExternCall___n_classid},
-  {(bigint) parser___parser_nodes___AFullPropExternCall___n_quad},
-  {(bigint) parser___parser_nodes___AFullPropExternCall___n_methid},
+  {(bigint) 0 /* 50: ComputeProdLocationVisitor < Visitor: superclass init_table position */},
+  {(bigint) parser___ComputeProdLocationVisitor___visit},
+  {(bigint) parser___parser_prod___Visitor___enter_visit},
+  {(bigint) parser___parser_prod___Visitor___current_node},
+  {(bigint) parser___parser_prod___Visitor___init},
+  {(bigint) 2 /* 55: ComputeProdLocationVisitor < ComputeProdLocationVisitor: superclass init_table position */},
+  {(bigint) parser___ComputeProdLocationVisitor___init},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AFullPropExternCall::_parent */
-/* 3: Attribute AFullPropExternCall::_location */
-/* 4: Attribute AFullPropExternCall::_first_location */
-/* 5: Attribute AFullPropExternCall::_last_location */
-/* 6: Attribute AFullPropExternCall::_n_classid */
-/* 7: Attribute AFullPropExternCall::_n_quad */
-/* 8: Attribute AFullPropExternCall::_n_methid */
-void INIT_ATTRIBUTES__parser___parser_nodes___AFullPropExternCall(val_t p0){
+/* 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 */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ComputeProdLocationVisitor[] = "init var of ComputeProdLocationVisitor";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___AFullPropExternCall;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ComputeProdLocationVisitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./parser//parser_nodes.nit:508 */
+  /* parser/parser_prod.nit:66 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AFullPropExternCall____n_quad(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_prod___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser.nit:1466 */
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
+  ATTR_parser___ComputeProdLocationVisitor____need_first_prods(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser.nit:1469 */
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
+  ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser.nit:1472 */
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
+  ATTR_parser___ComputeProdLocationVisitor____need_before_epsilons(fra.me.REG[0]) = fra.me.REG[1];
+  /* parser/parser.nit:1474 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___ComputeProdLocationVisitor____last_location(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AFullPropExternCall(void)
+val_t NEW_parser___ComputeProdLocationVisitor(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 9);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AFullPropExternCall;
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_parser___ComputeProdLocationVisitor;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AFullPropExternCall(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ComputeProdLocationVisitor[] = "check new ComputeProdLocationVisitor";
+void CHECKNEW_parser___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_parser___parser_nodes___AFullPropExternCall;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ComputeProdLocationVisitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AFullPropExternCall____n_classid(fra.me.REG[0])!=NIT_NULL);
+  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", "_n_classid", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_need_first_prods", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AFullPropExternCall____n_methid(fra.me.REG[0])!=NIT_NULL);
+  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", "_n_methid", LOCATE_nitc, 0);
+    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_AFullPropExternCall_parser___parser_prod___AExternCall___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 = 7591;
-  fra.me.meth = LOCATE_NEW_AFullPropExternCall_parser___parser_prod___AExternCall___empty_init;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:7591 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AFullPropExternCall();
-  INIT_ATTRIBUTES__parser___parser_nodes___AFullPropExternCall(fra.me.REG[0]);
-  parser___parser_prod___AExternCall___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AFullPropExternCall(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-val_t NEW_AFullPropExternCall_parser___parser_prod___AFullPropExternCall___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 = 7669;
-  fra.me.meth = LOCATE_NEW_AFullPropExternCall_parser___parser_prod___AFullPropExternCall___empty_init;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:7669 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AFullPropExternCall();
-  INIT_ATTRIBUTES__parser___parser_nodes___AFullPropExternCall(fra.me.REG[0]);
-  parser___parser_prod___AFullPropExternCall___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AFullPropExternCall(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-val_t NEW_AFullPropExternCall_parser___parser_prod___AFullPropExternCall___init_afullpropexterncall(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 = 7671;
-  fra.me.meth = LOCATE_NEW_AFullPropExternCall_parser___parser_prod___AFullPropExternCall___init_afullpropexterncall;
-  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:7671 */
-  fra.me.REG[3] = NEW_parser___parser_nodes___AFullPropExternCall();
-  INIT_ATTRIBUTES__parser___parser_nodes___AFullPropExternCall(fra.me.REG[3]);
-  parser___parser_prod___AFullPropExternCall___init_afullpropexterncall(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
-  CHECKNEW_parser___parser_nodes___AFullPropExternCall(fra.me.REG[3]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[3];
-}
-val_t NEW_AFullPropExternCall_parser___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_AFullPropExternCall_parser___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_parser___parser_nodes___AFullPropExternCall();
-  INIT_ATTRIBUTES__parser___parser_nodes___AFullPropExternCall(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AFullPropExternCall(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_AFullPropExternCall_parser___parser_prod___AExternCall___init_aexterncall(void){
+static const char LOCATE_NEW_ComputeProdLocationVisitor_parser___ComputeProdLocationVisitor___init[] = "new ComputeProdLocationVisitor parser::ComputeProdLocationVisitor::init";
+val_t NEW_ComputeProdLocationVisitor_parser___ComputeProdLocationVisitor___init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7593;
-  fra.me.meth = LOCATE_NEW_AFullPropExternCall_parser___parser_prod___AExternCall___init_aexterncall;
+  fra.me.line = 1553;
+  fra.me.meth = LOCATE_NEW_ComputeProdLocationVisitor_parser___ComputeProdLocationVisitor___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:7593 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AFullPropExternCall();
-  INIT_ATTRIBUTES__parser___parser_nodes___AFullPropExternCall(fra.me.REG[0]);
-  parser___parser_prod___AExternCall___init_aexterncall(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AFullPropExternCall(fra.me.REG[0]);
+  /* parser/parser.nit:1553 */
+  fra.me.REG[0] = NEW_parser___ComputeProdLocationVisitor();
+  INIT_ATTRIBUTES__parser___ComputeProdLocationVisitor(fra.me.REG[0]);
+  parser___ComputeProdLocationVisitor___init(fra.me.REG[0], init_table);
+  CHECKNEW_parser___ComputeProdLocationVisitor(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AInitPropExternCall[82] = {
-  {(bigint) 3647 /* 0: Identity */},
-  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AInitPropExternCall" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AInitPropExternCall < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AInitPropExternCall < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction0[55] = {
+  {(bigint) 2991 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction0" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction0 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction0 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2991 /* 5: ReduceAction0 < ReduceAction0: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AInitPropExternCall < Prod: superclass typecheck marker */},
-  {(bigint) 3107 /* 7: AInitPropExternCall < AExternCall: superclass typecheck marker */},
-  {(bigint) 3335 /* 8: AInitPropExternCall < APropExternCall: superclass typecheck marker */},
-  {(bigint) 3647 /* 9: AInitPropExternCall < AInitPropExternCall: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -49221,7 +91929,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AInitPropExternCall[82] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AInitPropExternCall < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction0 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -49237,6 +91945,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AInitPropExternCall[82] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -49250,196 +91960,92 @@ const classtable_elt_t VFT_parser___parser_nodes___AInitPropExternCall[82] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AInitPropExternCall___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AInitPropExternCall___visit_all},
-  {(bigint) 1 /* 60: AInitPropExternCall < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___AExternCall___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AInitPropExternCall < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AInitPropExternCall___target_class_name},
-  {(bigint) syntax___typing___AInitPropExternCall___target_method_name},
-  {(bigint) parser___parser_prod___AExternCall___empty_init},
-  {(bigint) parser___parser_prod___AExternCall___init_aexterncall},
-  {(bigint) 3 /* 76: AInitPropExternCall < AExternCall: superclass init_table position */},
-  {(bigint) 4 /* 77: AInitPropExternCall < APropExternCall: superclass init_table position */},
-  {(bigint) parser___parser_prod___AInitPropExternCall___empty_init},
-  {(bigint) parser___parser_prod___AInitPropExternCall___init_ainitpropexterncall},
-  {(bigint) 5 /* 80: AInitPropExternCall < AInitPropExternCall: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AInitPropExternCall___n_classid},
+  {(bigint) 0 /* 50: ReduceAction0 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction0___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction0 < ReduceAction0: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AInitPropExternCall::_parent */
-/* 3: Attribute AInitPropExternCall::_location */
-/* 4: Attribute AInitPropExternCall::_first_location */
-/* 5: Attribute AInitPropExternCall::_last_location */
-/* 6: Attribute AInitPropExternCall::_n_classid */
-void INIT_ATTRIBUTES__parser___parser_nodes___AInitPropExternCall(val_t p0){
+/* 2: Attribute ReduceAction0::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction0[] = "init var of ReduceAction0";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___AInitPropExternCall;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction0;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AInitPropExternCall(void)
+val_t NEW_parser___ReduceAction0(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AInitPropExternCall;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction0;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AInitPropExternCall(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction0[] = "check new ReduceAction0";
+void CHECKNEW_parser___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_parser___parser_nodes___AInitPropExternCall;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction0;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AInitPropExternCall____n_classid(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_classid", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AInitPropExternCall_parser___parser_prod___AExternCall___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 = 7591;
-  fra.me.meth = LOCATE_NEW_AInitPropExternCall_parser___parser_prod___AExternCall___empty_init;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:7591 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AInitPropExternCall();
-  INIT_ATTRIBUTES__parser___parser_nodes___AInitPropExternCall(fra.me.REG[0]);
-  parser___parser_prod___AExternCall___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AInitPropExternCall(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-val_t NEW_AInitPropExternCall_parser___parser_prod___AInitPropExternCall___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 = 7732;
-  fra.me.meth = LOCATE_NEW_AInitPropExternCall_parser___parser_prod___AInitPropExternCall___empty_init;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:7732 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AInitPropExternCall();
-  INIT_ATTRIBUTES__parser___parser_nodes___AInitPropExternCall(fra.me.REG[0]);
-  parser___parser_prod___AInitPropExternCall___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AInitPropExternCall(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-val_t NEW_AInitPropExternCall_parser___parser_prod___AInitPropExternCall___init_ainitpropexterncall(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 = 7734;
-  fra.me.meth = LOCATE_NEW_AInitPropExternCall_parser___parser_prod___AInitPropExternCall___init_ainitpropexterncall;
-  fra.me.has_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:7734 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___AInitPropExternCall();
-  INIT_ATTRIBUTES__parser___parser_nodes___AInitPropExternCall(fra.me.REG[1]);
-  parser___parser_prod___AInitPropExternCall___init_ainitpropexterncall(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AInitPropExternCall(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_AInitPropExternCall_parser___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_AInitPropExternCall_parser___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_parser___parser_nodes___AInitPropExternCall();
-  INIT_ATTRIBUTES__parser___parser_nodes___AInitPropExternCall(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AInitPropExternCall(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_AInitPropExternCall_parser___parser_prod___AExternCall___init_aexterncall(void){
+static const char LOCATE_NEW_ReduceAction0_parser___ReduceAction___init[] = "new ReduceAction0 parser::ReduceAction::init";
+val_t NEW_ReduceAction0_parser___ReduceAction___init(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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7593;
-  fra.me.meth = LOCATE_NEW_AInitPropExternCall_parser___parser_prod___AExternCall___init_aexterncall;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction0_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:7593 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AInitPropExternCall();
-  INIT_ATTRIBUTES__parser___parser_nodes___AInitPropExternCall(fra.me.REG[0]);
-  parser___parser_prod___AExternCall___init_aexterncall(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AInitPropExternCall(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction0();
+  INIT_ATTRIBUTES__parser___ReduceAction0(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction0(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ASuperExternCall[81] = {
-  {(bigint) 3271 /* 0: Identity */},
-  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ASuperExternCall" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ASuperExternCall < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ASuperExternCall < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction1[55] = {
+  {(bigint) 2987 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction1" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction1 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction1 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2987 /* 5: ReduceAction1 < ReduceAction1: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: ASuperExternCall < Prod: superclass typecheck marker */},
-  {(bigint) 3107 /* 7: ASuperExternCall < AExternCall: superclass typecheck marker */},
-  {(bigint) 3271 /* 8: ASuperExternCall < ASuperExternCall: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -49449,7 +92055,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ASuperExternCall[81] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: ASuperExternCall < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction1 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -49465,6 +92071,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ASuperExternCall[81] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -49478,195 +92086,92 @@ const classtable_elt_t VFT_parser___parser_nodes___ASuperExternCall[81] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ASuperExternCall___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ASuperExternCall___visit_all},
-  {(bigint) 1 /* 60: ASuperExternCall < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ASuperExternCall___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: ASuperExternCall < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExternCall___target_class_name},
-  {(bigint) syntax___typing___AExternCall___target_method_name},
-  {(bigint) parser___parser_prod___AExternCall___empty_init},
-  {(bigint) parser___parser_prod___AExternCall___init_aexterncall},
-  {(bigint) 3 /* 76: ASuperExternCall < AExternCall: superclass init_table position */},
-  {(bigint) parser___parser_prod___ASuperExternCall___empty_init},
-  {(bigint) parser___parser_prod___ASuperExternCall___init_asuperexterncall},
-  {(bigint) 4 /* 79: ASuperExternCall < ASuperExternCall: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ASuperExternCall___n_kwsuper},
+  {(bigint) 0 /* 50: ReduceAction1 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction1___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction1 < ReduceAction1: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ASuperExternCall::_parent */
-/* 3: Attribute ASuperExternCall::_location */
-/* 4: Attribute ASuperExternCall::_first_location */
-/* 5: Attribute ASuperExternCall::_last_location */
-/* 6: Attribute ASuperExternCall::_n_kwsuper */
-void INIT_ATTRIBUTES__parser___parser_nodes___ASuperExternCall(val_t p0){
+/* 2: Attribute ReduceAction1::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1[] = "init var of ReduceAction1";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___ASuperExternCall;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___ASuperExternCall(void)
+val_t NEW_parser___ReduceAction1(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ASuperExternCall;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction1;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___ASuperExternCall(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction1[] = "check new ReduceAction1";
+void CHECKNEW_parser___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_parser___parser_nodes___ASuperExternCall;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction1;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASuperExternCall____n_kwsuper(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwsuper", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ASuperExternCall_parser___parser_prod___AExternCall___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 = 7591;
-  fra.me.meth = LOCATE_NEW_ASuperExternCall_parser___parser_prod___AExternCall___empty_init;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:7591 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ASuperExternCall();
-  INIT_ATTRIBUTES__parser___parser_nodes___ASuperExternCall(fra.me.REG[0]);
-  parser___parser_prod___AExternCall___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ASuperExternCall(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-val_t NEW_ASuperExternCall_parser___parser_prod___ASuperExternCall___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 = 7607;
-  fra.me.meth = LOCATE_NEW_ASuperExternCall_parser___parser_prod___ASuperExternCall___empty_init;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:7607 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ASuperExternCall();
-  INIT_ATTRIBUTES__parser___parser_nodes___ASuperExternCall(fra.me.REG[0]);
-  parser___parser_prod___ASuperExternCall___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ASuperExternCall(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-val_t NEW_ASuperExternCall_parser___parser_prod___ASuperExternCall___init_asuperexterncall(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 = 7609;
-  fra.me.meth = LOCATE_NEW_ASuperExternCall_parser___parser_prod___ASuperExternCall___init_asuperexterncall;
-  fra.me.has_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:7609 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___ASuperExternCall();
-  INIT_ATTRIBUTES__parser___parser_nodes___ASuperExternCall(fra.me.REG[1]);
-  parser___parser_prod___ASuperExternCall___init_asuperexterncall(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ASuperExternCall(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_ASuperExternCall_parser___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_ASuperExternCall_parser___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_parser___parser_nodes___ASuperExternCall();
-  INIT_ATTRIBUTES__parser___parser_nodes___ASuperExternCall(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ASuperExternCall(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_ASuperExternCall_parser___parser_prod___AExternCall___init_aexterncall(void){
+static const char LOCATE_NEW_ReduceAction1_parser___ReduceAction___init[] = "new ReduceAction1 parser::ReduceAction::init";
+val_t NEW_ReduceAction1_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7593;
-  fra.me.meth = LOCATE_NEW_ASuperExternCall_parser___parser_prod___AExternCall___init_aexterncall;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction1_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:7593 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ASuperExternCall();
-  INIT_ATTRIBUTES__parser___parser_nodes___ASuperExternCall(fra.me.REG[0]);
-  parser___parser_prod___AExternCall___init_aexterncall(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ASuperExternCall(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction1();
+  INIT_ATTRIBUTES__parser___ReduceAction1(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction1(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ACastExternCall[80] = {
-  {(bigint) 3467 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ACastExternCall" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ACastExternCall < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ACastExternCall < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction2[55] = {
+  {(bigint) 2427 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction2" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction2 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction2 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2427 /* 5: ReduceAction2 < ReduceAction2: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: ACastExternCall < Prod: superclass typecheck marker */},
-  {(bigint) 3107 /* 7: ACastExternCall < AExternCall: superclass typecheck marker */},
-  {(bigint) 3467 /* 8: ACastExternCall < ACastExternCall: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -49676,7 +92181,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ACastExternCall[80] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: ACastExternCall < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction2 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -49692,6 +92197,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ACastExternCall[80] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -49705,146 +92212,93 @@ const classtable_elt_t VFT_parser___parser_nodes___ACastExternCall[80] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AExternCall___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AExternCall___visit_all},
-  {(bigint) 1 /* 60: ACastExternCall < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ACastExternCall___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: ACastExternCall < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExternCall___target_class_name},
-  {(bigint) syntax___typing___AExternCall___target_method_name},
-  {(bigint) parser___parser_prod___AExternCall___empty_init},
-  {(bigint) parser___parser_prod___AExternCall___init_aexterncall},
-  {(bigint) 3 /* 76: ACastExternCall < AExternCall: superclass init_table position */},
-  {(bigint) syntax___typing___ACastExternCall___from_type},
-  {(bigint) syntax___typing___ACastExternCall___to_type},
-  {(bigint) 4 /* 79: ACastExternCall < ACastExternCall: superclass init_table position */},
+  {(bigint) 0 /* 50: ReduceAction2 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction2___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction2 < ReduceAction2: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ACastExternCall::_parent */
-/* 3: Attribute ACastExternCall::_location */
-/* 4: Attribute ACastExternCall::_first_location */
-/* 5: Attribute ACastExternCall::_last_location */
-void INIT_ATTRIBUTES__parser___parser_nodes___ACastExternCall(val_t p0){
+/* 2: Attribute ReduceAction2::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction2[] = "init var of ReduceAction2";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___ACastExternCall;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction2;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___ACastExternCall(void)
+val_t NEW_parser___ReduceAction2(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ACastExternCall;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction2;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___ACastExternCall(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction2[] = "check new ReduceAction2";
+void CHECKNEW_parser___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_parser___parser_nodes___ACastExternCall;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
-  stack_frame_head = fra.me.prev;
-}
-val_t NEW_ACastExternCall_parser___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_ACastExternCall_parser___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_parser___parser_nodes___ACastExternCall();
-  INIT_ATTRIBUTES__parser___parser_nodes___ACastExternCall(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ACastExternCall(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_ACastExternCall_parser___parser_prod___AExternCall___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 = 7591;
-  fra.me.meth = LOCATE_NEW_ACastExternCall_parser___parser_prod___AExternCall___empty_init;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction2;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:7591 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ACastExternCall();
-  INIT_ATTRIBUTES__parser___parser_nodes___ACastExternCall(fra.me.REG[0]);
-  parser___parser_prod___AExternCall___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ACastExternCall(fra.me.REG[0]);
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
 }
-val_t NEW_ACastExternCall_parser___parser_prod___AExternCall___init_aexterncall(void){
+static const char LOCATE_NEW_ReduceAction2_parser___ReduceAction___init[] = "new ReduceAction2 parser::ReduceAction::init";
+val_t NEW_ReduceAction2_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7593;
-  fra.me.meth = LOCATE_NEW_ACastExternCall_parser___parser_prod___AExternCall___init_aexterncall;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction2_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:7593 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ACastExternCall();
-  INIT_ATTRIBUTES__parser___parser_nodes___ACastExternCall(fra.me.REG[0]);
-  parser___parser_prod___AExternCall___init_aexterncall(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ACastExternCall(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction2();
+  INIT_ATTRIBUTES__parser___ReduceAction2(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction2(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ACastAsExternCall[86] = {
-  {(bigint) 3703 /* 0: Identity */},
-  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ACastAsExternCall" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ACastAsExternCall < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ACastAsExternCall < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction3[55] = {
+  {(bigint) 1983 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction3" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction3 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction3 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1983 /* 5: ReduceAction3 < ReduceAction3: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: ACastAsExternCall < Prod: superclass typecheck marker */},
-  {(bigint) 3107 /* 7: ACastAsExternCall < AExternCall: superclass typecheck marker */},
-  {(bigint) 3467 /* 8: ACastAsExternCall < ACastExternCall: superclass typecheck marker */},
-  {(bigint) 3703 /* 9: ACastAsExternCall < ACastAsExternCall: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -49853,7 +92307,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ACastAsExternCall[86] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: ACastAsExternCall < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction3 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -49869,6 +92323,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ACastAsExternCall[86] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -49882,217 +92338,219 @@ const classtable_elt_t VFT_parser___parser_nodes___ACastAsExternCall[86] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ACastAsExternCall___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ACastAsExternCall___visit_all},
-  {(bigint) 1 /* 60: ACastAsExternCall < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ACastExternCall___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: ACastAsExternCall < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExternCall___target_class_name},
-  {(bigint) syntax___typing___AExternCall___target_method_name},
-  {(bigint) parser___parser_prod___AExternCall___empty_init},
-  {(bigint) parser___parser_prod___AExternCall___init_aexterncall},
-  {(bigint) 3 /* 76: ACastAsExternCall < AExternCall: superclass init_table position */},
-  {(bigint) syntax___typing___ACastAsExternCall___from_type},
-  {(bigint) syntax___typing___ACastAsExternCall___to_type},
-  {(bigint) 4 /* 79: ACastAsExternCall < ACastExternCall: superclass init_table position */},
-  {(bigint) parser___parser_prod___ACastAsExternCall___empty_init},
-  {(bigint) parser___parser_prod___ACastAsExternCall___init_acastasexterncall},
-  {(bigint) 5 /* 82: ACastAsExternCall < ACastAsExternCall: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ACastAsExternCall___n_from_type},
-  {(bigint) parser___parser_nodes___ACastAsExternCall___n_kwas},
-  {(bigint) parser___parser_nodes___ACastAsExternCall___n_to_type},
+  {(bigint) 0 /* 50: ReduceAction3 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction3___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction3 < ReduceAction3: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ACastAsExternCall::_parent */
-/* 3: Attribute ACastAsExternCall::_location */
-/* 4: Attribute ACastAsExternCall::_first_location */
-/* 5: Attribute ACastAsExternCall::_last_location */
-/* 6: Attribute ACastAsExternCall::_n_from_type */
-/* 7: Attribute ACastAsExternCall::_n_kwas */
-/* 8: Attribute ACastAsExternCall::_n_to_type */
-void INIT_ATTRIBUTES__parser___parser_nodes___ACastAsExternCall(val_t p0){
+/* 2: Attribute ReduceAction3::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction3[] = "init var of ReduceAction3";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___ACastAsExternCall;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction3;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___ACastAsExternCall(void)
+val_t NEW_parser___ReduceAction3(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 9);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ACastAsExternCall;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction3;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___ACastAsExternCall(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction3[] = "check new ReduceAction3";
+void CHECKNEW_parser___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_parser___parser_nodes___ACastAsExternCall;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction3;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ACastAsExternCall____n_from_type(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_n_from_type", LOCATE_nitc, 0);
-  }
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ACastAsExternCall____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___parser_nodes___ACastAsExternCall____n_to_type(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_to_type", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ACastAsExternCall_parser___parser_prod___AExternCall___empty_init(void){
+static const char LOCATE_NEW_ReduceAction3_parser___ReduceAction___init[] = "new ReduceAction3 parser::ReduceAction::init";
+val_t NEW_ReduceAction3_parser___ReduceAction___init(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};
+  int init_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_ACastAsExternCall_parser___parser_prod___AExternCall___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction3_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:7591 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ACastAsExternCall();
-  INIT_ATTRIBUTES__parser___parser_nodes___ACastAsExternCall(fra.me.REG[0]);
-  parser___parser_prod___AExternCall___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ACastAsExternCall(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction3();
+  INIT_ATTRIBUTES__parser___ReduceAction3(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction3(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_ACastAsExternCall_parser___parser_prod___ACastAsExternCall___empty_init(void){
+const classtable_elt_t VFT_parser___ReduceAction4[55] = {
+  {(bigint) 1547 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction4" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction4 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction4 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1547 /* 5: ReduceAction4 < ReduceAction4: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction4 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 50: ReduceAction4 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction4___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction4 < ReduceAction4: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ReduceAction4::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction4[] = "init var of ReduceAction4";
+void INIT_ATTRIBUTES__parser___ReduceAction4(val_t p0){
   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 = 7763;
-  fra.me.meth = LOCATE_NEW_ACastAsExternCall_parser___parser_prod___ACastAsExternCall___empty_init;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction4;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:7763 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ACastAsExternCall();
-  INIT_ATTRIBUTES__parser___parser_nodes___ACastAsExternCall(fra.me.REG[0]);
-  parser___parser_prod___ACastAsExternCall___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ACastAsExternCall(fra.me.REG[0]);
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
 }
-val_t NEW_ACastAsExternCall_parser___parser_prod___ACastAsExternCall___init_acastasexterncall(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 = 7765;
-  fra.me.meth = LOCATE_NEW_ACastAsExternCall_parser___parser_prod___ACastAsExternCall___init_acastasexterncall;
-  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:7765 */
-  fra.me.REG[3] = NEW_parser___parser_nodes___ACastAsExternCall();
-  INIT_ATTRIBUTES__parser___parser_nodes___ACastAsExternCall(fra.me.REG[3]);
-  parser___parser_prod___ACastAsExternCall___init_acastasexterncall(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
-  CHECKNEW_parser___parser_nodes___ACastAsExternCall(fra.me.REG[3]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[3];
+val_t NEW_parser___ReduceAction4(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction4;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
 }
-val_t NEW_ACastAsExternCall_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_CHECKNEW_parser___ReduceAction4[] = "check new ReduceAction4";
+void CHECKNEW_parser___ReduceAction4(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 = 0;
-  fra.me.meth = LOCATE_NEW_ACastAsExternCall_parser___parser_nodes___ANode___init;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction4;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___ACastAsExternCall();
-  INIT_ATTRIBUTES__parser___parser_nodes___ACastAsExternCall(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ACastAsExternCall(fra.me.REG[1]);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
 }
-val_t NEW_ACastAsExternCall_parser___parser_prod___AExternCall___init_aexterncall(void){
+static const char LOCATE_NEW_ReduceAction4_parser___ReduceAction___init[] = "new ReduceAction4 parser::ReduceAction::init";
+val_t NEW_ReduceAction4_parser___ReduceAction___init(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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7593;
-  fra.me.meth = LOCATE_NEW_ACastAsExternCall_parser___parser_prod___AExternCall___init_aexterncall;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction4_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:7593 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ACastAsExternCall();
-  INIT_ATTRIBUTES__parser___parser_nodes___ACastAsExternCall(fra.me.REG[0]);
-  parser___parser_prod___AExternCall___init_aexterncall(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ACastAsExternCall(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction4();
+  INIT_ATTRIBUTES__parser___ReduceAction4(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction4(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AAsNullableExternCall[86] = {
-  {(bigint) 3723 /* 0: Identity */},
-  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AAsNullableExternCall" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AAsNullableExternCall < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AAsNullableExternCall < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction5[55] = {
+  {(bigint) 1143 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction5" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction5 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction5 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1143 /* 5: ReduceAction5 < ReduceAction5: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AAsNullableExternCall < Prod: superclass typecheck marker */},
-  {(bigint) 3107 /* 7: AAsNullableExternCall < AExternCall: superclass typecheck marker */},
-  {(bigint) 3467 /* 8: AAsNullableExternCall < ACastExternCall: superclass typecheck marker */},
-  {(bigint) 3723 /* 9: AAsNullableExternCall < AAsNullableExternCall: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -50101,7 +92559,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAsNullableExternCall[86] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AAsNullableExternCall < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction5 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -50117,6 +92575,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AAsNullableExternCall[86] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -50130,217 +92590,219 @@ const classtable_elt_t VFT_parser___parser_nodes___AAsNullableExternCall[86] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AAsNullableExternCall___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AAsNullableExternCall___visit_all},
-  {(bigint) 1 /* 60: AAsNullableExternCall < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ACastExternCall___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AAsNullableExternCall < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExternCall___target_class_name},
-  {(bigint) syntax___typing___AExternCall___target_method_name},
-  {(bigint) parser___parser_prod___AExternCall___empty_init},
-  {(bigint) parser___parser_prod___AExternCall___init_aexterncall},
-  {(bigint) 3 /* 76: AAsNullableExternCall < AExternCall: superclass init_table position */},
-  {(bigint) syntax___typing___AAsNullableExternCall___from_type},
-  {(bigint) syntax___typing___AAsNullableExternCall___to_type},
-  {(bigint) 4 /* 79: AAsNullableExternCall < ACastExternCall: superclass init_table position */},
-  {(bigint) parser___parser_prod___AAsNullableExternCall___empty_init},
-  {(bigint) parser___parser_prod___AAsNullableExternCall___init_aasnullableexterncall},
-  {(bigint) 5 /* 82: AAsNullableExternCall < AAsNullableExternCall: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AAsNullableExternCall___n_type},
-  {(bigint) parser___parser_nodes___AAsNullableExternCall___n_kwas},
-  {(bigint) parser___parser_nodes___AAsNullableExternCall___n_kwnullable},
+  {(bigint) 0 /* 50: ReduceAction5 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction5___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction5 < ReduceAction5: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AAsNullableExternCall::_parent */
-/* 3: Attribute AAsNullableExternCall::_location */
-/* 4: Attribute AAsNullableExternCall::_first_location */
-/* 5: Attribute AAsNullableExternCall::_last_location */
-/* 6: Attribute AAsNullableExternCall::_n_type */
-/* 7: Attribute AAsNullableExternCall::_n_kwas */
-/* 8: Attribute AAsNullableExternCall::_n_kwnullable */
-void INIT_ATTRIBUTES__parser___parser_nodes___AAsNullableExternCall(val_t p0){
+/* 2: Attribute ReduceAction5::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction5[] = "init var of ReduceAction5";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___AAsNullableExternCall;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction5;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AAsNullableExternCall(void)
+val_t NEW_parser___ReduceAction5(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 9);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AAsNullableExternCall;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction5;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AAsNullableExternCall(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction5[] = "check new ReduceAction5";
+void CHECKNEW_parser___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_parser___parser_nodes___AAsNullableExternCall;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction5;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsNullableExternCall____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___parser_nodes___AAsNullableExternCall____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___parser_nodes___AAsNullableExternCall____n_kwnullable(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwnullable", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AAsNullableExternCall_parser___parser_prod___AExternCall___empty_init(void){
+static const char LOCATE_NEW_ReduceAction5_parser___ReduceAction___init[] = "new ReduceAction5 parser::ReduceAction::init";
+val_t NEW_ReduceAction5_parser___ReduceAction___init(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};
+  int init_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_AAsNullableExternCall_parser___parser_prod___AExternCall___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction5_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:7591 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AAsNullableExternCall();
-  INIT_ATTRIBUTES__parser___parser_nodes___AAsNullableExternCall(fra.me.REG[0]);
-  parser___parser_prod___AExternCall___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AAsNullableExternCall(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction5();
+  INIT_ATTRIBUTES__parser___ReduceAction5(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction5(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AAsNullableExternCall_parser___parser_prod___AAsNullableExternCall___empty_init(void){
+const classtable_elt_t VFT_parser___ReduceAction6[55] = {
+  {(bigint) 783 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction6" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction6 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction6 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 783 /* 5: ReduceAction6 < ReduceAction6: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction6 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 50: ReduceAction6 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction6___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction6 < ReduceAction6: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ReduceAction6::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction6[] = "init var of ReduceAction6";
+void INIT_ATTRIBUTES__parser___ReduceAction6(val_t p0){
   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 = 7822;
-  fra.me.meth = LOCATE_NEW_AAsNullableExternCall_parser___parser_prod___AAsNullableExternCall___empty_init;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction6;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:7822 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AAsNullableExternCall();
-  INIT_ATTRIBUTES__parser___parser_nodes___AAsNullableExternCall(fra.me.REG[0]);
-  parser___parser_prod___AAsNullableExternCall___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AAsNullableExternCall(fra.me.REG[0]);
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
 }
-val_t NEW_AAsNullableExternCall_parser___parser_prod___AAsNullableExternCall___init_aasnullableexterncall(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 = 7824;
-  fra.me.meth = LOCATE_NEW_AAsNullableExternCall_parser___parser_prod___AAsNullableExternCall___init_aasnullableexterncall;
-  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:7824 */
-  fra.me.REG[3] = NEW_parser___parser_nodes___AAsNullableExternCall();
-  INIT_ATTRIBUTES__parser___parser_nodes___AAsNullableExternCall(fra.me.REG[3]);
-  parser___parser_prod___AAsNullableExternCall___init_aasnullableexterncall(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
-  CHECKNEW_parser___parser_nodes___AAsNullableExternCall(fra.me.REG[3]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[3];
+val_t NEW_parser___ReduceAction6(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction6;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
 }
-val_t NEW_AAsNullableExternCall_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_CHECKNEW_parser___ReduceAction6[] = "check new ReduceAction6";
+void CHECKNEW_parser___ReduceAction6(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 = 0;
-  fra.me.meth = LOCATE_NEW_AAsNullableExternCall_parser___parser_nodes___ANode___init;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction6;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___AAsNullableExternCall();
-  INIT_ATTRIBUTES__parser___parser_nodes___AAsNullableExternCall(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AAsNullableExternCall(fra.me.REG[1]);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
 }
-val_t NEW_AAsNullableExternCall_parser___parser_prod___AExternCall___init_aexterncall(void){
+static const char LOCATE_NEW_ReduceAction6_parser___ReduceAction___init[] = "new ReduceAction6 parser::ReduceAction::init";
+val_t NEW_ReduceAction6_parser___ReduceAction___init(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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7593;
-  fra.me.meth = LOCATE_NEW_AAsNullableExternCall_parser___parser_prod___AExternCall___init_aexterncall;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction6_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:7593 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AAsNullableExternCall();
-  INIT_ATTRIBUTES__parser___parser_nodes___AAsNullableExternCall(fra.me.REG[0]);
-  parser___parser_prod___AExternCall___init_aexterncall(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AAsNullableExternCall(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction6();
+  INIT_ATTRIBUTES__parser___ReduceAction6(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction6(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AAsNotNullableExternCall[87] = {
-  {(bigint) 3727 /* 0: Identity */},
-  {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AAsNotNullableExternCall" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AAsNotNullableExternCall < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AAsNotNullableExternCall < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction7[55] = {
+  {(bigint) 527 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction7" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction7 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction7 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 527 /* 5: ReduceAction7 < ReduceAction7: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AAsNotNullableExternCall < Prod: superclass typecheck marker */},
-  {(bigint) 3107 /* 7: AAsNotNullableExternCall < AExternCall: superclass typecheck marker */},
-  {(bigint) 3467 /* 8: AAsNotNullableExternCall < ACastExternCall: superclass typecheck marker */},
-  {(bigint) 3727 /* 9: AAsNotNullableExternCall < AAsNotNullableExternCall: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -50349,7 +92811,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAsNotNullableExternCall[87]
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AAsNotNullableExternCall < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction7 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -50365,6 +92827,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AAsNotNullableExternCall[87]
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -50378,225 +92842,218 @@ const classtable_elt_t VFT_parser___parser_nodes___AAsNotNullableExternCall[87]
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AAsNotNullableExternCall___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AAsNotNullableExternCall___visit_all},
-  {(bigint) 1 /* 60: AAsNotNullableExternCall < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ACastExternCall___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AAsNotNullableExternCall < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExternCall___target_class_name},
-  {(bigint) syntax___typing___AExternCall___target_method_name},
-  {(bigint) parser___parser_prod___AExternCall___empty_init},
-  {(bigint) parser___parser_prod___AExternCall___init_aexterncall},
-  {(bigint) 3 /* 76: AAsNotNullableExternCall < AExternCall: superclass init_table position */},
-  {(bigint) syntax___typing___AAsNotNullableExternCall___from_type},
-  {(bigint) syntax___typing___AAsNotNullableExternCall___to_type},
-  {(bigint) 4 /* 79: AAsNotNullableExternCall < ACastExternCall: superclass init_table position */},
-  {(bigint) parser___parser_prod___AAsNotNullableExternCall___empty_init},
-  {(bigint) parser___parser_prod___AAsNotNullableExternCall___init_aasnotnullableexterncall},
-  {(bigint) 5 /* 82: AAsNotNullableExternCall < AAsNotNullableExternCall: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AAsNotNullableExternCall___n_type},
-  {(bigint) parser___parser_nodes___AAsNotNullableExternCall___n_kwas},
-  {(bigint) parser___parser_nodes___AAsNotNullableExternCall___n_kwnot},
-  {(bigint) parser___parser_nodes___AAsNotNullableExternCall___n_kwnullable},
+  {(bigint) 0 /* 50: ReduceAction7 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction7___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction7 < ReduceAction7: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AAsNotNullableExternCall::_parent */
-/* 3: Attribute AAsNotNullableExternCall::_location */
-/* 4: Attribute AAsNotNullableExternCall::_first_location */
-/* 5: Attribute AAsNotNullableExternCall::_last_location */
-/* 6: Attribute AAsNotNullableExternCall::_n_type */
-/* 7: Attribute AAsNotNullableExternCall::_n_kwas */
-/* 8: Attribute AAsNotNullableExternCall::_n_kwnot */
-/* 9: Attribute AAsNotNullableExternCall::_n_kwnullable */
-void INIT_ATTRIBUTES__parser___parser_nodes___AAsNotNullableExternCall(val_t p0){
+/* 2: Attribute ReduceAction7::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction7[] = "init var of ReduceAction7";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___AAsNotNullableExternCall;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction7;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AAsNotNullableExternCall(void)
+val_t NEW_parser___ReduceAction7(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 10);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AAsNotNullableExternCall;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction7;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AAsNotNullableExternCall(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction7[] = "check new ReduceAction7";
+void CHECKNEW_parser___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_parser___parser_nodes___AAsNotNullableExternCall;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction7;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAsNotNullableExternCall____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___parser_nodes___AAsNotNullableExternCall____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___parser_nodes___AAsNotNullableExternCall____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___parser_nodes___AAsNotNullableExternCall____n_kwnullable(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwnullable", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AAsNotNullableExternCall_parser___parser_prod___AExternCall___empty_init(void){
+static const char LOCATE_NEW_ReduceAction7_parser___ReduceAction___init[] = "new ReduceAction7 parser::ReduceAction::init";
+val_t NEW_ReduceAction7_parser___ReduceAction___init(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};
+  int init_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_AAsNotNullableExternCall_parser___parser_prod___AExternCall___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction7_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:7591 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AAsNotNullableExternCall();
-  INIT_ATTRIBUTES__parser___parser_nodes___AAsNotNullableExternCall(fra.me.REG[0]);
-  parser___parser_prod___AExternCall___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AAsNotNullableExternCall(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction7();
+  INIT_ATTRIBUTES__parser___ReduceAction7(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction7(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AAsNotNullableExternCall_parser___parser_prod___AAsNotNullableExternCall___empty_init(void){
+const classtable_elt_t VFT_parser___ReduceAction8[55] = {
+  {(bigint) 487 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction8" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction8 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction8 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 487 /* 5: ReduceAction8 < ReduceAction8: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction8 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 50: ReduceAction8 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction8___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction8 < ReduceAction8: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ReduceAction8::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction8[] = "init var of ReduceAction8";
+void INIT_ATTRIBUTES__parser___ReduceAction8(val_t p0){
   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 = 7881;
-  fra.me.meth = LOCATE_NEW_AAsNotNullableExternCall_parser___parser_prod___AAsNotNullableExternCall___empty_init;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction8;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:7881 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AAsNotNullableExternCall();
-  INIT_ATTRIBUTES__parser___parser_nodes___AAsNotNullableExternCall(fra.me.REG[0]);
-  parser___parser_prod___AAsNotNullableExternCall___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AAsNotNullableExternCall(fra.me.REG[0]);
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
 }
-val_t NEW_AAsNotNullableExternCall_parser___parser_prod___AAsNotNullableExternCall___init_aasnotnullableexterncall(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[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 = 7883;
-  fra.me.meth = LOCATE_NEW_AAsNotNullableExternCall_parser___parser_prod___AAsNotNullableExternCall___init_aasnotnullableexterncall;
-  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:7883 */
-  fra.me.REG[4] = NEW_parser___parser_nodes___AAsNotNullableExternCall();
-  INIT_ATTRIBUTES__parser___parser_nodes___AAsNotNullableExternCall(fra.me.REG[4]);
-  parser___parser_prod___AAsNotNullableExternCall___init_aasnotnullableexterncall(fra.me.REG[4], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], init_table);
-  CHECKNEW_parser___parser_nodes___AAsNotNullableExternCall(fra.me.REG[4]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[4];
+val_t NEW_parser___ReduceAction8(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction8;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
 }
-val_t NEW_AAsNotNullableExternCall_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_CHECKNEW_parser___ReduceAction8[] = "check new ReduceAction8";
+void CHECKNEW_parser___ReduceAction8(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 = 0;
-  fra.me.meth = LOCATE_NEW_AAsNotNullableExternCall_parser___parser_nodes___ANode___init;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction8;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___AAsNotNullableExternCall();
-  INIT_ATTRIBUTES__parser___parser_nodes___AAsNotNullableExternCall(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AAsNotNullableExternCall(fra.me.REG[1]);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
 }
-val_t NEW_AAsNotNullableExternCall_parser___parser_prod___AExternCall___init_aexterncall(void){
+static const char LOCATE_NEW_ReduceAction8_parser___ReduceAction___init[] = "new ReduceAction8 parser::ReduceAction::init";
+val_t NEW_ReduceAction8_parser___ReduceAction___init(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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7593;
-  fra.me.meth = LOCATE_NEW_AAsNotNullableExternCall_parser___parser_prod___AExternCall___init_aexterncall;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction8_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:7593 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AAsNotNullableExternCall();
-  INIT_ATTRIBUTES__parser___parser_nodes___AAsNotNullableExternCall(fra.me.REG[0]);
-  parser___parser_prod___AExternCall___init_aexterncall(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AAsNotNullableExternCall(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction8();
+  INIT_ATTRIBUTES__parser___ReduceAction8(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction8(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ATypePropdef[91] = {
-  {(bigint) 3255 /* 0: Identity */},
-  {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ATypePropdef" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ATypePropdef < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ATypePropdef < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction9[55] = {
+  {(bigint) 443 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction9" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction9 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction9 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 443 /* 5: ReduceAction9 < ReduceAction9: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: ATypePropdef < Prod: superclass typecheck marker */},
-  {(bigint) 3063 /* 7: ATypePropdef < APropdef: superclass typecheck marker */},
-  {(bigint) 3255 /* 8: ATypePropdef < ATypePropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -50606,7 +93063,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ATypePropdef[91] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: ATypePropdef < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction9 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -50622,6 +93079,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ATypePropdef[91] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -50635,207 +93094,91 @@ const classtable_elt_t VFT_parser___parser_nodes___ATypePropdef[91] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ATypePropdef___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ATypePropdef___accept_property_verifier},
-  {(bigint) syntax___mmbuilder___ATypePropdef___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ATypePropdef___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ATypePropdef___visit_all},
-  {(bigint) 1 /* 60: ATypePropdef < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: ATypePropdef < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___APropdef___process_and_check},
-  {(bigint) syntax___mmbuilder___APropdef___do_and_check_intro},
-  {(bigint) syntax___mmbuilder___APropdef___inherit_signature},
-  {(bigint) syntax___mmbuilder___APropdef___do_and_check_redef},
-  {(bigint) syntax___typing___APropdef___self_var},
-  {(bigint) 3 /* 77: ATypePropdef < APropdef: superclass init_table position */},
-  {(bigint) parser___parser_nodes___APropdef___n_doc},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) syntax___mmbuilder___ATypePropdef___prop},
-  {(bigint) parser___parser_prod___ATypePropdef___empty_init},
-  {(bigint) parser___parser_prod___ATypePropdef___init_atypepropdef},
-  {(bigint) 4 /* 85: ATypePropdef < ATypePropdef: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ATypePropdef___n_kwredef},
-  {(bigint) parser___parser_nodes___ATypePropdef___n_visibility},
-  {(bigint) parser___parser_nodes___ATypePropdef___n_kwtype},
-  {(bigint) parser___parser_nodes___ATypePropdef___n_id},
-  {(bigint) parser___parser_nodes___ATypePropdef___n_type},
+  {(bigint) 0 /* 50: ReduceAction9 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction9___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction9 < ReduceAction9: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___ATypePropdef(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+/* 2: Attribute ReduceAction9::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction9[] = "init var of ReduceAction9";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___ATypePropdef;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction9;
   fra.me.has_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:416 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:543 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___ATypePropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___ATypePropdef(void)
+val_t NEW_parser___ReduceAction9(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 14);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ATypePropdef;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction9;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___ATypePropdef(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction9[] = "check new ReduceAction9";
+void CHECKNEW_parser___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_parser___parser_nodes___ATypePropdef;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction9;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___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___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___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___parser_nodes___ATypePropdef____n_type(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ATypePropdef_parser___parser_prod___ATypePropdef___empty_init(void){
+static const char LOCATE_NEW_ReduceAction9_parser___ReduceAction___init[] = "new ReduceAction9 parser::ReduceAction::init";
+val_t NEW_ReduceAction9_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2068;
-  fra.me.meth = LOCATE_NEW_ATypePropdef_parser___parser_prod___ATypePropdef___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction9_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:2068 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ATypePropdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___ATypePropdef(fra.me.REG[0]);
-  parser___parser_prod___ATypePropdef___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ATypePropdef(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction9();
+  INIT_ATTRIBUTES__parser___ReduceAction9(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction9(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_ATypePropdef_parser___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 = 2070;
-  fra.me.meth = LOCATE_NEW_ATypePropdef_parser___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:2070 */
-  fra.me.REG[6] = NEW_parser___parser_nodes___ATypePropdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___ATypePropdef(fra.me.REG[6]);
-  parser___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_parser___parser_nodes___ATypePropdef(fra.me.REG[6]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[6];
-}
-val_t NEW_ATypePropdef_parser___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___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_parser___parser_nodes___ATypePropdef();
-  INIT_ATTRIBUTES__parser___parser_nodes___ATypePropdef(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ATypePropdef(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AAble[75] = {
-  {(bigint) 3139 /* 0: Identity */},
-  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AAble" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AAble < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AAble < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction10[55] = {
+  {(bigint) 2983 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction10" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction10 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction10 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2983 /* 5: ReduceAction10 < ReduceAction10: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AAble < Prod: superclass typecheck marker */},
-  {(bigint) 3139 /* 7: AAble < AAble: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -50846,7 +93189,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAble[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AAble < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction10 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -50862,6 +93205,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AAble[75] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -50875,113 +93220,92 @@ const classtable_elt_t VFT_parser___parser_nodes___AAble[75] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ANode___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ANode___visit_all},
-  {(bigint) 1 /* 60: AAble < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AAble < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) 3 /* 72: AAble < AAble: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AAble___n_visibility},
-  {(bigint) parser___parser_nodes___AAble___n_kwredef},
+  {(bigint) 0 /* 50: ReduceAction10 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction10___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction10 < ReduceAction10: superclass init_table position */},
 };
 /* 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__parser___parser_nodes___AAble(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+/* 2: Attribute ReduceAction10::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction10[] = "init var of ReduceAction10";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___AAble;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction10;
   fra.me.has_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:550 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AAble____n_visibility(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:551 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AAble____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AAble(void)
+val_t NEW_parser___ReduceAction10(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 8);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AAble;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction10;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AAble(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction10[] = "check new ReduceAction10";
+void CHECKNEW_parser___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_parser___parser_nodes___AAble;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction10;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AAble_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ReduceAction10_parser___ReduceAction___init[] = "new ReduceAction10 parser::ReduceAction::init";
+val_t NEW_ReduceAction10_parser___ReduceAction___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};
+  int init_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_AAble_parser___parser_nodes___ANode___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction10_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___AAble();
-  INIT_ATTRIBUTES__parser___parser_nodes___AAble(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AAble(fra.me.REG[1]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction10();
+  INIT_ATTRIBUTES__parser___ReduceAction10(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction10(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AReadAble[79] = {
-  {(bigint) 3315 /* 0: Identity */},
-  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AReadAble" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AReadAble < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AReadAble < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction11[55] = {
+  {(bigint) 2939 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction11" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction11 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction11 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2939 /* 5: ReduceAction11 < ReduceAction11: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AReadAble < Prod: superclass typecheck marker */},
-  {(bigint) 3139 /* 7: AReadAble < AAble: superclass typecheck marker */},
-  {(bigint) 3315 /* 8: AReadAble < AReadAble: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -50991,7 +93315,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AReadAble[79] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AReadAble < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction11 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -51007,6 +93331,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AReadAble[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -51020,168 +93346,92 @@ const classtable_elt_t VFT_parser___parser_nodes___AReadAble[79] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AReadAble___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AReadAble___visit_all},
-  {(bigint) 1 /* 60: AReadAble < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AReadAble < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) 3 /* 72: AReadAble < AAble: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AAble___n_visibility},
-  {(bigint) parser___parser_nodes___AAble___n_kwredef},
-  {(bigint) parser___parser_prod___AReadAble___empty_init},
-  {(bigint) parser___parser_prod___AReadAble___init_areadable},
-  {(bigint) 4 /* 77: AReadAble < AReadAble: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AReadAble___n_kwreadable},
+  {(bigint) 0 /* 50: ReduceAction11 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction11___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction11 < ReduceAction11: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AReadAble(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+/* 2: Attribute ReduceAction11::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction11[] = "init var of ReduceAction11";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___AReadAble;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction11;
   fra.me.has_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:551 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AAble____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:550 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AAble____n_visibility(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AReadAble(void)
+val_t NEW_parser___ReduceAction11(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 9);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AReadAble;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction11;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AReadAble(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction11[] = "check new ReduceAction11";
+void CHECKNEW_parser___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_parser___parser_nodes___AReadAble;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction11;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AReadAble____n_kwreadable(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwreadable", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AReadAble_parser___parser_prod___AReadAble___empty_init(void){
+static const char LOCATE_NEW_ReduceAction11_parser___ReduceAction___init[] = "new ReduceAction11 parser::ReduceAction::init";
+val_t NEW_ReduceAction11_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2177;
-  fra.me.meth = LOCATE_NEW_AReadAble_parser___parser_prod___AReadAble___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction11_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:2177 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AReadAble();
-  INIT_ATTRIBUTES__parser___parser_nodes___AReadAble(fra.me.REG[0]);
-  parser___parser_prod___AReadAble___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AReadAble(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction11();
+  INIT_ATTRIBUTES__parser___ReduceAction11(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction11(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AReadAble_parser___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 = 2179;
-  fra.me.meth = LOCATE_NEW_AReadAble_parser___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:2179 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___AReadAble();
-  INIT_ATTRIBUTES__parser___parser_nodes___AReadAble(fra.me.REG[2]);
-  parser___parser_prod___AReadAble___init_areadable(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___AReadAble(fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
-}
-val_t NEW_AReadAble_parser___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___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_parser___parser_nodes___AReadAble();
-  INIT_ATTRIBUTES__parser___parser_nodes___AReadAble(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AReadAble(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AWriteAble[79] = {
-  {(bigint) 3243 /* 0: Identity */},
-  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AWriteAble" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AWriteAble < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AWriteAble < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction12[55] = {
+  {(bigint) 2895 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction12" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction12 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction12 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2895 /* 5: ReduceAction12 < ReduceAction12: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AWriteAble < Prod: superclass typecheck marker */},
-  {(bigint) 3139 /* 7: AWriteAble < AAble: superclass typecheck marker */},
-  {(bigint) 3243 /* 8: AWriteAble < AWriteAble: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -51191,7 +93441,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AWriteAble[79] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AWriteAble < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction12 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -51207,6 +93457,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AWriteAble[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -51220,169 +93472,91 @@ const classtable_elt_t VFT_parser___parser_nodes___AWriteAble[79] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AWriteAble___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AWriteAble___visit_all},
-  {(bigint) 1 /* 60: AWriteAble < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AWriteAble < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) 3 /* 72: AWriteAble < AAble: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AAble___n_visibility},
-  {(bigint) parser___parser_nodes___AAble___n_kwredef},
-  {(bigint) parser___parser_prod___AWriteAble___empty_init},
-  {(bigint) parser___parser_prod___AWriteAble___init_awriteable},
-  {(bigint) 4 /* 77: AWriteAble < AWriteAble: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AWriteAble___n_kwwritable},
+  {(bigint) 0 /* 50: ReduceAction12 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction12___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction12 < ReduceAction12: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AWriteAble(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+/* 2: Attribute ReduceAction12::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction12[] = "init var of ReduceAction12";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___AWriteAble;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction12;
   fra.me.has_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:551 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AAble____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:550 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AAble____n_visibility(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AWriteAble(void)
+val_t NEW_parser___ReduceAction12(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 9);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AWriteAble;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction12;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AWriteAble(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction12[] = "check new ReduceAction12";
+void CHECKNEW_parser___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_parser___parser_nodes___AWriteAble;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction12;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AWriteAble____n_kwwritable(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwwritable", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AWriteAble_parser___parser_prod___AWriteAble___empty_init(void){
+static const char LOCATE_NEW_ReduceAction12_parser___ReduceAction___init[] = "new ReduceAction12 parser::ReduceAction::init";
+val_t NEW_ReduceAction12_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2226;
-  fra.me.meth = LOCATE_NEW_AWriteAble_parser___parser_prod___AWriteAble___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction12_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:2226 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AWriteAble();
-  INIT_ATTRIBUTES__parser___parser_nodes___AWriteAble(fra.me.REG[0]);
-  parser___parser_prod___AWriteAble___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AWriteAble(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction12();
+  INIT_ATTRIBUTES__parser___ReduceAction12(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction12(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AWriteAble_parser___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 = 2228;
-  fra.me.meth = LOCATE_NEW_AWriteAble_parser___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:2228 */
-  fra.me.REG[3] = NEW_parser___parser_nodes___AWriteAble();
-  INIT_ATTRIBUTES__parser___parser_nodes___AWriteAble(fra.me.REG[3]);
-  parser___parser_prod___AWriteAble___init_awriteable(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
-  CHECKNEW_parser___parser_nodes___AWriteAble(fra.me.REG[3]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[3];
-}
-val_t NEW_AWriteAble_parser___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___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_parser___parser_nodes___AWriteAble();
-  INIT_ATTRIBUTES__parser___parser_nodes___AWriteAble(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AWriteAble(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AMethid[75] = {
-  {(bigint) 3083 /* 0: Identity */},
-  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AMethid" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AMethid < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AMethid < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction13[55] = {
+  {(bigint) 2735 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction13" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction13 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction13 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2735 /* 5: ReduceAction13 < ReduceAction13: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3083 /* 7: AMethid < AMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -51393,7 +93567,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AMethid[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AMethid < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction13 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -51409,6 +93583,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AMethid[75] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -51422,103 +93598,92 @@ const classtable_elt_t VFT_parser___parser_nodes___AMethid[75] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ANode___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ANode___visit_all},
-  {(bigint) 1 /* 60: AMethid < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AMethid < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 3 /* 74: AMethid < AMethid: superclass init_table position */},
+  {(bigint) 0 /* 50: ReduceAction13 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction13___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction13 < ReduceAction13: 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__parser___parser_nodes___AMethid(val_t p0){
+/* 2: Attribute ReduceAction13::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction13[] = "init var of ReduceAction13";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___AMethid;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction13;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AMethid(void)
+val_t NEW_parser___ReduceAction13(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AMethid;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction13;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AMethid(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction13[] = "check new ReduceAction13";
+void CHECKNEW_parser___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_parser___parser_nodes___AMethid;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction13;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AMethid_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ReduceAction13_parser___ReduceAction___init[] = "new ReduceAction13 parser::ReduceAction::init";
+val_t NEW_ReduceAction13_parser___ReduceAction___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};
+  int init_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_AMethid_parser___parser_nodes___ANode___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction13_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___AMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___AMethid(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AMethid(fra.me.REG[1]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction13();
+  INIT_ATTRIBUTES__parser___ReduceAction13(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction13(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AIdMethid[79] = {
-  {(bigint) 3415 /* 0: Identity */},
-  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AIdMethid" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AIdMethid < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AIdMethid < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction14[55] = {
+  {(bigint) 2691 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction14" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction14 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction14 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2691 /* 5: ReduceAction14 < ReduceAction14: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AIdMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3083 /* 7: AIdMethid < AMethid: superclass typecheck marker */},
-  {(bigint) 3415 /* 8: AIdMethid < AIdMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -51528,7 +93693,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AIdMethid[79] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AIdMethid < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction14 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -51544,6 +93709,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AIdMethid[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -51557,156 +93724,92 @@ const classtable_elt_t VFT_parser___parser_nodes___AIdMethid[79] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AIdMethid___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AIdMethid___visit_all},
-  {(bigint) 1 /* 60: AIdMethid < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AIdMethid < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 3 /* 74: AIdMethid < AMethid: superclass init_table position */},
-  {(bigint) parser___parser_prod___AIdMethid___empty_init},
-  {(bigint) parser___parser_prod___AIdMethid___init_aidmethid},
-  {(bigint) 4 /* 77: AIdMethid < AIdMethid: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AIdMethid___n_id},
+  {(bigint) 0 /* 50: ReduceAction14 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction14___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction14 < ReduceAction14: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AIdMethid(val_t p0){
+/* 2: Attribute ReduceAction14::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction14[] = "init var of ReduceAction14";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___AIdMethid;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction14;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AIdMethid(void)
+val_t NEW_parser___ReduceAction14(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 8);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AIdMethid;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction14;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AIdMethid(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction14[] = "check new ReduceAction14";
+void CHECKNEW_parser___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_parser___parser_nodes___AIdMethid;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction14;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AIdMethid____n_id(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AIdMethid_parser___parser_prod___AIdMethid___empty_init(void){
+static const char LOCATE_NEW_ReduceAction14_parser___ReduceAction___init[] = "new ReduceAction14 parser::ReduceAction::init";
+val_t NEW_ReduceAction14_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2293;
-  fra.me.meth = LOCATE_NEW_AIdMethid_parser___parser_prod___AIdMethid___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction14_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:2293 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AIdMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___AIdMethid(fra.me.REG[0]);
-  parser___parser_prod___AIdMethid___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AIdMethid(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction14();
+  INIT_ATTRIBUTES__parser___ReduceAction14(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction14(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AIdMethid_parser___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 = 2295;
-  fra.me.meth = LOCATE_NEW_AIdMethid_parser___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:2295 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___AIdMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___AIdMethid(fra.me.REG[1]);
-  parser___parser_prod___AIdMethid___init_aidmethid(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AIdMethid(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_AIdMethid_parser___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___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_parser___parser_nodes___AIdMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___AIdMethid(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AIdMethid(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___APlusMethid[79] = {
-  {(bigint) 3343 /* 0: Identity */},
-  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "APlusMethid" /* 2: Class Name */},
-  {(bigint) 3 /* 3: APlusMethid < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: APlusMethid < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction15[55] = {
+  {(bigint) 2647 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction15" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction15 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction15 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2647 /* 5: ReduceAction15 < ReduceAction15: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: APlusMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3083 /* 7: APlusMethid < AMethid: superclass typecheck marker */},
-  {(bigint) 3343 /* 8: APlusMethid < APlusMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -51716,7 +93819,7 @@ const classtable_elt_t VFT_parser___parser_nodes___APlusMethid[79] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: APlusMethid < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction15 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -51732,6 +93835,8 @@ const classtable_elt_t VFT_parser___parser_nodes___APlusMethid[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -51745,156 +93850,92 @@ const classtable_elt_t VFT_parser___parser_nodes___APlusMethid[79] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___APlusMethid___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___APlusMethid___visit_all},
-  {(bigint) 1 /* 60: APlusMethid < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: APlusMethid < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 3 /* 74: APlusMethid < AMethid: superclass init_table position */},
-  {(bigint) parser___parser_prod___APlusMethid___empty_init},
-  {(bigint) parser___parser_prod___APlusMethid___init_aplusmethid},
-  {(bigint) 4 /* 77: APlusMethid < APlusMethid: superclass init_table position */},
-  {(bigint) parser___parser_nodes___APlusMethid___n_plus},
+  {(bigint) 0 /* 50: ReduceAction15 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction15___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction15 < ReduceAction15: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___APlusMethid(val_t p0){
+/* 2: Attribute ReduceAction15::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction15[] = "init var of ReduceAction15";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___APlusMethid;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction15;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___APlusMethid(void)
+val_t NEW_parser___ReduceAction15(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 8);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___APlusMethid;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction15;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___APlusMethid(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction15[] = "check new ReduceAction15";
+void CHECKNEW_parser___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_parser___parser_nodes___APlusMethid;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction15;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___APlusMethid____n_plus(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_plus", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_APlusMethid_parser___parser_prod___APlusMethid___empty_init(void){
+static const char LOCATE_NEW_ReduceAction15_parser___ReduceAction___init[] = "new ReduceAction15 parser::ReduceAction::init";
+val_t NEW_ReduceAction15_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2324;
-  fra.me.meth = LOCATE_NEW_APlusMethid_parser___parser_prod___APlusMethid___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction15_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:2324 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___APlusMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___APlusMethid(fra.me.REG[0]);
-  parser___parser_prod___APlusMethid___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___APlusMethid(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction15();
+  INIT_ATTRIBUTES__parser___ReduceAction15(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction15(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_APlusMethid_parser___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 = 2326;
-  fra.me.meth = LOCATE_NEW_APlusMethid_parser___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:2326 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___APlusMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___APlusMethid(fra.me.REG[1]);
-  parser___parser_prod___APlusMethid___init_aplusmethid(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___APlusMethid(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_APlusMethid_parser___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___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_parser___parser_nodes___APlusMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___APlusMethid(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___APlusMethid(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AMinusMethid[79] = {
-  {(bigint) 3367 /* 0: Identity */},
-  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AMinusMethid" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AMinusMethid < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AMinusMethid < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction16[55] = {
+  {(bigint) 2603 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction16" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction16 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction16 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2603 /* 5: ReduceAction16 < ReduceAction16: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AMinusMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3083 /* 7: AMinusMethid < AMethid: superclass typecheck marker */},
-  {(bigint) 3367 /* 8: AMinusMethid < AMinusMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -51904,7 +93945,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AMinusMethid[79] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AMinusMethid < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction16 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -51920,6 +93961,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AMinusMethid[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -51933,156 +93976,218 @@ const classtable_elt_t VFT_parser___parser_nodes___AMinusMethid[79] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AMinusMethid___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AMinusMethid___visit_all},
-  {(bigint) 1 /* 60: AMinusMethid < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
+  {(bigint) 0 /* 50: ReduceAction16 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction16___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction16 < ReduceAction16: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ReduceAction16::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction16[] = "init var of ReduceAction16";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction16;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___ReduceAction16(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction16;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___ReduceAction16[] = "check new ReduceAction16";
+void CHECKNEW_parser___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_parser___ReduceAction16;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_ReduceAction16_parser___ReduceAction___init[] = "new ReduceAction16 parser::ReduceAction::init";
+val_t NEW_ReduceAction16_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction16_parser___ReduceAction___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction16();
+  INIT_ATTRIBUTES__parser___ReduceAction16(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction16(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___ReduceAction17[55] = {
+  {(bigint) 2559 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction17" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction17 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction17 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2559 /* 5: ReduceAction17 < ReduceAction17: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AMinusMethid < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 3 /* 74: AMinusMethid < AMethid: superclass init_table position */},
-  {(bigint) parser___parser_prod___AMinusMethid___empty_init},
-  {(bigint) parser___parser_prod___AMinusMethid___init_aminusmethid},
-  {(bigint) 4 /* 77: AMinusMethid < AMinusMethid: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AMinusMethid___n_minus},
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction17 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 50: ReduceAction17 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction17___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction17 < ReduceAction17: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AMinusMethid(val_t p0){
+/* 2: Attribute ReduceAction17::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction17[] = "init var of ReduceAction17";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___AMinusMethid;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction17;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AMinusMethid(void)
+val_t NEW_parser___ReduceAction17(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 8);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AMinusMethid;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction17;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AMinusMethid(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction17[] = "check new ReduceAction17";
+void CHECKNEW_parser___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_parser___parser_nodes___AMinusMethid;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction17;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AMinusMethid____n_minus(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_minus", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AMinusMethid_parser___parser_prod___AMinusMethid___empty_init(void){
+static const char LOCATE_NEW_ReduceAction17_parser___ReduceAction___init[] = "new ReduceAction17 parser::ReduceAction::init";
+val_t NEW_ReduceAction17_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2355;
-  fra.me.meth = LOCATE_NEW_AMinusMethid_parser___parser_prod___AMinusMethid___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction17_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:2355 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AMinusMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___AMinusMethid(fra.me.REG[0]);
-  parser___parser_prod___AMinusMethid___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AMinusMethid(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction17();
+  INIT_ATTRIBUTES__parser___ReduceAction17(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction17(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AMinusMethid_parser___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 = 2357;
-  fra.me.meth = LOCATE_NEW_AMinusMethid_parser___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:2357 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___AMinusMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___AMinusMethid(fra.me.REG[1]);
-  parser___parser_prod___AMinusMethid___init_aminusmethid(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AMinusMethid(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_AMinusMethid_parser___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___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_parser___parser_nodes___AMinusMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___AMinusMethid(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AMinusMethid(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AStarMethid[79] = {
-  {(bigint) 3291 /* 0: Identity */},
-  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AStarMethid" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AStarMethid < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AStarMethid < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction18[55] = {
+  {(bigint) 2515 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction18" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction18 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction18 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2515 /* 5: ReduceAction18 < ReduceAction18: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AStarMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3083 /* 7: AStarMethid < AMethid: superclass typecheck marker */},
-  {(bigint) 3291 /* 8: AStarMethid < AStarMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -52092,7 +94197,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AStarMethid[79] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AStarMethid < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction18 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -52108,6 +94213,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AStarMethid[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -52121,156 +94228,92 @@ const classtable_elt_t VFT_parser___parser_nodes___AStarMethid[79] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AStarMethid___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AStarMethid___visit_all},
-  {(bigint) 1 /* 60: AStarMethid < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AStarMethid < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 3 /* 74: AStarMethid < AMethid: superclass init_table position */},
-  {(bigint) parser___parser_prod___AStarMethid___empty_init},
-  {(bigint) parser___parser_prod___AStarMethid___init_astarmethid},
-  {(bigint) 4 /* 77: AStarMethid < AStarMethid: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AStarMethid___n_star},
+  {(bigint) 0 /* 50: ReduceAction18 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction18___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction18 < ReduceAction18: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AStarMethid(val_t p0){
+/* 2: Attribute ReduceAction18::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction18[] = "init var of ReduceAction18";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___AStarMethid;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction18;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AStarMethid(void)
+val_t NEW_parser___ReduceAction18(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 8);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AStarMethid;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction18;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AStarMethid(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction18[] = "check new ReduceAction18";
+void CHECKNEW_parser___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_parser___parser_nodes___AStarMethid;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction18;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStarMethid____n_star(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_star", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AStarMethid_parser___parser_prod___AStarMethid___empty_init(void){
+static const char LOCATE_NEW_ReduceAction18_parser___ReduceAction___init[] = "new ReduceAction18 parser::ReduceAction::init";
+val_t NEW_ReduceAction18_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2386;
-  fra.me.meth = LOCATE_NEW_AStarMethid_parser___parser_prod___AStarMethid___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction18_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:2386 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AStarMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___AStarMethid(fra.me.REG[0]);
-  parser___parser_prod___AStarMethid___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AStarMethid(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction18();
+  INIT_ATTRIBUTES__parser___ReduceAction18(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction18(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AStarMethid_parser___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 = 2388;
-  fra.me.meth = LOCATE_NEW_AStarMethid_parser___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:2388 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___AStarMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___AStarMethid(fra.me.REG[1]);
-  parser___parser_prod___AStarMethid___init_astarmethid(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AStarMethid(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_AStarMethid_parser___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___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_parser___parser_nodes___AStarMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___AStarMethid(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AStarMethid(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___ASlashMethid[79] = {
-  {(bigint) 3295 /* 0: Identity */},
-  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ASlashMethid" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ASlashMethid < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ASlashMethid < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction19[55] = {
+  {(bigint) 2471 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction19" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction19 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction19 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2471 /* 5: ReduceAction19 < ReduceAction19: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: ASlashMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3083 /* 7: ASlashMethid < AMethid: superclass typecheck marker */},
-  {(bigint) 3295 /* 8: ASlashMethid < ASlashMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -52280,7 +94323,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ASlashMethid[79] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: ASlashMethid < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction19 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -52296,6 +94339,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ASlashMethid[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -52309,156 +94354,92 @@ const classtable_elt_t VFT_parser___parser_nodes___ASlashMethid[79] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ASlashMethid___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ASlashMethid___visit_all},
-  {(bigint) 1 /* 60: ASlashMethid < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: ASlashMethid < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 3 /* 74: ASlashMethid < AMethid: superclass init_table position */},
-  {(bigint) parser___parser_prod___ASlashMethid___empty_init},
-  {(bigint) parser___parser_prod___ASlashMethid___init_aslashmethid},
-  {(bigint) 4 /* 77: ASlashMethid < ASlashMethid: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ASlashMethid___n_slash},
+  {(bigint) 0 /* 50: ReduceAction19 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction19___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction19 < ReduceAction19: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___ASlashMethid(val_t p0){
+/* 2: Attribute ReduceAction19::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction19[] = "init var of ReduceAction19";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___ASlashMethid;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction19;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___ASlashMethid(void)
+val_t NEW_parser___ReduceAction19(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 8);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ASlashMethid;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction19;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___ASlashMethid(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction19[] = "check new ReduceAction19";
+void CHECKNEW_parser___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_parser___parser_nodes___ASlashMethid;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction19;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASlashMethid____n_slash(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_slash", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ASlashMethid_parser___parser_prod___ASlashMethid___empty_init(void){
+static const char LOCATE_NEW_ReduceAction19_parser___ReduceAction___init[] = "new ReduceAction19 parser::ReduceAction::init";
+val_t NEW_ReduceAction19_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2417;
-  fra.me.meth = LOCATE_NEW_ASlashMethid_parser___parser_prod___ASlashMethid___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction19_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:2417 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ASlashMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___ASlashMethid(fra.me.REG[0]);
-  parser___parser_prod___ASlashMethid___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ASlashMethid(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction19();
+  INIT_ATTRIBUTES__parser___ReduceAction19(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction19(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_ASlashMethid_parser___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 = 2419;
-  fra.me.meth = LOCATE_NEW_ASlashMethid_parser___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:2419 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___ASlashMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___ASlashMethid(fra.me.REG[1]);
-  parser___parser_prod___ASlashMethid___init_aslashmethid(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ASlashMethid(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_ASlashMethid_parser___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___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_parser___parser_nodes___ASlashMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___ASlashMethid(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ASlashMethid(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___APercentMethid[79] = {
-  {(bigint) 3351 /* 0: Identity */},
-  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "APercentMethid" /* 2: Class Name */},
-  {(bigint) 3 /* 3: APercentMethid < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: APercentMethid < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction20[55] = {
+  {(bigint) 2423 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction20" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction20 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction20 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2423 /* 5: ReduceAction20 < ReduceAction20: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: APercentMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3083 /* 7: APercentMethid < AMethid: superclass typecheck marker */},
-  {(bigint) 3351 /* 8: APercentMethid < APercentMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -52468,7 +94449,7 @@ const classtable_elt_t VFT_parser___parser_nodes___APercentMethid[79] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: APercentMethid < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction20 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -52484,6 +94465,8 @@ const classtable_elt_t VFT_parser___parser_nodes___APercentMethid[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -52497,156 +94480,92 @@ const classtable_elt_t VFT_parser___parser_nodes___APercentMethid[79] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___APercentMethid___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___APercentMethid___visit_all},
-  {(bigint) 1 /* 60: APercentMethid < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: APercentMethid < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 3 /* 74: APercentMethid < AMethid: superclass init_table position */},
-  {(bigint) parser___parser_prod___APercentMethid___empty_init},
-  {(bigint) parser___parser_prod___APercentMethid___init_apercentmethid},
-  {(bigint) 4 /* 77: APercentMethid < APercentMethid: superclass init_table position */},
-  {(bigint) parser___parser_nodes___APercentMethid___n_percent},
+  {(bigint) 0 /* 50: ReduceAction20 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction20___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction20 < ReduceAction20: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___APercentMethid(val_t p0){
+/* 2: Attribute ReduceAction20::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction20[] = "init var of ReduceAction20";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___APercentMethid;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction20;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___APercentMethid(void)
+val_t NEW_parser___ReduceAction20(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 8);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___APercentMethid;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction20;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___APercentMethid(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction20[] = "check new ReduceAction20";
+void CHECKNEW_parser___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_parser___parser_nodes___APercentMethid;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction20;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___APercentMethid____n_percent(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_percent", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_APercentMethid_parser___parser_prod___APercentMethid___empty_init(void){
+static const char LOCATE_NEW_ReduceAction20_parser___ReduceAction___init[] = "new ReduceAction20 parser::ReduceAction::init";
+val_t NEW_ReduceAction20_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2448;
-  fra.me.meth = LOCATE_NEW_APercentMethid_parser___parser_prod___APercentMethid___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction20_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:2448 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___APercentMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___APercentMethid(fra.me.REG[0]);
-  parser___parser_prod___APercentMethid___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___APercentMethid(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction20();
+  INIT_ATTRIBUTES__parser___ReduceAction20(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction20(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_APercentMethid_parser___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 = 2450;
-  fra.me.meth = LOCATE_NEW_APercentMethid_parser___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:2450 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___APercentMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___APercentMethid(fra.me.REG[1]);
-  parser___parser_prod___APercentMethid___init_apercentmethid(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___APercentMethid(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_APercentMethid_parser___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___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_parser___parser_nodes___APercentMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___APercentMethid(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___APercentMethid(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AEqMethid[79] = {
-  {(bigint) 3447 /* 0: Identity */},
-  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AEqMethid" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AEqMethid < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AEqMethid < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction21[55] = {
+  {(bigint) 2379 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction21" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction21 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction21 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2379 /* 5: ReduceAction21 < ReduceAction21: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AEqMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3083 /* 7: AEqMethid < AMethid: superclass typecheck marker */},
-  {(bigint) 3447 /* 8: AEqMethid < AEqMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -52656,7 +94575,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AEqMethid[79] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AEqMethid < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction21 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -52672,6 +94591,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AEqMethid[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -52685,156 +94606,92 @@ const classtable_elt_t VFT_parser___parser_nodes___AEqMethid[79] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AEqMethid___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AEqMethid___visit_all},
-  {(bigint) 1 /* 60: AEqMethid < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AEqMethid < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 3 /* 74: AEqMethid < AMethid: superclass init_table position */},
-  {(bigint) parser___parser_prod___AEqMethid___empty_init},
-  {(bigint) parser___parser_prod___AEqMethid___init_aeqmethid},
-  {(bigint) 4 /* 77: AEqMethid < AEqMethid: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AEqMethid___n_eq},
+  {(bigint) 0 /* 50: ReduceAction21 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction21___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction21 < ReduceAction21: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AEqMethid(val_t p0){
+/* 2: Attribute ReduceAction21::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction21[] = "init var of ReduceAction21";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___AEqMethid;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction21;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AEqMethid(void)
+val_t NEW_parser___ReduceAction21(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 8);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AEqMethid;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction21;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AEqMethid(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction21[] = "check new ReduceAction21";
+void CHECKNEW_parser___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_parser___parser_nodes___AEqMethid;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction21;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AEqMethid____n_eq(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_eq", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AEqMethid_parser___parser_prod___AEqMethid___empty_init(void){
+static const char LOCATE_NEW_ReduceAction21_parser___ReduceAction___init[] = "new ReduceAction21 parser::ReduceAction::init";
+val_t NEW_ReduceAction21_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2479;
-  fra.me.meth = LOCATE_NEW_AEqMethid_parser___parser_prod___AEqMethid___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction21_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:2479 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AEqMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___AEqMethid(fra.me.REG[0]);
-  parser___parser_prod___AEqMethid___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AEqMethid(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction21();
+  INIT_ATTRIBUTES__parser___ReduceAction21(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction21(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AEqMethid_parser___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 = 2481;
-  fra.me.meth = LOCATE_NEW_AEqMethid_parser___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:2481 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___AEqMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___AEqMethid(fra.me.REG[1]);
-  parser___parser_prod___AEqMethid___init_aeqmethid(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AEqMethid(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_AEqMethid_parser___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___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_parser___parser_nodes___AEqMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___AEqMethid(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AEqMethid(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___ANeMethid[79] = {
-  {(bigint) 3363 /* 0: Identity */},
-  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ANeMethid" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ANeMethid < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ANeMethid < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction22[55] = {
+  {(bigint) 2335 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction22" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction22 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction22 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2335 /* 5: ReduceAction22 < ReduceAction22: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: ANeMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3083 /* 7: ANeMethid < AMethid: superclass typecheck marker */},
-  {(bigint) 3363 /* 8: ANeMethid < ANeMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -52844,7 +94701,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ANeMethid[79] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: ANeMethid < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction22 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -52860,6 +94717,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ANeMethid[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -52873,156 +94732,92 @@ const classtable_elt_t VFT_parser___parser_nodes___ANeMethid[79] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ANeMethid___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ANeMethid___visit_all},
-  {(bigint) 1 /* 60: ANeMethid < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: ANeMethid < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 3 /* 74: ANeMethid < AMethid: superclass init_table position */},
-  {(bigint) parser___parser_prod___ANeMethid___empty_init},
-  {(bigint) parser___parser_prod___ANeMethid___init_anemethid},
-  {(bigint) 4 /* 77: ANeMethid < ANeMethid: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANeMethid___n_ne},
+  {(bigint) 0 /* 50: ReduceAction22 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction22___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction22 < ReduceAction22: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___ANeMethid(val_t p0){
+/* 2: Attribute ReduceAction22::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction22[] = "init var of ReduceAction22";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___ANeMethid;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction22;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___ANeMethid(void)
+val_t NEW_parser___ReduceAction22(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 8);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ANeMethid;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction22;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___ANeMethid(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction22[] = "check new ReduceAction22";
+void CHECKNEW_parser___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_parser___parser_nodes___ANeMethid;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction22;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ANeMethid____n_ne(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_ne", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ANeMethid_parser___parser_prod___ANeMethid___empty_init(void){
+static const char LOCATE_NEW_ReduceAction22_parser___ReduceAction___init[] = "new ReduceAction22 parser::ReduceAction::init";
+val_t NEW_ReduceAction22_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2510;
-  fra.me.meth = LOCATE_NEW_ANeMethid_parser___parser_prod___ANeMethid___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction22_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:2510 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ANeMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___ANeMethid(fra.me.REG[0]);
-  parser___parser_prod___ANeMethid___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ANeMethid(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction22();
+  INIT_ATTRIBUTES__parser___ReduceAction22(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction22(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_ANeMethid_parser___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 = 2512;
-  fra.me.meth = LOCATE_NEW_ANeMethid_parser___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:2512 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___ANeMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___ANeMethid(fra.me.REG[1]);
-  parser___parser_prod___ANeMethid___init_anemethid(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ANeMethid(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_ANeMethid_parser___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___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_parser___parser_nodes___ANeMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___ANeMethid(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ANeMethid(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___ALeMethid[79] = {
-  {(bigint) 3391 /* 0: Identity */},
-  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ALeMethid" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ALeMethid < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ALeMethid < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction23[55] = {
+  {(bigint) 2291 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction23" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction23 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction23 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2291 /* 5: ReduceAction23 < ReduceAction23: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: ALeMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3083 /* 7: ALeMethid < AMethid: superclass typecheck marker */},
-  {(bigint) 3391 /* 8: ALeMethid < ALeMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -53032,7 +94827,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ALeMethid[79] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: ALeMethid < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction23 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -53048,6 +94843,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ALeMethid[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -53061,156 +94858,92 @@ const classtable_elt_t VFT_parser___parser_nodes___ALeMethid[79] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ALeMethid___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ALeMethid___visit_all},
-  {(bigint) 1 /* 60: ALeMethid < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: ALeMethid < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 3 /* 74: ALeMethid < AMethid: superclass init_table position */},
-  {(bigint) parser___parser_prod___ALeMethid___empty_init},
-  {(bigint) parser___parser_prod___ALeMethid___init_alemethid},
-  {(bigint) 4 /* 77: ALeMethid < ALeMethid: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ALeMethid___n_le},
+  {(bigint) 0 /* 50: ReduceAction23 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction23___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction23 < ReduceAction23: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___ALeMethid(val_t p0){
+/* 2: Attribute ReduceAction23::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction23[] = "init var of ReduceAction23";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___ALeMethid;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction23;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___ALeMethid(void)
+val_t NEW_parser___ReduceAction23(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 8);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ALeMethid;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction23;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___ALeMethid(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction23[] = "check new ReduceAction23";
+void CHECKNEW_parser___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_parser___parser_nodes___ALeMethid;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction23;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ALeMethid____n_le(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_le", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ALeMethid_parser___parser_prod___ALeMethid___empty_init(void){
+static const char LOCATE_NEW_ReduceAction23_parser___ReduceAction___init[] = "new ReduceAction23 parser::ReduceAction::init";
+val_t NEW_ReduceAction23_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2541;
-  fra.me.meth = LOCATE_NEW_ALeMethid_parser___parser_prod___ALeMethid___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction23_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:2541 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ALeMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___ALeMethid(fra.me.REG[0]);
-  parser___parser_prod___ALeMethid___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ALeMethid(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction23();
+  INIT_ATTRIBUTES__parser___ReduceAction23(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction23(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_ALeMethid_parser___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 = 2543;
-  fra.me.meth = LOCATE_NEW_ALeMethid_parser___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:2543 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___ALeMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___ALeMethid(fra.me.REG[1]);
-  parser___parser_prod___ALeMethid___init_alemethid(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ALeMethid(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_ALeMethid_parser___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___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_parser___parser_nodes___ALeMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___ALeMethid(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ALeMethid(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AGeMethid[79] = {
-  {(bigint) 3427 /* 0: Identity */},
-  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AGeMethid" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AGeMethid < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AGeMethid < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction24[55] = {
+  {(bigint) 2247 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction24" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction24 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction24 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2247 /* 5: ReduceAction24 < ReduceAction24: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AGeMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3083 /* 7: AGeMethid < AMethid: superclass typecheck marker */},
-  {(bigint) 3427 /* 8: AGeMethid < AGeMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -53220,7 +94953,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AGeMethid[79] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AGeMethid < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction24 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -53236,6 +94969,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AGeMethid[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -53249,156 +94984,92 @@ const classtable_elt_t VFT_parser___parser_nodes___AGeMethid[79] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AGeMethid___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AGeMethid___visit_all},
-  {(bigint) 1 /* 60: AGeMethid < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AGeMethid < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 3 /* 74: AGeMethid < AMethid: superclass init_table position */},
-  {(bigint) parser___parser_prod___AGeMethid___empty_init},
-  {(bigint) parser___parser_prod___AGeMethid___init_agemethid},
-  {(bigint) 4 /* 77: AGeMethid < AGeMethid: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AGeMethid___n_ge},
+  {(bigint) 0 /* 50: ReduceAction24 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction24___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction24 < ReduceAction24: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AGeMethid(val_t p0){
+/* 2: Attribute ReduceAction24::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction24[] = "init var of ReduceAction24";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___AGeMethid;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction24;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AGeMethid(void)
+val_t NEW_parser___ReduceAction24(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 8);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AGeMethid;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction24;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AGeMethid(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction24[] = "check new ReduceAction24";
+void CHECKNEW_parser___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_parser___parser_nodes___AGeMethid;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction24;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AGeMethid____n_ge(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_ge", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AGeMethid_parser___parser_prod___AGeMethid___empty_init(void){
+static const char LOCATE_NEW_ReduceAction24_parser___ReduceAction___init[] = "new ReduceAction24 parser::ReduceAction::init";
+val_t NEW_ReduceAction24_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2572;
-  fra.me.meth = LOCATE_NEW_AGeMethid_parser___parser_prod___AGeMethid___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction24_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:2572 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AGeMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___AGeMethid(fra.me.REG[0]);
-  parser___parser_prod___AGeMethid___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AGeMethid(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction24();
+  INIT_ATTRIBUTES__parser___ReduceAction24(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction24(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AGeMethid_parser___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 = 2574;
-  fra.me.meth = LOCATE_NEW_AGeMethid_parser___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:2574 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___AGeMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___AGeMethid(fra.me.REG[1]);
-  parser___parser_prod___AGeMethid___init_agemethid(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AGeMethid(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_AGeMethid_parser___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___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_parser___parser_nodes___AGeMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___AGeMethid(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AGeMethid(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___ALtMethid[79] = {
-  {(bigint) 3383 /* 0: Identity */},
-  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ALtMethid" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ALtMethid < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ALtMethid < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction25[55] = {
+  {(bigint) 2203 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction25" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction25 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction25 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2203 /* 5: ReduceAction25 < ReduceAction25: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: ALtMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3083 /* 7: ALtMethid < AMethid: superclass typecheck marker */},
-  {(bigint) 3383 /* 8: ALtMethid < ALtMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -53408,7 +95079,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ALtMethid[79] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: ALtMethid < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction25 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -53424,6 +95095,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ALtMethid[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -53437,156 +95110,92 @@ const classtable_elt_t VFT_parser___parser_nodes___ALtMethid[79] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ALtMethid___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ALtMethid___visit_all},
-  {(bigint) 1 /* 60: ALtMethid < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: ALtMethid < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 3 /* 74: ALtMethid < AMethid: superclass init_table position */},
-  {(bigint) parser___parser_prod___ALtMethid___empty_init},
-  {(bigint) parser___parser_prod___ALtMethid___init_altmethid},
-  {(bigint) 4 /* 77: ALtMethid < ALtMethid: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ALtMethid___n_lt},
+  {(bigint) 0 /* 50: ReduceAction25 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction25___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction25 < ReduceAction25: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___ALtMethid(val_t p0){
+/* 2: Attribute ReduceAction25::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction25[] = "init var of ReduceAction25";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___ALtMethid;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction25;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___ALtMethid(void)
+val_t NEW_parser___ReduceAction25(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 8);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ALtMethid;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction25;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_parser___parser_nodes___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_parser___parser_nodes___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___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;
-}
-val_t NEW_ALtMethid_parser___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 = 2603;
-  fra.me.meth = LOCATE_NEW_ALtMethid_parser___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:2603 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ALtMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___ALtMethid(fra.me.REG[0]);
-  parser___parser_prod___ALtMethid___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ALtMethid(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return OBJ2VAL(obj);
 }
-val_t NEW_ALtMethid_parser___parser_prod___ALtMethid___init_altmethid(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_CHECKNEW_parser___ReduceAction25[] = "check new ReduceAction25";
+void CHECKNEW_parser___ReduceAction25(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 = 2605;
-  fra.me.meth = LOCATE_NEW_ALtMethid_parser___parser_prod___ALtMethid___init_altmethid;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction25;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./parser//parser_prod.nit:2605 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___ALtMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___ALtMethid(fra.me.REG[1]);
-  parser___parser_prod___ALtMethid___init_altmethid(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ALtMethid(fra.me.REG[1]);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
 }
-val_t NEW_ALtMethid_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ReduceAction25_parser___ReduceAction___init[] = "new ReduceAction25 parser::ReduceAction::init";
+val_t NEW_ReduceAction25_parser___ReduceAction___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};
+  int init_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_ALtMethid_parser___parser_nodes___ANode___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction25_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___ALtMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___ALtMethid(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ALtMethid(fra.me.REG[1]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction25();
+  INIT_ATTRIBUTES__parser___ReduceAction25(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction25(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AGtMethid[79] = {
-  {(bigint) 3419 /* 0: Identity */},
-  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AGtMethid" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AGtMethid < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AGtMethid < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction26[55] = {
+  {(bigint) 2159 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction26" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction26 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction26 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2159 /* 5: ReduceAction26 < ReduceAction26: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AGtMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3083 /* 7: AGtMethid < AMethid: superclass typecheck marker */},
-  {(bigint) 3419 /* 8: AGtMethid < AGtMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -53596,7 +95205,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AGtMethid[79] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AGtMethid < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction26 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -53612,6 +95221,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AGtMethid[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -53625,156 +95236,92 @@ const classtable_elt_t VFT_parser___parser_nodes___AGtMethid[79] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AGtMethid___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AGtMethid___visit_all},
-  {(bigint) 1 /* 60: AGtMethid < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AGtMethid < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 3 /* 74: AGtMethid < AMethid: superclass init_table position */},
-  {(bigint) parser___parser_prod___AGtMethid___empty_init},
-  {(bigint) parser___parser_prod___AGtMethid___init_agtmethid},
-  {(bigint) 4 /* 77: AGtMethid < AGtMethid: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AGtMethid___n_gt},
+  {(bigint) 0 /* 50: ReduceAction26 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction26___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction26 < ReduceAction26: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AGtMethid(val_t p0){
+/* 2: Attribute ReduceAction26::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction26[] = "init var of ReduceAction26";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___AGtMethid;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction26;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AGtMethid(void)
+val_t NEW_parser___ReduceAction26(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 8);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AGtMethid;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction26;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AGtMethid(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction26[] = "check new ReduceAction26";
+void CHECKNEW_parser___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_parser___parser_nodes___AGtMethid;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction26;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AGtMethid____n_gt(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_gt", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AGtMethid_parser___parser_prod___AGtMethid___empty_init(void){
+static const char LOCATE_NEW_ReduceAction26_parser___ReduceAction___init[] = "new ReduceAction26 parser::ReduceAction::init";
+val_t NEW_ReduceAction26_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2634;
-  fra.me.meth = LOCATE_NEW_AGtMethid_parser___parser_prod___AGtMethid___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction26_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:2634 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AGtMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___AGtMethid(fra.me.REG[0]);
-  parser___parser_prod___AGtMethid___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AGtMethid(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction26();
+  INIT_ATTRIBUTES__parser___ReduceAction26(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction26(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AGtMethid_parser___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 = 2636;
-  fra.me.meth = LOCATE_NEW_AGtMethid_parser___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:2636 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___AGtMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___AGtMethid(fra.me.REG[1]);
-  parser___parser_prod___AGtMethid___init_agtmethid(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AGtMethid(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_AGtMethid_parser___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___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_parser___parser_nodes___AGtMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___AGtMethid(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AGtMethid(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___ALlMethid[80] = {
-  {(bigint) 3387 /* 0: Identity */},
-  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ALlMethid" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ALlMethid < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ALlMethid < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction27[55] = {
+  {(bigint) 2115 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction27" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction27 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction27 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2115 /* 5: ReduceAction27 < ReduceAction27: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: ALlMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3083 /* 7: ALlMethid < AMethid: superclass typecheck marker */},
-  {(bigint) 3387 /* 8: ALlMethid < ALlMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -53784,7 +95331,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ALlMethid[80] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: ALlMethid < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction27 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -53800,6 +95347,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ALlMethid[80] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -53813,157 +95362,92 @@ const classtable_elt_t VFT_parser___parser_nodes___ALlMethid[80] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ALlMethid___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ALlMethid___visit_all},
-  {(bigint) 1 /* 60: ALlMethid < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: ALlMethid < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 3 /* 74: ALlMethid < AMethid: superclass init_table position */},
-  {(bigint) parser___parser_prod___ALlMethid___empty_init},
-  {(bigint) parser___parser_prod___ALlMethid___init_allmethid},
-  {(bigint) 4 /* 77: ALlMethid < ALlMethid: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ALlMethid___n_ll},
-  {(bigint) parser___parser_nodes___ALlMethid___n_ll__eq},
+  {(bigint) 0 /* 50: ReduceAction27 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction27___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction27 < ReduceAction27: superclass init_table position */},
 };
 /* 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__parser___parser_nodes___ALlMethid(val_t p0){
+/* 2: Attribute ReduceAction27::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction27[] = "init var of ReduceAction27";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___ALlMethid;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction27;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___ALlMethid(void)
+val_t NEW_parser___ReduceAction27(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 8);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ALlMethid;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction27;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___ALlMethid(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction27[] = "check new ReduceAction27";
+void CHECKNEW_parser___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_parser___parser_nodes___ALlMethid;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction27;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ALlMethid____n_ll(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_ll", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ALlMethid_parser___parser_prod___ALlMethid___empty_init(void){
+static const char LOCATE_NEW_ReduceAction27_parser___ReduceAction___init[] = "new ReduceAction27 parser::ReduceAction::init";
+val_t NEW_ReduceAction27_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2665;
-  fra.me.meth = LOCATE_NEW_ALlMethid_parser___parser_prod___ALlMethid___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction27_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:2665 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ALlMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___ALlMethid(fra.me.REG[0]);
-  parser___parser_prod___ALlMethid___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ALlMethid(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction27();
+  INIT_ATTRIBUTES__parser___ReduceAction27(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction27(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_ALlMethid_parser___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 = 2667;
-  fra.me.meth = LOCATE_NEW_ALlMethid_parser___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:2667 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___ALlMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___ALlMethid(fra.me.REG[1]);
-  parser___parser_prod___ALlMethid___init_allmethid(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ALlMethid(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_ALlMethid_parser___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___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_parser___parser_nodes___ALlMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___ALlMethid(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ALlMethid(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AGgMethid[80] = {
-  {(bigint) 3423 /* 0: Identity */},
-  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AGgMethid" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AGgMethid < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AGgMethid < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction28[55] = {
+  {(bigint) 2071 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction28" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction28 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction28 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2071 /* 5: ReduceAction28 < ReduceAction28: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AGgMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3083 /* 7: AGgMethid < AMethid: superclass typecheck marker */},
-  {(bigint) 3423 /* 8: AGgMethid < AGgMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -53973,7 +95457,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AGgMethid[80] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AGgMethid < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction28 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -53989,6 +95473,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AGgMethid[80] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -54002,157 +95488,92 @@ const classtable_elt_t VFT_parser___parser_nodes___AGgMethid[80] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AGgMethid___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AGgMethid___visit_all},
-  {(bigint) 1 /* 60: AGgMethid < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AGgMethid < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 3 /* 74: AGgMethid < AMethid: superclass init_table position */},
-  {(bigint) parser___parser_prod___AGgMethid___empty_init},
-  {(bigint) parser___parser_prod___AGgMethid___init_aggmethid},
-  {(bigint) 4 /* 77: AGgMethid < AGgMethid: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AGgMethid___n_gg},
-  {(bigint) parser___parser_nodes___AGgMethid___n_gg__eq},
+  {(bigint) 0 /* 50: ReduceAction28 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction28___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction28 < ReduceAction28: superclass init_table position */},
 };
 /* 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__parser___parser_nodes___AGgMethid(val_t p0){
+/* 2: Attribute ReduceAction28::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction28[] = "init var of ReduceAction28";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___AGgMethid;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction28;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AGgMethid(void)
+val_t NEW_parser___ReduceAction28(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 8);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AGgMethid;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction28;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AGgMethid(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction28[] = "check new ReduceAction28";
+void CHECKNEW_parser___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_parser___parser_nodes___AGgMethid;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction28;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AGgMethid____n_gg(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_gg", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AGgMethid_parser___parser_prod___AGgMethid___empty_init(void){
+static const char LOCATE_NEW_ReduceAction28_parser___ReduceAction___init[] = "new ReduceAction28 parser::ReduceAction::init";
+val_t NEW_ReduceAction28_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2696;
-  fra.me.meth = LOCATE_NEW_AGgMethid_parser___parser_prod___AGgMethid___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction28_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:2696 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AGgMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___AGgMethid(fra.me.REG[0]);
-  parser___parser_prod___AGgMethid___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AGgMethid(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction28();
+  INIT_ATTRIBUTES__parser___ReduceAction28(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction28(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AGgMethid_parser___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 = 2698;
-  fra.me.meth = LOCATE_NEW_AGgMethid_parser___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:2698 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___AGgMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___AGgMethid(fra.me.REG[1]);
-  parser___parser_prod___AGgMethid___init_aggmethid(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AGgMethid(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_AGgMethid_parser___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___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_parser___parser_nodes___AGgMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___AGgMethid(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AGgMethid(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___ABraMethid[80] = {
-  {(bigint) 3479 /* 0: Identity */},
-  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ABraMethid" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ABraMethid < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ABraMethid < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction29[55] = {
+  {(bigint) 2027 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction29" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction29 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction29 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2027 /* 5: ReduceAction29 < ReduceAction29: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: ABraMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3083 /* 7: ABraMethid < AMethid: superclass typecheck marker */},
-  {(bigint) 3479 /* 8: ABraMethid < ABraMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -54162,7 +95583,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraMethid[80] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: ABraMethid < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction29 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -54178,6 +95599,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraMethid[80] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -54191,165 +95614,92 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraMethid[80] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ABraMethid___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ABraMethid___visit_all},
-  {(bigint) 1 /* 60: ABraMethid < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: ABraMethid < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 3 /* 74: ABraMethid < AMethid: superclass init_table position */},
-  {(bigint) parser___parser_prod___ABraMethid___empty_init},
-  {(bigint) parser___parser_prod___ABraMethid___init_abramethid},
-  {(bigint) 4 /* 77: ABraMethid < ABraMethid: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ABraMethid___n_obra},
-  {(bigint) parser___parser_nodes___ABraMethid___n_cbra},
+  {(bigint) 0 /* 50: ReduceAction29 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction29___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction29 < ReduceAction29: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___ABraMethid(val_t p0){
+/* 2: Attribute ReduceAction29::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction29[] = "init var of ReduceAction29";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___ABraMethid;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction29;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___ABraMethid(void)
+val_t NEW_parser___ReduceAction29(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 9);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ABraMethid;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction29;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___ABraMethid(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction29[] = "check new ReduceAction29";
+void CHECKNEW_parser___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_parser___parser_nodes___ABraMethid;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction29;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___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___parser_nodes___ABraMethid____n_cbra(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_cbra", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ABraMethid_parser___parser_prod___ABraMethid___empty_init(void){
+static const char LOCATE_NEW_ReduceAction29_parser___ReduceAction___init[] = "new ReduceAction29 parser::ReduceAction::init";
+val_t NEW_ReduceAction29_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2727;
-  fra.me.meth = LOCATE_NEW_ABraMethid_parser___parser_prod___ABraMethid___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction29_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:2727 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ABraMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___ABraMethid(fra.me.REG[0]);
-  parser___parser_prod___ABraMethid___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ABraMethid(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction29();
+  INIT_ATTRIBUTES__parser___ReduceAction29(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction29(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_ABraMethid_parser___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 = 2729;
-  fra.me.meth = LOCATE_NEW_ABraMethid_parser___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:2729 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___ABraMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___ABraMethid(fra.me.REG[2]);
-  parser___parser_prod___ABraMethid___init_abramethid(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___ABraMethid(fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
-}
-val_t NEW_ABraMethid_parser___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___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_parser___parser_nodes___ABraMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___ABraMethid(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ABraMethid(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AStarshipMethid[79] = {
-  {(bigint) 3287 /* 0: Identity */},
-  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AStarshipMethid" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AStarshipMethid < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AStarshipMethid < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction30[55] = {
+  {(bigint) 1979 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction30" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction30 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction30 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1979 /* 5: ReduceAction30 < ReduceAction30: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AStarshipMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3083 /* 7: AStarshipMethid < AMethid: superclass typecheck marker */},
-  {(bigint) 3287 /* 8: AStarshipMethid < AStarshipMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -54359,7 +95709,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AStarshipMethid[79] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AStarshipMethid < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction30 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -54375,6 +95725,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AStarshipMethid[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -54388,156 +95740,92 @@ const classtable_elt_t VFT_parser___parser_nodes___AStarshipMethid[79] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AStarshipMethid___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AStarshipMethid___visit_all},
-  {(bigint) 1 /* 60: AStarshipMethid < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AStarshipMethid < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 3 /* 74: AStarshipMethid < AMethid: superclass init_table position */},
-  {(bigint) parser___parser_prod___AStarshipMethid___empty_init},
-  {(bigint) parser___parser_prod___AStarshipMethid___init_astarshipmethid},
-  {(bigint) 4 /* 77: AStarshipMethid < AStarshipMethid: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AStarshipMethid___n_starship},
+  {(bigint) 0 /* 50: ReduceAction30 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction30___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction30 < ReduceAction30: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AStarshipMethid(val_t p0){
+/* 2: Attribute ReduceAction30::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction30[] = "init var of ReduceAction30";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___AStarshipMethid;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction30;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AStarshipMethid(void)
+val_t NEW_parser___ReduceAction30(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 8);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AStarshipMethid;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction30;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AStarshipMethid(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction30[] = "check new ReduceAction30";
+void CHECKNEW_parser___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_parser___parser_nodes___AStarshipMethid;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction30;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStarshipMethid____n_starship(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_starship", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AStarshipMethid_parser___parser_prod___AStarshipMethid___empty_init(void){
+static const char LOCATE_NEW_ReduceAction30_parser___ReduceAction___init[] = "new ReduceAction30 parser::ReduceAction::init";
+val_t NEW_ReduceAction30_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2772;
-  fra.me.meth = LOCATE_NEW_AStarshipMethid_parser___parser_prod___AStarshipMethid___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction30_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:2772 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AStarshipMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___AStarshipMethid(fra.me.REG[0]);
-  parser___parser_prod___AStarshipMethid___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AStarshipMethid(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction30();
+  INIT_ATTRIBUTES__parser___ReduceAction30(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction30(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AStarshipMethid_parser___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 = 2774;
-  fra.me.meth = LOCATE_NEW_AStarshipMethid_parser___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:2774 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___AStarshipMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___AStarshipMethid(fra.me.REG[1]);
-  parser___parser_prod___AStarshipMethid___init_astarshipmethid(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AStarshipMethid(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_AStarshipMethid_parser___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___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_parser___parser_nodes___AStarshipMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___AStarshipMethid(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AStarshipMethid(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AAssignMethid[80] = {
-  {(bigint) 3499 /* 0: Identity */},
-  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AAssignMethid" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AAssignMethid < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AAssignMethid < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction31[55] = {
+  {(bigint) 1935 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction31" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction31 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction31 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1935 /* 5: ReduceAction31 < ReduceAction31: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AAssignMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3083 /* 7: AAssignMethid < AMethid: superclass typecheck marker */},
-  {(bigint) 3499 /* 8: AAssignMethid < AAssignMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -54547,7 +95835,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAssignMethid[80] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AAssignMethid < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction31 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -54563,6 +95851,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AAssignMethid[80] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -54576,165 +95866,92 @@ const classtable_elt_t VFT_parser___parser_nodes___AAssignMethid[80] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AAssignMethid___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AAssignMethid___visit_all},
-  {(bigint) 1 /* 60: AAssignMethid < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AAssignMethid < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 3 /* 74: AAssignMethid < AMethid: superclass init_table position */},
-  {(bigint) parser___parser_prod___AAssignMethid___empty_init},
-  {(bigint) parser___parser_prod___AAssignMethid___init_aassignmethid},
-  {(bigint) 4 /* 77: AAssignMethid < AAssignMethid: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AAssignMethid___n_id},
-  {(bigint) parser___parser_nodes___AAssignMethid___n_assign},
+  {(bigint) 0 /* 50: ReduceAction31 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction31___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction31 < ReduceAction31: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AAssignMethid(val_t p0){
+/* 2: Attribute ReduceAction31::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction31[] = "init var of ReduceAction31";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___AAssignMethid;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction31;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AAssignMethid(void)
+val_t NEW_parser___ReduceAction31(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 9);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AAssignMethid;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction31;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AAssignMethid(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction31[] = "check new ReduceAction31";
+void CHECKNEW_parser___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_parser___parser_nodes___AAssignMethid;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction31;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___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___parser_nodes___AAssignMethid____n_assign(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AAssignMethid_parser___parser_prod___AAssignMethid___empty_init(void){
+static const char LOCATE_NEW_ReduceAction31_parser___ReduceAction___init[] = "new ReduceAction31 parser::ReduceAction::init";
+val_t NEW_ReduceAction31_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2803;
-  fra.me.meth = LOCATE_NEW_AAssignMethid_parser___parser_prod___AAssignMethid___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction31_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:2803 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AAssignMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___AAssignMethid(fra.me.REG[0]);
-  parser___parser_prod___AAssignMethid___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AAssignMethid(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction31();
+  INIT_ATTRIBUTES__parser___ReduceAction31(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction31(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AAssignMethid_parser___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 = 2805;
-  fra.me.meth = LOCATE_NEW_AAssignMethid_parser___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:2805 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___AAssignMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___AAssignMethid(fra.me.REG[2]);
-  parser___parser_prod___AAssignMethid___init_aassignmethid(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___AAssignMethid(fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
-}
-val_t NEW_AAssignMethid_parser___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___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_parser___parser_nodes___AAssignMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___AAssignMethid(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AAssignMethid(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___ABraassignMethid[81] = {
-  {(bigint) 3475 /* 0: Identity */},
-  {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ABraassignMethid" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ABraassignMethid < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ABraassignMethid < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction32[55] = {
+  {(bigint) 1891 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction32" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction32 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction32 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1891 /* 5: ReduceAction32 < ReduceAction32: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: ABraassignMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3083 /* 7: ABraassignMethid < AMethid: superclass typecheck marker */},
-  {(bigint) 3475 /* 8: ABraassignMethid < ABraassignMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -54744,7 +95961,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraassignMethid[81] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: ABraassignMethid < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction32 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -54760,6 +95977,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraassignMethid[81] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -54773,173 +95992,91 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraassignMethid[81] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AMethid___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ABraassignMethid___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ABraassignMethid___visit_all},
-  {(bigint) 1 /* 60: ABraassignMethid < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: ABraassignMethid < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 3 /* 74: ABraassignMethid < AMethid: superclass init_table position */},
-  {(bigint) parser___parser_prod___ABraassignMethid___empty_init},
-  {(bigint) parser___parser_prod___ABraassignMethid___init_abraassignmethid},
-  {(bigint) 4 /* 77: ABraassignMethid < ABraassignMethid: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ABraassignMethid___n_obra},
-  {(bigint) parser___parser_nodes___ABraassignMethid___n_cbra},
-  {(bigint) parser___parser_nodes___ABraassignMethid___n_assign},
+  {(bigint) 0 /* 50: ReduceAction32 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction32___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction32 < ReduceAction32: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___ABraassignMethid(val_t p0){
+/* 2: Attribute ReduceAction32::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction32[] = "init var of ReduceAction32";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___ABraassignMethid;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction32;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___ABraassignMethid(void)
+val_t NEW_parser___ReduceAction32(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 10);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ABraassignMethid;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction32;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___ABraassignMethid(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction32[] = "check new ReduceAction32";
+void CHECKNEW_parser___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_parser___parser_nodes___ABraassignMethid;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction32;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___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___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___parser_nodes___ABraassignMethid____n_assign(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ABraassignMethid_parser___parser_prod___ABraassignMethid___empty_init(void){
+static const char LOCATE_NEW_ReduceAction32_parser___ReduceAction___init[] = "new ReduceAction32 parser::ReduceAction::init";
+val_t NEW_ReduceAction32_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2848;
-  fra.me.meth = LOCATE_NEW_ABraassignMethid_parser___parser_prod___ABraassignMethid___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction32_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:2848 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ABraassignMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___ABraassignMethid(fra.me.REG[0]);
-  parser___parser_prod___ABraassignMethid___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ABraassignMethid(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction32();
+  INIT_ATTRIBUTES__parser___ReduceAction32(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction32(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_ABraassignMethid_parser___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 = 2850;
-  fra.me.meth = LOCATE_NEW_ABraassignMethid_parser___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:2850 */
-  fra.me.REG[3] = NEW_parser___parser_nodes___ABraassignMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___ABraassignMethid(fra.me.REG[3]);
-  parser___parser_prod___ABraassignMethid___init_abraassignmethid(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
-  CHECKNEW_parser___parser_nodes___ABraassignMethid(fra.me.REG[3]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[3];
-}
-val_t NEW_ABraassignMethid_parser___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___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_parser___parser_nodes___ABraassignMethid();
-  INIT_ATTRIBUTES__parser___parser_nodes___ABraassignMethid(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ABraassignMethid(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___ASignature[81] = {
-  {(bigint) 3055 /* 0: Identity */},
-  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ASignature" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ASignature < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ASignature < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction33[55] = {
+  {(bigint) 1851 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction33" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction33 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction33 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1851 /* 5: ReduceAction33 < ReduceAction33: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: ASignature < Prod: superclass typecheck marker */},
-  {(bigint) 3055 /* 7: ASignature < ASignature: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -54950,7 +96087,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ASignature[81] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: ASignature < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction33 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -54966,6 +96103,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ASignature[81] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -54979,179 +96118,91 @@ const classtable_elt_t VFT_parser___parser_nodes___ASignature[81] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ASignature___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ASignature___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ASignature___visit_all},
-  {(bigint) 1 /* 60: ASignature < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: ASignature < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___mmbuilder___ASignature___check_visibility},
-  {(bigint) parser___parser_prod___ASignature___empty_init},
-  {(bigint) parser___parser_prod___ASignature___init_asignature},
-  {(bigint) 3 /* 76: ASignature < ASignature: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ASignature___n_params},
-  {(bigint) parser___parser_nodes___ASignature___n_type},
-  {(bigint) parser___parser_nodes___ASignature___n_closure_decls},
-  {(bigint) syntax___icode_generation___ASignature___fill_iroutine_parameters},
+  {(bigint) 0 /* 50: ReduceAction33 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction33___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction33 < ReduceAction33: superclass init_table position */},
 };
 /* 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__parser___parser_nodes___ASignature(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+/* 2: Attribute ReduceAction33::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction33[] = "init var of ReduceAction33";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___ASignature;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction33;
   fra.me.has_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:640 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___ASignature____n_params(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:641 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___ASignature____n_type(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:642 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___ASignature____n_closure_decls(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___ASignature(void)
+val_t NEW_parser___ReduceAction33(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 9);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ASignature;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction33;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___ASignature(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction33[] = "check new ReduceAction33";
+void CHECKNEW_parser___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_parser___parser_nodes___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___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___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;
-}
-val_t NEW_ASignature_parser___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 = 2907;
-  fra.me.meth = LOCATE_NEW_ASignature_parser___parser_prod___ASignature___empty_init;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction33;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:2907 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ASignature();
-  INIT_ATTRIBUTES__parser___parser_nodes___ASignature(fra.me.REG[0]);
-  parser___parser_prod___ASignature___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ASignature(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-val_t NEW_ASignature_parser___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 = 2909;
-  fra.me.meth = LOCATE_NEW_ASignature_parser___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:2909 */
-  fra.me.REG[3] = NEW_parser___parser_nodes___ASignature();
-  INIT_ATTRIBUTES__parser___parser_nodes___ASignature(fra.me.REG[3]);
-  parser___parser_prod___ASignature___init_asignature(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
-  CHECKNEW_parser___parser_nodes___ASignature(fra.me.REG[3]);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[3];
 }
-val_t NEW_ASignature_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ReduceAction33_parser___ReduceAction___init[] = "new ReduceAction33 parser::ReduceAction::init";
+val_t NEW_ReduceAction33_parser___ReduceAction___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};
+  int init_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_ASignature_parser___parser_nodes___ANode___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction33_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___ASignature();
-  INIT_ATTRIBUTES__parser___parser_nodes___ASignature(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ASignature(fra.me.REG[1]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction33();
+  INIT_ATTRIBUTES__parser___ReduceAction33(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction33(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AParam[84] = {
-  {(bigint) 3067 /* 0: Identity */},
-  {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AParam" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AParam < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AParam < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction34[55] = {
+  {(bigint) 1807 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction34" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction34 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction34 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1807 /* 5: ReduceAction34 < ReduceAction34: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AParam < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AParam < AParam: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -55162,7 +96213,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AParam[84] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AParam < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction34 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -55178,6 +96229,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AParam[84] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -55191,186 +96244,91 @@ const classtable_elt_t VFT_parser___parser_nodes___AParam[84] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AParam___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AParam___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AParam___visit_all},
-  {(bigint) 1 /* 60: AParam < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___AParam___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AParam < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___AParam___stype},
-  {(bigint) syntax___mmbuilder___AParam___stype__eq},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___mmbuilder___AParam___is_vararg},
-  {(bigint) syntax___mmbuilder___AParam___position},
-  {(bigint) syntax___mmbuilder___AParam___variable},
-  {(bigint) parser___parser_prod___AParam___empty_init},
-  {(bigint) parser___parser_prod___AParam___init_aparam},
-  {(bigint) 3 /* 80: AParam < AParam: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AParam___n_id},
-  {(bigint) parser___parser_nodes___AParam___n_type},
-  {(bigint) parser___parser_nodes___AParam___n_dotdotdot},
+  {(bigint) 0 /* 50: ReduceAction34 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction34___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction34 < ReduceAction34: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AParam(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction34::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction34[] = "init var of ReduceAction34";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___AParam;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction34;
   fra.me.has_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:1318 */
-  REGB0 = TAG_Int(0);
-  ATTR_syntax___mmbuilder___AParam____position(fra.me.REG[0]) = REGB0;
-  /* ./parser//parser_nodes.nit:647 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AParam____n_type(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:648 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AParam____n_dotdotdot(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AParam(void)
+val_t NEW_parser___ReduceAction34(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 12);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AParam;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction34;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AParam(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction34[] = "check new ReduceAction34";
+void CHECKNEW_parser___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_parser___parser_nodes___AParam;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction34;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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___parser_nodes___AParam____n_id(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AParam_parser___parser_prod___AParam___empty_init(void){
+static const char LOCATE_NEW_ReduceAction34_parser___ReduceAction___init[] = "new ReduceAction34 parser::ReduceAction::init";
+val_t NEW_ReduceAction34_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2984;
-  fra.me.meth = LOCATE_NEW_AParam_parser___parser_prod___AParam___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction34_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:2984 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AParam();
-  INIT_ATTRIBUTES__parser___parser_nodes___AParam(fra.me.REG[0]);
-  parser___parser_prod___AParam___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AParam(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction34();
+  INIT_ATTRIBUTES__parser___ReduceAction34(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction34(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AParam_parser___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 = 2986;
-  fra.me.meth = LOCATE_NEW_AParam_parser___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:2986 */
-  fra.me.REG[3] = NEW_parser___parser_nodes___AParam();
-  INIT_ATTRIBUTES__parser___parser_nodes___AParam(fra.me.REG[3]);
-  parser___parser_prod___AParam___init_aparam(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
-  CHECKNEW_parser___parser_nodes___AParam(fra.me.REG[3]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[3];
-}
-val_t NEW_AParam_parser___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___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_parser___parser_nodes___AParam();
-  INIT_ATTRIBUTES__parser___parser_nodes___AParam(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AParam(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AClosureDecl[85] = {
-  {(bigint) 3123 /* 0: Identity */},
-  {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AClosureDecl" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AClosureDecl < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AClosureDecl < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction35[55] = {
+  {(bigint) 1763 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction35" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction35 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction35 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1763 /* 5: ReduceAction35 < ReduceAction35: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AClosureDecl < Prod: superclass typecheck marker */},
-  {(bigint) 3123 /* 7: AClosureDecl < AClosureDecl: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -55381,7 +96339,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AClosureDecl[85] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AClosureDecl < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction35 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -55397,6 +96355,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AClosureDecl[85] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -55410,203 +96370,91 @@ const classtable_elt_t VFT_parser___parser_nodes___AClosureDecl[85] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AClosureDecl___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AClosureDecl___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AClosureDecl___visit_all},
-  {(bigint) 1 /* 60: AClosureDecl < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AClosureDecl___accept_icode_generation},
-  {(bigint) syntax___typing___AClosureDecl___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AClosureDecl < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___mmbuilder___AClosureDecl___position},
-  {(bigint) syntax___mmbuilder___AClosureDecl___variable},
-  {(bigint) parser___parser_prod___AClosureDecl___empty_init},
-  {(bigint) parser___parser_prod___AClosureDecl___init_aclosuredecl},
-  {(bigint) 3 /* 77: AClosureDecl < AClosureDecl: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AClosureDecl___n_kwbreak},
-  {(bigint) parser___parser_nodes___AClosureDecl___n_bang},
-  {(bigint) parser___parser_nodes___AClosureDecl___n_id},
-  {(bigint) parser___parser_nodes___AClosureDecl___n_signature},
-  {(bigint) parser___parser_nodes___AClosureDecl___n_expr},
-  {(bigint) syntax___typing___AClosureDecl___escapable},
-  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) 0 /* 50: ReduceAction35 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction35___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction35 < ReduceAction35: superclass init_table position */},
 };
 /* 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__parser___parser_nodes___AClosureDecl(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction35::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction35[] = "init var of ReduceAction35";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___AClosureDecl;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction35;
   fra.me.has_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:1359 */
-  REGB0 = TAG_Int(0);
-  ATTR_syntax___mmbuilder___AClosureDecl____position(fra.me.REG[0]) = REGB0;
-  /* ./parser//parser_nodes.nit:652 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AClosureDecl____n_kwbreak(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:656 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AClosureDecl____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AClosureDecl(void)
+val_t NEW_parser___ReduceAction35(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 14);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AClosureDecl;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction35;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AClosureDecl(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction35[] = "check new ReduceAction35";
+void CHECKNEW_parser___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_parser___parser_nodes___AClosureDecl;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction35;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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___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___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___parser_nodes___AClosureDecl____n_signature(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_signature", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AClosureDecl_parser___parser_prod___AClosureDecl___empty_init(void){
+static const char LOCATE_NEW_ReduceAction35_parser___ReduceAction___init[] = "new ReduceAction35 parser::ReduceAction::init";
+val_t NEW_ReduceAction35_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 3051;
-  fra.me.meth = LOCATE_NEW_AClosureDecl_parser___parser_prod___AClosureDecl___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction35_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:3051 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AClosureDecl();
-  INIT_ATTRIBUTES__parser___parser_nodes___AClosureDecl(fra.me.REG[0]);
-  parser___parser_prod___AClosureDecl___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AClosureDecl(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction35();
+  INIT_ATTRIBUTES__parser___ReduceAction35(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction35(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AClosureDecl_parser___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 = 3053;
-  fra.me.meth = LOCATE_NEW_AClosureDecl_parser___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:3053 */
-  fra.me.REG[5] = NEW_parser___parser_nodes___AClosureDecl();
-  INIT_ATTRIBUTES__parser___parser_nodes___AClosureDecl(fra.me.REG[5]);
-  parser___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_parser___parser_nodes___AClosureDecl(fra.me.REG[5]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[5];
-}
-val_t NEW_AClosureDecl_parser___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___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_parser___parser_nodes___AClosureDecl();
-  INIT_ATTRIBUTES__parser___parser_nodes___AClosureDecl(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AClosureDecl(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AType[85] = {
-  {(bigint) 3047 /* 0: Identity */},
-  {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AType" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AType < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AType < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction36[55] = {
+  {(bigint) 1719 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction36" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction36 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction36 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1719 /* 5: ReduceAction36 < ReduceAction36: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AType < Prod: superclass typecheck marker */},
-  {(bigint) 3047 /* 7: AType < AType: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -55617,7 +96465,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AType[85] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AType < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction36 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -55633,6 +96481,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AType[85] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -55646,195 +96496,91 @@ const classtable_elt_t VFT_parser___parser_nodes___AType[85] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AType___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AType___visit_all},
-  {(bigint) 1 /* 60: AType < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___AType___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AType < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___mmbuilder___AType___check_visibility},
-  {(bigint) syntax___typing___AType___is_typed},
-  {(bigint) syntax___typing___AType___stype},
-  {(bigint) syntax___syntax_base___AType___get_local_class},
-  {(bigint) syntax___syntax_base___AType___get_unchecked_stype},
-  {(bigint) syntax___syntax_base___AType___get_stype},
-  {(bigint) syntax___syntax_base___AType___check_conform},
-  {(bigint) parser___parser_prod___AType___empty_init},
-  {(bigint) parser___parser_prod___AType___init_atype},
-  {(bigint) 3 /* 81: AType < AType: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AType___n_kwnullable},
-  {(bigint) parser___parser_nodes___AType___n_id},
-  {(bigint) parser___parser_nodes___AType___n_types},
+  {(bigint) 0 /* 50: ReduceAction36 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction36___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction36 < ReduceAction36: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AType(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction36::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction36[] = "init var of ReduceAction36";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___AType;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction36;
   fra.me.has_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:593 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_syntax___syntax_base___AType____stype_cache(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//syntax_base.nit:594 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___syntax_base___AType____stype_cached(fra.me.REG[0]) = REGB0;
-  /* ./parser//parser_nodes.nit:660 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AType____n_kwnullable(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:662 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___AType____n_types(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AType(void)
+val_t NEW_parser___ReduceAction36(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 12);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AType;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction36;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AType(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction36[] = "check new ReduceAction36";
+void CHECKNEW_parser___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_parser___parser_nodes___AType;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction36;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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___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___parser_nodes___AType____n_types(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_types", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AType_parser___parser_prod___AType___empty_init(void){
+static const char LOCATE_NEW_ReduceAction36_parser___ReduceAction___init[] = "new ReduceAction36 parser::ReduceAction::init";
+val_t NEW_ReduceAction36_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 3146;
-  fra.me.meth = LOCATE_NEW_AType_parser___parser_prod___AType___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction36_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:3146 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AType();
-  INIT_ATTRIBUTES__parser___parser_nodes___AType(fra.me.REG[0]);
-  parser___parser_prod___AType___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AType(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction36();
+  INIT_ATTRIBUTES__parser___ReduceAction36(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction36(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AType_parser___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 = 3148;
-  fra.me.meth = LOCATE_NEW_AType_parser___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:3148 */
-  fra.me.REG[3] = NEW_parser___parser_nodes___AType();
-  INIT_ATTRIBUTES__parser___parser_nodes___AType(fra.me.REG[3]);
-  parser___parser_prod___AType___init_atype(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
-  CHECKNEW_parser___parser_nodes___AType(fra.me.REG[3]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[3];
-}
-val_t NEW_AType_parser___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___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_parser___parser_nodes___AType();
-  INIT_ATTRIBUTES__parser___parser_nodes___AType(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AType(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___ALabel[77] = {
-  {(bigint) 3091 /* 0: Identity */},
-  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ALabel" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ALabel < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ALabel < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction37[55] = {
+  {(bigint) 1675 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction37" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction37 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction37 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1675 /* 5: ReduceAction37 < ReduceAction37: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: ALabel < Prod: superclass typecheck marker */},
-  {(bigint) 3091 /* 7: ALabel < ALabel: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -55845,7 +96591,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ALabel[77] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: ALabel < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction37 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -55861,6 +96607,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ALabel[77] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -55874,160 +96622,91 @@ const classtable_elt_t VFT_parser___parser_nodes___ALabel[77] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ALabel___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ALabel___visit_all},
-  {(bigint) 1 /* 60: ALabel < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: ALabel < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) parser___parser_prod___ALabel___empty_init},
-  {(bigint) parser___parser_prod___ALabel___init_alabel},
-  {(bigint) 3 /* 74: ALabel < ALabel: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ALabel___n_kwlabel},
-  {(bigint) parser___parser_nodes___ALabel___n_id},
+  {(bigint) 0 /* 50: ReduceAction37 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction37___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction37 < ReduceAction37: superclass init_table position */},
 };
 /* 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__parser___parser_nodes___ALabel(val_t p0){
+/* 2: Attribute ReduceAction37::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction37[] = "init var of ReduceAction37";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___ALabel;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction37;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___ALabel(void)
+val_t NEW_parser___ReduceAction37(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 8);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ALabel;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction37;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___ALabel(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction37[] = "check new ReduceAction37";
+void CHECKNEW_parser___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_parser___parser_nodes___ALabel;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction37;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___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___parser_nodes___ALabel____n_id(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ALabel_parser___parser_prod___ALabel___empty_init(void){
+static const char LOCATE_NEW_ReduceAction37_parser___ReduceAction___init[] = "new ReduceAction37 parser::ReduceAction::init";
+val_t NEW_ReduceAction37_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 3216;
-  fra.me.meth = LOCATE_NEW_ALabel_parser___parser_prod___ALabel___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction37_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:3216 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ALabel();
-  INIT_ATTRIBUTES__parser___parser_nodes___ALabel(fra.me.REG[0]);
-  parser___parser_prod___ALabel___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ALabel(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction37();
+  INIT_ATTRIBUTES__parser___ReduceAction37(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction37(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_ALabel_parser___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 = 3218;
-  fra.me.meth = LOCATE_NEW_ALabel_parser___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:3218 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___ALabel();
-  INIT_ATTRIBUTES__parser___parser_nodes___ALabel(fra.me.REG[2]);
-  parser___parser_prod___ALabel___init_alabel(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___ALabel(fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
-}
-val_t NEW_ALabel_parser___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___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_parser___parser_nodes___ALabel();
-  INIT_ATTRIBUTES__parser___parser_nodes___ALabel(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ALabel(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AExpr[82] = {
-  {(bigint) 3111 /* 0: Identity */},
-  {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AExpr < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction38[55] = {
+  {(bigint) 1631 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction38" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction38 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction38 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1631 /* 5: ReduceAction38 < ReduceAction38: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -56038,7 +96717,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AExpr[82] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction38 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -56054,6 +96733,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AExpr[82] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -56067,128 +96748,92 @@ const classtable_elt_t VFT_parser___parser_nodes___AExpr[82] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ANode___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ANode___visit_all},
-  {(bigint) 1 /* 60: AExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___AExpr___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 75: AExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___AExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) 0 /* 50: ReduceAction38 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction38___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction38 < ReduceAction38: superclass init_table position */},
 };
 /* 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__parser___parser_nodes___AExpr(val_t p0){
+/* 2: Attribute ReduceAction38::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction38[] = "init var of ReduceAction38";
+void INIT_ATTRIBUTES__parser___ReduceAction38(val_t p0){
   struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
   val_t tmp;
   fra.me.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___parser_nodes___AExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction38;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AExpr(void)
+val_t NEW_parser___ReduceAction38(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 11);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction38;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction38[] = "check new ReduceAction38";
+void CHECKNEW_parser___ReduceAction38(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___parser_nodes___AExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction38;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AExpr_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ReduceAction38_parser___ReduceAction___init[] = "new ReduceAction38 parser::ReduceAction::init";
+val_t NEW_ReduceAction38_parser___ReduceAction___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};
+  int init_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_AExpr_parser___parser_nodes___ANode___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction38_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___AExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AExpr(fra.me.REG[1]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction38();
+  INIT_ATTRIBUTES__parser___ReduceAction38(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction38(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ABlockExpr[86] = {
-  {(bigint) 3487 /* 0: Identity */},
-  {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ABlockExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ABlockExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ABlockExpr < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction39[55] = {
+  {(bigint) 1587 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction39" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction39 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction39 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1587 /* 5: ReduceAction39 < ReduceAction39: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: ABlockExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: ABlockExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3487 /* 8: ABlockExpr < ABlockExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -56198,7 +96843,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ABlockExpr[86] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: ABlockExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction39 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -56214,6 +96859,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ABlockExpr[86] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -56227,182 +96874,92 @@ const classtable_elt_t VFT_parser___parser_nodes___ABlockExpr[86] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ABlockExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ABlockExpr___visit_all},
-  {(bigint) 1 /* 60: ABlockExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ABlockExpr___accept_typing},
-  {(bigint) syntax___typing___AExpr___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: ABlockExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 75: ABlockExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___ABlockExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) parser___parser_prod___ABlockExpr___empty_init},
-  {(bigint) parser___parser_prod___ABlockExpr___init_ablockexpr},
-  {(bigint) 4 /* 84: ABlockExpr < ABlockExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ABlockExpr___n_expr},
+  {(bigint) 0 /* 50: ReduceAction39 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction39___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction39 < ReduceAction39: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___ABlockExpr(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction39::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction39[] = "init var of ReduceAction39";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___ABlockExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction39;
   fra.me.has_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:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  /* ./parser//parser_nodes.nit:672 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___ABlockExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___ABlockExpr(void)
+val_t NEW_parser___ReduceAction39(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 12);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ABlockExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction39;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___ABlockExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction39[] = "check new ReduceAction39";
+void CHECKNEW_parser___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_parser___parser_nodes___ABlockExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction39;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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___parser_nodes___ABlockExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ABlockExpr_parser___parser_prod___ABlockExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction39_parser___ReduceAction___init[] = "new ReduceAction39 parser::ReduceAction::init";
+val_t NEW_ReduceAction39_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 3261;
-  fra.me.meth = LOCATE_NEW_ABlockExpr_parser___parser_prod___ABlockExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction39_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:3261 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ABlockExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ABlockExpr(fra.me.REG[0]);
-  parser___parser_prod___ABlockExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ABlockExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction39();
+  INIT_ATTRIBUTES__parser___ReduceAction39(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction39(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_ABlockExpr_parser___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 = 3263;
-  fra.me.meth = LOCATE_NEW_ABlockExpr_parser___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:3263 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___ABlockExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ABlockExpr(fra.me.REG[1]);
-  parser___parser_prod___ABlockExpr___init_ablockexpr(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ABlockExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_ABlockExpr_parser___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___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_parser___parser_nodes___ABlockExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ABlockExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ABlockExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AVardeclExpr[91] = {
-  {(bigint) 3247 /* 0: Identity */},
-  {(bigint) 17 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AVardeclExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AVardeclExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AVardeclExpr < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction40[55] = {
+  {(bigint) 1543 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction40" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction40 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction40 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1543 /* 5: ReduceAction40 < ReduceAction40: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AVardeclExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AVardeclExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3247 /* 8: AVardeclExpr < AVardeclExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -56412,7 +96969,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AVardeclExpr[91] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AVardeclExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction40 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -56428,6 +96985,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AVardeclExpr[91] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -56441,211 +97000,92 @@ const classtable_elt_t VFT_parser___parser_nodes___AVardeclExpr[91] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AVardeclExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AVardeclExpr___visit_all},
-  {(bigint) 1 /* 60: AVardeclExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___AVardeclExpr___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AVardeclExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 75: AVardeclExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___AVardeclExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) syntax___typing___AVardeclExpr___variable},
-  {(bigint) parser___parser_prod___AVardeclExpr___empty_init},
-  {(bigint) parser___parser_prod___AVardeclExpr___init_avardeclexpr},
-  {(bigint) 4 /* 85: AVardeclExpr < AVardeclExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AVardeclExpr___n_kwvar},
-  {(bigint) parser___parser_nodes___AVardeclExpr___n_id},
-  {(bigint) parser___parser_nodes___AVardeclExpr___n_type},
-  {(bigint) parser___parser_nodes___AVardeclExpr___n_assign},
-  {(bigint) parser___parser_nodes___AVardeclExpr___n_expr},
+  {(bigint) 0 /* 50: ReduceAction40 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction40___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction40 < ReduceAction40: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AVardeclExpr(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction40::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction40[] = "init var of ReduceAction40";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___AVardeclExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction40;
   fra.me.has_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:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  /* ./parser//parser_nodes.nit:678 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AVardeclExpr____n_type(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:679 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AVardeclExpr____n_assign(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:680 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AVardeclExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AVardeclExpr(void)
+val_t NEW_parser___ReduceAction40(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 17);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AVardeclExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction40;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AVardeclExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction40[] = "check new ReduceAction40";
+void CHECKNEW_parser___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_parser___parser_nodes___AVardeclExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction40;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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___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___parser_nodes___AVardeclExpr____n_id(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AVardeclExpr_parser___parser_prod___AVardeclExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction40_parser___ReduceAction___init[] = "new ReduceAction40 parser::ReduceAction::init";
+val_t NEW_ReduceAction40_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 3299;
-  fra.me.meth = LOCATE_NEW_AVardeclExpr_parser___parser_prod___AVardeclExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction40_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:3299 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AVardeclExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AVardeclExpr(fra.me.REG[0]);
-  parser___parser_prod___AVardeclExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AVardeclExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction40();
+  INIT_ATTRIBUTES__parser___ReduceAction40(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction40(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AVardeclExpr_parser___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 = 3301;
-  fra.me.meth = LOCATE_NEW_AVardeclExpr_parser___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:3301 */
-  fra.me.REG[5] = NEW_parser___parser_nodes___AVardeclExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AVardeclExpr(fra.me.REG[5]);
-  parser___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_parser___parser_nodes___AVardeclExpr(fra.me.REG[5]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[5];
-}
-val_t NEW_AVardeclExpr_parser___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___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_parser___parser_nodes___AVardeclExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AVardeclExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AVardeclExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AReturnExpr[87] = {
-  {(bigint) 3307 /* 0: Identity */},
-  {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AReturnExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AReturnExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AReturnExpr < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction41[55] = {
+  {(bigint) 1499 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction41" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction41 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction41 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1499 /* 5: ReduceAction41 < ReduceAction41: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AReturnExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AReturnExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3307 /* 8: AReturnExpr < AReturnExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -56655,7 +97095,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AReturnExpr[87] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AReturnExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction41 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -56671,6 +97111,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AReturnExpr[87] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -56684,182 +97126,90 @@ const classtable_elt_t VFT_parser___parser_nodes___AReturnExpr[87] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AReturnExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AReturnExpr___visit_all},
-  {(bigint) 1 /* 60: AReturnExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___AReturnExpr___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AReturnExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 75: AReturnExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___AReturnExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) parser___parser_prod___AReturnExpr___empty_init},
-  {(bigint) parser___parser_prod___AReturnExpr___init_areturnexpr},
-  {(bigint) 4 /* 84: AReturnExpr < AReturnExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AReturnExpr___n_kwreturn},
-  {(bigint) parser___parser_nodes___AReturnExpr___n_expr},
+  {(bigint) 0 /* 50: ReduceAction41 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction41___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction41 < ReduceAction41: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AReturnExpr(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction41::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction41[] = "init var of ReduceAction41";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___AReturnExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction41;
   fra.me.has_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:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  /* ./parser//parser_nodes.nit:684 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AReturnExpr____n_kwreturn(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:685 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AReturnExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AReturnExpr(void)
+val_t NEW_parser___ReduceAction41(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 13);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AReturnExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction41;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AReturnExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction41[] = "check new ReduceAction41";
+void CHECKNEW_parser___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_parser___parser_nodes___AReturnExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction41;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AReturnExpr_parser___parser_prod___AReturnExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction41_parser___ReduceAction___init[] = "new ReduceAction41 parser::ReduceAction::init";
+val_t NEW_ReduceAction41_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 3398;
-  fra.me.meth = LOCATE_NEW_AReturnExpr_parser___parser_prod___AReturnExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction41_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:3398 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AReturnExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AReturnExpr(fra.me.REG[0]);
-  parser___parser_prod___AReturnExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AReturnExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction41();
+  INIT_ATTRIBUTES__parser___ReduceAction41(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction41(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AReturnExpr_parser___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 = 3400;
-  fra.me.meth = LOCATE_NEW_AReturnExpr_parser___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:3400 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___AReturnExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AReturnExpr(fra.me.REG[2]);
-  parser___parser_prod___AReturnExpr___init_areturnexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___AReturnExpr(fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
-}
-val_t NEW_AReturnExpr_parser___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___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_parser___parser_nodes___AReturnExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AReturnExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AReturnExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___ALabelable[72] = {
-  {(bigint) 3087 /* 0: Identity */},
-  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ALabelable" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ALabelable < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ALabelable < ANode: superclass typecheck marker */},
-  {(bigint) 3087 /* 5: ALabelable < ALabelable: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: ALabelable < Prod: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction42[55] = {
+  {(bigint) 1459 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction42" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction42 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction42 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1459 /* 5: ReduceAction42 < ReduceAction42: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -56871,7 +97221,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ALabelable[72] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: ALabelable < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction42 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -56887,6 +97237,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ALabelable[72] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -56900,107 +97252,93 @@ const classtable_elt_t VFT_parser___parser_nodes___ALabelable[72] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ANode___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ANode___visit_all},
-  {(bigint) 1 /* 60: ALabelable < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) 3 /* 67: ALabelable < ALabelable: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ALabelable___n_label},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: ALabelable < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) 0 /* 50: ReduceAction42 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction42___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction42 < ReduceAction42: superclass init_table position */},
 };
 /* 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__parser___parser_nodes___ALabelable(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+/* 2: Attribute ReduceAction42::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction42[] = "init var of ReduceAction42";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___ALabelable;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction42;
   fra.me.has_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:689 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___ALabelable(void)
+val_t NEW_parser___ReduceAction42(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ALabelable;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction42;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___ALabelable(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction42[] = "check new ReduceAction42";
+void CHECKNEW_parser___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_parser___parser_nodes___ALabelable;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction42;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ALabelable_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ReduceAction42_parser___ReduceAction___init[] = "new ReduceAction42 parser::ReduceAction::init";
+val_t NEW_ReduceAction42_parser___ReduceAction___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};
+  int init_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_ALabelable_parser___parser_nodes___ANode___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction42_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___ALabelable();
-  INIT_ATTRIBUTES__parser___parser_nodes___ALabelable(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ALabelable(fra.me.REG[1]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction42();
+  INIT_ATTRIBUTES__parser___ReduceAction42(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction42(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ABreakExpr[91] = {
-  {(bigint) 3707 /* 0: Identity */},
-  {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ABreakExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ABreakExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ABreakExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3087 /* 5: ABreakExpr < ALabelable: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: ABreakExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: ABreakExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3439 /* 8: ABreakExpr < AEscapeExpr: superclass typecheck marker */},
-  {(bigint) 3707 /* 9: ABreakExpr < ABreakExpr: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction43[55] = {
+  {(bigint) 1427 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction43" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction43 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction43 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1427 /* 5: ReduceAction43 < ReduceAction43: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -57009,7 +97347,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ABreakExpr[91] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 18: ABreakExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction43 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -57025,6 +97363,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ABreakExpr[91] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -57038,196 +97378,92 @@ const classtable_elt_t VFT_parser___parser_nodes___ABreakExpr[91] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ABreakExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ABreakExpr___visit_all},
-  {(bigint) 2 /* 60: ABreakExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ABreakExpr___after_typing},
-  {(bigint) 4 /* 67: ABreakExpr < ALabelable: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ALabelable___n_label},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 70: ABreakExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 5 /* 75: ABreakExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___ABreakExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) 0 /* 82: ABreakExpr < AEscapeExpr: superclass init_table position */},
-  {(bigint) syntax___scope___AEscapeExpr___escapable},
-  {(bigint) syntax___scope___ABreakExpr___kwname},
-  {(bigint) syntax___scope___AEscapeExpr___compute_escapable_block},
-  {(bigint) parser___parser_prod___ABreakExpr___empty_init},
-  {(bigint) parser___parser_prod___ABreakExpr___init_abreakexpr},
-  {(bigint) 6 /* 88: ABreakExpr < ABreakExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ABreakExpr___n_kwbreak},
-  {(bigint) parser___parser_nodes___ABreakExpr___n_expr},
+  {(bigint) 0 /* 50: ReduceAction43 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction43___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction43 < ReduceAction43: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___ABreakExpr(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction43::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction43[] = "init var of ReduceAction43";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___ABreakExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction43;
   fra.me.has_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:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  /* ./parser//parser_nodes.nit:689 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:695 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___ABreakExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___ABreakExpr(void)
+val_t NEW_parser___ReduceAction43(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 14);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ABreakExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction43;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___ABreakExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction43[] = "check new ReduceAction43";
+void CHECKNEW_parser___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_parser___parser_nodes___ABreakExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction43;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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___parser_nodes___ABreakExpr____n_kwbreak(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwbreak", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ABreakExpr_parser___parser_prod___ABreakExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction43_parser___ReduceAction___init[] = "new ReduceAction43 parser::ReduceAction::init";
+val_t NEW_ReduceAction43_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  int init_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_ABreakExpr_parser___parser_prod___ABreakExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction43_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:3451 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ABreakExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ABreakExpr(fra.me.REG[0]);
-  parser___parser_prod___ABreakExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ABreakExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction43();
+  INIT_ATTRIBUTES__parser___ReduceAction43(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction43(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_ABreakExpr_parser___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 = 3453;
-  fra.me.meth = LOCATE_NEW_ABreakExpr_parser___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:3453 */
-  fra.me.REG[3] = NEW_parser___parser_nodes___ABreakExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ABreakExpr(fra.me.REG[3]);
-  parser___parser_prod___ABreakExpr___init_abreakexpr(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
-  CHECKNEW_parser___parser_nodes___ABreakExpr(fra.me.REG[3]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[3];
-}
-val_t NEW_ABreakExpr_parser___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___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_parser___parser_nodes___ABreakExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ABreakExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ABreakExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AAbortExpr[86] = {
-  {(bigint) 3531 /* 0: Identity */},
-  {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AAbortExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AAbortExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AAbortExpr < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction44[55] = {
+  {(bigint) 1383 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction44" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction44 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction44 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1383 /* 5: ReduceAction44 < ReduceAction44: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AAbortExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AAbortExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3531 /* 8: AAbortExpr < AAbortExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -57237,7 +97473,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAbortExpr[86] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AAbortExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction44 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -57253,6 +97489,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AAbortExpr[86] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -57266,179 +97504,93 @@ const classtable_elt_t VFT_parser___parser_nodes___AAbortExpr[86] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AAbortExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AAbortExpr___visit_all},
-  {(bigint) 1 /* 60: AAbortExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___AAbortExpr___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AAbortExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 75: AAbortExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___AAbortExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) parser___parser_prod___AAbortExpr___empty_init},
-  {(bigint) parser___parser_prod___AAbortExpr___init_aabortexpr},
-  {(bigint) 4 /* 84: AAbortExpr < AAbortExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AAbortExpr___n_kwabort},
+  {(bigint) 0 /* 50: ReduceAction44 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction44___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction44 < ReduceAction44: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AAbortExpr(val_t p0){
+/* 2: Attribute ReduceAction44::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction44[] = "init var of ReduceAction44";
+void INIT_ATTRIBUTES__parser___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_INIT_ATTRIBUTES__parser___parser_nodes___AAbortExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction44;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AAbortExpr(void)
+val_t NEW_parser___ReduceAction44(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 12);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AAbortExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction44;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AAbortExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction44[] = "check new ReduceAction44";
+void CHECKNEW_parser___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_parser___parser_nodes___AAbortExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction44;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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___parser_nodes___AAbortExpr____n_kwabort(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwabort", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AAbortExpr_parser___parser_prod___AAbortExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction44_parser___ReduceAction___init[] = "new ReduceAction44 parser::ReduceAction::init";
+val_t NEW_ReduceAction44_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 3518;
-  fra.me.meth = LOCATE_NEW_AAbortExpr_parser___parser_prod___AAbortExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction44_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:3518 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AAbortExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AAbortExpr(fra.me.REG[0]);
-  parser___parser_prod___AAbortExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AAbortExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction44();
+  INIT_ATTRIBUTES__parser___ReduceAction44(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction44(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AAbortExpr_parser___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 = 3520;
-  fra.me.meth = LOCATE_NEW_AAbortExpr_parser___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:3520 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___AAbortExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AAbortExpr(fra.me.REG[1]);
-  parser___parser_prod___AAbortExpr___init_aabortexpr(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AAbortExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_AAbortExpr_parser___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___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_parser___parser_nodes___AAbortExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AAbortExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AAbortExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AContinueExpr[91] = {
-  {(bigint) 3691 /* 0: Identity */},
-  {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AContinueExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AContinueExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AContinueExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3087 /* 5: AContinueExpr < ALabelable: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: AContinueExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AContinueExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3439 /* 8: AContinueExpr < AEscapeExpr: superclass typecheck marker */},
-  {(bigint) 3691 /* 9: AContinueExpr < AContinueExpr: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction45[55] = {
+  {(bigint) 1363 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction45" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction45 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction45 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1363 /* 5: ReduceAction45 < ReduceAction45: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -57447,7 +97599,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AContinueExpr[91] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 18: AContinueExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction45 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -57463,6 +97615,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AContinueExpr[91] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -57476,195 +97630,93 @@ const classtable_elt_t VFT_parser___parser_nodes___AContinueExpr[91] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AContinueExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AContinueExpr___visit_all},
-  {(bigint) 2 /* 60: AContinueExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___AContinueExpr___after_typing},
-  {(bigint) 4 /* 67: AContinueExpr < ALabelable: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ALabelable___n_label},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 70: AContinueExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 5 /* 75: AContinueExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___AContinueExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) 0 /* 82: AContinueExpr < AEscapeExpr: superclass init_table position */},
-  {(bigint) syntax___scope___AEscapeExpr___escapable},
-  {(bigint) syntax___scope___AContinueExpr___kwname},
-  {(bigint) syntax___scope___AEscapeExpr___compute_escapable_block},
-  {(bigint) parser___parser_prod___AContinueExpr___empty_init},
-  {(bigint) parser___parser_prod___AContinueExpr___init_acontinueexpr},
-  {(bigint) 6 /* 88: AContinueExpr < AContinueExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AContinueExpr___n_kwcontinue},
-  {(bigint) parser___parser_nodes___AContinueExpr___n_expr},
+  {(bigint) 0 /* 50: ReduceAction45 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction45___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction45 < ReduceAction45: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AContinueExpr(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction45::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction45[] = "init var of ReduceAction45";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___AContinueExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction45;
   fra.me.has_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:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  /* ./parser//parser_nodes.nit:704 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AContinueExpr____n_kwcontinue(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:689 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:705 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AContinueExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AContinueExpr(void)
+val_t NEW_parser___ReduceAction45(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 14);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AContinueExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction45;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AContinueExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction45[] = "check new ReduceAction45";
+void CHECKNEW_parser___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_parser___parser_nodes___AContinueExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction45;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AContinueExpr_parser___parser_prod___AContinueExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction45_parser___ReduceAction___init[] = "new ReduceAction45 parser::ReduceAction::init";
+val_t NEW_ReduceAction45_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 3549;
-  fra.me.meth = LOCATE_NEW_AContinueExpr_parser___parser_prod___AContinueExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction45_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:3549 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AContinueExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AContinueExpr(fra.me.REG[0]);
-  parser___parser_prod___AContinueExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AContinueExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction45();
+  INIT_ATTRIBUTES__parser___ReduceAction45(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction45(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AContinueExpr_parser___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 = 3551;
-  fra.me.meth = LOCATE_NEW_AContinueExpr_parser___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:3551 */
-  fra.me.REG[3] = NEW_parser___parser_nodes___AContinueExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AContinueExpr(fra.me.REG[3]);
-  parser___parser_prod___AContinueExpr___init_acontinueexpr(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
-  CHECKNEW_parser___parser_nodes___AContinueExpr(fra.me.REG[3]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[3];
-}
-val_t NEW_AContinueExpr_parser___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___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_parser___parser_nodes___AContinueExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AContinueExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AContinueExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___ADoExpr[91] = {
-  {(bigint) 3679 /* 0: Identity */},
-  {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ADoExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ADoExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ADoExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3087 /* 5: ADoExpr < ALabelable: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: ADoExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: ADoExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3523 /* 8: ADoExpr < AAbsControl: superclass typecheck marker */},
-  {(bigint) 3679 /* 9: ADoExpr < ADoExpr: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction46[55] = {
+  {(bigint) 1319 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction46" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction46 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction46 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1319 /* 5: ReduceAction46 < ReduceAction46: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -57673,7 +97725,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ADoExpr[91] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 18: ADoExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction46 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -57689,6 +97741,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ADoExpr[91] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -57702,196 +97756,92 @@ const classtable_elt_t VFT_parser___parser_nodes___ADoExpr[91] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ADoExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ADoExpr___visit_all},
-  {(bigint) 2 /* 60: ADoExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ADoExpr___accept_typing},
-  {(bigint) syntax___typing___AExpr___after_typing},
-  {(bigint) 5 /* 67: ADoExpr < ALabelable: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ALabelable___n_label},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 70: ADoExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 4 /* 75: ADoExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___ADoExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) 0 /* 82: ADoExpr < AAbsControl: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsControl___escapable},
-  {(bigint) syntax___typing___AAbsControl___process_control},
-  {(bigint) syntax___typing___ADoExpr___process_control_inside},
-  {(bigint) parser___parser_prod___ADoExpr___empty_init},
-  {(bigint) parser___parser_prod___ADoExpr___init_adoexpr},
-  {(bigint) 6 /* 88: ADoExpr < ADoExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ADoExpr___n_kwdo},
-  {(bigint) parser___parser_nodes___ADoExpr___n_block},
+  {(bigint) 0 /* 50: ReduceAction46 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction46___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction46 < ReduceAction46: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___ADoExpr(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction46::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction46[] = "init var of ReduceAction46";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___ADoExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction46;
   fra.me.has_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:711 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___ADoExpr____n_block(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:689 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___ADoExpr(void)
+val_t NEW_parser___ReduceAction46(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 14);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ADoExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction46;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___ADoExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction46[] = "check new ReduceAction46";
+void CHECKNEW_parser___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_parser___parser_nodes___ADoExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction46;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___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_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ADoExpr_parser___parser_prod___ADoExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction46_parser___ReduceAction___init[] = "new ReduceAction46 parser::ReduceAction::init";
+val_t NEW_ReduceAction46_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 3620;
-  fra.me.meth = LOCATE_NEW_ADoExpr_parser___parser_prod___ADoExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction46_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:3620 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ADoExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ADoExpr(fra.me.REG[0]);
-  parser___parser_prod___ADoExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ADoExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction46();
+  INIT_ATTRIBUTES__parser___ReduceAction46(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction46(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_ADoExpr_parser___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 = 3622;
-  fra.me.meth = LOCATE_NEW_ADoExpr_parser___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:3622 */
-  fra.me.REG[3] = NEW_parser___parser_nodes___ADoExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ADoExpr(fra.me.REG[3]);
-  parser___parser_prod___ADoExpr___init_adoexpr(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
-  CHECKNEW_parser___parser_nodes___ADoExpr(fra.me.REG[3]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[3];
-}
-val_t NEW_ADoExpr_parser___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___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_parser___parser_nodes___ADoExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ADoExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ADoExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AIfExpr[89] = {
-  {(bigint) 3411 /* 0: Identity */},
-  {(bigint) 15 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AIfExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AIfExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AIfExpr < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction47[55] = {
+  {(bigint) 1275 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction47" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction47 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction47 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1275 /* 5: ReduceAction47 < ReduceAction47: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AIfExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AIfExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3411 /* 8: AIfExpr < AIfExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -57901,7 +97851,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AIfExpr[89] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AIfExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction47 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -57917,6 +97867,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AIfExpr[89] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -57930,202 +97882,92 @@ const classtable_elt_t VFT_parser___parser_nodes___AIfExpr[89] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AIfExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AIfExpr___visit_all},
-  {(bigint) 1 /* 60: AIfExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___AIfExpr___accept_typing},
-  {(bigint) syntax___typing___AExpr___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AIfExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 75: AIfExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___AIfExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) parser___parser_prod___AIfExpr___empty_init},
-  {(bigint) parser___parser_prod___AIfExpr___init_aifexpr},
-  {(bigint) 4 /* 84: AIfExpr < AIfExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AIfExpr___n_kwif},
-  {(bigint) parser___parser_nodes___AIfExpr___n_expr},
-  {(bigint) parser___parser_nodes___AIfExpr___n_then},
-  {(bigint) parser___parser_nodes___AIfExpr___n_else},
+  {(bigint) 0 /* 50: ReduceAction47 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction47___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction47 < ReduceAction47: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AIfExpr(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction47::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction47[] = "init var of ReduceAction47";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___AIfExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction47;
   fra.me.has_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:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  /* ./parser//parser_nodes.nit:717 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AIfExpr____n_then(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:718 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AIfExpr____n_else(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AIfExpr(void)
+val_t NEW_parser___ReduceAction47(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 15);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AIfExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction47;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AIfExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction47[] = "check new ReduceAction47";
+void CHECKNEW_parser___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_parser___parser_nodes___AIfExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction47;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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___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___parser_nodes___AIfExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AIfExpr_parser___parser_prod___AIfExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction47_parser___ReduceAction___init[] = "new ReduceAction47 parser::ReduceAction::init";
+val_t NEW_ReduceAction47_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 3687;
-  fra.me.meth = LOCATE_NEW_AIfExpr_parser___parser_prod___AIfExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction47_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:3687 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AIfExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AIfExpr(fra.me.REG[0]);
-  parser___parser_prod___AIfExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AIfExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction47();
+  INIT_ATTRIBUTES__parser___ReduceAction47(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction47(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AIfExpr_parser___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 = 3689;
-  fra.me.meth = LOCATE_NEW_AIfExpr_parser___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:3689 */
-  fra.me.REG[4] = NEW_parser___parser_nodes___AIfExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AIfExpr(fra.me.REG[4]);
-  parser___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_parser___parser_nodes___AIfExpr(fra.me.REG[4]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[4];
-}
-val_t NEW_AIfExpr_parser___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___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_parser___parser_nodes___AIfExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AIfExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AIfExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AIfexprExpr[91] = {
-  {(bigint) 3407 /* 0: Identity */},
-  {(bigint) 17 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AIfexprExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AIfexprExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AIfexprExpr < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction48[55] = {
+  {(bigint) 1231 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction48" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction48 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction48 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1231 /* 5: ReduceAction48 < ReduceAction48: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AIfexprExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AIfexprExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3407 /* 8: AIfexprExpr < AIfexprExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -58135,7 +97977,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AIfexprExpr[91] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AIfexprExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction48 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -58151,6 +97993,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AIfexprExpr[91] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -58164,224 +98008,93 @@ const classtable_elt_t VFT_parser___parser_nodes___AIfexprExpr[91] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AIfexprExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AIfexprExpr___visit_all},
-  {(bigint) 1 /* 60: AIfexprExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___AIfexprExpr___accept_typing},
-  {(bigint) syntax___typing___AExpr___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AIfexprExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 75: AIfexprExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___AIfexprExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) parser___parser_prod___AIfexprExpr___empty_init},
-  {(bigint) parser___parser_prod___AIfexprExpr___init_aifexprexpr},
-  {(bigint) 4 /* 84: AIfexprExpr < AIfexprExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AIfexprExpr___n_kwif},
-  {(bigint) parser___parser_nodes___AIfexprExpr___n_expr},
-  {(bigint) parser___parser_nodes___AIfexprExpr___n_kwthen},
-  {(bigint) parser___parser_nodes___AIfexprExpr___n_then},
-  {(bigint) parser___parser_nodes___AIfexprExpr___n_kwelse},
-  {(bigint) parser___parser_nodes___AIfexprExpr___n_else},
+  {(bigint) 0 /* 50: ReduceAction48 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction48___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction48 < ReduceAction48: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AIfexprExpr(val_t p0){
+/* 2: Attribute ReduceAction48::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction48[] = "init var of ReduceAction48";
+void INIT_ATTRIBUTES__parser___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_INIT_ATTRIBUTES__parser___parser_nodes___AIfexprExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction48;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AIfexprExpr(void)
+val_t NEW_parser___ReduceAction48(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 17);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AIfexprExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction48;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AIfexprExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction48[] = "check new ReduceAction48";
+void CHECKNEW_parser___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_parser___parser_nodes___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_syntax___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___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___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___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___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___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___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;
-}
-val_t NEW_AIfexprExpr_parser___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 = 3768;
-  fra.me.meth = LOCATE_NEW_AIfexprExpr_parser___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:3768 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AIfexprExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AIfexprExpr(fra.me.REG[0]);
-  parser___parser_prod___AIfexprExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AIfexprExpr(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-val_t NEW_AIfexprExpr_parser___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 = 3770;
-  fra.me.meth = LOCATE_NEW_AIfexprExpr_parser___parser_prod___AIfexprExpr___init_aifexprexpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction48;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 7;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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:3770 */
-  fra.me.REG[6] = NEW_parser___parser_nodes___AIfexprExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AIfexprExpr(fra.me.REG[6]);
-  parser___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_parser___parser_nodes___AIfexprExpr(fra.me.REG[6]);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[6];
 }
-val_t NEW_AIfexprExpr_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ReduceAction48_parser___ReduceAction___init[] = "new ReduceAction48 parser::ReduceAction::init";
+val_t NEW_ReduceAction48_parser___ReduceAction___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};
+  int init_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_AIfexprExpr_parser___parser_nodes___ANode___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction48_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___AIfexprExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AIfexprExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AIfexprExpr(fra.me.REG[1]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction48();
+  INIT_ATTRIBUTES__parser___ReduceAction48(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction48(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AWhileExpr[93] = {
-  {(bigint) 3571 /* 0: Identity */},
-  {(bigint) 16 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AWhileExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AWhileExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AWhileExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3087 /* 5: AWhileExpr < ALabelable: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: AWhileExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AWhileExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3523 /* 8: AWhileExpr < AAbsControl: superclass typecheck marker */},
-  {(bigint) 3571 /* 9: AWhileExpr < AWhileExpr: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction49[55] = {
+  {(bigint) 1187 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction49" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction49 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction49 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1187 /* 5: ReduceAction49 < ReduceAction49: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -58390,7 +98103,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AWhileExpr[93] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 18: AWhileExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction49 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -58406,6 +98119,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AWhileExpr[93] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -58419,215 +98134,93 @@ const classtable_elt_t VFT_parser___parser_nodes___AWhileExpr[93] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AWhileExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AWhileExpr___visit_all},
-  {(bigint) 2 /* 60: AWhileExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___AWhileExpr___accept_typing},
-  {(bigint) syntax___typing___AExpr___after_typing},
-  {(bigint) 5 /* 67: AWhileExpr < ALabelable: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ALabelable___n_label},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 70: AWhileExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 4 /* 75: AWhileExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___AWhileExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) 0 /* 82: AWhileExpr < AAbsControl: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsControl___escapable},
-  {(bigint) syntax___typing___AAbsControl___process_control},
-  {(bigint) syntax___typing___AWhileExpr___process_control_inside},
-  {(bigint) parser___parser_prod___AWhileExpr___empty_init},
-  {(bigint) parser___parser_prod___AWhileExpr___init_awhileexpr},
-  {(bigint) 6 /* 88: AWhileExpr < AWhileExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AWhileExpr___n_kwwhile},
-  {(bigint) parser___parser_nodes___AWhileExpr___n_expr},
-  {(bigint) parser___parser_nodes___AWhileExpr___n_kwdo},
-  {(bigint) parser___parser_nodes___AWhileExpr___n_block},
+  {(bigint) 0 /* 50: ReduceAction49 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction49___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction49 < ReduceAction49: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AWhileExpr(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction49::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction49[] = "init var of ReduceAction49";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___AWhileExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction49;
   fra.me.has_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:735 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AWhileExpr____n_block(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:689 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AWhileExpr(void)
+val_t NEW_parser___ReduceAction49(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 16);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AWhileExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction49;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AWhileExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction49[] = "check new ReduceAction49";
+void CHECKNEW_parser___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_parser___parser_nodes___AWhileExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction49;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___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___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___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_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AWhileExpr_parser___parser_prod___AWhileExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction49_parser___ReduceAction___init[] = "new ReduceAction49 parser::ReduceAction::init";
+val_t NEW_ReduceAction49_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 3869;
-  fra.me.meth = LOCATE_NEW_AWhileExpr_parser___parser_prod___AWhileExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction49_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:3869 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AWhileExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AWhileExpr(fra.me.REG[0]);
-  parser___parser_prod___AWhileExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AWhileExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction49();
+  INIT_ATTRIBUTES__parser___ReduceAction49(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction49(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AWhileExpr_parser___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 = 3871;
-  fra.me.meth = LOCATE_NEW_AWhileExpr_parser___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:3871 */
-  fra.me.REG[5] = NEW_parser___parser_nodes___AWhileExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AWhileExpr(fra.me.REG[5]);
-  parser___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_parser___parser_nodes___AWhileExpr(fra.me.REG[5]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[5];
-}
-val_t NEW_AWhileExpr_parser___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___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_parser___parser_nodes___AWhileExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AWhileExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AWhileExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___ALoopExpr[91] = {
-  {(bigint) 3627 /* 0: Identity */},
-  {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ALoopExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ALoopExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ALoopExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3087 /* 5: ALoopExpr < ALabelable: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: ALoopExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: ALoopExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3523 /* 8: ALoopExpr < AAbsControl: superclass typecheck marker */},
-  {(bigint) 3627 /* 9: ALoopExpr < ALoopExpr: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction50[55] = {
+  {(bigint) 1139 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction50" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction50 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction50 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1139 /* 5: ReduceAction50 < ReduceAction50: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -58636,7 +98229,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ALoopExpr[91] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 18: ALoopExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction50 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -58652,6 +98245,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ALoopExpr[91] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -58665,197 +98260,93 @@ const classtable_elt_t VFT_parser___parser_nodes___ALoopExpr[91] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ALoopExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ALoopExpr___visit_all},
-  {(bigint) 2 /* 60: ALoopExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ALoopExpr___accept_typing},
-  {(bigint) syntax___typing___AExpr___after_typing},
-  {(bigint) 5 /* 67: ALoopExpr < ALabelable: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ALabelable___n_label},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 70: ALoopExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 4 /* 75: ALoopExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___ALoopExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) 0 /* 82: ALoopExpr < AAbsControl: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsControl___escapable},
-  {(bigint) syntax___typing___AAbsControl___process_control},
-  {(bigint) syntax___typing___ALoopExpr___process_control_inside},
-  {(bigint) parser___parser_prod___ALoopExpr___empty_init},
-  {(bigint) parser___parser_prod___ALoopExpr___init_aloopexpr},
-  {(bigint) 6 /* 88: ALoopExpr < ALoopExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ALoopExpr___n_kwloop},
-  {(bigint) parser___parser_nodes___ALoopExpr___n_block},
+  {(bigint) 0 /* 50: ReduceAction50 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction50___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction50 < ReduceAction50: superclass init_table position */},
 };
 /* 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__parser___parser_nodes___ALoopExpr(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction50::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction50[] = "init var of ReduceAction50";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___ALoopExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction50;
   fra.me.has_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:741 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___ALoopExpr____n_block(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:689 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___ALoopExpr(void)
+val_t NEW_parser___ReduceAction50(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 14);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ALoopExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction50;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___ALoopExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction50[] = "check new ReduceAction50";
+void CHECKNEW_parser___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_parser___parser_nodes___ALoopExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction50;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___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_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ALoopExpr_parser___parser_prod___ALoopExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction50_parser___ReduceAction___init[] = "new ReduceAction50 parser::ReduceAction::init";
+val_t NEW_ReduceAction50_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 3964;
-  fra.me.meth = LOCATE_NEW_ALoopExpr_parser___parser_prod___ALoopExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction50_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:3964 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ALoopExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ALoopExpr(fra.me.REG[0]);
-  parser___parser_prod___ALoopExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ALoopExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction50();
+  INIT_ATTRIBUTES__parser___ReduceAction50(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction50(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_ALoopExpr_parser___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 = 3966;
-  fra.me.meth = LOCATE_NEW_ALoopExpr_parser___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:3966 */
-  fra.me.REG[3] = NEW_parser___parser_nodes___ALoopExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ALoopExpr(fra.me.REG[3]);
-  parser___parser_prod___ALoopExpr___init_aloopexpr(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
-  CHECKNEW_parser___parser_nodes___ALoopExpr(fra.me.REG[3]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[3];
-}
-val_t NEW_ALoopExpr_parser___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___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_parser___parser_nodes___ALoopExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ALoopExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ALoopExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AForExpr[96] = {
-  {(bigint) 3659 /* 0: Identity */},
-  {(bigint) 18 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AForExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AForExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AForExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3087 /* 5: AForExpr < ALabelable: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: AForExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AForExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3523 /* 8: AForExpr < AAbsControl: superclass typecheck marker */},
-  {(bigint) 3659 /* 9: AForExpr < AForExpr: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction51[55] = {
+  {(bigint) 1103 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction51" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction51 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction51 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1103 /* 5: ReduceAction51 < ReduceAction51: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -58864,7 +98355,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AForExpr[96] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 18: AForExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction51 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -58880,6 +98371,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AForExpr[96] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -58893,229 +98386,92 @@ const classtable_elt_t VFT_parser___parser_nodes___AForExpr[96] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AForExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AForExpr___visit_all},
-  {(bigint) 2 /* 60: AForExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___AForExpr___accept_typing},
-  {(bigint) syntax___typing___AExpr___after_typing},
-  {(bigint) 5 /* 67: AForExpr < ALabelable: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ALabelable___n_label},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 70: AForExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 4 /* 75: AForExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___AForExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) 0 /* 82: AForExpr < AAbsControl: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsControl___escapable},
-  {(bigint) syntax___typing___AAbsControl___process_control},
-  {(bigint) syntax___typing___AForExpr___process_control_inside},
-  {(bigint) syntax___typing___AForExpr___do_typing},
-  {(bigint) syntax___typing___AForExpr___variables},
-  {(bigint) parser___parser_prod___AForExpr___empty_init},
-  {(bigint) parser___parser_prod___AForExpr___init_aforexpr},
-  {(bigint) 6 /* 90: AForExpr < AForExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AForExpr___n_kwfor},
-  {(bigint) parser___parser_nodes___AForExpr___n_ids},
-  {(bigint) parser___parser_nodes___AForExpr___n_expr},
-  {(bigint) parser___parser_nodes___AForExpr___n_kwdo},
-  {(bigint) parser___parser_nodes___AForExpr___n_block},
+  {(bigint) 0 /* 50: ReduceAction51 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction51___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction51 < ReduceAction51: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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::_variables */
-/* 13: Attribute AForExpr::_n_kwfor */
-/* 14: Attribute AForExpr::_n_ids */
-/* 15: Attribute AForExpr::_n_expr */
-/* 16: Attribute AForExpr::_n_kwdo */
-/* 17: Attribute AForExpr::_n_block */
-void INIT_ATTRIBUTES__parser___parser_nodes___AForExpr(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction51::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction51[] = "init var of ReduceAction51";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___AForExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction51;
   fra.me.has_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:747 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___AForExpr____n_ids(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:750 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AForExpr____n_block(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:689 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AForExpr(void)
+val_t NEW_parser___ReduceAction51(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 18);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AForExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction51;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AForExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction51[] = "check new ReduceAction51";
+void CHECKNEW_parser___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_parser___parser_nodes___AForExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction51;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___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___parser_nodes___AForExpr____n_ids(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_n_ids", LOCATE_nitc, 0);
-  }
-  REGB0 = TAG_Bool(ATTR_parser___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___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_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AForExpr_parser___parser_prod___AForExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction51_parser___ReduceAction___init[] = "new ReduceAction51 parser::ReduceAction::init";
+val_t NEW_ReduceAction51_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4031;
-  fra.me.meth = LOCATE_NEW_AForExpr_parser___parser_prod___AForExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction51_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:4031 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AForExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AForExpr(fra.me.REG[0]);
-  parser___parser_prod___AForExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AForExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction51();
+  INIT_ATTRIBUTES__parser___ReduceAction51(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction51(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AForExpr_parser___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 = 4033;
-  fra.me.meth = LOCATE_NEW_AForExpr_parser___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:4033 */
-  fra.me.REG[6] = NEW_parser___parser_nodes___AForExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AForExpr(fra.me.REG[6]);
-  parser___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_parser___parser_nodes___AForExpr(fra.me.REG[6]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[6];
-}
-val_t NEW_AForExpr_parser___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___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_parser___parser_nodes___AForExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AForExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AForExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AAssertExpr[89] = {
-  {(bigint) 3507 /* 0: Identity */},
-  {(bigint) 15 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AAssertExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AAssertExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AAssertExpr < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction52[55] = {
+  {(bigint) 1067 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction52" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction52 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction52 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1067 /* 5: ReduceAction52 < ReduceAction52: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AAssertExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AAssertExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3507 /* 8: AAssertExpr < AAssertExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -59125,7 +98481,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAssertExpr[89] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AAssertExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction52 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -59141,6 +98497,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AAssertExpr[89] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -59154,202 +98512,92 @@ const classtable_elt_t VFT_parser___parser_nodes___AAssertExpr[89] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AAssertExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AAssertExpr___visit_all},
-  {(bigint) 1 /* 60: AAssertExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___AAssertExpr___accept_typing},
-  {(bigint) syntax___typing___AExpr___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AAssertExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 75: AAssertExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___AAssertExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) parser___parser_prod___AAssertExpr___empty_init},
-  {(bigint) parser___parser_prod___AAssertExpr___init_aassertexpr},
-  {(bigint) 4 /* 84: AAssertExpr < AAssertExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AAssertExpr___n_kwassert},
-  {(bigint) parser___parser_nodes___AAssertExpr___n_id},
-  {(bigint) parser___parser_nodes___AAssertExpr___n_expr},
-  {(bigint) parser___parser_nodes___AAssertExpr___n_else},
+  {(bigint) 0 /* 50: ReduceAction52 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction52___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction52 < ReduceAction52: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AAssertExpr(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction52::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction52[] = "init var of ReduceAction52";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___AAssertExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction52;
   fra.me.has_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:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  /* ./parser//parser_nodes.nit:755 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AAssertExpr____n_id(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:757 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AAssertExpr____n_else(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AAssertExpr(void)
+val_t NEW_parser___ReduceAction52(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 15);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AAssertExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction52;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AAssertExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction52[] = "check new ReduceAction52";
+void CHECKNEW_parser___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_parser___parser_nodes___AAssertExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction52;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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___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___parser_nodes___AAssertExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AAssertExpr_parser___parser_prod___AAssertExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction52_parser___ReduceAction___init[] = "new ReduceAction52 parser::ReduceAction::init";
+val_t NEW_ReduceAction52_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4147;
-  fra.me.meth = LOCATE_NEW_AAssertExpr_parser___parser_prod___AAssertExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction52_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:4147 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AAssertExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AAssertExpr(fra.me.REG[0]);
-  parser___parser_prod___AAssertExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AAssertExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction52();
+  INIT_ATTRIBUTES__parser___ReduceAction52(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction52(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AAssertExpr_parser___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 = 4149;
-  fra.me.meth = LOCATE_NEW_AAssertExpr_parser___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:4149 */
-  fra.me.REG[4] = NEW_parser___parser_nodes___AAssertExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AAssertExpr(fra.me.REG[4]);
-  parser___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_parser___parser_nodes___AAssertExpr(fra.me.REG[4]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[4];
-}
-val_t NEW_AAssertExpr_parser___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___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_parser___parser_nodes___AAssertExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AAssertExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AAssertExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AAssignFormExpr[88] = {
-  {(bigint) 3503 /* 0: Identity */},
-  {(bigint) 15 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AAssignFormExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AAssignFormExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AAssignFormExpr < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction53[55] = {
+  {(bigint) 1039 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction53" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction53 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction53 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1039 /* 5: ReduceAction53 < ReduceAction53: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AAssignFormExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AAssignFormExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3503 /* 8: AAssignFormExpr < AAssignFormExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -59359,7 +98607,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAssignFormExpr[88] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AAssignFormExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction53 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -59375,6 +98623,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AAssignFormExpr[88] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -59388,148 +98638,92 @@ const classtable_elt_t VFT_parser___parser_nodes___AAssignFormExpr[88] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ANode___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ANode___visit_all},
-  {(bigint) 1 /* 60: AAssignFormExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___AExpr___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AAssignFormExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 75: AAssignFormExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___AExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 4 /* 85: AAssignFormExpr < AAssignFormExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AAssignFormExpr___n_assign},
-  {(bigint) parser___parser_nodes___AAssignFormExpr___n_value},
+  {(bigint) 0 /* 50: ReduceAction53 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction53___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction53 < ReduceAction53: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AAssignFormExpr(val_t p0){
+/* 2: Attribute ReduceAction53::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction53[] = "init var of ReduceAction53";
+void INIT_ATTRIBUTES__parser___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_INIT_ATTRIBUTES__parser___parser_nodes___AAssignFormExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction53;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AAssignFormExpr(void)
+val_t NEW_parser___ReduceAction53(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 15);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AAssignFormExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction53;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AAssignFormExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction53[] = "check new ReduceAction53";
+void CHECKNEW_parser___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_parser___parser_nodes___AAssignFormExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction53;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___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___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_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AAssignFormExpr_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ReduceAction53_parser___ReduceAction___init[] = "new ReduceAction53 parser::ReduceAction::init";
+val_t NEW_ReduceAction53_parser___ReduceAction___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};
+  int init_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_AAssignFormExpr_parser___parser_nodes___ANode___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction53_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___AAssignFormExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AAssignFormExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AAssignFormExpr(fra.me.REG[1]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction53();
+  INIT_ATTRIBUTES__parser___ReduceAction53(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction53(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AReassignFormExpr[90] = {
-  {(bigint) 3311 /* 0: Identity */},
-  {(bigint) 16 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AReassignFormExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AReassignFormExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AReassignFormExpr < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction54[55] = {
+  {(bigint) 999 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction54" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction54 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction54 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 999 /* 5: ReduceAction54 < ReduceAction54: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AReassignFormExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AReassignFormExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3311 /* 8: AReassignFormExpr < AReassignFormExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -59539,7 +98733,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AReassignFormExpr[90] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AReassignFormExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction54 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -59555,6 +98749,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AReassignFormExpr[90] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -59568,152 +98764,93 @@ const classtable_elt_t VFT_parser___parser_nodes___AReassignFormExpr[90] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ANode___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ANode___visit_all},
-  {(bigint) 1 /* 60: AReassignFormExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___AExpr___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AReassignFormExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 75: AReassignFormExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___AExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) syntax___typing___AReassignFormExpr___do_rvalue_typing},
-  {(bigint) syntax___typing___AReassignFormExpr___assign_method},
-  {(bigint) 4 /* 87: AReassignFormExpr < AReassignFormExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AReassignFormExpr___n_assign_op},
-  {(bigint) parser___parser_nodes___AReassignFormExpr___n_value},
+  {(bigint) 0 /* 50: ReduceAction54 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction54___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction54 < ReduceAction54: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AReassignFormExpr(val_t p0){
+/* 2: Attribute ReduceAction54::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction54[] = "init var of ReduceAction54";
+void INIT_ATTRIBUTES__parser___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_INIT_ATTRIBUTES__parser___parser_nodes___AReassignFormExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction54;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AReassignFormExpr(void)
+val_t NEW_parser___ReduceAction54(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 16);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AReassignFormExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction54;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AReassignFormExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction54[] = "check new ReduceAction54";
+void CHECKNEW_parser___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_parser___parser_nodes___AReassignFormExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction54;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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___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___parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AReassignFormExpr_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ReduceAction54_parser___ReduceAction___init[] = "new ReduceAction54 parser::ReduceAction::init";
+val_t NEW_ReduceAction54_parser___ReduceAction___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};
+  int init_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_AReassignFormExpr_parser___parser_nodes___ANode___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction54_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___AReassignFormExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AReassignFormExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AReassignFormExpr(fra.me.REG[1]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction54();
+  INIT_ATTRIBUTES__parser___ReduceAction54(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction54(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AOnceExpr[89] = {
-  {(bigint) 3615 /* 0: Identity */},
-  {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AOnceExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AOnceExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AOnceExpr < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction55[55] = {
+  {(bigint) 967 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction55" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction55 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction55 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 967 /* 5: ReduceAction55 < ReduceAction55: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AOnceExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AOnceExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3327 /* 8: AOnceExpr < AProxyExpr: superclass typecheck marker */},
-  {(bigint) 3615 /* 9: AOnceExpr < AOnceExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -59722,7 +98859,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AOnceExpr[89] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 18: AOnceExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction55 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -59738,6 +98875,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AOnceExpr[89] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -59751,199 +98890,102 @@ const classtable_elt_t VFT_parser___parser_nodes___AOnceExpr[89] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AOnceExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AOnceExpr___visit_all},
-  {(bigint) 2 /* 60: AOnceExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___AOnceExpr___accept_typing},
-  {(bigint) syntax___typing___AProxyExpr___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 70: AOnceExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 4 /* 75: AOnceExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___AOnceExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) 0 /* 82: AOnceExpr < AProxyExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AProxyExpr___n_expr},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) parser___parser_prod___AOnceExpr___empty_init},
-  {(bigint) parser___parser_prod___AOnceExpr___init_aonceexpr},
-  {(bigint) 5 /* 87: AOnceExpr < AOnceExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AOnceExpr___n_kwonce},
+  {(bigint) 0 /* 50: ReduceAction55 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction55___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction55 < ReduceAction55: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AOnceExpr(val_t p0){
+/* 2: Attribute ReduceAction55::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction55[] = "init var of ReduceAction55";
+void INIT_ATTRIBUTES__parser___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_INIT_ATTRIBUTES__parser___parser_nodes___AOnceExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction55;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AOnceExpr(void)
+val_t NEW_parser___ReduceAction55(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 13);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AOnceExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction55;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AOnceExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction55[] = "check new ReduceAction55";
+void CHECKNEW_parser___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_parser___parser_nodes___AOnceExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction55;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___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___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_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AOnceExpr_parser___parser_prod___AOnceExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction55_parser___ReduceAction___init[] = "new ReduceAction55 parser::ReduceAction::init";
+val_t NEW_ReduceAction55_parser___ReduceAction___init(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 = 4228;
-  fra.me.meth = LOCATE_NEW_AOnceExpr_parser___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:4228 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AOnceExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AOnceExpr(fra.me.REG[0]);
-  parser___parser_prod___AOnceExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AOnceExpr(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-val_t NEW_AOnceExpr_parser___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 = 4230;
-  fra.me.meth = LOCATE_NEW_AOnceExpr_parser___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:4230 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___AOnceExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AOnceExpr(fra.me.REG[2]);
-  parser___parser_prod___AOnceExpr___init_aonceexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___AOnceExpr(fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
-}
-val_t NEW_AOnceExpr_parser___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};
+  int init_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_AOnceExpr_parser___parser_nodes___ANode___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction55_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___AOnceExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AOnceExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AOnceExpr(fra.me.REG[1]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction55();
+  INIT_ATTRIBUTES__parser___ReduceAction55(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction55(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ASendExpr[111] = {
-  {(bigint) 3779 /* 0: Identity */},
-  {(bigint) 20 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ASendExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ASendExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ASendExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3527 /* 5: ASendExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: ASendExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: ASendExpr < AExpr: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction56[55] = {
+  {(bigint) 935 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction56" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction56 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction56 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 935 /* 5: ReduceAction56 < ReduceAction56: 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) 3739 /* 9: ASendExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3751 /* 10: ASendExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3779 /* 11: ASendExpr < ASendExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 5 /* 18: ASendExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction56 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -59959,6 +99001,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ASendExpr[111] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -59972,233 +99016,102 @@ const classtable_elt_t VFT_parser___parser_nodes___ASendExpr[111] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ASendExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ASendExpr___visit_all},
-  {(bigint) 4 /* 60: ASendExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ASendExpr___after_typing},
-  {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 68: ASendExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 70: ASendExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 75: ASendExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___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) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___compute_raw_arguments},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 94: ASendExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
-  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
-  {(bigint) syntax___typing___AAbsSendExpr___get_property},
-  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 1 /* 100: ASendExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsSendExpr___prop},
-  {(bigint) syntax___typing___AAbsSendExpr___return_type},
-  {(bigint) syntax___typing___ASendExpr___name},
-  {(bigint) syntax___typing___ASendExpr___do_all_typing},
-  {(bigint) syntax___typing___ASendExpr___closure_defs},
-  {(bigint) parser___parser_prod___ASendExpr___empty_init},
-  {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 108: ASendExpr < ASendExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ASendExpr___n_expr},
-  {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
+  {(bigint) 0 /* 50: ReduceAction56 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction56___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction56 < ReduceAction56: superclass init_table position */},
 };
 /* 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__parser___parser_nodes___ASendExpr(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction56::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction56[] = "init var of ReduceAction56";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___ASendExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction56;
   fra.me.has_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:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  /* ./parser//parser_nodes.nit:776 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//typing.nit:1388 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___ASendExpr(void)
+val_t NEW_parser___ReduceAction56(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 20);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ASendExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction56;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___ASendExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction56[] = "check new ReduceAction56";
+void CHECKNEW_parser___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_parser___parser_nodes___ASendExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction56;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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___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___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ASendExpr_parser___parser_prod___ASendExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction56_parser___ReduceAction___init[] = "new ReduceAction56 parser::ReduceAction::init";
+val_t NEW_ReduceAction56_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[8] = {0, 0, 0, 0, 0, 0, 0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4273;
-  fra.me.meth = LOCATE_NEW_ASendExpr_parser___parser_prod___ASendExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction56_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:4273 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ASendExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ASendExpr(fra.me.REG[0]);
-  parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ASendExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction56();
+  INIT_ATTRIBUTES__parser___ReduceAction56(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction56(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_ASendExpr_parser___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 = 4275;
-  fra.me.meth = LOCATE_NEW_ASendExpr_parser___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:4275 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___ASendExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ASendExpr(fra.me.REG[1]);
-  parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ASendExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_ASendExpr_parser___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___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_parser___parser_nodes___ASendExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ASendExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ASendExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___ABinopExpr[115] = {
-  {(bigint) 3803 /* 0: Identity */},
-  {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ABinopExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ABinopExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ABinopExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3527 /* 5: ABinopExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: ABinopExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: ABinopExpr < AExpr: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction57[55] = {
+  {(bigint) 907 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction57" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction57 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction57 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 907 /* 5: ReduceAction57 < ReduceAction57: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 3739 /* 9: ABinopExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3751 /* 10: ABinopExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3779 /* 11: ABinopExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 3803 /* 12: ABinopExpr < ABinopExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 5 /* 18: ABinopExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction57 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -60214,6 +99127,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ABinopExpr[115] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -60227,275 +99142,92 @@ const classtable_elt_t VFT_parser___parser_nodes___ABinopExpr[115] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ABinopExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ABinopExpr___visit_all},
-  {(bigint) 4 /* 60: ABinopExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ASendExpr___after_typing},
-  {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 68: ABinopExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 70: ABinopExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 75: ABinopExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___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) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
-  {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 94: ABinopExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
-  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
-  {(bigint) syntax___typing___AAbsSendExpr___get_property},
-  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 1 /* 100: ABinopExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsSendExpr___prop},
-  {(bigint) syntax___typing___AAbsSendExpr___return_type},
-  {(bigint) syntax___typing___ASendExpr___name},
-  {(bigint) syntax___typing___ASendExpr___do_all_typing},
-  {(bigint) syntax___typing___ASendExpr___closure_defs},
-  {(bigint) parser___parser_prod___ASendExpr___empty_init},
-  {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 108: ABinopExpr < ASendExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ASendExpr___n_expr},
-  {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) parser___parser_prod___ABinopExpr___empty_init},
-  {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 8 /* 113: ABinopExpr < ABinopExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
+  {(bigint) 0 /* 50: ReduceAction57 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction57___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction57 < ReduceAction57: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___ABinopExpr(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction57::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction57[] = "init var of ReduceAction57";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___ABinopExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction57;
   fra.me.has_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:776 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  /* ./syntax//typing.nit:1388 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___ABinopExpr(void)
+val_t NEW_parser___ReduceAction57(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 21);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ABinopExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction57;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___ABinopExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction57[] = "check new ReduceAction57";
+void CHECKNEW_parser___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_parser___parser_nodes___ABinopExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction57;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___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___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___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_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ABinopExpr_parser___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 = 4273;
-  fra.me.meth = LOCATE_NEW_ABinopExpr_parser___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:4273 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ABinopExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ABinopExpr(fra.me.REG[0]);
-  parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ABinopExpr(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-val_t NEW_ABinopExpr_parser___parser_prod___ABinopExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction57_parser___ReduceAction___init[] = "new ReduceAction57 parser::ReduceAction::init";
+val_t NEW_ReduceAction57_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4304;
-  fra.me.meth = LOCATE_NEW_ABinopExpr_parser___parser_prod___ABinopExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction57_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:4304 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ABinopExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ABinopExpr(fra.me.REG[0]);
-  parser___parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ABinopExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction57();
+  INIT_ATTRIBUTES__parser___ReduceAction57(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction57(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_ABinopExpr_parser___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 = 4306;
-  fra.me.meth = LOCATE_NEW_ABinopExpr_parser___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:4306 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___ABinopExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ABinopExpr(fra.me.REG[2]);
-  parser___parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___ABinopExpr(fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
-}
-val_t NEW_ABinopExpr_parser___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___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_parser___parser_nodes___ABinopExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ABinopExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ABinopExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_ABinopExpr_parser___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 = 4275;
-  fra.me.meth = LOCATE_NEW_ABinopExpr_parser___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:4275 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___ABinopExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ABinopExpr(fra.me.REG[1]);
-  parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ABinopExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___ABoolExpr[83] = {
-  {(bigint) 3483 /* 0: Identity */},
-  {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ABoolExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ABoolExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ABoolExpr < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction58[55] = {
+  {(bigint) 863 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction58" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction58 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction58 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 863 /* 5: ReduceAction58 < ReduceAction58: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: ABoolExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: ABoolExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3483 /* 8: ABoolExpr < ABoolExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -60505,7 +99237,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ABoolExpr[83] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: ABoolExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction58 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -60521,6 +99253,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ABoolExpr[83] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -60534,130 +99268,93 @@ const classtable_elt_t VFT_parser___parser_nodes___ABoolExpr[83] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ANode___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ANode___visit_all},
-  {(bigint) 1 /* 60: ABoolExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ABoolExpr___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: ABoolExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 75: ABoolExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___AExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) 4 /* 82: ABoolExpr < ABoolExpr: superclass init_table position */},
+  {(bigint) 0 /* 50: ReduceAction58 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction58___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction58 < ReduceAction58: 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__parser___parser_nodes___ABoolExpr(val_t p0){
+/* 2: Attribute ReduceAction58::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction58[] = "init var of ReduceAction58";
+void INIT_ATTRIBUTES__parser___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_INIT_ATTRIBUTES__parser___parser_nodes___ABoolExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction58;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___ABoolExpr(void)
+val_t NEW_parser___ReduceAction58(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 11);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ABoolExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction58;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___ABoolExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction58[] = "check new ReduceAction58";
+void CHECKNEW_parser___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_parser___parser_nodes___ABoolExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction58;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ABoolExpr_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ReduceAction58_parser___ReduceAction___init[] = "new ReduceAction58 parser::ReduceAction::init";
+val_t NEW_ReduceAction58_parser___ReduceAction___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};
+  int init_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_ABoolExpr_parser___parser_nodes___ANode___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction58_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___ABoolExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ABoolExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ABoolExpr(fra.me.REG[1]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction58();
+  INIT_ATTRIBUTES__parser___ReduceAction58(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction58(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AOrExpr[88] = {
-  {(bigint) 3607 /* 0: Identity */},
-  {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AOrExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AOrExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AOrExpr < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction59[55] = {
+  {(bigint) 823 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction59" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction59 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction59 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 823 /* 5: ReduceAction59 < ReduceAction59: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AOrExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AOrExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3483 /* 8: AOrExpr < ABoolExpr: superclass typecheck marker */},
-  {(bigint) 3607 /* 9: AOrExpr < AOrExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -60666,7 +99363,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AOrExpr[88] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AOrExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction59 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -60682,6 +99379,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AOrExpr[88] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -60695,189 +99394,93 @@ const classtable_elt_t VFT_parser___parser_nodes___AOrExpr[88] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AOrExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AOrExpr___visit_all},
-  {(bigint) 1 /* 60: AOrExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___AOrExpr___accept_typing},
-  {(bigint) syntax___typing___ABoolExpr___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AOrExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 75: AOrExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___AOrExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) 4 /* 82: AOrExpr < ABoolExpr: superclass init_table position */},
-  {(bigint) parser___parser_prod___AOrExpr___empty_init},
-  {(bigint) parser___parser_prod___AOrExpr___init_aorexpr},
-  {(bigint) 5 /* 85: AOrExpr < AOrExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AOrExpr___n_expr},
-  {(bigint) parser___parser_nodes___AOrExpr___n_expr2},
+  {(bigint) 0 /* 50: ReduceAction59 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction59___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction59 < ReduceAction59: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AOrExpr(val_t p0){
+/* 2: Attribute ReduceAction59::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction59[] = "init var of ReduceAction59";
+void INIT_ATTRIBUTES__parser___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_INIT_ATTRIBUTES__parser___parser_nodes___AOrExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction59;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AOrExpr(void)
+val_t NEW_parser___ReduceAction59(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 13);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AOrExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction59;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AOrExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction59[] = "check new ReduceAction59";
+void CHECKNEW_parser___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_parser___parser_nodes___AOrExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction59;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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___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___parser_nodes___AOrExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AOrExpr_parser___parser_prod___AOrExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction59_parser___ReduceAction___init[] = "new ReduceAction59 parser::ReduceAction::init";
+val_t NEW_ReduceAction59_parser___ReduceAction___init(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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4349;
-  fra.me.meth = LOCATE_NEW_AOrExpr_parser___parser_prod___AOrExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction59_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:4349 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AOrExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AOrExpr(fra.me.REG[0]);
-  parser___parser_prod___AOrExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AOrExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction59();
+  INIT_ATTRIBUTES__parser___ReduceAction59(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction59(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AOrExpr_parser___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 = 4351;
-  fra.me.meth = LOCATE_NEW_AOrExpr_parser___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:4351 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___AOrExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AOrExpr(fra.me.REG[2]);
-  parser___parser_prod___AOrExpr___init_aorexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___AOrExpr(fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
-}
-val_t NEW_AOrExpr_parser___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___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_parser___parser_nodes___AOrExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AOrExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AOrExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AAndExpr[88] = {
-  {(bigint) 3735 /* 0: Identity */},
-  {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AAndExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AAndExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AAndExpr < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction60[55] = {
+  {(bigint) 779 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction60" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction60 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction60 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 779 /* 5: ReduceAction60 < ReduceAction60: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AAndExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AAndExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3483 /* 8: AAndExpr < ABoolExpr: superclass typecheck marker */},
-  {(bigint) 3735 /* 9: AAndExpr < AAndExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -60886,7 +99489,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAndExpr[88] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AAndExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction60 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -60902,6 +99505,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AAndExpr[88] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -60915,189 +99520,93 @@ const classtable_elt_t VFT_parser___parser_nodes___AAndExpr[88] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AAndExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AAndExpr___visit_all},
-  {(bigint) 1 /* 60: AAndExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___AAndExpr___accept_typing},
-  {(bigint) syntax___typing___ABoolExpr___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AAndExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 75: AAndExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___AAndExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) 4 /* 82: AAndExpr < ABoolExpr: superclass init_table position */},
-  {(bigint) parser___parser_prod___AAndExpr___empty_init},
-  {(bigint) parser___parser_prod___AAndExpr___init_aandexpr},
-  {(bigint) 5 /* 85: AAndExpr < AAndExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AAndExpr___n_expr},
-  {(bigint) parser___parser_nodes___AAndExpr___n_expr2},
+  {(bigint) 0 /* 50: ReduceAction60 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction60___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction60 < ReduceAction60: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AAndExpr(val_t p0){
+/* 2: Attribute ReduceAction60::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction60[] = "init var of ReduceAction60";
+void INIT_ATTRIBUTES__parser___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_INIT_ATTRIBUTES__parser___parser_nodes___AAndExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction60;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AAndExpr(void)
+val_t NEW_parser___ReduceAction60(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 13);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AAndExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction60;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AAndExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction60[] = "check new ReduceAction60";
+void CHECKNEW_parser___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_parser___parser_nodes___AAndExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction60;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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___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___parser_nodes___AAndExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AAndExpr_parser___parser_prod___AAndExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction60_parser___ReduceAction___init[] = "new ReduceAction60 parser::ReduceAction::init";
+val_t NEW_ReduceAction60_parser___ReduceAction___init(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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4394;
-  fra.me.meth = LOCATE_NEW_AAndExpr_parser___parser_prod___AAndExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction60_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:4394 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AAndExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AAndExpr(fra.me.REG[0]);
-  parser___parser_prod___AAndExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AAndExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction60();
+  INIT_ATTRIBUTES__parser___ReduceAction60(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction60(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AAndExpr_parser___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 = 4396;
-  fra.me.meth = LOCATE_NEW_AAndExpr_parser___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:4396 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___AAndExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AAndExpr(fra.me.REG[2]);
-  parser___parser_prod___AAndExpr___init_aandexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___AAndExpr(fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
-}
-val_t NEW_AAndExpr_parser___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___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_parser___parser_nodes___AAndExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AAndExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AAndExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AOrElseExpr[88] = {
-  {(bigint) 3611 /* 0: Identity */},
-  {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AOrElseExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AOrElseExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AOrElseExpr < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction61[55] = {
+  {(bigint) 735 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction61" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction61 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction61 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 735 /* 5: ReduceAction61 < ReduceAction61: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AOrElseExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AOrElseExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3483 /* 8: AOrElseExpr < ABoolExpr: superclass typecheck marker */},
-  {(bigint) 3611 /* 9: AOrElseExpr < AOrElseExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -61106,7 +99615,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AOrElseExpr[88] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AOrElseExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction61 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -61122,6 +99631,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AOrElseExpr[88] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -61135,189 +99646,93 @@ const classtable_elt_t VFT_parser___parser_nodes___AOrElseExpr[88] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AOrElseExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AOrElseExpr___visit_all},
-  {(bigint) 1 /* 60: AOrElseExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___AOrElseExpr___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AOrElseExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 75: AOrElseExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___AOrElseExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) 4 /* 82: AOrElseExpr < ABoolExpr: superclass init_table position */},
-  {(bigint) parser___parser_prod___AOrElseExpr___empty_init},
-  {(bigint) parser___parser_prod___AOrElseExpr___init_aorelseexpr},
-  {(bigint) 5 /* 85: AOrElseExpr < AOrElseExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AOrElseExpr___n_expr},
-  {(bigint) parser___parser_nodes___AOrElseExpr___n_expr2},
+  {(bigint) 0 /* 50: ReduceAction61 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction61___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction61 < ReduceAction61: superclass init_table position */},
 };
 /* 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__parser___parser_nodes___AOrElseExpr(val_t p0){
+/* 2: Attribute ReduceAction61::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction61[] = "init var of ReduceAction61";
+void INIT_ATTRIBUTES__parser___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_INIT_ATTRIBUTES__parser___parser_nodes___AOrElseExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction61;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AOrElseExpr(void)
+val_t NEW_parser___ReduceAction61(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 13);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AOrElseExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction61;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AOrElseExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction61[] = "check new ReduceAction61";
+void CHECKNEW_parser___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_parser___parser_nodes___AOrElseExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction61;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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___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___parser_nodes___AOrElseExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AOrElseExpr_parser___parser_prod___AOrElseExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction61_parser___ReduceAction___init[] = "new ReduceAction61 parser::ReduceAction::init";
+val_t NEW_ReduceAction61_parser___ReduceAction___init(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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4439;
-  fra.me.meth = LOCATE_NEW_AOrElseExpr_parser___parser_prod___AOrElseExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction61_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:4439 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AOrElseExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AOrElseExpr(fra.me.REG[0]);
-  parser___parser_prod___AOrElseExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AOrElseExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction61();
+  INIT_ATTRIBUTES__parser___ReduceAction61(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction61(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AOrElseExpr_parser___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 = 4441;
-  fra.me.meth = LOCATE_NEW_AOrElseExpr_parser___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:4441 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___AOrElseExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AOrElseExpr(fra.me.REG[2]);
-  parser___parser_prod___AOrElseExpr___init_aorelseexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___AOrElseExpr(fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
-}
-val_t NEW_AOrElseExpr_parser___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___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_parser___parser_nodes___AOrElseExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AOrElseExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AOrElseExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___ANotExpr[88] = {
-  {(bigint) 3619 /* 0: Identity */},
-  {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ANotExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ANotExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ANotExpr < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction62[55] = {
+  {(bigint) 695 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction62" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction62 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction62 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 695 /* 5: ReduceAction62 < ReduceAction62: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: ANotExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: ANotExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3483 /* 8: ANotExpr < ABoolExpr: superclass typecheck marker */},
-  {(bigint) 3619 /* 9: ANotExpr < ANotExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -61326,7 +99741,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ANotExpr[88] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: ANotExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction62 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -61342,6 +99757,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ANotExpr[88] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -61355,198 +99772,102 @@ const classtable_elt_t VFT_parser___parser_nodes___ANotExpr[88] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ANotExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ANotExpr___visit_all},
-  {(bigint) 1 /* 60: ANotExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANotExpr___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: ANotExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 75: ANotExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___ANotExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) 4 /* 82: ANotExpr < ABoolExpr: superclass init_table position */},
-  {(bigint) parser___parser_prod___ANotExpr___empty_init},
-  {(bigint) parser___parser_prod___ANotExpr___init_anotexpr},
-  {(bigint) 5 /* 85: ANotExpr < ANotExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANotExpr___n_kwnot},
-  {(bigint) parser___parser_nodes___ANotExpr___n_expr},
+  {(bigint) 0 /* 50: ReduceAction62 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction62___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction62 < ReduceAction62: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___ANotExpr(val_t p0){
+/* 2: Attribute ReduceAction62::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction62[] = "init var of ReduceAction62";
+void INIT_ATTRIBUTES__parser___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_INIT_ATTRIBUTES__parser___parser_nodes___ANotExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction62;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___ANotExpr(void)
+val_t NEW_parser___ReduceAction62(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 13);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ANotExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction62;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___ANotExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction62[] = "check new ReduceAction62";
+void CHECKNEW_parser___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_parser___parser_nodes___ANotExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction62;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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___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___parser_nodes___ANotExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ANotExpr_parser___parser_prod___ANotExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction62_parser___ReduceAction___init[] = "new ReduceAction62 parser::ReduceAction::init";
+val_t NEW_ReduceAction62_parser___ReduceAction___init(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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4484;
-  fra.me.meth = LOCATE_NEW_ANotExpr_parser___parser_prod___ANotExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction62_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:4484 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ANotExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ANotExpr(fra.me.REG[0]);
-  parser___parser_prod___ANotExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ANotExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction62();
+  INIT_ATTRIBUTES__parser___ReduceAction62(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction62(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_ANotExpr_parser___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 = 4486;
-  fra.me.meth = LOCATE_NEW_ANotExpr_parser___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:4486 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___ANotExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ANotExpr(fra.me.REG[2]);
-  parser___parser_prod___ANotExpr___init_anotexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___ANotExpr(fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
-}
-val_t NEW_ANotExpr_parser___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___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_parser___parser_nodes___ANotExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ANotExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ANotExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AEqExpr[120] = {
-  {(bigint) 3859 /* 0: Identity */},
-  {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AEqExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AEqExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AEqExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3527 /* 5: AEqExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: AEqExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AEqExpr < AExpr: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction63[55] = {
+  {(bigint) 655 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction63" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction63 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction63 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 655 /* 5: ReduceAction63 < ReduceAction63: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 3739 /* 9: AEqExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3751 /* 10: AEqExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3779 /* 11: AEqExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 3803 /* 12: AEqExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 3859 /* 13: AEqExpr < AEqExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 5 /* 18: AEqExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction63 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -61562,6 +99883,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AEqExpr[120] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -61575,323 +99898,93 @@ const classtable_elt_t VFT_parser___parser_nodes___AEqExpr[120] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AEqExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AEqExpr___visit_all},
-  {(bigint) 4 /* 60: AEqExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___AEqExpr___after_typing},
-  {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 68: AEqExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 70: AEqExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 75: AEqExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___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) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
-  {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 94: AEqExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
-  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
-  {(bigint) syntax___typing___AAbsSendExpr___get_property},
-  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 1 /* 100: AEqExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsSendExpr___prop},
-  {(bigint) syntax___typing___AAbsSendExpr___return_type},
-  {(bigint) syntax___typing___AEqExpr___name},
-  {(bigint) syntax___typing___ASendExpr___do_all_typing},
-  {(bigint) syntax___typing___ASendExpr___closure_defs},
-  {(bigint) parser___parser_prod___ASendExpr___empty_init},
-  {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 108: AEqExpr < ASendExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ASendExpr___n_expr},
-  {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) parser___parser_prod___ABinopExpr___empty_init},
-  {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 8 /* 113: AEqExpr < ABinopExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
-  {(bigint) syntax___typing___ASendExpr___after_typing},
-  {(bigint) syntax___typing___AEqExpr___try_to_isa},
-  {(bigint) parser___parser_prod___AEqExpr___empty_init},
-  {(bigint) parser___parser_prod___AEqExpr___init_aeqexpr},
-  {(bigint) 9 /* 119: AEqExpr < AEqExpr: superclass init_table position */},
+  {(bigint) 0 /* 50: ReduceAction63 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction63___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction63 < ReduceAction63: 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__parser___parser_nodes___AEqExpr(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction63::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction63[] = "init var of ReduceAction63";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___AEqExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction63;
   fra.me.has_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:776 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  /* ./syntax//typing.nit:1388 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AEqExpr(void)
+val_t NEW_parser___ReduceAction63(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 21);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AEqExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction63;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AEqExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction63[] = "check new ReduceAction63";
+void CHECKNEW_parser___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_parser___parser_nodes___AEqExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction63;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___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___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___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_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AEqExpr_parser___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 = 4304;
-  fra.me.meth = LOCATE_NEW_AEqExpr_parser___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:4304 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AEqExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AEqExpr(fra.me.REG[0]);
-  parser___parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AEqExpr(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-val_t NEW_AEqExpr_parser___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 = 4529;
-  fra.me.meth = LOCATE_NEW_AEqExpr_parser___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:4529 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AEqExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AEqExpr(fra.me.REG[0]);
-  parser___parser_prod___AEqExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AEqExpr(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-val_t NEW_AEqExpr_parser___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 = 4531;
-  fra.me.meth = LOCATE_NEW_AEqExpr_parser___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:4531 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___AEqExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AEqExpr(fra.me.REG[2]);
-  parser___parser_prod___AEqExpr___init_aeqexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___AEqExpr(fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
-}
-val_t NEW_AEqExpr_parser___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___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_parser___parser_nodes___AEqExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AEqExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AEqExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_AEqExpr_parser___parser_prod___ASendExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction63_parser___ReduceAction___init[] = "new ReduceAction63 parser::ReduceAction::init";
+val_t NEW_ReduceAction63_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4273;
-  fra.me.meth = LOCATE_NEW_AEqExpr_parser___parser_prod___ASendExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction63_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:4273 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AEqExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AEqExpr(fra.me.REG[0]);
-  parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AEqExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction63();
+  INIT_ATTRIBUTES__parser___ReduceAction63(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction63(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AEqExpr_parser___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 = 4306;
-  fra.me.meth = LOCATE_NEW_AEqExpr_parser___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:4306 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___AEqExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AEqExpr(fra.me.REG[2]);
-  parser___parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___AEqExpr(fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
-}
-val_t NEW_AEqExpr_parser___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 = 4275;
-  fra.me.meth = LOCATE_NEW_AEqExpr_parser___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:4275 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___AEqExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AEqExpr(fra.me.REG[1]);
-  parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AEqExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AEeExpr[88] = {
-  {(bigint) 3675 /* 0: Identity */},
-  {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AEeExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AEeExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AEeExpr < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction64[55] = {
+  {(bigint) 623 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction64" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction64 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction64 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 623 /* 5: ReduceAction64 < ReduceAction64: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AEeExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AEeExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3483 /* 8: AEeExpr < ABoolExpr: superclass typecheck marker */},
-  {(bigint) 3675 /* 9: AEeExpr < AEeExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -61900,7 +99993,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AEeExpr[88] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AEeExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction64 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -61916,6 +100009,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AEeExpr[88] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -61929,198 +100024,102 @@ const classtable_elt_t VFT_parser___parser_nodes___AEeExpr[88] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AEeExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AEeExpr___visit_all},
-  {(bigint) 1 /* 60: AEeExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ABoolExpr___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AEeExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 75: AEeExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___AEeExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) 4 /* 82: AEeExpr < ABoolExpr: superclass init_table position */},
-  {(bigint) parser___parser_prod___AEeExpr___empty_init},
-  {(bigint) parser___parser_prod___AEeExpr___init_aeeexpr},
-  {(bigint) 5 /* 85: AEeExpr < AEeExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AEeExpr___n_expr},
-  {(bigint) parser___parser_nodes___AEeExpr___n_expr2},
+  {(bigint) 0 /* 50: ReduceAction64 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction64___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction64 < ReduceAction64: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AEeExpr(val_t p0){
+/* 2: Attribute ReduceAction64::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction64[] = "init var of ReduceAction64";
+void INIT_ATTRIBUTES__parser___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_INIT_ATTRIBUTES__parser___parser_nodes___AEeExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction64;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AEeExpr(void)
+val_t NEW_parser___ReduceAction64(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 13);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AEeExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction64;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AEeExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction64[] = "check new ReduceAction64";
+void CHECKNEW_parser___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_parser___parser_nodes___AEeExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction64;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___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___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_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AEeExpr_parser___parser_prod___AEeExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction64_parser___ReduceAction___init[] = "new ReduceAction64 parser::ReduceAction::init";
+val_t NEW_ReduceAction64_parser___ReduceAction___init(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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4574;
-  fra.me.meth = LOCATE_NEW_AEeExpr_parser___parser_prod___AEeExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction64_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:4574 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AEeExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AEeExpr(fra.me.REG[0]);
-  parser___parser_prod___AEeExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AEeExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction64();
+  INIT_ATTRIBUTES__parser___ReduceAction64(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction64(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AEeExpr_parser___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 = 4576;
-  fra.me.meth = LOCATE_NEW_AEeExpr_parser___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:4576 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___AEeExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AEeExpr(fra.me.REG[2]);
-  parser___parser_prod___AEeExpr___init_aeeexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___AEeExpr(fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
-}
-val_t NEW_AEeExpr_parser___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___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_parser___parser_nodes___AEeExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AEeExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AEeExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___ANeExpr[120] = {
-  {(bigint) 3827 /* 0: Identity */},
-  {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ANeExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ANeExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ANeExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3527 /* 5: ANeExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: ANeExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: ANeExpr < AExpr: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction65[55] = {
+  {(bigint) 579 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction65" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction65 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction65 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 579 /* 5: ReduceAction65 < ReduceAction65: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 3739 /* 9: ANeExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3751 /* 10: ANeExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3779 /* 11: ANeExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 3803 /* 12: ANeExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 3827 /* 13: ANeExpr < ANeExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 5 /* 18: ANeExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction65 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -62136,6 +100135,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ANeExpr[120] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -62149,332 +100150,228 @@ const classtable_elt_t VFT_parser___parser_nodes___ANeExpr[120] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ANeExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ANeExpr___visit_all},
-  {(bigint) 4 /* 60: ANeExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANeExpr___after_typing},
-  {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 68: ANeExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 70: ANeExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 75: ANeExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___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) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
-  {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 94: ANeExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
-  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
-  {(bigint) syntax___typing___AAbsSendExpr___get_property},
-  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 1 /* 100: ANeExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsSendExpr___prop},
-  {(bigint) syntax___typing___AAbsSendExpr___return_type},
-  {(bigint) syntax___typing___ANeExpr___name},
-  {(bigint) syntax___typing___ASendExpr___do_all_typing},
-  {(bigint) syntax___typing___ASendExpr___closure_defs},
-  {(bigint) parser___parser_prod___ASendExpr___empty_init},
-  {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 108: ANeExpr < ASendExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ASendExpr___n_expr},
-  {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) parser___parser_prod___ABinopExpr___empty_init},
-  {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 8 /* 113: ANeExpr < ABinopExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
-  {(bigint) syntax___typing___ASendExpr___after_typing},
-  {(bigint) syntax___typing___ANeExpr___try_to_isa},
-  {(bigint) parser___parser_prod___ANeExpr___empty_init},
-  {(bigint) parser___parser_prod___ANeExpr___init_aneexpr},
-  {(bigint) 9 /* 119: ANeExpr < ANeExpr: superclass init_table position */},
+  {(bigint) 0 /* 50: ReduceAction65 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction65___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction65 < ReduceAction65: 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__parser___parser_nodes___ANeExpr(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction65::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction65[] = "init var of ReduceAction65";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___ANeExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction65;
   fra.me.has_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:776 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  /* ./syntax//typing.nit:1388 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___ANeExpr(void)
+val_t NEW_parser___ReduceAction65(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 21);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ANeExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction65;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___ANeExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction65[] = "check new ReduceAction65";
+void CHECKNEW_parser___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_parser___parser_nodes___ANeExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction65;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___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___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___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_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ANeExpr_parser___parser_prod___ABinopExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction65_parser___ReduceAction___init[] = "new ReduceAction65 parser::ReduceAction::init";
+val_t NEW_ReduceAction65_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4304;
-  fra.me.meth = LOCATE_NEW_ANeExpr_parser___parser_prod___ABinopExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction65_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:4304 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ANeExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ANeExpr(fra.me.REG[0]);
-  parser___parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ANeExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction65();
+  INIT_ATTRIBUTES__parser___ReduceAction65(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction65(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_ANeExpr_parser___parser_prod___ANeExpr___empty_init(void){
+const classtable_elt_t VFT_parser___ReduceAction66[55] = {
+  {(bigint) 543 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction66" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction66 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction66 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 543 /* 5: ReduceAction66 < ReduceAction66: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction66 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 50: ReduceAction66 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction66___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction66 < ReduceAction66: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ReduceAction66::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction66[] = "init var of ReduceAction66";
+void INIT_ATTRIBUTES__parser___ReduceAction66(val_t p0){
   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 = 4619;
-  fra.me.meth = LOCATE_NEW_ANeExpr_parser___parser_prod___ANeExpr___empty_init;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction66;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:4619 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ANeExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ANeExpr(fra.me.REG[0]);
-  parser___parser_prod___ANeExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ANeExpr(fra.me.REG[0]);
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
 }
-val_t NEW_ANeExpr_parser___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 = 4621;
-  fra.me.meth = LOCATE_NEW_ANeExpr_parser___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:4621 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___ANeExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ANeExpr(fra.me.REG[2]);
-  parser___parser_prod___ANeExpr___init_aneexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___ANeExpr(fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+val_t NEW_parser___ReduceAction66(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction66;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
 }
-val_t NEW_ANeExpr_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_CHECKNEW_parser___ReduceAction66[] = "check new ReduceAction66";
+void CHECKNEW_parser___ReduceAction66(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   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___parser_nodes___ANode___init;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction66;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___ANeExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ANeExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ANeExpr(fra.me.REG[1]);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
 }
-val_t NEW_ANeExpr_parser___parser_prod___ASendExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction66_parser___ReduceAction___init[] = "new ReduceAction66 parser::ReduceAction::init";
+val_t NEW_ReduceAction66_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4273;
-  fra.me.meth = LOCATE_NEW_ANeExpr_parser___parser_prod___ASendExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction66_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:4273 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ANeExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ANeExpr(fra.me.REG[0]);
-  parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ANeExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction66();
+  INIT_ATTRIBUTES__parser___ReduceAction66(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction66(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_ANeExpr_parser___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 = 4306;
-  fra.me.meth = LOCATE_NEW_ANeExpr_parser___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:4306 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___ANeExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ANeExpr(fra.me.REG[2]);
-  parser___parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___ANeExpr(fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
-}
-val_t NEW_ANeExpr_parser___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 = 4275;
-  fra.me.meth = LOCATE_NEW_ANeExpr_parser___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:4275 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___ANeExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ANeExpr(fra.me.REG[1]);
-  parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ANeExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___ALtExpr[118] = {
-  {(bigint) 3835 /* 0: Identity */},
-  {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ALtExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ALtExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ALtExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3527 /* 5: ALtExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: ALtExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: ALtExpr < AExpr: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction67[55] = {
+  {(bigint) 539 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction67" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction67 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction67 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 539 /* 5: ReduceAction67 < ReduceAction67: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 3739 /* 9: ALtExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3751 /* 10: ALtExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3779 /* 11: ALtExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 3803 /* 12: ALtExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 3835 /* 13: ALtExpr < ALtExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 5 /* 18: ALtExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction67 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -62490,6 +100387,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ALtExpr[118] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -62503,330 +100402,228 @@ const classtable_elt_t VFT_parser___parser_nodes___ALtExpr[118] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ALtExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ALtExpr___visit_all},
-  {(bigint) 4 /* 60: ALtExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ASendExpr___after_typing},
-  {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 68: ALtExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 70: ALtExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 75: ALtExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___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) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
-  {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 94: ALtExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
-  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
-  {(bigint) syntax___typing___AAbsSendExpr___get_property},
-  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 1 /* 100: ALtExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsSendExpr___prop},
-  {(bigint) syntax___typing___AAbsSendExpr___return_type},
-  {(bigint) syntax___typing___ALtExpr___name},
-  {(bigint) syntax___typing___ASendExpr___do_all_typing},
-  {(bigint) syntax___typing___ASendExpr___closure_defs},
-  {(bigint) parser___parser_prod___ASendExpr___empty_init},
-  {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 108: ALtExpr < ASendExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ASendExpr___n_expr},
-  {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) parser___parser_prod___ABinopExpr___empty_init},
-  {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 8 /* 113: ALtExpr < ABinopExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
-  {(bigint) parser___parser_prod___ALtExpr___empty_init},
-  {(bigint) parser___parser_prod___ALtExpr___init_altexpr},
-  {(bigint) 9 /* 117: ALtExpr < ALtExpr: superclass init_table position */},
+  {(bigint) 0 /* 50: ReduceAction67 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction67___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction67 < ReduceAction67: 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__parser___parser_nodes___ALtExpr(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction67::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction67[] = "init var of ReduceAction67";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___ALtExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction67;
   fra.me.has_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:776 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  /* ./syntax//typing.nit:1388 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___ALtExpr(void)
+val_t NEW_parser___ReduceAction67(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 21);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ALtExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction67;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___ALtExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction67[] = "check new ReduceAction67";
+void CHECKNEW_parser___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_parser___parser_nodes___ALtExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction67;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___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___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___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_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ALtExpr_parser___parser_prod___ABinopExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction67_parser___ReduceAction___init[] = "new ReduceAction67 parser::ReduceAction::init";
+val_t NEW_ReduceAction67_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4304;
-  fra.me.meth = LOCATE_NEW_ALtExpr_parser___parser_prod___ABinopExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction67_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:4304 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ALtExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ALtExpr(fra.me.REG[0]);
-  parser___parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ALtExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction67();
+  INIT_ATTRIBUTES__parser___ReduceAction67(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction67(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_ALtExpr_parser___parser_prod___ALtExpr___empty_init(void){
+const classtable_elt_t VFT_parser___ReduceAction68[55] = {
+  {(bigint) 535 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction68" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction68 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction68 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 535 /* 5: ReduceAction68 < ReduceAction68: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction68 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 50: ReduceAction68 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction68___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction68 < ReduceAction68: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ReduceAction68::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction68[] = "init var of ReduceAction68";
+void INIT_ATTRIBUTES__parser___ReduceAction68(val_t p0){
   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 = 4664;
-  fra.me.meth = LOCATE_NEW_ALtExpr_parser___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:4664 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ALtExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ALtExpr(fra.me.REG[0]);
-  parser___parser_prod___ALtExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ALtExpr(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-val_t NEW_ALtExpr_parser___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 = 4666;
-  fra.me.meth = LOCATE_NEW_ALtExpr_parser___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:4666 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___ALtExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ALtExpr(fra.me.REG[2]);
-  parser___parser_prod___ALtExpr___init_altexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___ALtExpr(fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
-}
-val_t NEW_ALtExpr_parser___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___parser_nodes___ANode___init;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction68;
   fra.me.has_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_parser___parser_nodes___ALtExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ALtExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ALtExpr(fra.me.REG[1]);
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
 }
-val_t NEW_ALtExpr_parser___parser_prod___ASendExpr___empty_init(void){
+val_t NEW_parser___ReduceAction68(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction68;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___ReduceAction68[] = "check new ReduceAction68";
+void CHECKNEW_parser___ReduceAction68(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   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 = 4273;
-  fra.me.meth = LOCATE_NEW_ALtExpr_parser___parser_prod___ASendExpr___empty_init;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction68;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:4273 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ALtExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ALtExpr(fra.me.REG[0]);
-  parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ALtExpr(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-val_t NEW_ALtExpr_parser___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 = 4306;
-  fra.me.meth = LOCATE_NEW_ALtExpr_parser___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:4306 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___ALtExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ALtExpr(fra.me.REG[2]);
-  parser___parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___ALtExpr(fra.me.REG[2]);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
 }
-val_t NEW_ALtExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ReduceAction68_parser___ReduceAction___init[] = "new ReduceAction68 parser::ReduceAction::init";
+val_t NEW_ReduceAction68_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4275;
-  fra.me.meth = LOCATE_NEW_ALtExpr_parser___parser_prod___ASendExpr___init_asendexpr;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction68_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./parser//parser_prod.nit:4275 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___ALtExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ALtExpr(fra.me.REG[1]);
-  parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ALtExpr(fra.me.REG[1]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction68();
+  INIT_ATTRIBUTES__parser___ReduceAction68(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction68(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ALeExpr[118] = {
-  {(bigint) 3843 /* 0: Identity */},
-  {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ALeExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ALeExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ALeExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3527 /* 5: ALeExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: ALeExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: ALeExpr < AExpr: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction69[55] = {
+  {(bigint) 531 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction69" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction69 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction69 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 531 /* 5: ReduceAction69 < ReduceAction69: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 3739 /* 9: ALeExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3751 /* 10: ALeExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3779 /* 11: ALeExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 3803 /* 12: ALeExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 3843 /* 13: ALeExpr < ALeExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 5 /* 18: ALeExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction69 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -62842,6 +100639,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ALeExpr[118] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -62855,330 +100654,102 @@ const classtable_elt_t VFT_parser___parser_nodes___ALeExpr[118] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ALeExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ALeExpr___visit_all},
-  {(bigint) 4 /* 60: ALeExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ASendExpr___after_typing},
-  {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 68: ALeExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 70: ALeExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 75: ALeExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___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) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
-  {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 94: ALeExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
-  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
-  {(bigint) syntax___typing___AAbsSendExpr___get_property},
-  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 1 /* 100: ALeExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsSendExpr___prop},
-  {(bigint) syntax___typing___AAbsSendExpr___return_type},
-  {(bigint) syntax___typing___ALeExpr___name},
-  {(bigint) syntax___typing___ASendExpr___do_all_typing},
-  {(bigint) syntax___typing___ASendExpr___closure_defs},
-  {(bigint) parser___parser_prod___ASendExpr___empty_init},
-  {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 108: ALeExpr < ASendExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ASendExpr___n_expr},
-  {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) parser___parser_prod___ABinopExpr___empty_init},
-  {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 8 /* 113: ALeExpr < ABinopExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
-  {(bigint) parser___parser_prod___ALeExpr___empty_init},
-  {(bigint) parser___parser_prod___ALeExpr___init_aleexpr},
-  {(bigint) 9 /* 117: ALeExpr < ALeExpr: superclass init_table position */},
+  {(bigint) 0 /* 50: ReduceAction69 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction69___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction69 < ReduceAction69: 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__parser___parser_nodes___ALeExpr(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction69::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction69[] = "init var of ReduceAction69";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___ALeExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction69;
   fra.me.has_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:776 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  /* ./syntax//typing.nit:1388 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___ALeExpr(void)
+val_t NEW_parser___ReduceAction69(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 21);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ALeExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction69;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___ALeExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction69[] = "check new ReduceAction69";
+void CHECKNEW_parser___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_parser___parser_nodes___ALeExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction69;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___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___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___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_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ALeExpr_parser___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 = 4304;
-  fra.me.meth = LOCATE_NEW_ALeExpr_parser___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:4304 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ALeExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ALeExpr(fra.me.REG[0]);
-  parser___parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ALeExpr(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-val_t NEW_ALeExpr_parser___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 = 4709;
-  fra.me.meth = LOCATE_NEW_ALeExpr_parser___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:4709 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ALeExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ALeExpr(fra.me.REG[0]);
-  parser___parser_prod___ALeExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ALeExpr(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-val_t NEW_ALeExpr_parser___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 = 4711;
-  fra.me.meth = LOCATE_NEW_ALeExpr_parser___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:4711 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___ALeExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ALeExpr(fra.me.REG[2]);
-  parser___parser_prod___ALeExpr___init_aleexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___ALeExpr(fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
-}
-val_t NEW_ALeExpr_parser___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___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_parser___parser_nodes___ALeExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ALeExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ALeExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_ALeExpr_parser___parser_prod___ASendExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction69_parser___ReduceAction___init[] = "new ReduceAction69 parser::ReduceAction::init";
+val_t NEW_ReduceAction69_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4273;
-  fra.me.meth = LOCATE_NEW_ALeExpr_parser___parser_prod___ASendExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction69_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:4273 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ALeExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ALeExpr(fra.me.REG[0]);
-  parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ALeExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction69();
+  INIT_ATTRIBUTES__parser___ReduceAction69(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction69(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_ALeExpr_parser___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 = 4306;
-  fra.me.meth = LOCATE_NEW_ALeExpr_parser___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:4306 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___ALeExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ALeExpr(fra.me.REG[2]);
-  parser___parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___ALeExpr(fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
-}
-val_t NEW_ALeExpr_parser___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 = 4275;
-  fra.me.meth = LOCATE_NEW_ALeExpr_parser___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:4275 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___ALeExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ALeExpr(fra.me.REG[1]);
-  parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ALeExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___ALlExpr[118] = {
-  {(bigint) 3839 /* 0: Identity */},
-  {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ALlExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ALlExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ALlExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3527 /* 5: ALlExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: ALlExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: ALlExpr < AExpr: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction70[55] = {
+  {(bigint) 523 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction70" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction70 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction70 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 523 /* 5: ReduceAction70 < ReduceAction70: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 3739 /* 9: ALlExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3751 /* 10: ALlExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3779 /* 11: ALlExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 3803 /* 12: ALlExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 3839 /* 13: ALlExpr < ALlExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 5 /* 18: ALlExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction70 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -63194,6 +100765,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ALlExpr[118] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -63207,330 +100780,228 @@ const classtable_elt_t VFT_parser___parser_nodes___ALlExpr[118] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ALlExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ALlExpr___visit_all},
-  {(bigint) 4 /* 60: ALlExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ASendExpr___after_typing},
-  {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 68: ALlExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 70: ALlExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 75: ALlExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___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) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
-  {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 94: ALlExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
-  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
-  {(bigint) syntax___typing___AAbsSendExpr___get_property},
-  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 1 /* 100: ALlExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsSendExpr___prop},
-  {(bigint) syntax___typing___AAbsSendExpr___return_type},
-  {(bigint) syntax___typing___ALlExpr___name},
-  {(bigint) syntax___typing___ASendExpr___do_all_typing},
-  {(bigint) syntax___typing___ASendExpr___closure_defs},
-  {(bigint) parser___parser_prod___ASendExpr___empty_init},
-  {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 108: ALlExpr < ASendExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ASendExpr___n_expr},
-  {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) parser___parser_prod___ABinopExpr___empty_init},
-  {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 8 /* 113: ALlExpr < ABinopExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
-  {(bigint) parser___parser_prod___ALlExpr___empty_init},
-  {(bigint) parser___parser_prod___ALlExpr___init_allexpr},
-  {(bigint) 9 /* 117: ALlExpr < ALlExpr: superclass init_table position */},
+  {(bigint) 0 /* 50: ReduceAction70 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction70___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction70 < ReduceAction70: 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__parser___parser_nodes___ALlExpr(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction70::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction70[] = "init var of ReduceAction70";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___ALlExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction70;
   fra.me.has_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:776 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  /* ./syntax//typing.nit:1388 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___ALlExpr(void)
+val_t NEW_parser___ReduceAction70(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 21);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ALlExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction70;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___ALlExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction70[] = "check new ReduceAction70";
+void CHECKNEW_parser___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_parser___parser_nodes___ALlExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction70;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___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___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___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_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ALlExpr_parser___parser_prod___ABinopExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction70_parser___ReduceAction___init[] = "new ReduceAction70 parser::ReduceAction::init";
+val_t NEW_ReduceAction70_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4304;
-  fra.me.meth = LOCATE_NEW_ALlExpr_parser___parser_prod___ABinopExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction70_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:4304 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ALlExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ALlExpr(fra.me.REG[0]);
-  parser___parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ALlExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction70();
+  INIT_ATTRIBUTES__parser___ReduceAction70(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction70(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_ALlExpr_parser___parser_prod___ALlExpr___empty_init(void){
+const classtable_elt_t VFT_parser___ReduceAction71[55] = {
+  {(bigint) 519 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction71" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction71 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction71 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 519 /* 5: ReduceAction71 < ReduceAction71: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction71 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 50: ReduceAction71 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction71___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction71 < ReduceAction71: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ReduceAction71::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction71[] = "init var of ReduceAction71";
+void INIT_ATTRIBUTES__parser___ReduceAction71(val_t p0){
   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 = 4754;
-  fra.me.meth = LOCATE_NEW_ALlExpr_parser___parser_prod___ALlExpr___empty_init;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction71;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:4754 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ALlExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ALlExpr(fra.me.REG[0]);
-  parser___parser_prod___ALlExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ALlExpr(fra.me.REG[0]);
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
 }
-val_t NEW_ALlExpr_parser___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 = 4756;
-  fra.me.meth = LOCATE_NEW_ALlExpr_parser___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:4756 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___ALlExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ALlExpr(fra.me.REG[2]);
-  parser___parser_prod___ALlExpr___init_allexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___ALlExpr(fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+val_t NEW_parser___ReduceAction71(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction71;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
 }
-val_t NEW_ALlExpr_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_CHECKNEW_parser___ReduceAction71[] = "check new ReduceAction71";
+void CHECKNEW_parser___ReduceAction71(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   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___parser_nodes___ANode___init;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction71;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___ALlExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ALlExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ALlExpr(fra.me.REG[1]);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
 }
-val_t NEW_ALlExpr_parser___parser_prod___ASendExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction71_parser___ReduceAction___init[] = "new ReduceAction71 parser::ReduceAction::init";
+val_t NEW_ReduceAction71_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4273;
-  fra.me.meth = LOCATE_NEW_ALlExpr_parser___parser_prod___ASendExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction71_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:4273 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ALlExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ALlExpr(fra.me.REG[0]);
-  parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ALlExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction71();
+  INIT_ATTRIBUTES__parser___ReduceAction71(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction71(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_ALlExpr_parser___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 = 4306;
-  fra.me.meth = LOCATE_NEW_ALlExpr_parser___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:4306 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___ALlExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ALlExpr(fra.me.REG[2]);
-  parser___parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___ALlExpr(fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
-}
-val_t NEW_ALlExpr_parser___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 = 4275;
-  fra.me.meth = LOCATE_NEW_ALlExpr_parser___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:4275 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___ALlExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ALlExpr(fra.me.REG[1]);
-  parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ALlExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AGtExpr[118] = {
-  {(bigint) 3847 /* 0: Identity */},
-  {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AGtExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AGtExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AGtExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3527 /* 5: AGtExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: AGtExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AGtExpr < AExpr: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction73[55] = {
+  {(bigint) 515 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction73" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction73 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction73 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 515 /* 5: ReduceAction73 < ReduceAction73: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 3739 /* 9: AGtExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3751 /* 10: AGtExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3779 /* 11: AGtExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 3803 /* 12: AGtExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 3847 /* 13: AGtExpr < AGtExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 5 /* 18: AGtExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction73 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -63546,6 +101017,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AGtExpr[118] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -63559,330 +101032,228 @@ const classtable_elt_t VFT_parser___parser_nodes___AGtExpr[118] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AGtExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AGtExpr___visit_all},
-  {(bigint) 4 /* 60: AGtExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ASendExpr___after_typing},
-  {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 68: AGtExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 70: AGtExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 75: AGtExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___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) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
-  {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 94: AGtExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
-  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
-  {(bigint) syntax___typing___AAbsSendExpr___get_property},
-  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 1 /* 100: AGtExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsSendExpr___prop},
-  {(bigint) syntax___typing___AAbsSendExpr___return_type},
-  {(bigint) syntax___typing___AGtExpr___name},
-  {(bigint) syntax___typing___ASendExpr___do_all_typing},
-  {(bigint) syntax___typing___ASendExpr___closure_defs},
-  {(bigint) parser___parser_prod___ASendExpr___empty_init},
-  {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 108: AGtExpr < ASendExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ASendExpr___n_expr},
-  {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) parser___parser_prod___ABinopExpr___empty_init},
-  {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 8 /* 113: AGtExpr < ABinopExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
-  {(bigint) parser___parser_prod___AGtExpr___empty_init},
-  {(bigint) parser___parser_prod___AGtExpr___init_agtexpr},
-  {(bigint) 9 /* 117: AGtExpr < AGtExpr: superclass init_table position */},
+  {(bigint) 0 /* 50: ReduceAction73 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction73___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction73 < ReduceAction73: 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__parser___parser_nodes___AGtExpr(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction73::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction73[] = "init var of ReduceAction73";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___AGtExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction73;
   fra.me.has_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:776 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  /* ./syntax//typing.nit:1388 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AGtExpr(void)
+val_t NEW_parser___ReduceAction73(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 21);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AGtExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction73;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AGtExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction73[] = "check new ReduceAction73";
+void CHECKNEW_parser___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_parser___parser_nodes___AGtExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction73;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___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___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___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_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AGtExpr_parser___parser_prod___ABinopExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction73_parser___ReduceAction___init[] = "new ReduceAction73 parser::ReduceAction::init";
+val_t NEW_ReduceAction73_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4304;
-  fra.me.meth = LOCATE_NEW_AGtExpr_parser___parser_prod___ABinopExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction73_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:4304 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AGtExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AGtExpr(fra.me.REG[0]);
-  parser___parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AGtExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction73();
+  INIT_ATTRIBUTES__parser___ReduceAction73(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction73(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AGtExpr_parser___parser_prod___AGtExpr___empty_init(void){
+const classtable_elt_t VFT_parser___ReduceAction74[55] = {
+  {(bigint) 511 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction74" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction74 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction74 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 511 /* 5: ReduceAction74 < ReduceAction74: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction74 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 50: ReduceAction74 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction74___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction74 < ReduceAction74: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ReduceAction74::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction74[] = "init var of ReduceAction74";
+void INIT_ATTRIBUTES__parser___ReduceAction74(val_t p0){
   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 = 4799;
-  fra.me.meth = LOCATE_NEW_AGtExpr_parser___parser_prod___AGtExpr___empty_init;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction74;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:4799 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AGtExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AGtExpr(fra.me.REG[0]);
-  parser___parser_prod___AGtExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AGtExpr(fra.me.REG[0]);
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
 }
-val_t NEW_AGtExpr_parser___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 = 4801;
-  fra.me.meth = LOCATE_NEW_AGtExpr_parser___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:4801 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___AGtExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AGtExpr(fra.me.REG[2]);
-  parser___parser_prod___AGtExpr___init_agtexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___AGtExpr(fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+val_t NEW_parser___ReduceAction74(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction74;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
 }
-val_t NEW_AGtExpr_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_CHECKNEW_parser___ReduceAction74[] = "check new ReduceAction74";
+void CHECKNEW_parser___ReduceAction74(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   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___parser_nodes___ANode___init;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction74;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___AGtExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AGtExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AGtExpr(fra.me.REG[1]);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
 }
-val_t NEW_AGtExpr_parser___parser_prod___ASendExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction74_parser___ReduceAction___init[] = "new ReduceAction74 parser::ReduceAction::init";
+val_t NEW_ReduceAction74_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4273;
-  fra.me.meth = LOCATE_NEW_AGtExpr_parser___parser_prod___ASendExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction74_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:4273 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AGtExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AGtExpr(fra.me.REG[0]);
-  parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AGtExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction74();
+  INIT_ATTRIBUTES__parser___ReduceAction74(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction74(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AGtExpr_parser___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 = 4306;
-  fra.me.meth = LOCATE_NEW_AGtExpr_parser___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:4306 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___AGtExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AGtExpr(fra.me.REG[2]);
-  parser___parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___AGtExpr(fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
-}
-val_t NEW_AGtExpr_parser___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 = 4275;
-  fra.me.meth = LOCATE_NEW_AGtExpr_parser___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:4275 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___AGtExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AGtExpr(fra.me.REG[1]);
-  parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AGtExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AGeExpr[118] = {
-  {(bigint) 3855 /* 0: Identity */},
-  {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AGeExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AGeExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AGeExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3527 /* 5: AGeExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: AGeExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AGeExpr < AExpr: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction75[55] = {
+  {(bigint) 507 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction75" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction75 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction75 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 507 /* 5: ReduceAction75 < ReduceAction75: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 3739 /* 9: AGeExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3751 /* 10: AGeExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3779 /* 11: AGeExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 3803 /* 12: AGeExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 3855 /* 13: AGeExpr < AGeExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 5 /* 18: AGeExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction75 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -63898,6 +101269,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AGeExpr[118] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -63910,331 +101283,229 @@ const classtable_elt_t VFT_parser___parser_nodes___AGeExpr[118] = {
   {(bigint) standard___math___Object___srand_from},
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AGeExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AGeExpr___visit_all},
-  {(bigint) 4 /* 60: AGeExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ASendExpr___after_typing},
-  {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 68: AGeExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 70: AGeExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 75: AGeExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___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) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
-  {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 94: AGeExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
-  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
-  {(bigint) syntax___typing___AAbsSendExpr___get_property},
-  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 1 /* 100: AGeExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsSendExpr___prop},
-  {(bigint) syntax___typing___AAbsSendExpr___return_type},
-  {(bigint) syntax___typing___AGeExpr___name},
-  {(bigint) syntax___typing___ASendExpr___do_all_typing},
-  {(bigint) syntax___typing___ASendExpr___closure_defs},
-  {(bigint) parser___parser_prod___ASendExpr___empty_init},
-  {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 108: AGeExpr < ASendExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ASendExpr___n_expr},
-  {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) parser___parser_prod___ABinopExpr___empty_init},
-  {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 8 /* 113: AGeExpr < ABinopExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
-  {(bigint) parser___parser_prod___AGeExpr___empty_init},
-  {(bigint) parser___parser_prod___AGeExpr___init_ageexpr},
-  {(bigint) 9 /* 117: 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__parser___parser_nodes___AGeExpr(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 50: ReduceAction75 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction75___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction75 < ReduceAction75: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ReduceAction75::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction75[] = "init var of ReduceAction75";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___AGeExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction75;
   fra.me.has_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:776 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  /* ./syntax//typing.nit:1388 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AGeExpr(void)
+val_t NEW_parser___ReduceAction75(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 21);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AGeExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction75;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AGeExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction75[] = "check new ReduceAction75";
+void CHECKNEW_parser___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_parser___parser_nodes___AGeExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction75;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___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___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___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_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AGeExpr_parser___parser_prod___ABinopExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction75_parser___ReduceAction___init[] = "new ReduceAction75 parser::ReduceAction::init";
+val_t NEW_ReduceAction75_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4304;
-  fra.me.meth = LOCATE_NEW_AGeExpr_parser___parser_prod___ABinopExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction75_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:4304 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AGeExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AGeExpr(fra.me.REG[0]);
-  parser___parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AGeExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction75();
+  INIT_ATTRIBUTES__parser___ReduceAction75(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction75(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AGeExpr_parser___parser_prod___AGeExpr___empty_init(void){
+const classtable_elt_t VFT_parser___ReduceAction76[55] = {
+  {(bigint) 503 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction76" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction76 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction76 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 503 /* 5: ReduceAction76 < ReduceAction76: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction76 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 50: ReduceAction76 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction76___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction76 < ReduceAction76: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ReduceAction76::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction76[] = "init var of ReduceAction76";
+void INIT_ATTRIBUTES__parser___ReduceAction76(val_t p0){
   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 = 4844;
-  fra.me.meth = LOCATE_NEW_AGeExpr_parser___parser_prod___AGeExpr___empty_init;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction76;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:4844 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AGeExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AGeExpr(fra.me.REG[0]);
-  parser___parser_prod___AGeExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AGeExpr(fra.me.REG[0]);
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
 }
-val_t NEW_AGeExpr_parser___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 = 4846;
-  fra.me.meth = LOCATE_NEW_AGeExpr_parser___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:4846 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___AGeExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AGeExpr(fra.me.REG[2]);
-  parser___parser_prod___AGeExpr___init_ageexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___AGeExpr(fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+val_t NEW_parser___ReduceAction76(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction76;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
 }
-val_t NEW_AGeExpr_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_CHECKNEW_parser___ReduceAction76[] = "check new ReduceAction76";
+void CHECKNEW_parser___ReduceAction76(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   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___parser_nodes___ANode___init;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction76;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___AGeExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AGeExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AGeExpr(fra.me.REG[1]);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
 }
-val_t NEW_AGeExpr_parser___parser_prod___ASendExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction76_parser___ReduceAction___init[] = "new ReduceAction76 parser::ReduceAction::init";
+val_t NEW_ReduceAction76_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4273;
-  fra.me.meth = LOCATE_NEW_AGeExpr_parser___parser_prod___ASendExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction76_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:4273 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AGeExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AGeExpr(fra.me.REG[0]);
-  parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AGeExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction76();
+  INIT_ATTRIBUTES__parser___ReduceAction76(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction76(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AGeExpr_parser___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 = 4306;
-  fra.me.meth = LOCATE_NEW_AGeExpr_parser___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:4306 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___AGeExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AGeExpr(fra.me.REG[2]);
-  parser___parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___AGeExpr(fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
-}
-val_t NEW_AGeExpr_parser___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 = 4275;
-  fra.me.meth = LOCATE_NEW_AGeExpr_parser___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:4275 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___AGeExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AGeExpr(fra.me.REG[1]);
-  parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AGeExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AGgExpr[118] = {
-  {(bigint) 3851 /* 0: Identity */},
-  {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AGgExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AGgExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AGgExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3527 /* 5: AGgExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: AGgExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AGgExpr < AExpr: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction77[55] = {
+  {(bigint) 499 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction77" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction77 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction77 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 499 /* 5: ReduceAction77 < ReduceAction77: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 3739 /* 9: AGgExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3751 /* 10: AGgExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3779 /* 11: AGgExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 3803 /* 12: AGgExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 3851 /* 13: AGgExpr < AGgExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 5 /* 18: AGgExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction77 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -64250,6 +101521,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AGgExpr[118] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -64263,321 +101536,219 @@ const classtable_elt_t VFT_parser___parser_nodes___AGgExpr[118] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AGgExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AGgExpr___visit_all},
-  {(bigint) 4 /* 60: AGgExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ASendExpr___after_typing},
-  {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 68: AGgExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 70: AGgExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 75: AGgExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___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) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
-  {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 94: AGgExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
-  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
-  {(bigint) syntax___typing___AAbsSendExpr___get_property},
-  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 1 /* 100: AGgExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsSendExpr___prop},
-  {(bigint) syntax___typing___AAbsSendExpr___return_type},
-  {(bigint) syntax___typing___AGgExpr___name},
-  {(bigint) syntax___typing___ASendExpr___do_all_typing},
-  {(bigint) syntax___typing___ASendExpr___closure_defs},
-  {(bigint) parser___parser_prod___ASendExpr___empty_init},
-  {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 108: AGgExpr < ASendExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ASendExpr___n_expr},
-  {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) parser___parser_prod___ABinopExpr___empty_init},
-  {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 8 /* 113: AGgExpr < ABinopExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
-  {(bigint) parser___parser_prod___AGgExpr___empty_init},
-  {(bigint) parser___parser_prod___AGgExpr___init_aggexpr},
-  {(bigint) 9 /* 117: AGgExpr < AGgExpr: superclass init_table position */},
+  {(bigint) 0 /* 50: ReduceAction77 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction77___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction77 < ReduceAction77: 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__parser___parser_nodes___AGgExpr(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction77::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction77[] = "init var of ReduceAction77";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___AGgExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction77;
   fra.me.has_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:776 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  /* ./syntax//typing.nit:1388 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AGgExpr(void)
+val_t NEW_parser___ReduceAction77(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 21);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AGgExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction77;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AGgExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction77[] = "check new ReduceAction77";
+void CHECKNEW_parser___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_parser___parser_nodes___AGgExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction77;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___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___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___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_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AGgExpr_parser___parser_prod___ABinopExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction77_parser___ReduceAction___init[] = "new ReduceAction77 parser::ReduceAction::init";
+val_t NEW_ReduceAction77_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4304;
-  fra.me.meth = LOCATE_NEW_AGgExpr_parser___parser_prod___ABinopExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction77_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:4304 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AGgExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AGgExpr(fra.me.REG[0]);
-  parser___parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AGgExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction77();
+  INIT_ATTRIBUTES__parser___ReduceAction77(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction77(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AGgExpr_parser___parser_prod___AGgExpr___empty_init(void){
+const classtable_elt_t VFT_parser___ReduceAction78[55] = {
+  {(bigint) 495 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction78" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction78 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction78 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 495 /* 5: ReduceAction78 < ReduceAction78: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction78 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 50: ReduceAction78 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction78___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction78 < ReduceAction78: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ReduceAction78::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction78[] = "init var of ReduceAction78";
+void INIT_ATTRIBUTES__parser___ReduceAction78(val_t p0){
   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 = 4889;
-  fra.me.meth = LOCATE_NEW_AGgExpr_parser___parser_prod___AGgExpr___empty_init;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction78;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:4889 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AGgExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AGgExpr(fra.me.REG[0]);
-  parser___parser_prod___AGgExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AGgExpr(fra.me.REG[0]);
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
 }
-val_t NEW_AGgExpr_parser___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 = 4891;
-  fra.me.meth = LOCATE_NEW_AGgExpr_parser___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:4891 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___AGgExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AGgExpr(fra.me.REG[2]);
-  parser___parser_prod___AGgExpr___init_aggexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___AGgExpr(fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+val_t NEW_parser___ReduceAction78(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction78;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
 }
-val_t NEW_AGgExpr_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_CHECKNEW_parser___ReduceAction78[] = "check new ReduceAction78";
+void CHECKNEW_parser___ReduceAction78(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   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___parser_nodes___ANode___init;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction78;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___AGgExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AGgExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AGgExpr(fra.me.REG[1]);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
 }
-val_t NEW_AGgExpr_parser___parser_prod___ASendExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction78_parser___ReduceAction___init[] = "new ReduceAction78 parser::ReduceAction::init";
+val_t NEW_ReduceAction78_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4273;
-  fra.me.meth = LOCATE_NEW_AGgExpr_parser___parser_prod___ASendExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction78_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:4273 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AGgExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AGgExpr(fra.me.REG[0]);
-  parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AGgExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction78();
+  INIT_ATTRIBUTES__parser___ReduceAction78(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction78(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AGgExpr_parser___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 = 4306;
-  fra.me.meth = LOCATE_NEW_AGgExpr_parser___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:4306 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___AGgExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AGgExpr(fra.me.REG[2]);
-  parser___parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___AGgExpr(fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
-}
-val_t NEW_AGgExpr_parser___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 = 4275;
-  fra.me.meth = LOCATE_NEW_AGgExpr_parser___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:4275 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___AGgExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AGgExpr(fra.me.REG[1]);
-  parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AGgExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AIsaExpr[88] = {
-  {(bigint) 3639 /* 0: Identity */},
-  {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AIsaExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AIsaExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AIsaExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3259 /* 5: AIsaExpr < ATypeCheckExpr: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: AIsaExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AIsaExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3483 /* 8: AIsaExpr < ABoolExpr: superclass typecheck marker */},
-  {(bigint) 3639 /* 9: AIsaExpr < AIsaExpr: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction79[55] = {
+  {(bigint) 491 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction79" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction79 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction79 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 491 /* 5: ReduceAction79 < ReduceAction79: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -64586,7 +101757,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AIsaExpr[88] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 18: AIsaExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction79 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -64602,6 +101773,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AIsaExpr[88] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -64615,198 +101788,102 @@ const classtable_elt_t VFT_parser___parser_nodes___AIsaExpr[88] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AIsaExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AIsaExpr___visit_all},
-  {(bigint) 2 /* 60: AIsaExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___AIsaExpr___after_typing},
-  {(bigint) 0 /* 67: AIsaExpr < ATypeCheckExpr: superclass init_table position */},
-  {(bigint) syntax___typing___ATypeCheckExpr___check_expr_cast},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 70: AIsaExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 4 /* 75: AIsaExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___AIsaExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) 5 /* 82: AIsaExpr < ABoolExpr: superclass init_table position */},
-  {(bigint) parser___parser_prod___AIsaExpr___empty_init},
-  {(bigint) parser___parser_prod___AIsaExpr___init_aisaexpr},
-  {(bigint) 6 /* 85: AIsaExpr < AIsaExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AIsaExpr___n_expr},
-  {(bigint) parser___parser_nodes___AIsaExpr___n_type},
+  {(bigint) 0 /* 50: ReduceAction79 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction79___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction79 < ReduceAction79: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AIsaExpr(val_t p0){
+/* 2: Attribute ReduceAction79::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction79[] = "init var of ReduceAction79";
+void INIT_ATTRIBUTES__parser___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_INIT_ATTRIBUTES__parser___parser_nodes___AIsaExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction79;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AIsaExpr(void)
+val_t NEW_parser___ReduceAction79(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 13);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AIsaExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction79;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AIsaExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction79[] = "check new ReduceAction79";
+void CHECKNEW_parser___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_parser___parser_nodes___AIsaExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction79;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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___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___parser_nodes___AIsaExpr____n_type(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AIsaExpr_parser___parser_prod___AIsaExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction79_parser___ReduceAction___init[] = "new ReduceAction79 parser::ReduceAction::init";
+val_t NEW_ReduceAction79_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4934;
-  fra.me.meth = LOCATE_NEW_AIsaExpr_parser___parser_prod___AIsaExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction79_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:4934 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AIsaExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AIsaExpr(fra.me.REG[0]);
-  parser___parser_prod___AIsaExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AIsaExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction79();
+  INIT_ATTRIBUTES__parser___ReduceAction79(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction79(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AIsaExpr_parser___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 = 4936;
-  fra.me.meth = LOCATE_NEW_AIsaExpr_parser___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:4936 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___AIsaExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AIsaExpr(fra.me.REG[2]);
-  parser___parser_prod___AIsaExpr___init_aisaexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___AIsaExpr(fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
-}
-val_t NEW_AIsaExpr_parser___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___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_parser___parser_nodes___AIsaExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AIsaExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AIsaExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___APlusExpr[118] = {
-  {(bigint) 3819 /* 0: Identity */},
-  {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "APlusExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: APlusExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: APlusExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3527 /* 5: APlusExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: APlusExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: APlusExpr < AExpr: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction80[55] = {
+  {(bigint) 483 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction80" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction80 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction80 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 483 /* 5: ReduceAction80 < ReduceAction80: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 3739 /* 9: APlusExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3751 /* 10: APlusExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3779 /* 11: APlusExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 3803 /* 12: APlusExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 3819 /* 13: APlusExpr < APlusExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 5 /* 18: APlusExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction80 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -64822,6 +101899,8 @@ const classtable_elt_t VFT_parser___parser_nodes___APlusExpr[118] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -64835,330 +101914,228 @@ const classtable_elt_t VFT_parser___parser_nodes___APlusExpr[118] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___APlusExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___APlusExpr___visit_all},
-  {(bigint) 4 /* 60: APlusExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ASendExpr___after_typing},
-  {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 68: APlusExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 70: APlusExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 75: APlusExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___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) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
-  {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 94: APlusExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
-  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
-  {(bigint) syntax___typing___AAbsSendExpr___get_property},
-  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 1 /* 100: APlusExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsSendExpr___prop},
-  {(bigint) syntax___typing___AAbsSendExpr___return_type},
-  {(bigint) syntax___typing___APlusExpr___name},
-  {(bigint) syntax___typing___ASendExpr___do_all_typing},
-  {(bigint) syntax___typing___ASendExpr___closure_defs},
-  {(bigint) parser___parser_prod___ASendExpr___empty_init},
-  {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 108: APlusExpr < ASendExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ASendExpr___n_expr},
-  {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) parser___parser_prod___ABinopExpr___empty_init},
-  {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 8 /* 113: APlusExpr < ABinopExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
-  {(bigint) parser___parser_prod___APlusExpr___empty_init},
-  {(bigint) parser___parser_prod___APlusExpr___init_aplusexpr},
-  {(bigint) 9 /* 117: APlusExpr < APlusExpr: superclass init_table position */},
+  {(bigint) 0 /* 50: ReduceAction80 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction80___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction80 < ReduceAction80: 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__parser___parser_nodes___APlusExpr(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction80::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction80[] = "init var of ReduceAction80";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___APlusExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction80;
   fra.me.has_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:776 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  /* ./syntax//typing.nit:1388 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___APlusExpr(void)
+val_t NEW_parser___ReduceAction80(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 21);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___APlusExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction80;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___APlusExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction80[] = "check new ReduceAction80";
+void CHECKNEW_parser___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_parser___parser_nodes___APlusExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction80;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___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___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___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_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_APlusExpr_parser___parser_prod___ABinopExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction80_parser___ReduceAction___init[] = "new ReduceAction80 parser::ReduceAction::init";
+val_t NEW_ReduceAction80_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4304;
-  fra.me.meth = LOCATE_NEW_APlusExpr_parser___parser_prod___ABinopExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction80_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:4304 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___APlusExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___APlusExpr(fra.me.REG[0]);
-  parser___parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___APlusExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction80();
+  INIT_ATTRIBUTES__parser___ReduceAction80(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction80(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_APlusExpr_parser___parser_prod___APlusExpr___empty_init(void){
+const classtable_elt_t VFT_parser___ReduceAction81[55] = {
+  {(bigint) 479 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction81" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction81 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction81 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 479 /* 5: ReduceAction81 < ReduceAction81: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction81 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 50: ReduceAction81 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction81___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction81 < ReduceAction81: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ReduceAction81::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction81[] = "init var of ReduceAction81";
+void INIT_ATTRIBUTES__parser___ReduceAction81(val_t p0){
   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 = 4979;
-  fra.me.meth = LOCATE_NEW_APlusExpr_parser___parser_prod___APlusExpr___empty_init;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction81;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:4979 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___APlusExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___APlusExpr(fra.me.REG[0]);
-  parser___parser_prod___APlusExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___APlusExpr(fra.me.REG[0]);
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
 }
-val_t NEW_APlusExpr_parser___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 = 4981;
-  fra.me.meth = LOCATE_NEW_APlusExpr_parser___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:4981 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___APlusExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___APlusExpr(fra.me.REG[2]);
-  parser___parser_prod___APlusExpr___init_aplusexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___APlusExpr(fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+val_t NEW_parser___ReduceAction81(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction81;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
 }
-val_t NEW_APlusExpr_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_CHECKNEW_parser___ReduceAction81[] = "check new ReduceAction81";
+void CHECKNEW_parser___ReduceAction81(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   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___parser_nodes___ANode___init;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction81;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___APlusExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___APlusExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___APlusExpr(fra.me.REG[1]);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
 }
-val_t NEW_APlusExpr_parser___parser_prod___ASendExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction81_parser___ReduceAction___init[] = "new ReduceAction81 parser::ReduceAction::init";
+val_t NEW_ReduceAction81_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4273;
-  fra.me.meth = LOCATE_NEW_APlusExpr_parser___parser_prod___ASendExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction81_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:4273 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___APlusExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___APlusExpr(fra.me.REG[0]);
-  parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___APlusExpr(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-val_t NEW_APlusExpr_parser___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 = 4306;
-  fra.me.meth = LOCATE_NEW_APlusExpr_parser___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:4306 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___APlusExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___APlusExpr(fra.me.REG[2]);
-  parser___parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___APlusExpr(fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
-}
-val_t NEW_APlusExpr_parser___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 = 4275;
-  fra.me.meth = LOCATE_NEW_APlusExpr_parser___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:4275 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___APlusExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___APlusExpr(fra.me.REG[1]);
-  parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___APlusExpr(fra.me.REG[1]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction81();
+  INIT_ATTRIBUTES__parser___ReduceAction81(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction81(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AMinusExpr[118] = {
-  {(bigint) 3831 /* 0: Identity */},
-  {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AMinusExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AMinusExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AMinusExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3527 /* 5: AMinusExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: AMinusExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AMinusExpr < AExpr: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction82[55] = {
+  {(bigint) 475 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction82" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction82 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction82 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 475 /* 5: ReduceAction82 < ReduceAction82: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 3739 /* 9: AMinusExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3751 /* 10: AMinusExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3779 /* 11: AMinusExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 3803 /* 12: AMinusExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 3831 /* 13: AMinusExpr < AMinusExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 5 /* 18: AMinusExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction82 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -65174,6 +102151,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AMinusExpr[118] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -65187,330 +102166,102 @@ const classtable_elt_t VFT_parser___parser_nodes___AMinusExpr[118] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AMinusExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AMinusExpr___visit_all},
-  {(bigint) 4 /* 60: AMinusExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ASendExpr___after_typing},
-  {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 68: AMinusExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 70: AMinusExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 75: AMinusExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___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) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
-  {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 94: AMinusExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
-  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
-  {(bigint) syntax___typing___AAbsSendExpr___get_property},
-  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 1 /* 100: AMinusExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsSendExpr___prop},
-  {(bigint) syntax___typing___AAbsSendExpr___return_type},
-  {(bigint) syntax___typing___AMinusExpr___name},
-  {(bigint) syntax___typing___ASendExpr___do_all_typing},
-  {(bigint) syntax___typing___ASendExpr___closure_defs},
-  {(bigint) parser___parser_prod___ASendExpr___empty_init},
-  {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 108: AMinusExpr < ASendExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ASendExpr___n_expr},
-  {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) parser___parser_prod___ABinopExpr___empty_init},
-  {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 8 /* 113: AMinusExpr < ABinopExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
-  {(bigint) parser___parser_prod___AMinusExpr___empty_init},
-  {(bigint) parser___parser_prod___AMinusExpr___init_aminusexpr},
-  {(bigint) 9 /* 117: AMinusExpr < AMinusExpr: superclass init_table position */},
+  {(bigint) 0 /* 50: ReduceAction82 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction82___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction82 < ReduceAction82: 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__parser___parser_nodes___AMinusExpr(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction82::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction82[] = "init var of ReduceAction82";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___AMinusExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction82;
   fra.me.has_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:776 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  /* ./syntax//typing.nit:1388 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AMinusExpr(void)
+val_t NEW_parser___ReduceAction82(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 21);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AMinusExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction82;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AMinusExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction82[] = "check new ReduceAction82";
+void CHECKNEW_parser___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_parser___parser_nodes___AMinusExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction82;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___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___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___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_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AMinusExpr_parser___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 = 4304;
-  fra.me.meth = LOCATE_NEW_AMinusExpr_parser___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:4304 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AMinusExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AMinusExpr(fra.me.REG[0]);
-  parser___parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AMinusExpr(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-val_t NEW_AMinusExpr_parser___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 = 5024;
-  fra.me.meth = LOCATE_NEW_AMinusExpr_parser___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:5024 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AMinusExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AMinusExpr(fra.me.REG[0]);
-  parser___parser_prod___AMinusExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AMinusExpr(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-val_t NEW_AMinusExpr_parser___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 = 5026;
-  fra.me.meth = LOCATE_NEW_AMinusExpr_parser___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:5026 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___AMinusExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AMinusExpr(fra.me.REG[2]);
-  parser___parser_prod___AMinusExpr___init_aminusexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___AMinusExpr(fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
-}
-val_t NEW_AMinusExpr_parser___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___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_parser___parser_nodes___AMinusExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AMinusExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AMinusExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_AMinusExpr_parser___parser_prod___ASendExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction82_parser___ReduceAction___init[] = "new ReduceAction82 parser::ReduceAction::init";
+val_t NEW_ReduceAction82_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4273;
-  fra.me.meth = LOCATE_NEW_AMinusExpr_parser___parser_prod___ASendExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction82_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:4273 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AMinusExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AMinusExpr(fra.me.REG[0]);
-  parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AMinusExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction82();
+  INIT_ATTRIBUTES__parser___ReduceAction82(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction82(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AMinusExpr_parser___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 = 4306;
-  fra.me.meth = LOCATE_NEW_AMinusExpr_parser___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:4306 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___AMinusExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AMinusExpr(fra.me.REG[2]);
-  parser___parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___AMinusExpr(fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
-}
-val_t NEW_AMinusExpr_parser___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 = 4275;
-  fra.me.meth = LOCATE_NEW_AMinusExpr_parser___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:4275 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___AMinusExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AMinusExpr(fra.me.REG[1]);
-  parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AMinusExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AStarshipExpr[118] = {
-  {(bigint) 3807 /* 0: Identity */},
-  {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AStarshipExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AStarshipExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AStarshipExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3527 /* 5: AStarshipExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: AStarshipExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AStarshipExpr < AExpr: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction83[55] = {
+  {(bigint) 471 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction83" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction83 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction83 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 471 /* 5: ReduceAction83 < ReduceAction83: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 3739 /* 9: AStarshipExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3751 /* 10: AStarshipExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3779 /* 11: AStarshipExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 3803 /* 12: AStarshipExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 3807 /* 13: AStarshipExpr < AStarshipExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 5 /* 18: AStarshipExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction83 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -65526,6 +102277,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AStarshipExpr[118] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -65539,330 +102292,228 @@ const classtable_elt_t VFT_parser___parser_nodes___AStarshipExpr[118] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AStarshipExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AStarshipExpr___visit_all},
-  {(bigint) 4 /* 60: AStarshipExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ASendExpr___after_typing},
-  {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 68: AStarshipExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 70: AStarshipExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 75: AStarshipExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___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) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
-  {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 94: AStarshipExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
-  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
-  {(bigint) syntax___typing___AAbsSendExpr___get_property},
-  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 1 /* 100: AStarshipExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsSendExpr___prop},
-  {(bigint) syntax___typing___AAbsSendExpr___return_type},
-  {(bigint) syntax___typing___AStarshipExpr___name},
-  {(bigint) syntax___typing___ASendExpr___do_all_typing},
-  {(bigint) syntax___typing___ASendExpr___closure_defs},
-  {(bigint) parser___parser_prod___ASendExpr___empty_init},
-  {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 108: AStarshipExpr < ASendExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ASendExpr___n_expr},
-  {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) parser___parser_prod___ABinopExpr___empty_init},
-  {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 8 /* 113: AStarshipExpr < ABinopExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
-  {(bigint) parser___parser_prod___AStarshipExpr___empty_init},
-  {(bigint) parser___parser_prod___AStarshipExpr___init_astarshipexpr},
-  {(bigint) 9 /* 117: AStarshipExpr < AStarshipExpr: superclass init_table position */},
+  {(bigint) 0 /* 50: ReduceAction83 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction83___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction83 < ReduceAction83: 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__parser___parser_nodes___AStarshipExpr(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction83::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction83[] = "init var of ReduceAction83";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___AStarshipExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction83;
   fra.me.has_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:776 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  /* ./syntax//typing.nit:1388 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AStarshipExpr(void)
+val_t NEW_parser___ReduceAction83(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 21);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AStarshipExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction83;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AStarshipExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction83[] = "check new ReduceAction83";
+void CHECKNEW_parser___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_parser___parser_nodes___AStarshipExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction83;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___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___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___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_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AStarshipExpr_parser___parser_prod___ABinopExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction83_parser___ReduceAction___init[] = "new ReduceAction83 parser::ReduceAction::init";
+val_t NEW_ReduceAction83_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4304;
-  fra.me.meth = LOCATE_NEW_AStarshipExpr_parser___parser_prod___ABinopExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction83_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:4304 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AStarshipExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AStarshipExpr(fra.me.REG[0]);
-  parser___parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AStarshipExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction83();
+  INIT_ATTRIBUTES__parser___ReduceAction83(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction83(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AStarshipExpr_parser___parser_prod___AStarshipExpr___empty_init(void){
+const classtable_elt_t VFT_parser___ReduceAction84[55] = {
+  {(bigint) 467 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction84" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction84 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction84 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 467 /* 5: ReduceAction84 < ReduceAction84: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction84 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 50: ReduceAction84 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction84___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction84 < ReduceAction84: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ReduceAction84::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction84[] = "init var of ReduceAction84";
+void INIT_ATTRIBUTES__parser___ReduceAction84(val_t p0){
   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 = 5069;
-  fra.me.meth = LOCATE_NEW_AStarshipExpr_parser___parser_prod___AStarshipExpr___empty_init;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction84;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:5069 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AStarshipExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AStarshipExpr(fra.me.REG[0]);
-  parser___parser_prod___AStarshipExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AStarshipExpr(fra.me.REG[0]);
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
 }
-val_t NEW_AStarshipExpr_parser___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 = 5071;
-  fra.me.meth = LOCATE_NEW_AStarshipExpr_parser___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:5071 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___AStarshipExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AStarshipExpr(fra.me.REG[2]);
-  parser___parser_prod___AStarshipExpr___init_astarshipexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___AStarshipExpr(fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+val_t NEW_parser___ReduceAction84(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction84;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
 }
-val_t NEW_AStarshipExpr_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_CHECKNEW_parser___ReduceAction84[] = "check new ReduceAction84";
+void CHECKNEW_parser___ReduceAction84(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   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___parser_nodes___ANode___init;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction84;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___AStarshipExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AStarshipExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AStarshipExpr(fra.me.REG[1]);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
 }
-val_t NEW_AStarshipExpr_parser___parser_prod___ASendExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction84_parser___ReduceAction___init[] = "new ReduceAction84 parser::ReduceAction::init";
+val_t NEW_ReduceAction84_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4273;
-  fra.me.meth = LOCATE_NEW_AStarshipExpr_parser___parser_prod___ASendExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction84_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:4273 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AStarshipExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AStarshipExpr(fra.me.REG[0]);
-  parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AStarshipExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction84();
+  INIT_ATTRIBUTES__parser___ReduceAction84(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction84(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AStarshipExpr_parser___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 = 4306;
-  fra.me.meth = LOCATE_NEW_AStarshipExpr_parser___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:4306 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___AStarshipExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AStarshipExpr(fra.me.REG[2]);
-  parser___parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___AStarshipExpr(fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
-}
-val_t NEW_AStarshipExpr_parser___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 = 4275;
-  fra.me.meth = LOCATE_NEW_AStarshipExpr_parser___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:4275 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___AStarshipExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AStarshipExpr(fra.me.REG[1]);
-  parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AStarshipExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AStarExpr[118] = {
-  {(bigint) 3811 /* 0: Identity */},
-  {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AStarExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AStarExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AStarExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3527 /* 5: AStarExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: AStarExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AStarExpr < AExpr: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction85[55] = {
+  {(bigint) 463 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction85" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction85 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction85 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 463 /* 5: ReduceAction85 < ReduceAction85: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 3739 /* 9: AStarExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3751 /* 10: AStarExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3779 /* 11: AStarExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 3803 /* 12: AStarExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 3811 /* 13: AStarExpr < AStarExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 5 /* 18: AStarExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction85 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -65878,6 +102529,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AStarExpr[118] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -65891,330 +102544,228 @@ const classtable_elt_t VFT_parser___parser_nodes___AStarExpr[118] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AStarExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AStarExpr___visit_all},
-  {(bigint) 4 /* 60: AStarExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ASendExpr___after_typing},
-  {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 68: AStarExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 70: AStarExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 75: AStarExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___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) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
-  {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 94: AStarExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
-  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
-  {(bigint) syntax___typing___AAbsSendExpr___get_property},
-  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 1 /* 100: AStarExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsSendExpr___prop},
-  {(bigint) syntax___typing___AAbsSendExpr___return_type},
-  {(bigint) syntax___typing___AStarExpr___name},
-  {(bigint) syntax___typing___ASendExpr___do_all_typing},
-  {(bigint) syntax___typing___ASendExpr___closure_defs},
-  {(bigint) parser___parser_prod___ASendExpr___empty_init},
-  {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 108: AStarExpr < ASendExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ASendExpr___n_expr},
-  {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) parser___parser_prod___ABinopExpr___empty_init},
-  {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 8 /* 113: AStarExpr < ABinopExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
-  {(bigint) parser___parser_prod___AStarExpr___empty_init},
-  {(bigint) parser___parser_prod___AStarExpr___init_astarexpr},
-  {(bigint) 9 /* 117: AStarExpr < AStarExpr: superclass init_table position */},
+  {(bigint) 0 /* 50: ReduceAction85 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction85___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction85 < ReduceAction85: 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__parser___parser_nodes___AStarExpr(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction85::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction85[] = "init var of ReduceAction85";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___AStarExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction85;
   fra.me.has_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:776 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  /* ./syntax//typing.nit:1388 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AStarExpr(void)
+val_t NEW_parser___ReduceAction85(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 21);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AStarExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction85;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AStarExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction85[] = "check new ReduceAction85";
+void CHECKNEW_parser___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_parser___parser_nodes___AStarExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction85;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___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___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___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_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AStarExpr_parser___parser_prod___ABinopExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction85_parser___ReduceAction___init[] = "new ReduceAction85 parser::ReduceAction::init";
+val_t NEW_ReduceAction85_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4304;
-  fra.me.meth = LOCATE_NEW_AStarExpr_parser___parser_prod___ABinopExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction85_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:4304 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AStarExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AStarExpr(fra.me.REG[0]);
-  parser___parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AStarExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction85();
+  INIT_ATTRIBUTES__parser___ReduceAction85(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction85(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AStarExpr_parser___parser_prod___AStarExpr___empty_init(void){
+const classtable_elt_t VFT_parser___ReduceAction86[55] = {
+  {(bigint) 459 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction86" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction86 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction86 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 459 /* 5: ReduceAction86 < ReduceAction86: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction86 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 50: ReduceAction86 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction86___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction86 < ReduceAction86: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ReduceAction86::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction86[] = "init var of ReduceAction86";
+void INIT_ATTRIBUTES__parser___ReduceAction86(val_t p0){
   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 = 5114;
-  fra.me.meth = LOCATE_NEW_AStarExpr_parser___parser_prod___AStarExpr___empty_init;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction86;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:5114 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AStarExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AStarExpr(fra.me.REG[0]);
-  parser___parser_prod___AStarExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AStarExpr(fra.me.REG[0]);
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
 }
-val_t NEW_AStarExpr_parser___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 = 5116;
-  fra.me.meth = LOCATE_NEW_AStarExpr_parser___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:5116 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___AStarExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AStarExpr(fra.me.REG[2]);
-  parser___parser_prod___AStarExpr___init_astarexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___AStarExpr(fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+val_t NEW_parser___ReduceAction86(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction86;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
 }
-val_t NEW_AStarExpr_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_CHECKNEW_parser___ReduceAction86[] = "check new ReduceAction86";
+void CHECKNEW_parser___ReduceAction86(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   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___parser_nodes___ANode___init;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction86;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___AStarExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AStarExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AStarExpr(fra.me.REG[1]);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
 }
-val_t NEW_AStarExpr_parser___parser_prod___ASendExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction86_parser___ReduceAction___init[] = "new ReduceAction86 parser::ReduceAction::init";
+val_t NEW_ReduceAction86_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4273;
-  fra.me.meth = LOCATE_NEW_AStarExpr_parser___parser_prod___ASendExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction86_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:4273 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AStarExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AStarExpr(fra.me.REG[0]);
-  parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AStarExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction86();
+  INIT_ATTRIBUTES__parser___ReduceAction86(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction86(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AStarExpr_parser___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 = 4306;
-  fra.me.meth = LOCATE_NEW_AStarExpr_parser___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:4306 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___AStarExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AStarExpr(fra.me.REG[2]);
-  parser___parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___AStarExpr(fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
-}
-val_t NEW_AStarExpr_parser___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 = 4275;
-  fra.me.meth = LOCATE_NEW_AStarExpr_parser___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:4275 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___AStarExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AStarExpr(fra.me.REG[1]);
-  parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AStarExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___ASlashExpr[118] = {
-  {(bigint) 3815 /* 0: Identity */},
-  {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ASlashExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ASlashExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ASlashExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3527 /* 5: ASlashExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: ASlashExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: ASlashExpr < AExpr: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction87[55] = {
+  {(bigint) 455 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction87" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction87 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction87 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 455 /* 5: ReduceAction87 < ReduceAction87: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 3739 /* 9: ASlashExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3751 /* 10: ASlashExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3779 /* 11: ASlashExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 3803 /* 12: ASlashExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 3815 /* 13: ASlashExpr < ASlashExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 5 /* 18: ASlashExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction87 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -66230,6 +102781,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ASlashExpr[118] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -66243,330 +102796,228 @@ const classtable_elt_t VFT_parser___parser_nodes___ASlashExpr[118] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ASlashExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ASlashExpr___visit_all},
-  {(bigint) 4 /* 60: ASlashExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ASendExpr___after_typing},
-  {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 68: ASlashExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 70: ASlashExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 75: ASlashExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___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) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
-  {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 94: ASlashExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
-  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
-  {(bigint) syntax___typing___AAbsSendExpr___get_property},
-  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 1 /* 100: ASlashExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsSendExpr___prop},
-  {(bigint) syntax___typing___AAbsSendExpr___return_type},
-  {(bigint) syntax___typing___ASlashExpr___name},
-  {(bigint) syntax___typing___ASendExpr___do_all_typing},
-  {(bigint) syntax___typing___ASendExpr___closure_defs},
-  {(bigint) parser___parser_prod___ASendExpr___empty_init},
-  {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 108: ASlashExpr < ASendExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ASendExpr___n_expr},
-  {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) parser___parser_prod___ABinopExpr___empty_init},
-  {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 8 /* 113: ASlashExpr < ABinopExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
-  {(bigint) parser___parser_prod___ASlashExpr___empty_init},
-  {(bigint) parser___parser_prod___ASlashExpr___init_aslashexpr},
-  {(bigint) 9 /* 117: ASlashExpr < ASlashExpr: superclass init_table position */},
+  {(bigint) 0 /* 50: ReduceAction87 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction87___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction87 < ReduceAction87: 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__parser___parser_nodes___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__parser___parser_nodes___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:776 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  /* ./syntax//typing.nit:1388 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+/* 2: Attribute ReduceAction87::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction87[] = "init var of ReduceAction87";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction87;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___ASlashExpr(void)
+val_t NEW_parser___ReduceAction87(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 21);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ASlashExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction87;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___ASlashExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction87[] = "check new ReduceAction87";
+void CHECKNEW_parser___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_parser___parser_nodes___ASlashExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction87;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___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___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___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_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ASlashExpr_parser___parser_prod___ABinopExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction87_parser___ReduceAction___init[] = "new ReduceAction87 parser::ReduceAction::init";
+val_t NEW_ReduceAction87_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4304;
-  fra.me.meth = LOCATE_NEW_ASlashExpr_parser___parser_prod___ABinopExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction87_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:4304 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ASlashExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ASlashExpr(fra.me.REG[0]);
-  parser___parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ASlashExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction87();
+  INIT_ATTRIBUTES__parser___ReduceAction87(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction87(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_ASlashExpr_parser___parser_prod___ASlashExpr___empty_init(void){
+const classtable_elt_t VFT_parser___ReduceAction88[55] = {
+  {(bigint) 451 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction88" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction88 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction88 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 451 /* 5: ReduceAction88 < ReduceAction88: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction88 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 50: ReduceAction88 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction88___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction88 < ReduceAction88: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ReduceAction88::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction88[] = "init var of ReduceAction88";
+void INIT_ATTRIBUTES__parser___ReduceAction88(val_t p0){
   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 = 5159;
-  fra.me.meth = LOCATE_NEW_ASlashExpr_parser___parser_prod___ASlashExpr___empty_init;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction88;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:5159 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ASlashExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ASlashExpr(fra.me.REG[0]);
-  parser___parser_prod___ASlashExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ASlashExpr(fra.me.REG[0]);
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
 }
-val_t NEW_ASlashExpr_parser___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 = 5161;
-  fra.me.meth = LOCATE_NEW_ASlashExpr_parser___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:5161 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___ASlashExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ASlashExpr(fra.me.REG[2]);
-  parser___parser_prod___ASlashExpr___init_aslashexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___ASlashExpr(fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+val_t NEW_parser___ReduceAction88(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction88;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
 }
-val_t NEW_ASlashExpr_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_CHECKNEW_parser___ReduceAction88[] = "check new ReduceAction88";
+void CHECKNEW_parser___ReduceAction88(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   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___parser_nodes___ANode___init;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction88;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___ASlashExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ASlashExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ASlashExpr(fra.me.REG[1]);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
 }
-val_t NEW_ASlashExpr_parser___parser_prod___ASendExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction88_parser___ReduceAction___init[] = "new ReduceAction88 parser::ReduceAction::init";
+val_t NEW_ReduceAction88_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4273;
-  fra.me.meth = LOCATE_NEW_ASlashExpr_parser___parser_prod___ASendExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction88_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:4273 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ASlashExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ASlashExpr(fra.me.REG[0]);
-  parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ASlashExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction88();
+  INIT_ATTRIBUTES__parser___ReduceAction88(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction88(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_ASlashExpr_parser___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 = 4306;
-  fra.me.meth = LOCATE_NEW_ASlashExpr_parser___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:4306 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___ASlashExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ASlashExpr(fra.me.REG[2]);
-  parser___parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___ASlashExpr(fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
-}
-val_t NEW_ASlashExpr_parser___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 = 4275;
-  fra.me.meth = LOCATE_NEW_ASlashExpr_parser___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:4275 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___ASlashExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ASlashExpr(fra.me.REG[1]);
-  parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ASlashExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___APercentExpr[118] = {
-  {(bigint) 3823 /* 0: Identity */},
-  {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "APercentExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: APercentExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: APercentExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3527 /* 5: APercentExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: APercentExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: APercentExpr < AExpr: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction89[55] = {
+  {(bigint) 447 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction89" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction89 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction89 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 447 /* 5: ReduceAction89 < ReduceAction89: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 3739 /* 9: APercentExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3751 /* 10: APercentExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3779 /* 11: APercentExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 3803 /* 12: APercentExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 3823 /* 13: APercentExpr < APercentExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 5 /* 18: APercentExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction89 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -66582,6 +103033,8 @@ const classtable_elt_t VFT_parser___parser_nodes___APercentExpr[118] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -66595,330 +103048,228 @@ const classtable_elt_t VFT_parser___parser_nodes___APercentExpr[118] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___APercentExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___APercentExpr___visit_all},
-  {(bigint) 4 /* 60: APercentExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ASendExpr___after_typing},
-  {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 68: APercentExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 70: APercentExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 75: APercentExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___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) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
-  {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 94: APercentExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
-  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
-  {(bigint) syntax___typing___AAbsSendExpr___get_property},
-  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 1 /* 100: APercentExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsSendExpr___prop},
-  {(bigint) syntax___typing___AAbsSendExpr___return_type},
-  {(bigint) syntax___typing___APercentExpr___name},
-  {(bigint) syntax___typing___ASendExpr___do_all_typing},
-  {(bigint) syntax___typing___ASendExpr___closure_defs},
-  {(bigint) parser___parser_prod___ASendExpr___empty_init},
-  {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 108: APercentExpr < ASendExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ASendExpr___n_expr},
-  {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) parser___parser_prod___ABinopExpr___empty_init},
-  {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 8 /* 113: APercentExpr < ABinopExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
-  {(bigint) parser___parser_prod___APercentExpr___empty_init},
-  {(bigint) parser___parser_prod___APercentExpr___init_apercentexpr},
-  {(bigint) 9 /* 117: APercentExpr < APercentExpr: superclass init_table position */},
+  {(bigint) 0 /* 50: ReduceAction89 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction89___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction89 < ReduceAction89: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___APercentExpr(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction89::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction89[] = "init var of ReduceAction89";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___APercentExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction89;
   fra.me.has_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:776 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  /* ./syntax//typing.nit:1388 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___APercentExpr(void)
+val_t NEW_parser___ReduceAction89(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 21);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___APercentExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction89;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___APercentExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction89[] = "check new ReduceAction89";
+void CHECKNEW_parser___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_parser___parser_nodes___APercentExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction89;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___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___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___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_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_APercentExpr_parser___parser_prod___ABinopExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction89_parser___ReduceAction___init[] = "new ReduceAction89 parser::ReduceAction::init";
+val_t NEW_ReduceAction89_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4304;
-  fra.me.meth = LOCATE_NEW_APercentExpr_parser___parser_prod___ABinopExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction89_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:4304 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___APercentExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___APercentExpr(fra.me.REG[0]);
-  parser___parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___APercentExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction89();
+  INIT_ATTRIBUTES__parser___ReduceAction89(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction89(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_APercentExpr_parser___parser_prod___APercentExpr___empty_init(void){
+const classtable_elt_t VFT_parser___ReduceAction90[55] = {
+  {(bigint) 439 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction90" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction90 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction90 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 439 /* 5: ReduceAction90 < ReduceAction90: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction90 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 50: ReduceAction90 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction90___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction90 < ReduceAction90: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ReduceAction90::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction90[] = "init var of ReduceAction90";
+void INIT_ATTRIBUTES__parser___ReduceAction90(val_t p0){
   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 = 5204;
-  fra.me.meth = LOCATE_NEW_APercentExpr_parser___parser_prod___APercentExpr___empty_init;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction90;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:5204 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___APercentExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___APercentExpr(fra.me.REG[0]);
-  parser___parser_prod___APercentExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___APercentExpr(fra.me.REG[0]);
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
 }
-val_t NEW_APercentExpr_parser___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 = 5206;
-  fra.me.meth = LOCATE_NEW_APercentExpr_parser___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:5206 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___APercentExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___APercentExpr(fra.me.REG[2]);
-  parser___parser_prod___APercentExpr___init_apercentexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___APercentExpr(fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+val_t NEW_parser___ReduceAction90(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction90;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
 }
-val_t NEW_APercentExpr_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_CHECKNEW_parser___ReduceAction90[] = "check new ReduceAction90";
+void CHECKNEW_parser___ReduceAction90(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   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___parser_nodes___ANode___init;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction90;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___APercentExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___APercentExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___APercentExpr(fra.me.REG[1]);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
 }
-val_t NEW_APercentExpr_parser___parser_prod___ASendExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction90_parser___ReduceAction___init[] = "new ReduceAction90 parser::ReduceAction::init";
+val_t NEW_ReduceAction90_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4273;
-  fra.me.meth = LOCATE_NEW_APercentExpr_parser___parser_prod___ASendExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction90_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:4273 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___APercentExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___APercentExpr(fra.me.REG[0]);
-  parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___APercentExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction90();
+  INIT_ATTRIBUTES__parser___ReduceAction90(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction90(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_APercentExpr_parser___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 = 4306;
-  fra.me.meth = LOCATE_NEW_APercentExpr_parser___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:4306 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___APercentExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___APercentExpr(fra.me.REG[2]);
-  parser___parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___APercentExpr(fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
-}
-val_t NEW_APercentExpr_parser___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 = 4275;
-  fra.me.meth = LOCATE_NEW_APercentExpr_parser___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:4275 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___APercentExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___APercentExpr(fra.me.REG[1]);
-  parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___APercentExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AUminusExpr[115] = {
-  {(bigint) 3783 /* 0: Identity */},
-  {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AUminusExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AUminusExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AUminusExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3527 /* 5: AUminusExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: AUminusExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AUminusExpr < AExpr: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction91[55] = {
+  {(bigint) 435 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction91" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction91 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction91 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 435 /* 5: ReduceAction91 < ReduceAction91: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 3739 /* 9: AUminusExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3751 /* 10: AUminusExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3779 /* 11: AUminusExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 3783 /* 12: AUminusExpr < AUminusExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 5 /* 18: AUminusExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction91 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -66934,6 +103285,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AUminusExpr[115] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -66947,277 +103300,220 @@ const classtable_elt_t VFT_parser___parser_nodes___AUminusExpr[115] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AUminusExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AUminusExpr___visit_all},
-  {(bigint) 4 /* 60: AUminusExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ASendExpr___after_typing},
-  {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 68: AUminusExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 70: AUminusExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 75: AUminusExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___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) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
-  {(bigint) syntax___typing___AUminusExpr___compute_raw_arguments},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 94: AUminusExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
-  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
-  {(bigint) syntax___typing___AAbsSendExpr___get_property},
-  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 1 /* 100: AUminusExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsSendExpr___prop},
-  {(bigint) syntax___typing___AAbsSendExpr___return_type},
-  {(bigint) syntax___typing___AUminusExpr___name},
-  {(bigint) syntax___typing___ASendExpr___do_all_typing},
-  {(bigint) syntax___typing___ASendExpr___closure_defs},
-  {(bigint) parser___parser_prod___ASendExpr___empty_init},
-  {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 108: AUminusExpr < ASendExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ASendExpr___n_expr},
-  {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) parser___parser_prod___AUminusExpr___empty_init},
-  {(bigint) parser___parser_prod___AUminusExpr___init_auminusexpr},
-  {(bigint) 8 /* 113: AUminusExpr < AUminusExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AUminusExpr___n_minus},
+  {(bigint) 0 /* 50: ReduceAction91 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction91___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction91 < ReduceAction91: superclass init_table position */},
 };
 /* 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__parser___parser_nodes___AUminusExpr(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction91::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction91[] = "init var of ReduceAction91";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___AUminusExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction91;
   fra.me.has_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:776 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  /* ./syntax//typing.nit:1388 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AUminusExpr(void)
+val_t NEW_parser___ReduceAction91(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 21);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AUminusExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction91;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AUminusExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction91[] = "check new ReduceAction91";
+void CHECKNEW_parser___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_parser___parser_nodes___AUminusExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction91;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___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___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___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_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AUminusExpr_parser___parser_prod___ASendExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction91_parser___ReduceAction___init[] = "new ReduceAction91 parser::ReduceAction::init";
+val_t NEW_ReduceAction91_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4273;
-  fra.me.meth = LOCATE_NEW_AUminusExpr_parser___parser_prod___ASendExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction91_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:4273 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AUminusExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AUminusExpr(fra.me.REG[0]);
-  parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AUminusExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction91();
+  INIT_ATTRIBUTES__parser___ReduceAction91(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction91(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AUminusExpr_parser___parser_prod___AUminusExpr___empty_init(void){
+const classtable_elt_t VFT_parser___ReduceAction92[55] = {
+  {(bigint) 431 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction92" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction92 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction92 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 431 /* 5: ReduceAction92 < ReduceAction92: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction92 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 50: ReduceAction92 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction92___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction92 < ReduceAction92: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ReduceAction92::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction92[] = "init var of ReduceAction92";
+void INIT_ATTRIBUTES__parser___ReduceAction92(val_t p0){
   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 = 5249;
-  fra.me.meth = LOCATE_NEW_AUminusExpr_parser___parser_prod___AUminusExpr___empty_init;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction92;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:5249 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AUminusExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AUminusExpr(fra.me.REG[0]);
-  parser___parser_prod___AUminusExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AUminusExpr(fra.me.REG[0]);
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
 }
-val_t NEW_AUminusExpr_parser___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 = 5251;
-  fra.me.meth = LOCATE_NEW_AUminusExpr_parser___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:5251 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___AUminusExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AUminusExpr(fra.me.REG[2]);
-  parser___parser_prod___AUminusExpr___init_auminusexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___AUminusExpr(fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+val_t NEW_parser___ReduceAction92(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction92;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
 }
-val_t NEW_AUminusExpr_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_CHECKNEW_parser___ReduceAction92[] = "check new ReduceAction92";
+void CHECKNEW_parser___ReduceAction92(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 = 0;
-  fra.me.meth = LOCATE_NEW_AUminusExpr_parser___parser_nodes___ANode___init;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction92;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___AUminusExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AUminusExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AUminusExpr(fra.me.REG[1]);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
 }
-val_t NEW_AUminusExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ReduceAction92_parser___ReduceAction___init[] = "new ReduceAction92 parser::ReduceAction::init";
+val_t NEW_ReduceAction92_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4275;
-  fra.me.meth = LOCATE_NEW_AUminusExpr_parser___parser_prod___ASendExpr___init_asendexpr;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction92_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./parser//parser_prod.nit:4275 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___AUminusExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AUminusExpr(fra.me.REG[1]);
-  parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AUminusExpr(fra.me.REG[1]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction92();
+  INIT_ATTRIBUTES__parser___ReduceAction92(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction92(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ANewExpr[110] = {
-  {(bigint) 3755 /* 0: Identity */},
-  {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ANewExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ANewExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ANewExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3527 /* 5: ANewExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: ANewExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: ANewExpr < AExpr: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction93[55] = {
+  {(bigint) 427 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction93" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction93 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction93 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 427 /* 5: ReduceAction93 < ReduceAction93: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 3739 /* 9: ANewExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3755 /* 10: ANewExpr < ANewExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -67225,7 +103521,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ANewExpr[110] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 18: ANewExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction93 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -67241,6 +103537,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ANewExpr[110] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -67254,237 +103552,91 @@ const classtable_elt_t VFT_parser___parser_nodes___ANewExpr[110] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ANewExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ANewExpr___visit_all},
-  {(bigint) 3 /* 60: ANewExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANewExpr___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 2 /* 70: ANewExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 5 /* 75: ANewExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___ANewExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___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) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
-  {(bigint) syntax___typing___ANewExpr___compute_raw_arguments},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 1 /* 94: ANewExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
-  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
-  {(bigint) syntax___typing___AAbsSendExpr___get_property},
-  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 0 /* 100: ANewExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsSendExpr___prop},
-  {(bigint) syntax___typing___AAbsSendExpr___return_type},
-  {(bigint) parser___parser_prod___ANewExpr___empty_init},
-  {(bigint) parser___parser_prod___ANewExpr___init_anewexpr},
-  {(bigint) 6 /* 105: ANewExpr < ANewExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANewExpr___n_kwnew},
-  {(bigint) parser___parser_nodes___ANewExpr___n_type},
-  {(bigint) parser___parser_nodes___ANewExpr___n_id},
-  {(bigint) parser___parser_nodes___ANewExpr___n_args},
+  {(bigint) 0 /* 50: ReduceAction93 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction93___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction93 < ReduceAction93: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___ANewExpr(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction93::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction93[] = "init var of ReduceAction93";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___ANewExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction93;
   fra.me.has_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:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  /* ./parser//parser_nodes.nit:865 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___ANewExpr____n_id(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:866 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___ANewExpr____n_args(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//typing.nit:1388 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___ANewExpr(void)
+val_t NEW_parser___ReduceAction93(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 22);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ANewExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction93;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___ANewExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction93[] = "check new ReduceAction93";
+void CHECKNEW_parser___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_parser___parser_nodes___ANewExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction93;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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___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___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___parser_nodes___ANewExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ANewExpr_parser___parser_prod___ANewExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction93_parser___ReduceAction___init[] = "new ReduceAction93 parser::ReduceAction::init";
+val_t NEW_ReduceAction93_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5294;
-  fra.me.meth = LOCATE_NEW_ANewExpr_parser___parser_prod___ANewExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction93_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:5294 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ANewExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ANewExpr(fra.me.REG[0]);
-  parser___parser_prod___ANewExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ANewExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction93();
+  INIT_ATTRIBUTES__parser___ReduceAction93(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction93(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_ANewExpr_parser___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 = 5296;
-  fra.me.meth = LOCATE_NEW_ANewExpr_parser___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:5296 */
-  fra.me.REG[4] = NEW_parser___parser_nodes___ANewExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ANewExpr(fra.me.REG[4]);
-  parser___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_parser___parser_nodes___ANewExpr(fra.me.REG[4]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[4];
-}
-val_t NEW_ANewExpr_parser___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___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_parser___parser_nodes___ANewExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ANewExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ANewExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AAttrFormExpr[96] = {
-  {(bigint) 3495 /* 0: Identity */},
-  {(bigint) 20 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AAttrFormExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AAttrFormExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AAttrFormExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3495 /* 5: AAttrFormExpr < AAttrFormExpr: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: AAttrFormExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AAttrFormExpr < AExpr: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction94[55] = {
+  {(bigint) 407 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction94" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction94 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction94 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 407 /* 5: ReduceAction94 < ReduceAction94: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -67495,7 +103647,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrFormExpr[96] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AAttrFormExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction94 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -67511,6 +103663,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrFormExpr[96] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -67524,161 +103678,92 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrFormExpr[96] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ANode___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ANode___visit_all},
-  {(bigint) 1 /* 60: AAttrFormExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___AExpr___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AAttrFormExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 75: AAttrFormExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___AExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___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) syntax___typing___AAttrFormExpr___do_typing},
-  {(bigint) syntax___typing___AAttrFormExpr___prop},
-  {(bigint) syntax___typing___AAttrFormExpr___attr_type},
-  {(bigint) 4 /* 93: AAttrFormExpr < AAttrFormExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AAttrFormExpr___n_expr},
-  {(bigint) parser___parser_nodes___AAttrFormExpr___n_id},
+  {(bigint) 0 /* 50: ReduceAction94 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction94___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction94 < ReduceAction94: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AAttrFormExpr(val_t p0){
+/* 2: Attribute ReduceAction94::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction94[] = "init var of ReduceAction94";
+void INIT_ATTRIBUTES__parser___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_INIT_ATTRIBUTES__parser___parser_nodes___AAttrFormExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction94;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AAttrFormExpr(void)
+val_t NEW_parser___ReduceAction94(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 20);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AAttrFormExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction94;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AAttrFormExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction94[] = "check new ReduceAction94";
+void CHECKNEW_parser___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_parser___parser_nodes___AAttrFormExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction94;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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___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___parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AAttrFormExpr_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ReduceAction94_parser___ReduceAction___init[] = "new ReduceAction94 parser::ReduceAction::init";
+val_t NEW_ReduceAction94_parser___ReduceAction___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};
+  int init_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_AAttrFormExpr_parser___parser_nodes___ANode___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction94_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___AAttrFormExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AAttrFormExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AAttrFormExpr(fra.me.REG[1]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction94();
+  INIT_ATTRIBUTES__parser___ReduceAction94(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction94(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AAttrExpr[99] = {
-  {(bigint) 3715 /* 0: Identity */},
-  {(bigint) 20 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AAttrExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AAttrExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AAttrExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3495 /* 5: AAttrExpr < AAttrFormExpr: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: AAttrExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AAttrExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3715 /* 8: AAttrExpr < AAttrExpr: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction95[55] = {
+  {(bigint) 403 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction95" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction95 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction95 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 403 /* 5: ReduceAction95 < ReduceAction95: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -67688,7 +103773,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrExpr[99] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AAttrExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction95 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -67704,6 +103789,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrExpr[99] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -67717,207 +103804,93 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrExpr[99] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AAttrExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AAttrExpr___visit_all},
-  {(bigint) 1 /* 60: AAttrExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___AAttrExpr___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AAttrExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 75: AAttrExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___AAttrExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___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) syntax___typing___AAttrFormExpr___do_typing},
-  {(bigint) syntax___typing___AAttrFormExpr___prop},
-  {(bigint) syntax___typing___AAttrFormExpr___attr_type},
-  {(bigint) 4 /* 93: AAttrExpr < AAttrFormExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AAttrFormExpr___n_expr},
-  {(bigint) parser___parser_nodes___AAttrFormExpr___n_id},
-  {(bigint) parser___parser_prod___AAttrExpr___empty_init},
-  {(bigint) parser___parser_prod___AAttrExpr___init_aattrexpr},
-  {(bigint) 5 /* 98: AAttrExpr < AAttrExpr: superclass init_table position */},
+  {(bigint) 0 /* 50: ReduceAction95 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction95___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction95 < ReduceAction95: 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__parser___parser_nodes___AAttrExpr(val_t p0){
+/* 2: Attribute ReduceAction95::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction95[] = "init var of ReduceAction95";
+void INIT_ATTRIBUTES__parser___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_INIT_ATTRIBUTES__parser___parser_nodes___AAttrExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction95;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AAttrExpr(void)
+val_t NEW_parser___ReduceAction95(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 20);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AAttrExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction95;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AAttrExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction95[] = "check new ReduceAction95";
+void CHECKNEW_parser___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_parser___parser_nodes___AAttrExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction95;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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___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___parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AAttrExpr_parser___parser_prod___AAttrExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction95_parser___ReduceAction___init[] = "new ReduceAction95 parser::ReduceAction::init";
+val_t NEW_ReduceAction95_parser___ReduceAction___init(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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5378;
-  fra.me.meth = LOCATE_NEW_AAttrExpr_parser___parser_prod___AAttrExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction95_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:5378 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AAttrExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AAttrExpr(fra.me.REG[0]);
-  parser___parser_prod___AAttrExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AAttrExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction95();
+  INIT_ATTRIBUTES__parser___ReduceAction95(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction95(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AAttrExpr_parser___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 = 5380;
-  fra.me.meth = LOCATE_NEW_AAttrExpr_parser___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:5380 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___AAttrExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AAttrExpr(fra.me.REG[2]);
-  parser___parser_prod___AAttrExpr___init_aattrexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___AAttrExpr(fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
-}
-val_t NEW_AAttrExpr_parser___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___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_parser___parser_nodes___AAttrExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AAttrExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AAttrExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AAttrAssignExpr[96] = {
-  {(bigint) 3719 /* 0: Identity */},
-  {(bigint) 20 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AAttrAssignExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AAttrAssignExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AAttrAssignExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3495 /* 5: AAttrAssignExpr < AAttrFormExpr: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: AAttrAssignExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AAttrAssignExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3503 /* 8: AAttrAssignExpr < AAssignFormExpr: superclass typecheck marker */},
-  {(bigint) 3719 /* 9: AAttrAssignExpr < AAttrAssignExpr: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction96[55] = {
+  {(bigint) 391 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction96" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction96 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction96 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 391 /* 5: ReduceAction96 < ReduceAction96: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -67926,7 +103899,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrAssignExpr[96] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AAttrAssignExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction96 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -67942,6 +103915,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrAssignExpr[96] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -67955,227 +103930,102 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrAssignExpr[96] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AAttrAssignExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AAttrAssignExpr___visit_all},
-  {(bigint) 1 /* 60: AAttrAssignExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___AAttrAssignExpr___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AAttrAssignExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 75: AAttrAssignExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___AAttrAssignExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) parser___parser_prod___AAttrAssignExpr___empty_init},
-  {(bigint) parser___parser_prod___AAttrAssignExpr___init_aattrassignexpr},
-  {(bigint) 6 /* 84: AAttrAssignExpr < AAttrAssignExpr: superclass init_table position */},
-  {(bigint) 5 /* 85: AAttrAssignExpr < AAssignFormExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AAssignFormExpr___n_assign},
-  {(bigint) parser___parser_nodes___AAssignFormExpr___n_value},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) syntax___typing___AAttrFormExpr___do_typing},
-  {(bigint) syntax___typing___AAttrFormExpr___prop},
-  {(bigint) syntax___typing___AAttrFormExpr___attr_type},
-  {(bigint) 4 /* 93: AAttrAssignExpr < AAttrFormExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AAttrFormExpr___n_expr},
-  {(bigint) parser___parser_nodes___AAttrFormExpr___n_id},
+  {(bigint) 0 /* 50: ReduceAction96 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction96___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction96 < ReduceAction96: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AAttrAssignExpr(val_t p0){
+/* 2: Attribute ReduceAction96::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction96[] = "init var of ReduceAction96";
+void INIT_ATTRIBUTES__parser___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_INIT_ATTRIBUTES__parser___parser_nodes___AAttrAssignExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction96;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AAttrAssignExpr(void)
+val_t NEW_parser___ReduceAction96(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 20);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AAttrAssignExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction96;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AAttrAssignExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction96[] = "check new ReduceAction96";
+void CHECKNEW_parser___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_parser___parser_nodes___AAttrAssignExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction96;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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___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___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___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___parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AAttrAssignExpr_parser___parser_prod___AAttrAssignExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction96_parser___ReduceAction___init[] = "new ReduceAction96 parser::ReduceAction::init";
+val_t NEW_ReduceAction96_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5423;
-  fra.me.meth = LOCATE_NEW_AAttrAssignExpr_parser___parser_prod___AAttrAssignExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction96_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:5423 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AAttrAssignExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AAttrAssignExpr(fra.me.REG[0]);
-  parser___parser_prod___AAttrAssignExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AAttrAssignExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction96();
+  INIT_ATTRIBUTES__parser___ReduceAction96(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction96(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AAttrAssignExpr_parser___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 = 5425;
-  fra.me.meth = LOCATE_NEW_AAttrAssignExpr_parser___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:5425 */
-  fra.me.REG[4] = NEW_parser___parser_nodes___AAttrAssignExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AAttrAssignExpr(fra.me.REG[4]);
-  parser___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_parser___parser_nodes___AAttrAssignExpr(fra.me.REG[4]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[4];
-}
-val_t NEW_AAttrAssignExpr_parser___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___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_parser___parser_nodes___AAttrAssignExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AAttrAssignExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AAttrAssignExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___ACallFormExpr[116] = {
-  {(bigint) 3795 /* 0: Identity */},
-  {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ACallFormExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ACallFormExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ACallFormExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3527 /* 5: ACallFormExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: ACallFormExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: ACallFormExpr < AExpr: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction97[55] = {
+  {(bigint) 387 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction97" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction97 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction97 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 387 /* 5: ReduceAction97 < ReduceAction97: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 3739 /* 9: ACallFormExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3751 /* 10: ACallFormExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3779 /* 11: ACallFormExpr < ASendExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 3795 /* 13: ACallFormExpr < ACallFormExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 5 /* 18: ACallFormExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction97 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -68191,6 +104041,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ACallFormExpr[116] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -68204,244 +104056,93 @@ const classtable_elt_t VFT_parser___parser_nodes___ACallFormExpr[116] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ASendExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ASendExpr___visit_all},
-  {(bigint) 4 /* 60: ACallFormExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ACallFormExpr___after_typing},
-  {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 68: ACallFormExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 70: ACallFormExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 75: ACallFormExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___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) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___compute_raw_arguments},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 94: ACallFormExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
-  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
-  {(bigint) syntax___typing___AAbsSendExpr___get_property},
-  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 1 /* 100: ACallFormExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsSendExpr___prop},
-  {(bigint) syntax___typing___AAbsSendExpr___return_type},
-  {(bigint) syntax___typing___ASendExpr___name},
-  {(bigint) syntax___typing___ASendExpr___do_all_typing},
-  {(bigint) syntax___typing___ACallFormExpr___closure_defs},
-  {(bigint) parser___parser_prod___ASendExpr___empty_init},
-  {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 108: ACallFormExpr < ASendExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ASendExpr___n_expr},
-  {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) syntax___typing___ASendExpr___after_typing},
-  {(bigint) syntax___typing___ACallFormExpr___variable_create},
-  {(bigint) 8 /* 113: ACallFormExpr < ACallFormExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ACallFormExpr___n_id},
-  {(bigint) parser___parser_nodes___ACallFormExpr___n_args},
+  {(bigint) 0 /* 50: ReduceAction97 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction97___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction97 < ReduceAction97: superclass init_table position */},
 };
 /* 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__parser___parser_nodes___ACallFormExpr(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction97::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction97[] = "init var of ReduceAction97";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___ACallFormExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction97;
   fra.me.has_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:883 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___ACallFormExpr____n_args(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:776 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  /* ./syntax//typing.nit:1388 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___ACallFormExpr(void)
+val_t NEW_parser___ReduceAction97(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 22);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ACallFormExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction97;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___ACallFormExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction97[] = "check new ReduceAction97";
+void CHECKNEW_parser___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_parser___parser_nodes___ACallFormExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction97;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___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___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___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___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_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ACallFormExpr_parser___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___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_parser___parser_nodes___ACallFormExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ACallFormExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ACallFormExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_ACallFormExpr_parser___parser_prod___ASendExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction97_parser___ReduceAction___init[] = "new ReduceAction97 parser::ReduceAction::init";
+val_t NEW_ReduceAction97_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4273;
-  fra.me.meth = LOCATE_NEW_ACallFormExpr_parser___parser_prod___ASendExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction97_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:4273 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ACallFormExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ACallFormExpr(fra.me.REG[0]);
-  parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ACallFormExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction97();
+  INIT_ATTRIBUTES__parser___ReduceAction97(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction97(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_ACallFormExpr_parser___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 = 4275;
-  fra.me.meth = LOCATE_NEW_ACallFormExpr_parser___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:4275 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___ACallFormExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ACallFormExpr(fra.me.REG[1]);
-  parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ACallFormExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AAttrReassignExpr[96] = {
-  {(bigint) 3711 /* 0: Identity */},
-  {(bigint) 20 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AAttrReassignExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AAttrReassignExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AAttrReassignExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3495 /* 5: AAttrReassignExpr < AAttrFormExpr: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: AAttrReassignExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AAttrReassignExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3311 /* 8: AAttrReassignExpr < AReassignFormExpr: superclass typecheck marker */},
-  {(bigint) 3711 /* 9: AAttrReassignExpr < AAttrReassignExpr: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction98[55] = {
+  {(bigint) 383 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction98" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction98 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction98 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 383 /* 5: ReduceAction98 < ReduceAction98: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -68450,7 +104151,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrReassignExpr[96] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AAttrReassignExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction98 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -68466,6 +104167,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrReassignExpr[96] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -68479,227 +104182,102 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrReassignExpr[96] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AAttrReassignExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AAttrReassignExpr___visit_all},
-  {(bigint) 1 /* 60: AAttrReassignExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___AAttrReassignExpr___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AAttrReassignExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 75: AAttrReassignExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___AAttrReassignExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) parser___parser_prod___AAttrReassignExpr___empty_init},
-  {(bigint) parser___parser_prod___AAttrReassignExpr___init_aattrreassignexpr},
-  {(bigint) 6 /* 84: AAttrReassignExpr < AAttrReassignExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AReassignFormExpr___do_rvalue_typing},
-  {(bigint) syntax___typing___AReassignFormExpr___assign_method},
-  {(bigint) 5 /* 87: AAttrReassignExpr < AReassignFormExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AReassignFormExpr___n_assign_op},
-  {(bigint) parser___parser_nodes___AReassignFormExpr___n_value},
-  {(bigint) syntax___typing___AAttrFormExpr___do_typing},
-  {(bigint) syntax___typing___AAttrFormExpr___prop},
-  {(bigint) syntax___typing___AAttrFormExpr___attr_type},
-  {(bigint) 4 /* 93: AAttrReassignExpr < AAttrFormExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AAttrFormExpr___n_expr},
-  {(bigint) parser___parser_nodes___AAttrFormExpr___n_id},
+  {(bigint) 0 /* 50: ReduceAction98 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction98___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction98 < ReduceAction98: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AAttrReassignExpr(val_t p0){
+/* 2: Attribute ReduceAction98::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction98[] = "init var of ReduceAction98";
+void INIT_ATTRIBUTES__parser___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_INIT_ATTRIBUTES__parser___parser_nodes___AAttrReassignExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction98;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AAttrReassignExpr(void)
+val_t NEW_parser___ReduceAction98(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 20);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AAttrReassignExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction98;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AAttrReassignExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction98[] = "check new ReduceAction98";
+void CHECKNEW_parser___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_parser___parser_nodes___AAttrReassignExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction98;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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___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___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___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___parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AAttrReassignExpr_parser___parser_prod___AAttrReassignExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction98_parser___ReduceAction___init[] = "new ReduceAction98 parser::ReduceAction::init";
+val_t NEW_ReduceAction98_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5496;
-  fra.me.meth = LOCATE_NEW_AAttrReassignExpr_parser___parser_prod___AAttrReassignExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction98_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:5496 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AAttrReassignExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AAttrReassignExpr(fra.me.REG[0]);
-  parser___parser_prod___AAttrReassignExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AAttrReassignExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction98();
+  INIT_ATTRIBUTES__parser___ReduceAction98(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction98(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AAttrReassignExpr_parser___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 = 5498;
-  fra.me.meth = LOCATE_NEW_AAttrReassignExpr_parser___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:5498 */
-  fra.me.REG[4] = NEW_parser___parser_nodes___AAttrReassignExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AAttrReassignExpr(fra.me.REG[4]);
-  parser___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_parser___parser_nodes___AAttrReassignExpr(fra.me.REG[4]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[4];
-}
-val_t NEW_AAttrReassignExpr_parser___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___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_parser___parser_nodes___AAttrReassignExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AAttrReassignExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AAttrReassignExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___ACallExpr[119] = {
-  {(bigint) 3867 /* 0: Identity */},
-  {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ACallExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ACallExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ACallExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3527 /* 5: ACallExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: ACallExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: ACallExpr < AExpr: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction99[55] = {
+  {(bigint) 379 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction99" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction99 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction99 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 379 /* 5: ReduceAction99 < ReduceAction99: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 3739 /* 9: ACallExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3751 /* 10: ACallExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3779 /* 11: ACallExpr < ASendExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 3795 /* 13: ACallExpr < ACallFormExpr: superclass typecheck marker */},
-  {(bigint) 3867 /* 14: ACallExpr < ACallExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 5 /* 18: ACallExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction99 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -68715,6 +104293,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ACallExpr[119] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -68728,302 +104308,228 @@ const classtable_elt_t VFT_parser___parser_nodes___ACallExpr[119] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ACallExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ACallExpr___visit_all},
-  {(bigint) 4 /* 60: ACallExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ACallFormExpr___after_typing},
-  {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 68: ACallExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 70: ACallExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 75: ACallExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___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) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
-  {(bigint) syntax___typing___ACallExpr___compute_raw_arguments},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 94: ACallExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
-  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
-  {(bigint) syntax___typing___AAbsSendExpr___get_property},
-  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 1 /* 100: ACallExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsSendExpr___prop},
-  {(bigint) syntax___typing___AAbsSendExpr___return_type},
-  {(bigint) syntax___typing___ACallExpr___name},
-  {(bigint) syntax___typing___ASendExpr___do_all_typing},
-  {(bigint) syntax___typing___ACallFormExpr___closure_defs},
-  {(bigint) parser___parser_prod___ASendExpr___empty_init},
-  {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 108: ACallExpr < ASendExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ASendExpr___n_expr},
-  {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) syntax___typing___ASendExpr___after_typing},
-  {(bigint) syntax___typing___ACallExpr___variable_create},
-  {(bigint) 8 /* 113: ACallExpr < ACallFormExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ACallFormExpr___n_id},
-  {(bigint) parser___parser_nodes___ACallFormExpr___n_args},
-  {(bigint) parser___parser_prod___ACallExpr___empty_init},
-  {(bigint) parser___parser_prod___ACallExpr___init_acallexpr},
-  {(bigint) 9 /* 118: ACallExpr < ACallExpr: superclass init_table position */},
+  {(bigint) 0 /* 50: ReduceAction99 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction99___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction99 < ReduceAction99: 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__parser___parser_nodes___ACallExpr(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction99::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction99[] = "init var of ReduceAction99";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___ACallExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction99;
   fra.me.has_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:883 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___ACallFormExpr____n_args(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:776 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  /* ./syntax//typing.nit:1388 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___ACallExpr(void)
+val_t NEW_parser___ReduceAction99(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 22);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ACallExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction99;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___ACallExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction99[] = "check new ReduceAction99";
+void CHECKNEW_parser___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_parser___parser_nodes___ACallExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction99;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___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___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___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___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_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ACallExpr_parser___parser_prod___ASendExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction99_parser___ReduceAction___init[] = "new ReduceAction99 parser::ReduceAction::init";
+val_t NEW_ReduceAction99_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4273;
-  fra.me.meth = LOCATE_NEW_ACallExpr_parser___parser_prod___ASendExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction99_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:4273 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ACallExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ACallExpr(fra.me.REG[0]);
-  parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ACallExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction99();
+  INIT_ATTRIBUTES__parser___ReduceAction99(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction99(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_ACallExpr_parser___parser_prod___ACallExpr___empty_init(void){
+const classtable_elt_t VFT_parser___ReduceAction100[55] = {
+  {(bigint) 2979 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction100" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction100 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction100 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2979 /* 5: ReduceAction100 < ReduceAction100: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction100 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 50: ReduceAction100 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction100___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction100 < ReduceAction100: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ReduceAction100::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction100[] = "init var of ReduceAction100";
+void INIT_ATTRIBUTES__parser___ReduceAction100(val_t p0){
   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 = 5569;
-  fra.me.meth = LOCATE_NEW_ACallExpr_parser___parser_prod___ACallExpr___empty_init;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction100;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:5569 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ACallExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ACallExpr(fra.me.REG[0]);
-  parser___parser_prod___ACallExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ACallExpr(fra.me.REG[0]);
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
 }
-val_t NEW_ACallExpr_parser___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 = 5571;
-  fra.me.meth = LOCATE_NEW_ACallExpr_parser___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:5571 */
-  fra.me.REG[4] = NEW_parser___parser_nodes___ACallExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ACallExpr(fra.me.REG[4]);
-  parser___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_parser___parser_nodes___ACallExpr(fra.me.REG[4]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[4];
+val_t NEW_parser___ReduceAction100(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction100;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
 }
-val_t NEW_ACallExpr_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_CHECKNEW_parser___ReduceAction100[] = "check new ReduceAction100";
+void CHECKNEW_parser___ReduceAction100(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   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___parser_nodes___ANode___init;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction100;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___ACallExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ACallExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ACallExpr(fra.me.REG[1]);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
 }
-val_t NEW_ACallExpr_parser___parser_prod___ASendExpr___init_asendexpr(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ReduceAction100_parser___ReduceAction___init[] = "new ReduceAction100 parser::ReduceAction::init";
+val_t NEW_ReduceAction100_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4275;
-  fra.me.meth = LOCATE_NEW_ACallExpr_parser___parser_prod___ASendExpr___init_asendexpr;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction100_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./parser//parser_prod.nit:4275 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___ACallExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ACallExpr(fra.me.REG[1]);
-  parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ACallExpr(fra.me.REG[1]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction100();
+  INIT_ATTRIBUTES__parser___ReduceAction100(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction100(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ACallAssignExpr[116] = {
-  {(bigint) 3871 /* 0: Identity */},
-  {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ACallAssignExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ACallAssignExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ACallAssignExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3527 /* 5: ACallAssignExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: ACallAssignExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: ACallAssignExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3503 /* 8: ACallAssignExpr < AAssignFormExpr: superclass typecheck marker */},
-  {(bigint) 3739 /* 9: ACallAssignExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3751 /* 10: ACallAssignExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3779 /* 11: ACallAssignExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 3871 /* 12: ACallAssignExpr < ACallAssignExpr: superclass typecheck marker */},
-  {(bigint) 3795 /* 13: ACallAssignExpr < ACallFormExpr: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction101[55] = {
+  {(bigint) 2975 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction101" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction101 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction101 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2975 /* 5: ReduceAction101 < ReduceAction101: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
-  {(bigint) 5 /* 18: ACallAssignExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction101 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -69039,6 +104545,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ACallAssignExpr[116] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -69052,311 +104560,102 @@ const classtable_elt_t VFT_parser___parser_nodes___ACallAssignExpr[116] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ACallAssignExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ACallAssignExpr___visit_all},
-  {(bigint) 4 /* 60: ACallAssignExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ACallFormExpr___after_typing},
-  {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 68: ACallAssignExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 70: ACallAssignExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 75: ACallAssignExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) parser___parser_prod___ACallAssignExpr___empty_init},
-  {(bigint) parser___parser_prod___ACallAssignExpr___init_acallassignexpr},
-  {(bigint) 10 /* 84: ACallAssignExpr < ACallAssignExpr: superclass init_table position */},
-  {(bigint) 9 /* 85: ACallAssignExpr < AAssignFormExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AAssignFormExpr___n_assign},
-  {(bigint) parser___parser_nodes___AAssignFormExpr___n_value},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
-  {(bigint) syntax___typing___ACallAssignExpr___compute_raw_arguments},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 94: ACallAssignExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
-  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
-  {(bigint) syntax___typing___AAbsSendExpr___get_property},
-  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 1 /* 100: ACallAssignExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsSendExpr___prop},
-  {(bigint) syntax___typing___AAbsSendExpr___return_type},
-  {(bigint) syntax___typing___ACallAssignExpr___name},
-  {(bigint) syntax___typing___ASendExpr___do_all_typing},
-  {(bigint) syntax___typing___ACallFormExpr___closure_defs},
-  {(bigint) parser___parser_prod___ASendExpr___empty_init},
-  {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 108: ACallAssignExpr < ASendExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ASendExpr___n_expr},
-  {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) syntax___typing___ASendExpr___after_typing},
-  {(bigint) syntax___typing___ACallAssignExpr___variable_create},
-  {(bigint) 8 /* 113: ACallAssignExpr < ACallFormExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ACallFormExpr___n_id},
-  {(bigint) parser___parser_nodes___ACallFormExpr___n_args},
+  {(bigint) 0 /* 50: ReduceAction101 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction101___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction101 < ReduceAction101: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___ACallAssignExpr(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction101::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction101[] = "init var of ReduceAction101";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___ACallAssignExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction101;
   fra.me.has_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:883 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___ACallFormExpr____n_args(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:776 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  /* ./syntax//typing.nit:1388 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___ACallAssignExpr(void)
+val_t NEW_parser___ReduceAction101(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 22);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ACallAssignExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction101;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___ACallAssignExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction101[] = "check new ReduceAction101";
+void CHECKNEW_parser___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_parser___parser_nodes___ACallAssignExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction101;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___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___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___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___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___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___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_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ACallAssignExpr_parser___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 = 4273;
-  fra.me.meth = LOCATE_NEW_ACallAssignExpr_parser___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:4273 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ACallAssignExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ACallAssignExpr(fra.me.REG[0]);
-  parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ACallAssignExpr(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-val_t NEW_ACallAssignExpr_parser___parser_prod___ACallAssignExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction101_parser___ReduceAction___init[] = "new ReduceAction101 parser::ReduceAction::init";
+val_t NEW_ReduceAction101_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[11] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5656;
-  fra.me.meth = LOCATE_NEW_ACallAssignExpr_parser___parser_prod___ACallAssignExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction101_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:5656 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ACallAssignExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ACallAssignExpr(fra.me.REG[0]);
-  parser___parser_prod___ACallAssignExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ACallAssignExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction101();
+  INIT_ATTRIBUTES__parser___ReduceAction101(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction101(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_ACallAssignExpr_parser___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 = 5658;
-  fra.me.meth = LOCATE_NEW_ACallAssignExpr_parser___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:5658 */
-  fra.me.REG[5] = NEW_parser___parser_nodes___ACallAssignExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ACallAssignExpr(fra.me.REG[5]);
-  parser___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_parser___parser_nodes___ACallAssignExpr(fra.me.REG[5]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[5];
-}
-val_t NEW_ACallAssignExpr_parser___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___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_parser___parser_nodes___ACallAssignExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ACallAssignExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ACallAssignExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_ACallAssignExpr_parser___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 = 4275;
-  fra.me.meth = LOCATE_NEW_ACallAssignExpr_parser___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:4275 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___ACallAssignExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ACallAssignExpr(fra.me.REG[1]);
-  parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ACallAssignExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___ACallReassignExpr[119] = {
-  {(bigint) 3863 /* 0: Identity */},
-  {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ACallReassignExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ACallReassignExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ACallReassignExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3527 /* 5: ACallReassignExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: ACallReassignExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: ACallReassignExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3311 /* 8: ACallReassignExpr < AReassignFormExpr: superclass typecheck marker */},
-  {(bigint) 3739 /* 9: ACallReassignExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3751 /* 10: ACallReassignExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3779 /* 11: ACallReassignExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 3787 /* 12: ACallReassignExpr < ASendReassignExpr: superclass typecheck marker */},
-  {(bigint) 3795 /* 13: ACallReassignExpr < ACallFormExpr: superclass typecheck marker */},
-  {(bigint) 3863 /* 14: ACallReassignExpr < ACallReassignExpr: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction102[55] = {
+  {(bigint) 2971 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction102" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction102 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction102 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2971 /* 5: ReduceAction102 < ReduceAction102: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
-  {(bigint) 7 /* 18: ACallReassignExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction102 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -69372,6 +104671,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ACallReassignExpr[119] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -69385,314 +104686,102 @@ const classtable_elt_t VFT_parser___parser_nodes___ACallReassignExpr[119] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ACallReassignExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ACallReassignExpr___visit_all},
-  {(bigint) 6 /* 60: ACallReassignExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ACallFormExpr___after_typing},
-  {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 1 /* 68: ACallReassignExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 5 /* 70: ACallReassignExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 8 /* 75: ACallReassignExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___ASendReassignExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) 0 /* 82: ACallReassignExpr < ASendReassignExpr: superclass init_table position */},
-  {(bigint) syntax___typing___ASendReassignExpr___read_prop},
-  {0} /* Class Hole :( */,
-  {(bigint) syntax___typing___AReassignFormExpr___do_rvalue_typing},
-  {(bigint) syntax___typing___AReassignFormExpr___assign_method},
-  {(bigint) 9 /* 87: ACallReassignExpr < AReassignFormExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AReassignFormExpr___n_assign_op},
-  {(bigint) parser___parser_nodes___AReassignFormExpr___n_value},
-  {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
-  {(bigint) syntax___typing___ACallReassignExpr___compute_raw_arguments},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 3 /* 94: ACallReassignExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
-  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
-  {(bigint) syntax___typing___AAbsSendExpr___get_property},
-  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 2 /* 100: ACallReassignExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsSendExpr___prop},
-  {(bigint) syntax___typing___AAbsSendExpr___return_type},
-  {(bigint) syntax___typing___ACallReassignExpr___name},
-  {(bigint) syntax___typing___ASendReassignExpr___do_all_typing},
-  {(bigint) syntax___typing___ACallFormExpr___closure_defs},
-  {(bigint) parser___parser_prod___ASendExpr___empty_init},
-  {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 4 /* 108: ACallReassignExpr < ASendExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ASendExpr___n_expr},
-  {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) syntax___typing___ASendExpr___after_typing},
-  {(bigint) syntax___typing___ACallReassignExpr___variable_create},
-  {(bigint) 10 /* 113: ACallReassignExpr < ACallFormExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ACallFormExpr___n_id},
-  {(bigint) parser___parser_nodes___ACallFormExpr___n_args},
-  {(bigint) parser___parser_prod___ACallReassignExpr___empty_init},
-  {(bigint) parser___parser_prod___ACallReassignExpr___init_acallreassignexpr},
-  {(bigint) 11 /* 118: ACallReassignExpr < ACallReassignExpr: superclass init_table position */},
+  {(bigint) 0 /* 50: ReduceAction102 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction102___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction102 < ReduceAction102: 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__parser___parser_nodes___ACallReassignExpr(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction102::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction102[] = "init var of ReduceAction102";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___ACallReassignExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction102;
   fra.me.has_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:883 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___ACallFormExpr____n_args(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:776 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  /* ./syntax//typing.nit:1388 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___ACallReassignExpr(void)
+val_t NEW_parser___ReduceAction102(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 22);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ACallReassignExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction102;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___ACallReassignExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction102[] = "check new ReduceAction102";
+void CHECKNEW_parser___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_parser___parser_nodes___ACallReassignExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction102;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___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___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___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___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___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___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_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ACallReassignExpr_parser___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 = 4273;
-  fra.me.meth = LOCATE_NEW_ACallReassignExpr_parser___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:4273 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ACallReassignExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ACallReassignExpr(fra.me.REG[0]);
-  parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ACallReassignExpr(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-val_t NEW_ACallReassignExpr_parser___parser_prod___ACallReassignExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction102_parser___ReduceAction___init[] = "new ReduceAction102 parser::ReduceAction::init";
+val_t NEW_ReduceAction102_parser___ReduceAction___init(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};
+  int init_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_ACallReassignExpr_parser___parser_prod___ACallReassignExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction102_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:5750 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ACallReassignExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ACallReassignExpr(fra.me.REG[0]);
-  parser___parser_prod___ACallReassignExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ACallReassignExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction102();
+  INIT_ATTRIBUTES__parser___ReduceAction102(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction102(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_ACallReassignExpr_parser___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 = 5752;
-  fra.me.meth = LOCATE_NEW_ACallReassignExpr_parser___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:5752 */
-  fra.me.REG[5] = NEW_parser___parser_nodes___ACallReassignExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ACallReassignExpr(fra.me.REG[5]);
-  parser___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_parser___parser_nodes___ACallReassignExpr(fra.me.REG[5]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[5];
-}
-val_t NEW_ACallReassignExpr_parser___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___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_parser___parser_nodes___ACallReassignExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ACallReassignExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ACallReassignExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_ACallReassignExpr_parser___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 = 4275;
-  fra.me.meth = LOCATE_NEW_ACallReassignExpr_parser___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:4275 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___ACallReassignExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ACallReassignExpr(fra.me.REG[1]);
-  parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ACallReassignExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___ASuperExpr[110] = {
-  {(bigint) 3775 /* 0: Identity */},
-  {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ASuperExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ASuperExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ASuperExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3527 /* 5: ASuperExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: ASuperExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: ASuperExpr < AExpr: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction103[55] = {
+  {(bigint) 2967 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction103" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction103 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction103 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2967 /* 5: ReduceAction103 < ReduceAction103: 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) 3739 /* 9: ASuperExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3751 /* 10: ASuperExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3775 /* 11: ASuperExpr < ASuperExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 5 /* 18: ASuperExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction103 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -69708,6 +104797,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ASuperExpr[110] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -69721,241 +104812,102 @@ const classtable_elt_t VFT_parser___parser_nodes___ASuperExpr[110] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ASuperExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ASuperExpr___visit_all},
-  {(bigint) 4 /* 60: ASuperExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ASuperExpr___after_typing},
-  {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 68: ASuperExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 70: ASuperExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 75: ASuperExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___ASuperExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___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) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
-  {(bigint) syntax___typing___ASuperExpr___compute_raw_arguments},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 94: ASuperExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
-  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
-  {(bigint) syntax___typing___AAbsSendExpr___get_property},
-  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 1 /* 100: ASuperExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsSendExpr___prop},
-  {(bigint) syntax___typing___AAbsSendExpr___return_type},
-  {(bigint) syntax___typing___ASuperExpr___init_in_superclass},
-  {(bigint) parser___parser_prod___ASuperExpr___empty_init},
-  {(bigint) parser___parser_prod___ASuperExpr___init_asuperexpr},
-  {(bigint) 7 /* 106: ASuperExpr < ASuperExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ASuperExpr___n_qualified},
-  {(bigint) parser___parser_nodes___ASuperExpr___n_kwsuper},
-  {(bigint) parser___parser_nodes___ASuperExpr___n_args},
+  {(bigint) 0 /* 50: ReduceAction103 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction103___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction103 < ReduceAction103: superclass init_table position */},
 };
 /* 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__parser___parser_nodes___ASuperExpr(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction103::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction103[] = "init var of ReduceAction103";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___ASuperExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction103;
   fra.me.has_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:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  /* ./parser//parser_nodes.nit:904 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___ASuperExpr____n_qualified(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:906 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___ASuperExpr____n_args(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//typing.nit:1388 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___ASuperExpr(void)
+val_t NEW_parser___ReduceAction103(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 22);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ASuperExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction103;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___ASuperExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction103[] = "check new ReduceAction103";
+void CHECKNEW_parser___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_parser___parser_nodes___ASuperExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction103;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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___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___parser_nodes___ASuperExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ASuperExpr_parser___parser_prod___ASuperExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction103_parser___ReduceAction___init[] = "new ReduceAction103 parser::ReduceAction::init";
+val_t NEW_ReduceAction103_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[8] = {0, 0, 0, 0, 0, 0, 0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5844;
-  fra.me.meth = LOCATE_NEW_ASuperExpr_parser___parser_prod___ASuperExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction103_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:5844 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ASuperExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ASuperExpr(fra.me.REG[0]);
-  parser___parser_prod___ASuperExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ASuperExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction103();
+  INIT_ATTRIBUTES__parser___ReduceAction103(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction103(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_ASuperExpr_parser___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 = 5846;
-  fra.me.meth = LOCATE_NEW_ASuperExpr_parser___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:5846 */
-  fra.me.REG[3] = NEW_parser___parser_nodes___ASuperExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ASuperExpr(fra.me.REG[3]);
-  parser___parser_prod___ASuperExpr___init_asuperexpr(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
-  CHECKNEW_parser___parser_nodes___ASuperExpr(fra.me.REG[3]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[3];
-}
-val_t NEW_ASuperExpr_parser___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___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_parser___parser_nodes___ASuperExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ASuperExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ASuperExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AInitExpr[116] = {
-  {(bigint) 3791 /* 0: Identity */},
-  {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AInitExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AInitExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AInitExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3527 /* 5: AInitExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: AInitExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AInitExpr < AExpr: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction104[55] = {
+  {(bigint) 2963 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction104" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction104 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction104 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2963 /* 5: ReduceAction104 < ReduceAction104: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 3739 /* 9: AInitExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3751 /* 10: AInitExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3779 /* 11: AInitExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 3791 /* 12: AInitExpr < AInitExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 5 /* 18: AInitExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction104 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -69971,6 +104923,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AInitExpr[116] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -69984,297 +104938,102 @@ const classtable_elt_t VFT_parser___parser_nodes___AInitExpr[116] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AInitExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AInitExpr___visit_all},
-  {(bigint) 4 /* 60: AInitExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ASendExpr___after_typing},
-  {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 68: AInitExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 70: AInitExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 75: AInitExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___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) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
-  {(bigint) syntax___typing___AInitExpr___compute_raw_arguments},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 94: AInitExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
-  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
-  {(bigint) syntax___typing___AAbsSendExpr___get_property},
-  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 1 /* 100: AInitExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsSendExpr___prop},
-  {(bigint) syntax___typing___AAbsSendExpr___return_type},
-  {(bigint) syntax___typing___AInitExpr___name},
-  {(bigint) syntax___typing___ASendExpr___do_all_typing},
-  {(bigint) syntax___typing___ASendExpr___closure_defs},
-  {(bigint) parser___parser_prod___ASendExpr___empty_init},
-  {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 108: AInitExpr < ASendExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ASendExpr___n_expr},
-  {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) parser___parser_prod___AInitExpr___empty_init},
-  {(bigint) parser___parser_prod___AInitExpr___init_ainitexpr},
-  {(bigint) 8 /* 113: AInitExpr < AInitExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AInitExpr___n_kwinit},
-  {(bigint) parser___parser_nodes___AInitExpr___n_args},
+  {(bigint) 0 /* 50: ReduceAction104 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction104___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction104 < ReduceAction104: superclass init_table position */},
 };
 /* 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__parser___parser_nodes___AInitExpr(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction104::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction104[] = "init var of ReduceAction104";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___AInitExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction104;
   fra.me.has_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:911 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___AInitExpr____n_args(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:776 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  /* ./syntax//typing.nit:1388 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AInitExpr(void)
+val_t NEW_parser___ReduceAction104(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 22);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AInitExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction104;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AInitExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction104[] = "check new ReduceAction104";
+void CHECKNEW_parser___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_parser___parser_nodes___AInitExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction104;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___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___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___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___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_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AInitExpr_parser___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 = 4273;
-  fra.me.meth = LOCATE_NEW_AInitExpr_parser___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:4273 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AInitExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AInitExpr(fra.me.REG[0]);
-  parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AInitExpr(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-val_t NEW_AInitExpr_parser___parser_prod___AInitExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction104_parser___ReduceAction___init[] = "new ReduceAction104 parser::ReduceAction::init";
+val_t NEW_ReduceAction104_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5914;
-  fra.me.meth = LOCATE_NEW_AInitExpr_parser___parser_prod___AInitExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction104_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:5914 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AInitExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AInitExpr(fra.me.REG[0]);
-  parser___parser_prod___AInitExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AInitExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction104();
+  INIT_ATTRIBUTES__parser___ReduceAction104(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction104(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AInitExpr_parser___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 = 5916;
-  fra.me.meth = LOCATE_NEW_AInitExpr_parser___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:5916 */
-  fra.me.REG[3] = NEW_parser___parser_nodes___AInitExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AInitExpr(fra.me.REG[3]);
-  parser___parser_prod___AInitExpr___init_ainitexpr(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
-  CHECKNEW_parser___parser_nodes___AInitExpr(fra.me.REG[3]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[3];
-}
-val_t NEW_AInitExpr_parser___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___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_parser___parser_nodes___AInitExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AInitExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AInitExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_AInitExpr_parser___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 = 4275;
-  fra.me.meth = LOCATE_NEW_AInitExpr_parser___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:4275 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___AInitExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AInitExpr(fra.me.REG[1]);
-  parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AInitExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___ABraFormExpr[113] = {
-  {(bigint) 3799 /* 0: Identity */},
-  {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ABraFormExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ABraFormExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ABraFormExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3527 /* 5: ABraFormExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: ABraFormExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: ABraFormExpr < AExpr: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction105[55] = {
+  {(bigint) 2959 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction105" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction105 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction105 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2959 /* 5: ReduceAction105 < ReduceAction105: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 3739 /* 9: ABraFormExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3751 /* 10: ABraFormExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3779 /* 11: ABraFormExpr < ASendExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 3799 /* 13: ABraFormExpr < ABraFormExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 5 /* 18: ABraFormExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction105 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -70290,6 +105049,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraFormExpr[113] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -70303,244 +105064,102 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraFormExpr[113] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ASendExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ASendExpr___visit_all},
-  {(bigint) 4 /* 60: ABraFormExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ASendExpr___after_typing},
-  {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 68: ABraFormExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 70: ABraFormExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 75: ABraFormExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___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) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___compute_raw_arguments},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 94: ABraFormExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
-  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
-  {(bigint) syntax___typing___AAbsSendExpr___get_property},
-  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 1 /* 100: ABraFormExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsSendExpr___prop},
-  {(bigint) syntax___typing___AAbsSendExpr___return_type},
-  {(bigint) syntax___typing___ASendExpr___name},
-  {(bigint) syntax___typing___ASendExpr___do_all_typing},
-  {(bigint) syntax___typing___ASendExpr___closure_defs},
-  {(bigint) parser___parser_prod___ASendExpr___empty_init},
-  {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 108: ABraFormExpr < ASendExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ASendExpr___n_expr},
-  {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) 8 /* 111: ABraFormExpr < ABraFormExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ABraFormExpr___n_args},
+  {(bigint) 0 /* 50: ReduceAction105 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction105___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction105 < ReduceAction105: superclass init_table position */},
 };
 /* 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__parser___parser_nodes___ABraFormExpr(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction105::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction105[] = "init var of ReduceAction105";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___ABraFormExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction105;
   fra.me.has_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:915 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___ABraFormExpr____n_args(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:776 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  /* ./syntax//typing.nit:1388 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___ABraFormExpr(void)
+val_t NEW_parser___ReduceAction105(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 21);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ABraFormExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction105;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___ABraFormExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction105[] = "check new ReduceAction105";
+void CHECKNEW_parser___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_parser___parser_nodes___ABraFormExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction105;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___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___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___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_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ABraFormExpr_parser___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___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_parser___parser_nodes___ABraFormExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ABraFormExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ABraFormExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_ABraFormExpr_parser___parser_prod___ASendExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction105_parser___ReduceAction___init[] = "new ReduceAction105 parser::ReduceAction::init";
+val_t NEW_ReduceAction105_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4273;
-  fra.me.meth = LOCATE_NEW_ABraFormExpr_parser___parser_prod___ASendExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction105_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:4273 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ABraFormExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ABraFormExpr(fra.me.REG[0]);
-  parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ABraFormExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction105();
+  INIT_ATTRIBUTES__parser___ReduceAction105(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction105(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_ABraFormExpr_parser___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 = 4275;
-  fra.me.meth = LOCATE_NEW_ABraFormExpr_parser___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:4275 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___ABraFormExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ABraFormExpr(fra.me.REG[1]);
-  parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ABraFormExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___ABraExpr[116] = {
-  {(bigint) 3879 /* 0: Identity */},
-  {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ABraExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ABraExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ABraExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3527 /* 5: ABraExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: ABraExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: ABraExpr < AExpr: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction106[55] = {
+  {(bigint) 2955 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction106" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction106 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction106 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2955 /* 5: ReduceAction106 < ReduceAction106: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 3739 /* 9: ABraExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3751 /* 10: ABraExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3779 /* 11: ABraExpr < ASendExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 3799 /* 13: ABraExpr < ABraFormExpr: superclass typecheck marker */},
-  {(bigint) 3879 /* 14: ABraExpr < ABraExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 5 /* 18: ABraExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction106 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -70556,6 +105175,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraExpr[116] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -70569,291 +105190,102 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraExpr[116] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ABraExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ABraExpr___visit_all},
-  {(bigint) 4 /* 60: ABraExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ASendExpr___after_typing},
-  {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 68: ABraExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 70: ABraExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 75: ABraExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___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) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
-  {(bigint) syntax___typing___ABraExpr___compute_raw_arguments},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 94: ABraExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
-  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
-  {(bigint) syntax___typing___AAbsSendExpr___get_property},
-  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 1 /* 100: ABraExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsSendExpr___prop},
-  {(bigint) syntax___typing___AAbsSendExpr___return_type},
-  {(bigint) syntax___typing___ABraExpr___name},
-  {(bigint) syntax___typing___ASendExpr___do_all_typing},
-  {(bigint) syntax___typing___ABraExpr___closure_defs},
-  {(bigint) parser___parser_prod___ASendExpr___empty_init},
-  {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 108: ABraExpr < ASendExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ASendExpr___n_expr},
-  {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) 8 /* 111: ABraExpr < ABraFormExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ABraFormExpr___n_args},
-  {(bigint) parser___parser_prod___ABraExpr___empty_init},
-  {(bigint) parser___parser_prod___ABraExpr___init_abraexpr},
-  {(bigint) 9 /* 115: ABraExpr < ABraExpr: superclass init_table position */},
+  {(bigint) 0 /* 50: ReduceAction106 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction106___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction106 < ReduceAction106: 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__parser___parser_nodes___ABraExpr(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction106::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction106[] = "init var of ReduceAction106";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___ABraExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction106;
   fra.me.has_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:915 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___ABraFormExpr____n_args(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:776 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  /* ./syntax//typing.nit:1388 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___ABraExpr(void)
+val_t NEW_parser___ReduceAction106(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 21);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ABraExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction106;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___ABraExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction106[] = "check new ReduceAction106";
+void CHECKNEW_parser___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_parser___parser_nodes___ABraExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction106;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___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___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___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_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ABraExpr_parser___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 = 4273;
-  fra.me.meth = LOCATE_NEW_ABraExpr_parser___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:4273 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ABraExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ABraExpr(fra.me.REG[0]);
-  parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ABraExpr(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-val_t NEW_ABraExpr_parser___parser_prod___ABraExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction106_parser___ReduceAction___init[] = "new ReduceAction106 parser::ReduceAction::init";
+val_t NEW_ReduceAction106_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5980;
-  fra.me.meth = LOCATE_NEW_ABraExpr_parser___parser_prod___ABraExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction106_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:5980 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ABraExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ABraExpr(fra.me.REG[0]);
-  parser___parser_prod___ABraExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ABraExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction106();
+  INIT_ATTRIBUTES__parser___ReduceAction106(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction106(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_ABraExpr_parser___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 = 5982;
-  fra.me.meth = LOCATE_NEW_ABraExpr_parser___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:5982 */
-  fra.me.REG[3] = NEW_parser___parser_nodes___ABraExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ABraExpr(fra.me.REG[3]);
-  parser___parser_prod___ABraExpr___init_abraexpr(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
-  CHECKNEW_parser___parser_nodes___ABraExpr(fra.me.REG[3]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[3];
-}
-val_t NEW_ABraExpr_parser___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___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_parser___parser_nodes___ABraExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ABraExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ABraExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_ABraExpr_parser___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 = 4275;
-  fra.me.meth = LOCATE_NEW_ABraExpr_parser___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:4275 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___ABraExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ABraExpr(fra.me.REG[1]);
-  parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ABraExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___ABraAssignExpr[113] = {
-  {(bigint) 3883 /* 0: Identity */},
-  {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ABraAssignExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ABraAssignExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ABraAssignExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3527 /* 5: ABraAssignExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: ABraAssignExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: ABraAssignExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3503 /* 8: ABraAssignExpr < AAssignFormExpr: superclass typecheck marker */},
-  {(bigint) 3739 /* 9: ABraAssignExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3751 /* 10: ABraAssignExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3779 /* 11: ABraAssignExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 3883 /* 12: ABraAssignExpr < ABraAssignExpr: superclass typecheck marker */},
-  {(bigint) 3799 /* 13: ABraAssignExpr < ABraFormExpr: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction107[55] = {
+  {(bigint) 2951 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction107" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction107 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction107 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2951 /* 5: ReduceAction107 < ReduceAction107: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
-  {(bigint) 5 /* 18: ABraAssignExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction107 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -70869,6 +105301,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraAssignExpr[113] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -70882,289 +105316,91 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraAssignExpr[113] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ABraAssignExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ABraAssignExpr___visit_all},
-  {(bigint) 4 /* 60: ABraAssignExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ASendExpr___after_typing},
-  {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 68: ABraAssignExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 70: ABraAssignExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 75: ABraAssignExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___ASendExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) parser___parser_prod___ABraAssignExpr___empty_init},
-  {(bigint) parser___parser_prod___ABraAssignExpr___init_abraassignexpr},
-  {(bigint) 10 /* 84: ABraAssignExpr < ABraAssignExpr: superclass init_table position */},
-  {(bigint) 9 /* 85: ABraAssignExpr < AAssignFormExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AAssignFormExpr___n_assign},
-  {(bigint) parser___parser_nodes___AAssignFormExpr___n_value},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
-  {(bigint) syntax___typing___ABraAssignExpr___compute_raw_arguments},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 94: ABraAssignExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
-  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
-  {(bigint) syntax___typing___AAbsSendExpr___get_property},
-  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 1 /* 100: ABraAssignExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsSendExpr___prop},
-  {(bigint) syntax___typing___AAbsSendExpr___return_type},
-  {(bigint) syntax___typing___ABraAssignExpr___name},
-  {(bigint) syntax___typing___ASendExpr___do_all_typing},
-  {(bigint) syntax___typing___ASendExpr___closure_defs},
-  {(bigint) parser___parser_prod___ASendExpr___empty_init},
-  {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 108: ABraAssignExpr < ASendExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ASendExpr___n_expr},
-  {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) 8 /* 111: ABraAssignExpr < ABraFormExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ABraFormExpr___n_args},
+  {(bigint) 0 /* 50: ReduceAction107 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction107___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction107 < ReduceAction107: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___ABraAssignExpr(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction107::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction107[] = "init var of ReduceAction107";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___ABraAssignExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction107;
   fra.me.has_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:915 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___ABraFormExpr____n_args(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:776 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  /* ./syntax//typing.nit:1388 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___ABraAssignExpr(void)
+val_t NEW_parser___ReduceAction107(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 21);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ABraAssignExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction107;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___ABraAssignExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction107[] = "check new ReduceAction107";
+void CHECKNEW_parser___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_parser___parser_nodes___ABraAssignExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction107;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___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___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___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___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___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_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ABraAssignExpr_parser___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 = 4273;
-  fra.me.meth = LOCATE_NEW_ABraAssignExpr_parser___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:4273 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ABraAssignExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ABraAssignExpr(fra.me.REG[0]);
-  parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ABraAssignExpr(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-val_t NEW_ABraAssignExpr_parser___parser_prod___ABraAssignExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction107_parser___ReduceAction___init[] = "new ReduceAction107 parser::ReduceAction::init";
+val_t NEW_ReduceAction107_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[11] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6053;
-  fra.me.meth = LOCATE_NEW_ABraAssignExpr_parser___parser_prod___ABraAssignExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction107_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:6053 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ABraAssignExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ABraAssignExpr(fra.me.REG[0]);
-  parser___parser_prod___ABraAssignExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ABraAssignExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction107();
+  INIT_ATTRIBUTES__parser___ReduceAction107(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction107(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_ABraAssignExpr_parser___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 = 6055;
-  fra.me.meth = LOCATE_NEW_ABraAssignExpr_parser___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:6055 */
-  fra.me.REG[4] = NEW_parser___parser_nodes___ABraAssignExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ABraAssignExpr(fra.me.REG[4]);
-  parser___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_parser___parser_nodes___ABraAssignExpr(fra.me.REG[4]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[4];
-}
-val_t NEW_ABraAssignExpr_parser___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___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_parser___parser_nodes___ABraAssignExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ABraAssignExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ABraAssignExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_ABraAssignExpr_parser___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 = 4275;
-  fra.me.meth = LOCATE_NEW_ABraAssignExpr_parser___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:4275 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___ABraAssignExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ABraAssignExpr(fra.me.REG[1]);
-  parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ABraAssignExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AVarFormExpr[85] = {
-  {(bigint) 3251 /* 0: Identity */},
-  {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AVarFormExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AVarFormExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AVarFormExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3251 /* 5: AVarFormExpr < AVarFormExpr: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: AVarFormExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AVarFormExpr < AExpr: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction108[55] = {
+  {(bigint) 2947 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction108" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction108 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction108 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2947 /* 5: ReduceAction108 < ReduceAction108: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -71175,7 +105411,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AVarFormExpr[85] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AVarFormExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction108 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -71191,6 +105427,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AVarFormExpr[85] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -71204,148 +105442,102 @@ const classtable_elt_t VFT_parser___parser_nodes___AVarFormExpr[85] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ANode___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ANode___visit_all},
-  {(bigint) 1 /* 60: AVarFormExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___AExpr___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AVarFormExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 75: AVarFormExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___AExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) syntax___typing___AVarFormExpr___variable},
-  {(bigint) 4 /* 83: AVarFormExpr < AVarFormExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AVarFormExpr___n_id},
+  {(bigint) 0 /* 50: ReduceAction108 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction108___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction108 < ReduceAction108: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AVarFormExpr(val_t p0){
+/* 2: Attribute ReduceAction108::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction108[] = "init var of ReduceAction108";
+void INIT_ATTRIBUTES__parser___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_INIT_ATTRIBUTES__parser___parser_nodes___AVarFormExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction108;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AVarFormExpr(void)
+val_t NEW_parser___ReduceAction108(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 13);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AVarFormExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction108;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AVarFormExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction108[] = "check new ReduceAction108";
+void CHECKNEW_parser___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_parser___parser_nodes___AVarFormExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction108;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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___parser_nodes___AVarFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AVarFormExpr_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ReduceAction108_parser___ReduceAction___init[] = "new ReduceAction108 parser::ReduceAction::init";
+val_t NEW_ReduceAction108_parser___ReduceAction___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};
+  int init_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_AVarFormExpr_parser___parser_nodes___ANode___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction108_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___AVarFormExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AVarFormExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AVarFormExpr(fra.me.REG[1]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction108();
+  INIT_ATTRIBUTES__parser___ReduceAction108(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction108(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ABraReassignExpr[116] = {
-  {(bigint) 3875 /* 0: Identity */},
-  {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ABraReassignExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ABraReassignExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ABraReassignExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3527 /* 5: ABraReassignExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: ABraReassignExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: ABraReassignExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3311 /* 8: ABraReassignExpr < AReassignFormExpr: superclass typecheck marker */},
-  {(bigint) 3739 /* 9: ABraReassignExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3751 /* 10: ABraReassignExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3779 /* 11: ABraReassignExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 3787 /* 12: ABraReassignExpr < ASendReassignExpr: superclass typecheck marker */},
-  {(bigint) 3799 /* 13: ABraReassignExpr < ABraFormExpr: superclass typecheck marker */},
-  {(bigint) 3875 /* 14: ABraReassignExpr < ABraReassignExpr: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction109[55] = {
+  {(bigint) 2943 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction109" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction109 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction109 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2943 /* 5: ReduceAction109 < ReduceAction109: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
-  {(bigint) 7 /* 18: ABraReassignExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction109 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -71361,6 +105553,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraReassignExpr[116] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -71374,293 +105568,92 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraReassignExpr[116] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ABraReassignExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ABraReassignExpr___visit_all},
-  {(bigint) 6 /* 60: ABraReassignExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ASendExpr___after_typing},
-  {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 1 /* 68: ABraReassignExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 5 /* 70: ABraReassignExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 8 /* 75: ABraReassignExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___ASendReassignExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) 0 /* 82: ABraReassignExpr < ASendReassignExpr: superclass init_table position */},
-  {(bigint) syntax___typing___ASendReassignExpr___read_prop},
-  {0} /* Class Hole :( */,
-  {(bigint) syntax___typing___AReassignFormExpr___do_rvalue_typing},
-  {(bigint) syntax___typing___AReassignFormExpr___assign_method},
-  {(bigint) 9 /* 87: ABraReassignExpr < AReassignFormExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AReassignFormExpr___n_assign_op},
-  {(bigint) parser___parser_nodes___AReassignFormExpr___n_value},
-  {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
-  {(bigint) syntax___typing___ABraReassignExpr___compute_raw_arguments},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 3 /* 94: ABraReassignExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
-  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
-  {(bigint) syntax___typing___AAbsSendExpr___get_property},
-  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 2 /* 100: ABraReassignExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsSendExpr___prop},
-  {(bigint) syntax___typing___AAbsSendExpr___return_type},
-  {(bigint) syntax___typing___ABraReassignExpr___name},
-  {(bigint) syntax___typing___ASendReassignExpr___do_all_typing},
-  {(bigint) syntax___typing___ASendExpr___closure_defs},
-  {(bigint) parser___parser_prod___ASendExpr___empty_init},
-  {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 4 /* 108: ABraReassignExpr < ASendExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ASendExpr___n_expr},
-  {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) 10 /* 111: ABraReassignExpr < ABraFormExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ABraFormExpr___n_args},
-  {(bigint) parser___parser_prod___ABraReassignExpr___empty_init},
-  {(bigint) parser___parser_prod___ABraReassignExpr___init_abrareassignexpr},
-  {(bigint) 11 /* 115: ABraReassignExpr < ABraReassignExpr: superclass init_table position */},
+  {(bigint) 0 /* 50: ReduceAction109 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction109___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction109 < ReduceAction109: 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__parser___parser_nodes___ABraReassignExpr(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction109::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction109[] = "init var of ReduceAction109";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___ABraReassignExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction109;
   fra.me.has_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:915 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___ABraFormExpr____n_args(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:776 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  /* ./syntax//typing.nit:1388 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___ABraReassignExpr(void)
+val_t NEW_parser___ReduceAction109(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 21);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ABraReassignExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction109;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___ABraReassignExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction109[] = "check new ReduceAction109";
+void CHECKNEW_parser___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_parser___parser_nodes___ABraReassignExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction109;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___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___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___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___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___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_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ABraReassignExpr_parser___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 = 4273;
-  fra.me.meth = LOCATE_NEW_ABraReassignExpr_parser___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:4273 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ABraReassignExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ABraReassignExpr(fra.me.REG[0]);
-  parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ABraReassignExpr(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-val_t NEW_ABraReassignExpr_parser___parser_prod___ABraReassignExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction109_parser___ReduceAction___init[] = "new ReduceAction109 parser::ReduceAction::init";
+val_t NEW_ReduceAction109_parser___ReduceAction___init(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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6133;
-  fra.me.meth = LOCATE_NEW_ABraReassignExpr_parser___parser_prod___ABraReassignExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction109_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:6133 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ABraReassignExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ABraReassignExpr(fra.me.REG[0]);
-  parser___parser_prod___ABraReassignExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ABraReassignExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction109();
+  INIT_ATTRIBUTES__parser___ReduceAction109(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction109(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_ABraReassignExpr_parser___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 = 6135;
-  fra.me.meth = LOCATE_NEW_ABraReassignExpr_parser___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:6135 */
-  fra.me.REG[4] = NEW_parser___parser_nodes___ABraReassignExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ABraReassignExpr(fra.me.REG[4]);
-  parser___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_parser___parser_nodes___ABraReassignExpr(fra.me.REG[4]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[4];
-}
-val_t NEW_ABraReassignExpr_parser___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___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_parser___parser_nodes___ABraReassignExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ABraReassignExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ABraReassignExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_ABraReassignExpr_parser___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 = 4275;
-  fra.me.meth = LOCATE_NEW_ABraReassignExpr_parser___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:4275 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___ABraReassignExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ABraReassignExpr(fra.me.REG[1]);
-  parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ABraReassignExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AClosureCallExpr[104] = {
-  {(bigint) 3699 /* 0: Identity */},
-  {(bigint) 17 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AClosureCallExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AClosureCallExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AClosureCallExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3527 /* 5: AClosureCallExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: AClosureCallExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AClosureCallExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3699 /* 8: AClosureCallExpr < AClosureCallExpr: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction110[55] = {
+  {(bigint) 2935 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction110" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction110 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction110 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2935 /* 5: ReduceAction110 < ReduceAction110: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -71670,7 +105663,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AClosureCallExpr[104] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 18: AClosureCallExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction110 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -71686,6 +105679,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AClosureCallExpr[104] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -71699,225 +105694,92 @@ const classtable_elt_t VFT_parser___parser_nodes___AClosureCallExpr[104] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AClosureCallExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AClosureCallExpr___visit_all},
-  {(bigint) 2 /* 60: AClosureCallExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___AClosureCallExpr___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 70: AClosureCallExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 4 /* 75: AClosureCallExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___AClosureCallExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___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) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
-  {(bigint) syntax___typing___AClosureCallExpr___compute_raw_arguments},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 0 /* 94: AClosureCallExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
-  {(bigint) syntax___typing___AClosureCallExpr___variable},
-  {(bigint) parser___parser_prod___AClosureCallExpr___empty_init},
-  {(bigint) parser___parser_prod___AClosureCallExpr___init_aclosurecallexpr},
-  {(bigint) 5 /* 100: AClosureCallExpr < AClosureCallExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AClosureCallExpr___n_id},
-  {(bigint) parser___parser_nodes___AClosureCallExpr___n_args},
-  {(bigint) parser___parser_nodes___AClosureCallExpr___n_closure_defs},
+  {(bigint) 0 /* 50: ReduceAction110 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction110___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction110 < ReduceAction110: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___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__parser___parser_nodes___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:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  /* ./parser//parser_nodes.nit:935 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___AClosureCallExpr____n_args(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:936 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___AClosureCallExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//typing.nit:1388 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-}
-val_t NEW_parser___parser_nodes___AClosureCallExpr(void)
-{
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 17);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AClosureCallExpr;
-  obj[1].object_id = object_id_counter;
-  object_id_counter = object_id_counter + 1;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_parser___parser_nodes___AClosureCallExpr(val_t p0){
+/* 2: Attribute ReduceAction110::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction110[] = "init var of ReduceAction110";
+void INIT_ATTRIBUTES__parser___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_parser___parser_nodes___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_syntax___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___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___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___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;
-}
-val_t NEW_AClosureCallExpr_parser___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 = 6215;
-  fra.me.meth = LOCATE_NEW_AClosureCallExpr_parser___parser_prod___AClosureCallExpr___init_aclosurecallexpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction110;
   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:6215 */
-  fra.me.REG[3] = NEW_parser___parser_nodes___AClosureCallExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AClosureCallExpr(fra.me.REG[3]);
-  parser___parser_prod___AClosureCallExpr___init_aclosurecallexpr(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
-  CHECKNEW_parser___parser_nodes___AClosureCallExpr(fra.me.REG[3]);
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[3];
 }
-val_t NEW_AClosureCallExpr_parser___parser_prod___AClosureCallExpr___empty_init(void){
+val_t NEW_parser___ReduceAction110(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction110;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___ReduceAction110[] = "check new ReduceAction110";
+void CHECKNEW_parser___ReduceAction110(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 = 6213;
-  fra.me.meth = LOCATE_NEW_AClosureCallExpr_parser___parser_prod___AClosureCallExpr___empty_init;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction110;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:6213 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AClosureCallExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AClosureCallExpr(fra.me.REG[0]);
-  parser___parser_prod___AClosureCallExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AClosureCallExpr(fra.me.REG[0]);
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
 }
-val_t NEW_AClosureCallExpr_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ReduceAction110_parser___ReduceAction___init[] = "new ReduceAction110 parser::ReduceAction::init";
+val_t NEW_ReduceAction110_parser___ReduceAction___init(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};
+  int init_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_AClosureCallExpr_parser___parser_nodes___ANode___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction110_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___AClosureCallExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AClosureCallExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AClosureCallExpr(fra.me.REG[1]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction110();
+  INIT_ATTRIBUTES__parser___ReduceAction110(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction110(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AVarExpr[88] = {
-  {(bigint) 3579 /* 0: Identity */},
-  {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AVarExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AVarExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AVarExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3251 /* 5: AVarExpr < AVarFormExpr: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: AVarExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AVarExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3579 /* 8: AVarExpr < AVarExpr: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction111[55] = {
+  {(bigint) 2931 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction111" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction111 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction111 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2931 /* 5: ReduceAction111 < ReduceAction111: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -71927,7 +105789,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AVarExpr[88] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AVarExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction111 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -71943,6 +105805,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AVarExpr[88] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -71956,182 +105820,93 @@ const classtable_elt_t VFT_parser___parser_nodes___AVarExpr[88] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AVarExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AVarExpr___visit_all},
-  {(bigint) 1 /* 60: AVarExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___AVarExpr___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AVarExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 75: AVarExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___AVarExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AVarExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) syntax___typing___AVarFormExpr___variable},
-  {(bigint) 4 /* 83: AVarExpr < AVarFormExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AVarFormExpr___n_id},
-  {(bigint) parser___parser_prod___AVarExpr___empty_init},
-  {(bigint) parser___parser_prod___AVarExpr___init_avarexpr},
-  {(bigint) 5 /* 87: AVarExpr < AVarExpr: superclass init_table position */},
+  {(bigint) 0 /* 50: ReduceAction111 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction111___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction111 < ReduceAction111: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AVarExpr(val_t p0){
+/* 2: Attribute ReduceAction111::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction111[] = "init var of ReduceAction111";
+void INIT_ATTRIBUTES__parser___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_INIT_ATTRIBUTES__parser___parser_nodes___AVarExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction111;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AVarExpr(void)
+val_t NEW_parser___ReduceAction111(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 13);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AVarExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction111;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AVarExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction111[] = "check new ReduceAction111";
+void CHECKNEW_parser___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_parser___parser_nodes___AVarExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction111;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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___parser_nodes___AVarFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AVarExpr_parser___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 = 6288;
-  fra.me.meth = LOCATE_NEW_AVarExpr_parser___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:6288 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___AVarExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AVarExpr(fra.me.REG[1]);
-  parser___parser_prod___AVarExpr___init_avarexpr(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AVarExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_AVarExpr_parser___parser_prod___AVarExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction111_parser___ReduceAction___init[] = "new ReduceAction111 parser::ReduceAction::init";
+val_t NEW_ReduceAction111_parser___ReduceAction___init(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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6286;
-  fra.me.meth = LOCATE_NEW_AVarExpr_parser___parser_prod___AVarExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction111_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:6286 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AVarExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AVarExpr(fra.me.REG[0]);
-  parser___parser_prod___AVarExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AVarExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction111();
+  INIT_ATTRIBUTES__parser___ReduceAction111(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction111(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AVarExpr_parser___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___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_parser___parser_nodes___AVarExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AVarExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AVarExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AVarAssignExpr[91] = {
-  {(bigint) 3583 /* 0: Identity */},
-  {(bigint) 15 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AVarAssignExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AVarAssignExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AVarAssignExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3251 /* 5: AVarAssignExpr < AVarFormExpr: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: AVarAssignExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AVarAssignExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3503 /* 8: AVarAssignExpr < AAssignFormExpr: superclass typecheck marker */},
-  {(bigint) 3583 /* 9: AVarAssignExpr < AVarAssignExpr: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction112[55] = {
+  {(bigint) 2927 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction112" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction112 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction112 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2927 /* 5: ReduceAction112 < ReduceAction112: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -72140,7 +105915,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AVarAssignExpr[91] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AVarAssignExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction112 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -72156,6 +105931,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AVarAssignExpr[91] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -72169,201 +105946,93 @@ const classtable_elt_t VFT_parser___parser_nodes___AVarAssignExpr[91] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AVarAssignExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AVarAssignExpr___visit_all},
-  {(bigint) 1 /* 60: AVarAssignExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___AVarAssignExpr___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AVarAssignExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 75: AVarAssignExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___AVarAssignExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) syntax___typing___AVarFormExpr___variable},
-  {(bigint) 4 /* 83: AVarAssignExpr < AVarFormExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AVarFormExpr___n_id},
-  {(bigint) 5 /* 85: AVarAssignExpr < AAssignFormExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AAssignFormExpr___n_assign},
-  {(bigint) parser___parser_nodes___AAssignFormExpr___n_value},
-  {(bigint) parser___parser_prod___AVarAssignExpr___empty_init},
-  {(bigint) parser___parser_prod___AVarAssignExpr___init_avarassignexpr},
-  {(bigint) 6 /* 90: AVarAssignExpr < AVarAssignExpr: superclass init_table position */},
+  {(bigint) 0 /* 50: ReduceAction112 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction112___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction112 < ReduceAction112: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AVarAssignExpr(val_t p0){
+/* 2: Attribute ReduceAction112::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction112[] = "init var of ReduceAction112";
+void INIT_ATTRIBUTES__parser___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_INIT_ATTRIBUTES__parser___parser_nodes___AVarAssignExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction112;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AVarAssignExpr(void)
+val_t NEW_parser___ReduceAction112(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 15);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AVarAssignExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction112;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AVarAssignExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction112[] = "check new ReduceAction112";
+void CHECKNEW_parser___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_parser___parser_nodes___AVarAssignExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction112;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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___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___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___parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AVarAssignExpr_parser___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 = 6319;
-  fra.me.meth = LOCATE_NEW_AVarAssignExpr_parser___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:6319 */
-  fra.me.REG[3] = NEW_parser___parser_nodes___AVarAssignExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AVarAssignExpr(fra.me.REG[3]);
-  parser___parser_prod___AVarAssignExpr___init_avarassignexpr(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
-  CHECKNEW_parser___parser_nodes___AVarAssignExpr(fra.me.REG[3]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[3];
-}
-val_t NEW_AVarAssignExpr_parser___parser_prod___AVarAssignExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction112_parser___ReduceAction___init[] = "new ReduceAction112 parser::ReduceAction::init";
+val_t NEW_ReduceAction112_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6317;
-  fra.me.meth = LOCATE_NEW_AVarAssignExpr_parser___parser_prod___AVarAssignExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction112_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:6317 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AVarAssignExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AVarAssignExpr(fra.me.REG[0]);
-  parser___parser_prod___AVarAssignExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AVarAssignExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction112();
+  INIT_ATTRIBUTES__parser___ReduceAction112(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction112(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AVarAssignExpr_parser___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___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_parser___parser_nodes___AVarAssignExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AVarAssignExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AVarAssignExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AVarReassignExpr[93] = {
-  {(bigint) 3575 /* 0: Identity */},
-  {(bigint) 16 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AVarReassignExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AVarReassignExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AVarReassignExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3251 /* 5: AVarReassignExpr < AVarFormExpr: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: AVarReassignExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AVarReassignExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3311 /* 8: AVarReassignExpr < AReassignFormExpr: superclass typecheck marker */},
-  {(bigint) 3575 /* 9: AVarReassignExpr < AVarReassignExpr: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction113[55] = {
+  {(bigint) 2923 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction113" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction113 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction113 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2923 /* 5: ReduceAction113 < ReduceAction113: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -72372,7 +106041,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AVarReassignExpr[93] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AVarReassignExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction113 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -72388,6 +106057,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AVarReassignExpr[93] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -72401,203 +106072,92 @@ const classtable_elt_t VFT_parser___parser_nodes___AVarReassignExpr[93] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AVarReassignExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AVarReassignExpr___visit_all},
-  {(bigint) 1 /* 60: AVarReassignExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___AVarReassignExpr___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AVarReassignExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 75: AVarReassignExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___AVarReassignExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) syntax___typing___AVarFormExpr___variable},
-  {(bigint) 4 /* 83: AVarReassignExpr < AVarFormExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AVarFormExpr___n_id},
-  {(bigint) syntax___typing___AReassignFormExpr___do_rvalue_typing},
-  {(bigint) syntax___typing___AReassignFormExpr___assign_method},
-  {(bigint) 5 /* 87: AVarReassignExpr < AReassignFormExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AReassignFormExpr___n_assign_op},
-  {(bigint) parser___parser_nodes___AReassignFormExpr___n_value},
-  {(bigint) parser___parser_prod___AVarReassignExpr___empty_init},
-  {(bigint) parser___parser_prod___AVarReassignExpr___init_avarreassignexpr},
-  {(bigint) 6 /* 92: AVarReassignExpr < AVarReassignExpr: superclass init_table position */},
+  {(bigint) 0 /* 50: ReduceAction113 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction113___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction113 < ReduceAction113: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AVarReassignExpr(val_t p0){
+/* 2: Attribute ReduceAction113::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction113[] = "init var of ReduceAction113";
+void INIT_ATTRIBUTES__parser___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_INIT_ATTRIBUTES__parser___parser_nodes___AVarReassignExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction113;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AVarReassignExpr(void)
+val_t NEW_parser___ReduceAction113(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 16);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AVarReassignExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction113;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AVarReassignExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction113[] = "check new ReduceAction113";
+void CHECKNEW_parser___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_parser___parser_nodes___AVarReassignExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction113;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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___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___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___parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AVarReassignExpr_parser___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 = 6378;
-  fra.me.meth = LOCATE_NEW_AVarReassignExpr_parser___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:6378 */
-  fra.me.REG[3] = NEW_parser___parser_nodes___AVarReassignExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AVarReassignExpr(fra.me.REG[3]);
-  parser___parser_prod___AVarReassignExpr___init_avarreassignexpr(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
-  CHECKNEW_parser___parser_nodes___AVarReassignExpr(fra.me.REG[3]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[3];
-}
-val_t NEW_AVarReassignExpr_parser___parser_prod___AVarReassignExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction113_parser___ReduceAction___init[] = "new ReduceAction113 parser::ReduceAction::init";
+val_t NEW_ReduceAction113_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6376;
-  fra.me.meth = LOCATE_NEW_AVarReassignExpr_parser___parser_prod___AVarReassignExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction113_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:6376 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AVarReassignExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AVarReassignExpr(fra.me.REG[0]);
-  parser___parser_prod___AVarReassignExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AVarReassignExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction113();
+  INIT_ATTRIBUTES__parser___ReduceAction113(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction113(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AVarReassignExpr_parser___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___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_parser___parser_nodes___AVarReassignExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AVarReassignExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AVarReassignExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___ARangeExpr[87] = {
-  {(bigint) 3319 /* 0: Identity */},
-  {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ARangeExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ARangeExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ARangeExpr < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction114[55] = {
+  {(bigint) 2919 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction114" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction114 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction114 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2919 /* 5: ReduceAction114 < ReduceAction114: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: ARangeExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: ARangeExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3319 /* 8: ARangeExpr < ARangeExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -72607,7 +106167,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ARangeExpr[87] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: ARangeExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction114 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -72623,6 +106183,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ARangeExpr[87] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -72636,188 +106198,93 @@ const classtable_elt_t VFT_parser___parser_nodes___ARangeExpr[87] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ARangeExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ARangeExpr___visit_all},
-  {(bigint) 1 /* 60: ARangeExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ARangeExpr___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: ARangeExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 75: ARangeExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___AExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) parser___parser_prod___ARangeExpr___empty_init},
-  {(bigint) parser___parser_prod___ARangeExpr___init_arangeexpr},
-  {(bigint) 4 /* 84: ARangeExpr < ARangeExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ARangeExpr___n_expr},
-  {(bigint) parser___parser_nodes___ARangeExpr___n_expr2},
+  {(bigint) 0 /* 50: ReduceAction114 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction114___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction114 < ReduceAction114: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___ARangeExpr(val_t p0){
+/* 2: Attribute ReduceAction114::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction114[] = "init var of ReduceAction114";
+void INIT_ATTRIBUTES__parser___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_INIT_ATTRIBUTES__parser___parser_nodes___ARangeExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction114;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___ARangeExpr(void)
+val_t NEW_parser___ReduceAction114(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 13);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ARangeExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction114;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___ARangeExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction114[] = "check new ReduceAction114";
+void CHECKNEW_parser___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_parser___parser_nodes___ARangeExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction114;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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___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___parser_nodes___ARangeExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ARangeExpr_parser___parser_prod___ARangeExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction114_parser___ReduceAction___init[] = "new ReduceAction114 parser::ReduceAction::init";
+val_t NEW_ReduceAction114_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6435;
-  fra.me.meth = LOCATE_NEW_ARangeExpr_parser___parser_prod___ARangeExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction114_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:6435 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ARangeExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ARangeExpr(fra.me.REG[0]);
-  parser___parser_prod___ARangeExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ARangeExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction114();
+  INIT_ATTRIBUTES__parser___ReduceAction114(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction114(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_ARangeExpr_parser___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 = 6437;
-  fra.me.meth = LOCATE_NEW_ARangeExpr_parser___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:6437 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___ARangeExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ARangeExpr(fra.me.REG[2]);
-  parser___parser_prod___ARangeExpr___init_arangeexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___ARangeExpr(fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
-}
-val_t NEW_ARangeExpr_parser___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___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_parser___parser_nodes___ARangeExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ARangeExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ARangeExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___ACrangeExpr[90] = {
-  {(bigint) 3687 /* 0: Identity */},
-  {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ACrangeExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ACrangeExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ACrangeExpr < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction115[55] = {
+  {(bigint) 2915 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction115" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction115 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction115 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2915 /* 5: ReduceAction115 < ReduceAction115: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: ACrangeExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: ACrangeExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3319 /* 8: ACrangeExpr < ARangeExpr: superclass typecheck marker */},
-  {(bigint) 3687 /* 9: ACrangeExpr < ACrangeExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -72826,7 +106293,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ACrangeExpr[90] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: ACrangeExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction115 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -72842,6 +106309,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ACrangeExpr[90] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -72855,233 +106324,93 @@ const classtable_elt_t VFT_parser___parser_nodes___ACrangeExpr[90] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ACrangeExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ACrangeExpr___visit_all},
-  {(bigint) 1 /* 60: ACrangeExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ARangeExpr___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: ACrangeExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 75: ACrangeExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___ACrangeExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) parser___parser_prod___ARangeExpr___empty_init},
-  {(bigint) parser___parser_prod___ARangeExpr___init_arangeexpr},
-  {(bigint) 4 /* 84: ACrangeExpr < ARangeExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ARangeExpr___n_expr},
-  {(bigint) parser___parser_nodes___ARangeExpr___n_expr2},
-  {(bigint) parser___parser_prod___ACrangeExpr___empty_init},
-  {(bigint) parser___parser_prod___ACrangeExpr___init_acrangeexpr},
-  {(bigint) 5 /* 89: ACrangeExpr < ACrangeExpr: superclass init_table position */},
+  {(bigint) 0 /* 50: ReduceAction115 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction115___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction115 < ReduceAction115: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___ACrangeExpr(val_t p0){
+/* 2: Attribute ReduceAction115::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction115[] = "init var of ReduceAction115";
+void INIT_ATTRIBUTES__parser___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_INIT_ATTRIBUTES__parser___parser_nodes___ACrangeExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction115;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___ACrangeExpr(void)
+val_t NEW_parser___ReduceAction115(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 13);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ACrangeExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction115;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___ACrangeExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction115[] = "check new ReduceAction115";
+void CHECKNEW_parser___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_parser___parser_nodes___ACrangeExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction115;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___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___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_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ACrangeExpr_parser___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 = 6435;
-  fra.me.meth = LOCATE_NEW_ACrangeExpr_parser___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:6435 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ACrangeExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ACrangeExpr(fra.me.REG[0]);
-  parser___parser_prod___ARangeExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ACrangeExpr(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-val_t NEW_ACrangeExpr_parser___parser_prod___ACrangeExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction115_parser___ReduceAction___init[] = "new ReduceAction115 parser::ReduceAction::init";
+val_t NEW_ReduceAction115_parser___ReduceAction___init(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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6480;
-  fra.me.meth = LOCATE_NEW_ACrangeExpr_parser___parser_prod___ACrangeExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction115_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:6480 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ACrangeExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ACrangeExpr(fra.me.REG[0]);
-  parser___parser_prod___ACrangeExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ACrangeExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction115();
+  INIT_ATTRIBUTES__parser___ReduceAction115(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction115(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_ACrangeExpr_parser___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 = 6482;
-  fra.me.meth = LOCATE_NEW_ACrangeExpr_parser___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:6482 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___ACrangeExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ACrangeExpr(fra.me.REG[2]);
-  parser___parser_prod___ACrangeExpr___init_acrangeexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___ACrangeExpr(fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
-}
-val_t NEW_ACrangeExpr_parser___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___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_parser___parser_nodes___ACrangeExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ACrangeExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ACrangeExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_ACrangeExpr_parser___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 = 6437;
-  fra.me.meth = LOCATE_NEW_ACrangeExpr_parser___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:6437 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___ACrangeExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ACrangeExpr(fra.me.REG[2]);
-  parser___parser_prod___ARangeExpr___init_arangeexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___ACrangeExpr(fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AOrangeExpr[90] = {
-  {(bigint) 3603 /* 0: Identity */},
-  {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AOrangeExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AOrangeExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AOrangeExpr < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction116[55] = {
+  {(bigint) 2911 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction116" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction116 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction116 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2911 /* 5: ReduceAction116 < ReduceAction116: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AOrangeExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AOrangeExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3319 /* 8: AOrangeExpr < ARangeExpr: superclass typecheck marker */},
-  {(bigint) 3603 /* 9: AOrangeExpr < AOrangeExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -73090,7 +106419,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AOrangeExpr[90] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AOrangeExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction116 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -73106,6 +106435,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AOrangeExpr[90] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -73119,232 +106450,92 @@ const classtable_elt_t VFT_parser___parser_nodes___AOrangeExpr[90] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AOrangeExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AOrangeExpr___visit_all},
-  {(bigint) 1 /* 60: AOrangeExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ARangeExpr___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AOrangeExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 75: AOrangeExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___AOrangeExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) parser___parser_prod___ARangeExpr___empty_init},
-  {(bigint) parser___parser_prod___ARangeExpr___init_arangeexpr},
-  {(bigint) 4 /* 84: AOrangeExpr < ARangeExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ARangeExpr___n_expr},
-  {(bigint) parser___parser_nodes___ARangeExpr___n_expr2},
-  {(bigint) parser___parser_prod___AOrangeExpr___empty_init},
-  {(bigint) parser___parser_prod___AOrangeExpr___init_aorangeexpr},
-  {(bigint) 5 /* 89: AOrangeExpr < AOrangeExpr: superclass init_table position */},
+  {(bigint) 0 /* 50: ReduceAction116 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction116___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction116 < ReduceAction116: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AOrangeExpr(val_t p0){
+/* 2: Attribute ReduceAction116::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction116[] = "init var of ReduceAction116";
+void INIT_ATTRIBUTES__parser___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_INIT_ATTRIBUTES__parser___parser_nodes___AOrangeExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction116;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AOrangeExpr(void)
+val_t NEW_parser___ReduceAction116(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 13);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AOrangeExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction116;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AOrangeExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction116[] = "check new ReduceAction116";
+void CHECKNEW_parser___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_parser___parser_nodes___AOrangeExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction116;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___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___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_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AOrangeExpr_parser___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 = 6435;
-  fra.me.meth = LOCATE_NEW_AOrangeExpr_parser___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:6435 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AOrangeExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AOrangeExpr(fra.me.REG[0]);
-  parser___parser_prod___ARangeExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AOrangeExpr(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-val_t NEW_AOrangeExpr_parser___parser_prod___AOrangeExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction116_parser___ReduceAction___init[] = "new ReduceAction116 parser::ReduceAction::init";
+val_t NEW_ReduceAction116_parser___ReduceAction___init(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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6525;
-  fra.me.meth = LOCATE_NEW_AOrangeExpr_parser___parser_prod___AOrangeExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction116_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:6525 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AOrangeExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AOrangeExpr(fra.me.REG[0]);
-  parser___parser_prod___AOrangeExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AOrangeExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction116();
+  INIT_ATTRIBUTES__parser___ReduceAction116(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction116(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AOrangeExpr_parser___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 = 6527;
-  fra.me.meth = LOCATE_NEW_AOrangeExpr_parser___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:6527 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___AOrangeExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AOrangeExpr(fra.me.REG[2]);
-  parser___parser_prod___AOrangeExpr___init_aorangeexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___AOrangeExpr(fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
-}
-val_t NEW_AOrangeExpr_parser___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___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_parser___parser_nodes___AOrangeExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AOrangeExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AOrangeExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_AOrangeExpr_parser___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 = 6437;
-  fra.me.meth = LOCATE_NEW_AOrangeExpr_parser___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:6437 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___AOrangeExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AOrangeExpr(fra.me.REG[2]);
-  parser___parser_prod___ARangeExpr___init_arangeexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___AOrangeExpr(fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AArrayExpr[87] = {
-  {(bigint) 3515 /* 0: Identity */},
-  {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AArrayExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AArrayExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AArrayExpr < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction117[55] = {
+  {(bigint) 2907 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction117" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction117 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction117 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2907 /* 5: ReduceAction117 < ReduceAction117: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AArrayExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AArrayExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3515 /* 8: AArrayExpr < AArrayExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -73354,7 +106545,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AArrayExpr[87] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AArrayExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction117 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -73370,6 +106561,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AArrayExpr[87] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -73383,183 +106576,92 @@ const classtable_elt_t VFT_parser___parser_nodes___AArrayExpr[87] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AArrayExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AArrayExpr___visit_all},
-  {(bigint) 1 /* 60: AArrayExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___AArrayExpr___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AArrayExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 75: AArrayExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___AArrayExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) syntax___typing___AArrayExpr___do_typing},
-  {(bigint) parser___parser_prod___AArrayExpr___empty_init},
-  {(bigint) parser___parser_prod___AArrayExpr___init_aarrayexpr},
-  {(bigint) 4 /* 85: AArrayExpr < AArrayExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AArrayExpr___n_exprs},
+  {(bigint) 0 /* 50: ReduceAction117 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction117___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction117 < ReduceAction117: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AArrayExpr(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction117::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction117[] = "init var of ReduceAction117";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___AArrayExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction117;
   fra.me.has_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:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  /* ./parser//parser_nodes.nit:962 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___AArrayExpr____n_exprs(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AArrayExpr(void)
+val_t NEW_parser___ReduceAction117(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 12);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AArrayExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction117;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AArrayExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction117[] = "check new ReduceAction117";
+void CHECKNEW_parser___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_parser___parser_nodes___AArrayExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction117;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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___parser_nodes___AArrayExpr____n_exprs(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AArrayExpr_parser___parser_prod___AArrayExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction117_parser___ReduceAction___init[] = "new ReduceAction117 parser::ReduceAction::init";
+val_t NEW_ReduceAction117_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6570;
-  fra.me.meth = LOCATE_NEW_AArrayExpr_parser___parser_prod___AArrayExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction117_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:6570 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AArrayExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AArrayExpr(fra.me.REG[0]);
-  parser___parser_prod___AArrayExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AArrayExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction117();
+  INIT_ATTRIBUTES__parser___ReduceAction117(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction117(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AArrayExpr_parser___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 = 6572;
-  fra.me.meth = LOCATE_NEW_AArrayExpr_parser___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:6572 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___AArrayExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AArrayExpr(fra.me.REG[1]);
-  parser___parser_prod___AArrayExpr___init_aarrayexpr(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AArrayExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_AArrayExpr_parser___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___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_parser___parser_nodes___AArrayExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AArrayExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AArrayExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___ASelfExpr[87] = {
-  {(bigint) 3303 /* 0: Identity */},
-  {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ASelfExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ASelfExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ASelfExpr < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction118[55] = {
+  {(bigint) 2903 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction118" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction118 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction118 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2903 /* 5: ReduceAction118 < ReduceAction118: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: ASelfExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: ASelfExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3303 /* 8: ASelfExpr < ASelfExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -73569,7 +106671,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ASelfExpr[87] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: ASelfExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction118 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -73585,6 +106687,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ASelfExpr[87] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -73598,176 +106702,93 @@ const classtable_elt_t VFT_parser___parser_nodes___ASelfExpr[87] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ASelfExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ASelfExpr___visit_all},
-  {(bigint) 1 /* 60: ASelfExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ASelfExpr___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: ASelfExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 75: ASelfExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___ASelfExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___ASelfExpr___is_self},
-  {(bigint) syntax___typing___ASelfExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) syntax___typing___ASelfExpr___variable},
-  {(bigint) parser___parser_prod___ASelfExpr___empty_init},
-  {(bigint) parser___parser_prod___ASelfExpr___init_aselfexpr},
-  {(bigint) 4 /* 85: ASelfExpr < ASelfExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ASelfExpr___n_kwself},
+  {(bigint) 0 /* 50: ReduceAction118 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction118___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction118 < ReduceAction118: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___ASelfExpr(val_t p0){
+/* 2: Attribute ReduceAction118::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction118[] = "init var of ReduceAction118";
+void INIT_ATTRIBUTES__parser___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_INIT_ATTRIBUTES__parser___parser_nodes___ASelfExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction118;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___ASelfExpr(void)
+val_t NEW_parser___ReduceAction118(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 13);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ASelfExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction118;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___ASelfExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction118[] = "check new ReduceAction118";
+void CHECKNEW_parser___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_parser___parser_nodes___ASelfExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction118;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ASelfExpr_parser___parser_prod___ASelfExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction118_parser___ReduceAction___init[] = "new ReduceAction118 parser::ReduceAction::init";
+val_t NEW_ReduceAction118_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6608;
-  fra.me.meth = LOCATE_NEW_ASelfExpr_parser___parser_prod___ASelfExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction118_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:6608 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ASelfExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ASelfExpr(fra.me.REG[0]);
-  parser___parser_prod___ASelfExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ASelfExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction118();
+  INIT_ATTRIBUTES__parser___ReduceAction118(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction118(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_ASelfExpr_parser___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 = 6610;
-  fra.me.meth = LOCATE_NEW_ASelfExpr_parser___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:6610 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___ASelfExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ASelfExpr(fra.me.REG[1]);
-  parser___parser_prod___ASelfExpr___init_aselfexpr(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ASelfExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_ASelfExpr_parser___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___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_parser___parser_nodes___ASelfExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ASelfExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ASelfExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AImplicitSelfExpr[90] = {
-  {(bigint) 3651 /* 0: Identity */},
-  {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AImplicitSelfExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AImplicitSelfExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AImplicitSelfExpr < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction119[55] = {
+  {(bigint) 2899 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction119" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction119 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction119 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2899 /* 5: ReduceAction119 < ReduceAction119: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AImplicitSelfExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AImplicitSelfExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3303 /* 8: AImplicitSelfExpr < ASelfExpr: superclass typecheck marker */},
-  {(bigint) 3651 /* 9: AImplicitSelfExpr < AImplicitSelfExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -73776,7 +106797,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AImplicitSelfExpr[90] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AImplicitSelfExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction119 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -73792,6 +106813,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AImplicitSelfExpr[90] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -73805,217 +106828,93 @@ const classtable_elt_t VFT_parser___parser_nodes___AImplicitSelfExpr[90] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AImplicitSelfExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AImplicitSelfExpr___visit_all},
-  {(bigint) 1 /* 60: AImplicitSelfExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ASelfExpr___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AImplicitSelfExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 75: AImplicitSelfExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___ASelfExpr___generate_icode},
-  {(bigint) syntax___typing___AImplicitSelfExpr___is_implicit_self},
-  {(bigint) syntax___typing___ASelfExpr___is_self},
-  {(bigint) syntax___typing___ASelfExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) syntax___typing___ASelfExpr___variable},
-  {(bigint) parser___parser_prod___ASelfExpr___empty_init},
-  {(bigint) parser___parser_prod___ASelfExpr___init_aselfexpr},
-  {(bigint) 4 /* 85: AImplicitSelfExpr < ASelfExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ASelfExpr___n_kwself},
-  {(bigint) parser___parser_prod___AImplicitSelfExpr___empty_init},
-  {(bigint) parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr},
-  {(bigint) 5 /* 89: AImplicitSelfExpr < AImplicitSelfExpr: superclass init_table position */},
+  {(bigint) 0 /* 50: ReduceAction119 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction119___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction119 < ReduceAction119: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AImplicitSelfExpr(val_t p0){
+/* 2: Attribute ReduceAction119::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction119[] = "init var of ReduceAction119";
+void INIT_ATTRIBUTES__parser___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_INIT_ATTRIBUTES__parser___parser_nodes___AImplicitSelfExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction119;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AImplicitSelfExpr(void)
+val_t NEW_parser___ReduceAction119(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 13);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AImplicitSelfExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction119;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AImplicitSelfExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction119[] = "check new ReduceAction119";
+void CHECKNEW_parser___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_parser___parser_nodes___AImplicitSelfExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction119;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AImplicitSelfExpr_parser___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 = 6608;
-  fra.me.meth = LOCATE_NEW_AImplicitSelfExpr_parser___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:6608 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AImplicitSelfExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AImplicitSelfExpr(fra.me.REG[0]);
-  parser___parser_prod___ASelfExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AImplicitSelfExpr(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-val_t NEW_AImplicitSelfExpr_parser___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 = 6639;
-  fra.me.meth = LOCATE_NEW_AImplicitSelfExpr_parser___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:6639 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AImplicitSelfExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AImplicitSelfExpr(fra.me.REG[0]);
-  parser___parser_prod___AImplicitSelfExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AImplicitSelfExpr(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-val_t NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(void){
+static const char LOCATE_NEW_ReduceAction119_parser___ReduceAction___init[] = "new ReduceAction119 parser::ReduceAction::init";
+val_t NEW_ReduceAction119_parser___ReduceAction___init(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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6641;
-  fra.me.meth = LOCATE_NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction119_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:6641 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AImplicitSelfExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AImplicitSelfExpr(fra.me.REG[0]);
-  parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AImplicitSelfExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction119();
+  INIT_ATTRIBUTES__parser___ReduceAction119(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction119(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AImplicitSelfExpr_parser___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___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_parser___parser_nodes___AImplicitSelfExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AImplicitSelfExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AImplicitSelfExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_AImplicitSelfExpr_parser___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 = 6610;
-  fra.me.meth = LOCATE_NEW_AImplicitSelfExpr_parser___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:6610 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___AImplicitSelfExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AImplicitSelfExpr(fra.me.REG[1]);
-  parser___parser_prod___ASelfExpr___init_aselfexpr(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AImplicitSelfExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___ATrueExpr[87] = {
-  {(bigint) 3587 /* 0: Identity */},
-  {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ATrueExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ATrueExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ATrueExpr < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction120[55] = {
+  {(bigint) 2891 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction120" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction120 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction120 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2891 /* 5: ReduceAction120 < ReduceAction120: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: ATrueExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: ATrueExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3483 /* 8: ATrueExpr < ABoolExpr: superclass typecheck marker */},
-  {(bigint) 3587 /* 9: ATrueExpr < ATrueExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -74024,7 +106923,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ATrueExpr[87] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: ATrueExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction120 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -74040,6 +106939,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ATrueExpr[87] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -74053,180 +106954,93 @@ const classtable_elt_t VFT_parser___parser_nodes___ATrueExpr[87] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ATrueExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ATrueExpr___visit_all},
-  {(bigint) 1 /* 60: ATrueExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ABoolExpr___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: ATrueExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 75: ATrueExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___ATrueExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) 4 /* 82: ATrueExpr < ABoolExpr: superclass init_table position */},
-  {(bigint) parser___parser_prod___ATrueExpr___empty_init},
-  {(bigint) parser___parser_prod___ATrueExpr___init_atrueexpr},
-  {(bigint) 5 /* 85: ATrueExpr < ATrueExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ATrueExpr___n_kwtrue},
+  {(bigint) 0 /* 50: ReduceAction120 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction120___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction120 < ReduceAction120: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___ATrueExpr(val_t p0){
+/* 2: Attribute ReduceAction120::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction120[] = "init var of ReduceAction120";
+void INIT_ATTRIBUTES__parser___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_INIT_ATTRIBUTES__parser___parser_nodes___ATrueExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction120;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___ATrueExpr(void)
+val_t NEW_parser___ReduceAction120(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 12);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ATrueExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction120;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___ATrueExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction120[] = "check new ReduceAction120";
+void CHECKNEW_parser___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_parser___parser_nodes___ATrueExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction120;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___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_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ATrueExpr_parser___parser_prod___ATrueExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction120_parser___ReduceAction___init[] = "new ReduceAction120 parser::ReduceAction::init";
+val_t NEW_ReduceAction120_parser___ReduceAction___init(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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6655;
-  fra.me.meth = LOCATE_NEW_ATrueExpr_parser___parser_prod___ATrueExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction120_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:6655 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ATrueExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ATrueExpr(fra.me.REG[0]);
-  parser___parser_prod___ATrueExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ATrueExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction120();
+  INIT_ATTRIBUTES__parser___ReduceAction120(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction120(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_ATrueExpr_parser___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 = 6657;
-  fra.me.meth = LOCATE_NEW_ATrueExpr_parser___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:6657 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___ATrueExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ATrueExpr(fra.me.REG[1]);
-  parser___parser_prod___ATrueExpr___init_atrueexpr(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ATrueExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_ATrueExpr_parser___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___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_parser___parser_nodes___ATrueExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ATrueExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ATrueExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AFalseExpr[87] = {
-  {(bigint) 3663 /* 0: Identity */},
-  {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AFalseExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AFalseExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AFalseExpr < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction121[55] = {
+  {(bigint) 2887 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction121" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction121 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction121 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2887 /* 5: ReduceAction121 < ReduceAction121: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AFalseExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AFalseExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3483 /* 8: AFalseExpr < ABoolExpr: superclass typecheck marker */},
-  {(bigint) 3663 /* 9: AFalseExpr < AFalseExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -74235,7 +107049,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AFalseExpr[87] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AFalseExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction121 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -74251,6 +107065,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AFalseExpr[87] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -74264,179 +107080,92 @@ const classtable_elt_t VFT_parser___parser_nodes___AFalseExpr[87] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AFalseExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AFalseExpr___visit_all},
-  {(bigint) 1 /* 60: AFalseExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ABoolExpr___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AFalseExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 75: AFalseExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___AFalseExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) 4 /* 82: AFalseExpr < ABoolExpr: superclass init_table position */},
-  {(bigint) parser___parser_prod___AFalseExpr___empty_init},
-  {(bigint) parser___parser_prod___AFalseExpr___init_afalseexpr},
-  {(bigint) 5 /* 85: AFalseExpr < AFalseExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AFalseExpr___n_kwfalse},
+  {(bigint) 0 /* 50: ReduceAction121 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction121___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction121 < ReduceAction121: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AFalseExpr(val_t p0){
+/* 2: Attribute ReduceAction121::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction121[] = "init var of ReduceAction121";
+void INIT_ATTRIBUTES__parser___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_INIT_ATTRIBUTES__parser___parser_nodes___AFalseExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction121;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AFalseExpr(void)
+val_t NEW_parser___ReduceAction121(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 12);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AFalseExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction121;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AFalseExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction121[] = "check new ReduceAction121";
+void CHECKNEW_parser___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_parser___parser_nodes___AFalseExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction121;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___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_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AFalseExpr_parser___parser_prod___AFalseExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction121_parser___ReduceAction___init[] = "new ReduceAction121 parser::ReduceAction::init";
+val_t NEW_ReduceAction121_parser___ReduceAction___init(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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6686;
-  fra.me.meth = LOCATE_NEW_AFalseExpr_parser___parser_prod___AFalseExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction121_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:6686 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AFalseExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AFalseExpr(fra.me.REG[0]);
-  parser___parser_prod___AFalseExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AFalseExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction121();
+  INIT_ATTRIBUTES__parser___ReduceAction121(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction121(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AFalseExpr_parser___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 = 6688;
-  fra.me.meth = LOCATE_NEW_AFalseExpr_parser___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:6688 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___AFalseExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AFalseExpr(fra.me.REG[1]);
-  parser___parser_prod___AFalseExpr___init_afalseexpr(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AFalseExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_AFalseExpr_parser___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___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_parser___parser_nodes___AFalseExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AFalseExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AFalseExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___ANullExpr[86] = {
-  {(bigint) 3355 /* 0: Identity */},
-  {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ANullExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ANullExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ANullExpr < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction122[55] = {
+  {(bigint) 2883 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction122" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction122 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction122 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2883 /* 5: ReduceAction122 < ReduceAction122: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: ANullExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: ANullExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3355 /* 8: ANullExpr < ANullExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -74446,7 +107175,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ANullExpr[86] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: ANullExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction122 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -74462,6 +107191,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ANullExpr[86] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -74475,178 +107206,92 @@ const classtable_elt_t VFT_parser___parser_nodes___ANullExpr[86] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ANullExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ANullExpr___visit_all},
-  {(bigint) 1 /* 60: ANullExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANullExpr___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: ANullExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 75: ANullExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___ANullExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) parser___parser_prod___ANullExpr___empty_init},
-  {(bigint) parser___parser_prod___ANullExpr___init_anullexpr},
-  {(bigint) 4 /* 84: ANullExpr < ANullExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANullExpr___n_kwnull},
+  {(bigint) 0 /* 50: ReduceAction122 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction122___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction122 < ReduceAction122: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___ANullExpr(val_t p0){
+/* 2: Attribute ReduceAction122::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction122[] = "init var of ReduceAction122";
+void INIT_ATTRIBUTES__parser___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_INIT_ATTRIBUTES__parser___parser_nodes___ANullExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction122;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___ANullExpr(void)
+val_t NEW_parser___ReduceAction122(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 12);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ANullExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction122;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___ANullExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction122[] = "check new ReduceAction122";
+void CHECKNEW_parser___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_parser___parser_nodes___ANullExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction122;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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___parser_nodes___ANullExpr____n_kwnull(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwnull", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ANullExpr_parser___parser_prod___ANullExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction122_parser___ReduceAction___init[] = "new ReduceAction122 parser::ReduceAction::init";
+val_t NEW_ReduceAction122_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6717;
-  fra.me.meth = LOCATE_NEW_ANullExpr_parser___parser_prod___ANullExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction122_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:6717 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ANullExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ANullExpr(fra.me.REG[0]);
-  parser___parser_prod___ANullExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ANullExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction122();
+  INIT_ATTRIBUTES__parser___ReduceAction122(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction122(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_ANullExpr_parser___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 = 6719;
-  fra.me.meth = LOCATE_NEW_ANullExpr_parser___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:6719 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___ANullExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ANullExpr(fra.me.REG[1]);
-  parser___parser_prod___ANullExpr___init_anullexpr(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ANullExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_ANullExpr_parser___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___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_parser___parser_nodes___ANullExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ANullExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ANullExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AIntExpr[86] = {
-  {(bigint) 3403 /* 0: Identity */},
-  {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AIntExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AIntExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AIntExpr < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction123[55] = {
+  {(bigint) 2879 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction123" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction123 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction123 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2879 /* 5: ReduceAction123 < ReduceAction123: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AIntExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AIntExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3403 /* 8: AIntExpr < AIntExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -74656,7 +107301,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AIntExpr[86] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AIntExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction123 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -74672,6 +107317,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AIntExpr[86] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -74685,178 +107332,92 @@ const classtable_elt_t VFT_parser___parser_nodes___AIntExpr[86] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AIntExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AIntExpr___visit_all},
-  {(bigint) 1 /* 60: AIntExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___AIntExpr___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AIntExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 75: AIntExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___AIntExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) parser___parser_prod___AIntExpr___empty_init},
-  {(bigint) parser___parser_prod___AIntExpr___init_aintexpr},
-  {(bigint) 4 /* 84: AIntExpr < AIntExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AIntExpr___n_number},
+  {(bigint) 0 /* 50: ReduceAction123 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction123___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction123 < ReduceAction123: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AIntExpr(val_t p0){
+/* 2: Attribute ReduceAction123::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction123[] = "init var of ReduceAction123";
+void INIT_ATTRIBUTES__parser___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_INIT_ATTRIBUTES__parser___parser_nodes___AIntExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction123;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AIntExpr(void)
+val_t NEW_parser___ReduceAction123(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 12);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AIntExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction123;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AIntExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction123[] = "check new ReduceAction123";
+void CHECKNEW_parser___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_parser___parser_nodes___AIntExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction123;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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___parser_nodes___AIntExpr____n_number(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_number", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AIntExpr_parser___parser_prod___AIntExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction123_parser___ReduceAction___init[] = "new ReduceAction123 parser::ReduceAction::init";
+val_t NEW_ReduceAction123_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6748;
-  fra.me.meth = LOCATE_NEW_AIntExpr_parser___parser_prod___AIntExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction123_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:6748 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AIntExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AIntExpr(fra.me.REG[0]);
-  parser___parser_prod___AIntExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AIntExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction123();
+  INIT_ATTRIBUTES__parser___ReduceAction123(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction123(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AIntExpr_parser___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 = 6750;
-  fra.me.meth = LOCATE_NEW_AIntExpr_parser___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:6750 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___AIntExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AIntExpr(fra.me.REG[1]);
-  parser___parser_prod___AIntExpr___init_aintexpr(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AIntExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_AIntExpr_parser___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___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_parser___parser_nodes___AIntExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AIntExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AIntExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AFloatExpr[86] = {
-  {(bigint) 3431 /* 0: Identity */},
-  {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AFloatExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AFloatExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AFloatExpr < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction124[55] = {
+  {(bigint) 2875 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction124" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction124 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction124 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2875 /* 5: ReduceAction124 < ReduceAction124: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AFloatExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AFloatExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3431 /* 8: AFloatExpr < AFloatExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -74866,7 +107427,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AFloatExpr[86] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AFloatExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction124 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -74882,6 +107443,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AFloatExpr[86] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -74895,178 +107458,92 @@ const classtable_elt_t VFT_parser___parser_nodes___AFloatExpr[86] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AFloatExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AFloatExpr___visit_all},
-  {(bigint) 1 /* 60: AFloatExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___AFloatExpr___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AFloatExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 75: AFloatExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___AFloatExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) parser___parser_prod___AFloatExpr___empty_init},
-  {(bigint) parser___parser_prod___AFloatExpr___init_afloatexpr},
-  {(bigint) 4 /* 84: AFloatExpr < AFloatExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AFloatExpr___n_float},
+  {(bigint) 0 /* 50: ReduceAction124 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction124___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction124 < ReduceAction124: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AFloatExpr(val_t p0){
+/* 2: Attribute ReduceAction124::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction124[] = "init var of ReduceAction124";
+void INIT_ATTRIBUTES__parser___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_INIT_ATTRIBUTES__parser___parser_nodes___AFloatExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction124;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AFloatExpr(void)
+val_t NEW_parser___ReduceAction124(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 12);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AFloatExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction124;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AFloatExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction124[] = "check new ReduceAction124";
+void CHECKNEW_parser___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_parser___parser_nodes___AFloatExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction124;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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___parser_nodes___AFloatExpr____n_float(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_float", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AFloatExpr_parser___parser_prod___AFloatExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction124_parser___ReduceAction___init[] = "new ReduceAction124 parser::ReduceAction::init";
+val_t NEW_ReduceAction124_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6779;
-  fra.me.meth = LOCATE_NEW_AFloatExpr_parser___parser_prod___AFloatExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction124_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:6779 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AFloatExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AFloatExpr(fra.me.REG[0]);
-  parser___parser_prod___AFloatExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AFloatExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction124();
+  INIT_ATTRIBUTES__parser___ReduceAction124(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction124(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AFloatExpr_parser___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 = 6781;
-  fra.me.meth = LOCATE_NEW_AFloatExpr_parser___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:6781 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___AFloatExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AFloatExpr(fra.me.REG[1]);
-  parser___parser_prod___AFloatExpr___init_afloatexpr(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AFloatExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_AFloatExpr_parser___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___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_parser___parser_nodes___AFloatExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AFloatExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AFloatExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___ACharExpr[86] = {
-  {(bigint) 3463 /* 0: Identity */},
-  {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ACharExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ACharExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ACharExpr < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction125[55] = {
+  {(bigint) 2871 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction125" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction125 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction125 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2871 /* 5: ReduceAction125 < ReduceAction125: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: ACharExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: ACharExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3463 /* 8: ACharExpr < ACharExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -75076,7 +107553,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ACharExpr[86] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: ACharExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction125 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -75092,6 +107569,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ACharExpr[86] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -75105,178 +107584,92 @@ const classtable_elt_t VFT_parser___parser_nodes___ACharExpr[86] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ACharExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ACharExpr___visit_all},
-  {(bigint) 1 /* 60: ACharExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ACharExpr___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: ACharExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 75: ACharExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___ACharExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) parser___parser_prod___ACharExpr___empty_init},
-  {(bigint) parser___parser_prod___ACharExpr___init_acharexpr},
-  {(bigint) 4 /* 84: ACharExpr < ACharExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ACharExpr___n_char},
+  {(bigint) 0 /* 50: ReduceAction125 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction125___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction125 < ReduceAction125: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___ACharExpr(val_t p0){
+/* 2: Attribute ReduceAction125::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction125[] = "init var of ReduceAction125";
+void INIT_ATTRIBUTES__parser___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_INIT_ATTRIBUTES__parser___parser_nodes___ACharExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction125;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___ACharExpr(void)
+val_t NEW_parser___ReduceAction125(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 12);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ACharExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction125;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___ACharExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction125[] = "check new ReduceAction125";
+void CHECKNEW_parser___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_parser___parser_nodes___ACharExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction125;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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___parser_nodes___ACharExpr____n_char(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_char", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ACharExpr_parser___parser_prod___ACharExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction125_parser___ReduceAction___init[] = "new ReduceAction125 parser::ReduceAction::init";
+val_t NEW_ReduceAction125_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6810;
-  fra.me.meth = LOCATE_NEW_ACharExpr_parser___parser_prod___ACharExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction125_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:6810 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ACharExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ACharExpr(fra.me.REG[0]);
-  parser___parser_prod___ACharExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ACharExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction125();
+  INIT_ATTRIBUTES__parser___ReduceAction125(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction125(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_ACharExpr_parser___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 = 6812;
-  fra.me.meth = LOCATE_NEW_ACharExpr_parser___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:6812 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___ACharExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ACharExpr(fra.me.REG[1]);
-  parser___parser_prod___ACharExpr___init_acharexpr(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ACharExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_ACharExpr_parser___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___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_parser___parser_nodes___ACharExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ACharExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ACharExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AStringFormExpr[85] = {
-  {(bigint) 3275 /* 0: Identity */},
-  {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AStringFormExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AStringFormExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AStringFormExpr < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction126[55] = {
+  {(bigint) 2827 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction126" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction126 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction126 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2827 /* 5: ReduceAction126 < ReduceAction126: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AStringFormExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AStringFormExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3275 /* 8: AStringFormExpr < AStringFormExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -75286,7 +107679,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AStringFormExpr[85] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AStringFormExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction126 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -75302,6 +107695,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AStringFormExpr[85] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -75315,134 +107710,93 @@ const classtable_elt_t VFT_parser___parser_nodes___AStringFormExpr[85] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ANode___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ANode___visit_all},
-  {(bigint) 1 /* 60: AStringFormExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___AStringFormExpr___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AStringFormExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 75: AStringFormExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___AStringFormExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) syntax___icode_generation___AStringFormExpr___string_text},
-  {(bigint) syntax___icode_generation___AStringFormExpr___compute_string_infos},
-  {(bigint) 4 /* 84: AStringFormExpr < AStringFormExpr: superclass init_table position */},
+  {(bigint) 0 /* 50: ReduceAction126 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction126___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction126 < ReduceAction126: 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__parser___parser_nodes___AStringFormExpr(val_t p0){
+/* 2: Attribute ReduceAction126::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction126[] = "init var of ReduceAction126";
+void INIT_ATTRIBUTES__parser___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_INIT_ATTRIBUTES__parser___parser_nodes___AStringFormExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction126;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AStringFormExpr(void)
+val_t NEW_parser___ReduceAction126(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 13);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AStringFormExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction126;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AStringFormExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction126[] = "check new ReduceAction126";
+void CHECKNEW_parser___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_parser___parser_nodes___AStringFormExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction126;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AStringFormExpr_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ReduceAction126_parser___ReduceAction___init[] = "new ReduceAction126 parser::ReduceAction::init";
+val_t NEW_ReduceAction126_parser___ReduceAction___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};
+  int init_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_AStringFormExpr_parser___parser_nodes___ANode___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction126_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___AStringFormExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AStringFormExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AStringFormExpr(fra.me.REG[1]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction126();
+  INIT_ATTRIBUTES__parser___ReduceAction126(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction126(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AStringExpr[89] = {
-  {(bigint) 3591 /* 0: Identity */},
-  {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AStringExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AStringExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AStringExpr < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction127[55] = {
+  {(bigint) 2791 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction127" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction127 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction127 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2791 /* 5: ReduceAction127 < ReduceAction127: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AStringExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AStringExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3275 /* 8: AStringExpr < AStringFormExpr: superclass typecheck marker */},
-  {(bigint) 3591 /* 9: AStringExpr < AStringExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -75451,7 +107805,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AStringExpr[89] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AStringExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction127 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -75467,6 +107821,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AStringExpr[89] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -75480,184 +107836,93 @@ const classtable_elt_t VFT_parser___parser_nodes___AStringExpr[89] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AStringExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AStringExpr___visit_all},
-  {(bigint) 1 /* 60: AStringExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___AStringFormExpr___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AStringExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 75: AStringExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___AStringFormExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) syntax___icode_generation___AStringExpr___string_text},
-  {(bigint) syntax___icode_generation___AStringFormExpr___compute_string_infos},
-  {(bigint) 4 /* 84: AStringExpr < AStringFormExpr: superclass init_table position */},
-  {(bigint) parser___parser_prod___AStringExpr___empty_init},
-  {(bigint) parser___parser_prod___AStringExpr___init_astringexpr},
-  {(bigint) 5 /* 87: AStringExpr < AStringExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AStringExpr___n_string},
+  {(bigint) 0 /* 50: ReduceAction127 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction127___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction127 < ReduceAction127: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AStringExpr(val_t p0){
+/* 2: Attribute ReduceAction127::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction127[] = "init var of ReduceAction127";
+void INIT_ATTRIBUTES__parser___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_INIT_ATTRIBUTES__parser___parser_nodes___AStringExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction127;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AStringExpr(void)
+val_t NEW_parser___ReduceAction127(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 14);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AStringExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction127;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AStringExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction127[] = "check new ReduceAction127";
+void CHECKNEW_parser___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_parser___parser_nodes___AStringExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction127;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___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_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AStringExpr_parser___parser_prod___AStringExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction127_parser___ReduceAction___init[] = "new ReduceAction127 parser::ReduceAction::init";
+val_t NEW_ReduceAction127_parser___ReduceAction___init(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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6841;
-  fra.me.meth = LOCATE_NEW_AStringExpr_parser___parser_prod___AStringExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction127_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:6841 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AStringExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AStringExpr(fra.me.REG[0]);
-  parser___parser_prod___AStringExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AStringExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction127();
+  INIT_ATTRIBUTES__parser___ReduceAction127(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction127(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AStringExpr_parser___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 = 6843;
-  fra.me.meth = LOCATE_NEW_AStringExpr_parser___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:6843 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___AStringExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AStringExpr(fra.me.REG[1]);
-  parser___parser_prod___AStringExpr___init_astringexpr(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AStringExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_AStringExpr_parser___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___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_parser___parser_nodes___AStringExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AStringExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AStringExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AStartStringExpr[89] = {
-  {(bigint) 3595 /* 0: Identity */},
-  {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AStartStringExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AStartStringExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AStartStringExpr < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction128[55] = {
+  {(bigint) 2767 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction128" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction128 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction128 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2767 /* 5: ReduceAction128 < ReduceAction128: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AStartStringExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AStartStringExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3275 /* 8: AStartStringExpr < AStringFormExpr: superclass typecheck marker */},
-  {(bigint) 3595 /* 9: AStartStringExpr < AStartStringExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -75666,7 +107931,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AStartStringExpr[89] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AStartStringExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction128 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -75682,6 +107947,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AStartStringExpr[89] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -75695,184 +107962,93 @@ const classtable_elt_t VFT_parser___parser_nodes___AStartStringExpr[89] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AStartStringExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AStartStringExpr___visit_all},
-  {(bigint) 1 /* 60: AStartStringExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___AStringFormExpr___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AStartStringExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 75: AStartStringExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___AStringFormExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) syntax___icode_generation___AStartStringExpr___string_text},
-  {(bigint) syntax___icode_generation___AStringFormExpr___compute_string_infos},
-  {(bigint) 4 /* 84: AStartStringExpr < AStringFormExpr: superclass init_table position */},
-  {(bigint) parser___parser_prod___AStartStringExpr___empty_init},
-  {(bigint) parser___parser_prod___AStartStringExpr___init_astartstringexpr},
-  {(bigint) 5 /* 87: AStartStringExpr < AStartStringExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AStartStringExpr___n_string},
+  {(bigint) 0 /* 50: ReduceAction128 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction128___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction128 < ReduceAction128: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AStartStringExpr(val_t p0){
+/* 2: Attribute ReduceAction128::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction128[] = "init var of ReduceAction128";
+void INIT_ATTRIBUTES__parser___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_INIT_ATTRIBUTES__parser___parser_nodes___AStartStringExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction128;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AStartStringExpr(void)
+val_t NEW_parser___ReduceAction128(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 14);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AStartStringExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction128;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AStartStringExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction128[] = "check new ReduceAction128";
+void CHECKNEW_parser___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_parser___parser_nodes___AStartStringExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction128;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___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_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AStartStringExpr_parser___parser_prod___AStartStringExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction128_parser___ReduceAction___init[] = "new ReduceAction128 parser::ReduceAction::init";
+val_t NEW_ReduceAction128_parser___ReduceAction___init(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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6872;
-  fra.me.meth = LOCATE_NEW_AStartStringExpr_parser___parser_prod___AStartStringExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction128_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:6872 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AStartStringExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AStartStringExpr(fra.me.REG[0]);
-  parser___parser_prod___AStartStringExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AStartStringExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction128();
+  INIT_ATTRIBUTES__parser___ReduceAction128(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction128(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AStartStringExpr_parser___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 = 6874;
-  fra.me.meth = LOCATE_NEW_AStartStringExpr_parser___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:6874 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___AStartStringExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AStartStringExpr(fra.me.REG[1]);
-  parser___parser_prod___AStartStringExpr___init_astartstringexpr(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AStartStringExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_AStartStringExpr_parser___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___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_parser___parser_nodes___AStartStringExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AStartStringExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AStartStringExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AMidStringExpr[89] = {
-  {(bigint) 3623 /* 0: Identity */},
-  {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AMidStringExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AMidStringExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AMidStringExpr < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction129[55] = {
+  {(bigint) 2739 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction129" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction129 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction129 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2739 /* 5: ReduceAction129 < ReduceAction129: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AMidStringExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AMidStringExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3275 /* 8: AMidStringExpr < AStringFormExpr: superclass typecheck marker */},
-  {(bigint) 3623 /* 9: AMidStringExpr < AMidStringExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -75881,7 +108057,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AMidStringExpr[89] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AMidStringExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction129 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -75897,6 +108073,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AMidStringExpr[89] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -75910,184 +108088,93 @@ const classtable_elt_t VFT_parser___parser_nodes___AMidStringExpr[89] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AMidStringExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AMidStringExpr___visit_all},
-  {(bigint) 1 /* 60: AMidStringExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___AStringFormExpr___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AMidStringExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 75: AMidStringExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___AStringFormExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) syntax___icode_generation___AMidStringExpr___string_text},
-  {(bigint) syntax___icode_generation___AStringFormExpr___compute_string_infos},
-  {(bigint) 4 /* 84: AMidStringExpr < AStringFormExpr: superclass init_table position */},
-  {(bigint) parser___parser_prod___AMidStringExpr___empty_init},
-  {(bigint) parser___parser_prod___AMidStringExpr___init_amidstringexpr},
-  {(bigint) 5 /* 87: AMidStringExpr < AMidStringExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AMidStringExpr___n_string},
+  {(bigint) 0 /* 50: ReduceAction129 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction129___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction129 < ReduceAction129: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AMidStringExpr(val_t p0){
+/* 2: Attribute ReduceAction129::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction129[] = "init var of ReduceAction129";
+void INIT_ATTRIBUTES__parser___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_INIT_ATTRIBUTES__parser___parser_nodes___AMidStringExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction129;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AMidStringExpr(void)
+val_t NEW_parser___ReduceAction129(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 14);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AMidStringExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction129;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AMidStringExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction129[] = "check new ReduceAction129";
+void CHECKNEW_parser___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_parser___parser_nodes___AMidStringExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction129;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___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_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AMidStringExpr_parser___parser_prod___AMidStringExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction129_parser___ReduceAction___init[] = "new ReduceAction129 parser::ReduceAction::init";
+val_t NEW_ReduceAction129_parser___ReduceAction___init(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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6903;
-  fra.me.meth = LOCATE_NEW_AMidStringExpr_parser___parser_prod___AMidStringExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction129_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:6903 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AMidStringExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AMidStringExpr(fra.me.REG[0]);
-  parser___parser_prod___AMidStringExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AMidStringExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction129();
+  INIT_ATTRIBUTES__parser___ReduceAction129(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction129(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AMidStringExpr_parser___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 = 6905;
-  fra.me.meth = LOCATE_NEW_AMidStringExpr_parser___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:6905 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___AMidStringExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AMidStringExpr(fra.me.REG[1]);
-  parser___parser_prod___AMidStringExpr___init_amidstringexpr(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AMidStringExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_AMidStringExpr_parser___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___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_parser___parser_nodes___AMidStringExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AMidStringExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AMidStringExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AEndStringExpr[89] = {
-  {(bigint) 3671 /* 0: Identity */},
-  {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AEndStringExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AEndStringExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AEndStringExpr < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction130[55] = {
+  {(bigint) 2731 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction130" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction130 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction130 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2731 /* 5: ReduceAction130 < ReduceAction130: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AEndStringExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AEndStringExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3275 /* 8: AEndStringExpr < AStringFormExpr: superclass typecheck marker */},
-  {(bigint) 3671 /* 9: AEndStringExpr < AEndStringExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -76096,7 +108183,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AEndStringExpr[89] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AEndStringExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction130 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -76112,6 +108199,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AEndStringExpr[89] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -76125,183 +108214,92 @@ const classtable_elt_t VFT_parser___parser_nodes___AEndStringExpr[89] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AEndStringExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AEndStringExpr___visit_all},
-  {(bigint) 1 /* 60: AEndStringExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___AStringFormExpr___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AEndStringExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 75: AEndStringExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___AStringFormExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) syntax___icode_generation___AEndStringExpr___string_text},
-  {(bigint) syntax___icode_generation___AStringFormExpr___compute_string_infos},
-  {(bigint) 4 /* 84: AEndStringExpr < AStringFormExpr: superclass init_table position */},
-  {(bigint) parser___parser_prod___AEndStringExpr___empty_init},
-  {(bigint) parser___parser_prod___AEndStringExpr___init_aendstringexpr},
-  {(bigint) 5 /* 87: AEndStringExpr < AEndStringExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AEndStringExpr___n_string},
+  {(bigint) 0 /* 50: ReduceAction130 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction130___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction130 < ReduceAction130: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AEndStringExpr(val_t p0){
+/* 2: Attribute ReduceAction130::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction130[] = "init var of ReduceAction130";
+void INIT_ATTRIBUTES__parser___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_INIT_ATTRIBUTES__parser___parser_nodes___AEndStringExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction130;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AEndStringExpr(void)
+val_t NEW_parser___ReduceAction130(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 14);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AEndStringExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction130;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AEndStringExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction130[] = "check new ReduceAction130";
+void CHECKNEW_parser___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_parser___parser_nodes___AEndStringExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction130;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___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_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AEndStringExpr_parser___parser_prod___AEndStringExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction130_parser___ReduceAction___init[] = "new ReduceAction130 parser::ReduceAction::init";
+val_t NEW_ReduceAction130_parser___ReduceAction___init(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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6934;
-  fra.me.meth = LOCATE_NEW_AEndStringExpr_parser___parser_prod___AEndStringExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction130_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:6934 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AEndStringExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AEndStringExpr(fra.me.REG[0]);
-  parser___parser_prod___AEndStringExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AEndStringExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction130();
+  INIT_ATTRIBUTES__parser___ReduceAction130(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction130(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AEndStringExpr_parser___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 = 6936;
-  fra.me.meth = LOCATE_NEW_AEndStringExpr_parser___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:6936 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___AEndStringExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AEndStringExpr(fra.me.REG[1]);
-  parser___parser_prod___AEndStringExpr___init_aendstringexpr(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AEndStringExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_AEndStringExpr_parser___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___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_parser___parser_nodes___AEndStringExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AEndStringExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AEndStringExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___ASuperstringExpr[87] = {
-  {(bigint) 3267 /* 0: Identity */},
-  {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ASuperstringExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ASuperstringExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ASuperstringExpr < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction131[55] = {
+  {(bigint) 2727 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction131" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction131 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction131 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2727 /* 5: ReduceAction131 < ReduceAction131: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: ASuperstringExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: ASuperstringExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3267 /* 8: ASuperstringExpr < ASuperstringExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -76311,7 +108309,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ASuperstringExpr[87] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: ASuperstringExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction131 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -76327,6 +108325,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ASuperstringExpr[87] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -76340,185 +108340,93 @@ const classtable_elt_t VFT_parser___parser_nodes___ASuperstringExpr[87] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ASuperstringExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ASuperstringExpr___visit_all},
-  {(bigint) 1 /* 60: ASuperstringExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ASuperstringExpr___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: ASuperstringExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 75: ASuperstringExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___ASuperstringExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) syntax___typing___ASuperstringExpr___atype},
-  {(bigint) parser___parser_prod___ASuperstringExpr___empty_init},
-  {(bigint) parser___parser_prod___ASuperstringExpr___init_asuperstringexpr},
-  {(bigint) 4 /* 85: ASuperstringExpr < ASuperstringExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ASuperstringExpr___n_exprs},
+  {(bigint) 0 /* 50: ReduceAction131 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction131___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction131 < ReduceAction131: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___ASuperstringExpr(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction131::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction131[] = "init var of ReduceAction131";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___ASuperstringExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction131;
   fra.me.has_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:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  /* ./parser//parser_nodes.nit:1016 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___ASuperstringExpr____n_exprs(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___ASuperstringExpr(void)
+val_t NEW_parser___ReduceAction131(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 13);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ASuperstringExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction131;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___ASuperstringExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction131[] = "check new ReduceAction131";
+void CHECKNEW_parser___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_parser___parser_nodes___ASuperstringExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction131;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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___parser_nodes___ASuperstringExpr____n_exprs(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ASuperstringExpr_parser___parser_prod___ASuperstringExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction131_parser___ReduceAction___init[] = "new ReduceAction131 parser::ReduceAction::init";
+val_t NEW_ReduceAction131_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6965;
-  fra.me.meth = LOCATE_NEW_ASuperstringExpr_parser___parser_prod___ASuperstringExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction131_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:6965 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ASuperstringExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ASuperstringExpr(fra.me.REG[0]);
-  parser___parser_prod___ASuperstringExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ASuperstringExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction131();
+  INIT_ATTRIBUTES__parser___ReduceAction131(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction131(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_ASuperstringExpr_parser___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 = 6967;
-  fra.me.meth = LOCATE_NEW_ASuperstringExpr_parser___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:6967 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___ASuperstringExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ASuperstringExpr(fra.me.REG[1]);
-  parser___parser_prod___ASuperstringExpr___init_asuperstringexpr(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ASuperstringExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_ASuperstringExpr_parser___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___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_parser___parser_nodes___ASuperstringExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___ASuperstringExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ASuperstringExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AParExpr[87] = {
-  {(bigint) 3599 /* 0: Identity */},
-  {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AParExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AParExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AParExpr < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction132[55] = {
+  {(bigint) 2723 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction132" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction132 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction132 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2723 /* 5: ReduceAction132 < ReduceAction132: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AParExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AParExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3327 /* 8: AParExpr < AProxyExpr: superclass typecheck marker */},
-  {(bigint) 3599 /* 9: AParExpr < AParExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -76527,7 +108435,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AParExpr[87] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 18: AParExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction132 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -76543,6 +108451,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AParExpr[87] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -76556,179 +108466,92 @@ const classtable_elt_t VFT_parser___parser_nodes___AParExpr[87] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AParExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AParExpr___visit_all},
-  {(bigint) 2 /* 60: AParExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___AProxyExpr___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 70: AParExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 4 /* 75: AParExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___AProxyExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) 0 /* 82: AParExpr < AProxyExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AProxyExpr___n_expr},
-  {(bigint) parser___parser_prod___AParExpr___empty_init},
-  {(bigint) parser___parser_prod___AParExpr___init_aparexpr},
-  {(bigint) 5 /* 86: AParExpr < AParExpr: superclass init_table position */},
+  {(bigint) 0 /* 50: ReduceAction132 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction132___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction132 < ReduceAction132: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AParExpr(val_t p0){
+/* 2: Attribute ReduceAction132::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction132[] = "init var of ReduceAction132";
+void INIT_ATTRIBUTES__parser___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_INIT_ATTRIBUTES__parser___parser_nodes___AParExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction132;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AParExpr(void)
+val_t NEW_parser___ReduceAction132(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 12);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AParExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction132;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AParExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction132[] = "check new ReduceAction132";
+void CHECKNEW_parser___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_parser___parser_nodes___AParExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction132;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___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_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AParExpr_parser___parser_prod___AParExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction132_parser___ReduceAction___init[] = "new ReduceAction132 parser::ReduceAction::init";
+val_t NEW_ReduceAction132_parser___ReduceAction___init(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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7003;
-  fra.me.meth = LOCATE_NEW_AParExpr_parser___parser_prod___AParExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction132_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:7003 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AParExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AParExpr(fra.me.REG[0]);
-  parser___parser_prod___AParExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AParExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction132();
+  INIT_ATTRIBUTES__parser___ReduceAction132(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction132(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AParExpr_parser___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 = 7005;
-  fra.me.meth = LOCATE_NEW_AParExpr_parser___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:7005 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___AParExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AParExpr(fra.me.REG[1]);
-  parser___parser_prod___AParExpr___init_aparexpr(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AParExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_AParExpr_parser___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___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_parser___parser_nodes___AParExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AParExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AParExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AProxyExpr[84] = {
-  {(bigint) 3327 /* 0: Identity */},
-  {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AProxyExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AProxyExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AProxyExpr < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction133[55] = {
+  {(bigint) 2719 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction133" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction133 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction133 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2719 /* 5: ReduceAction133 < ReduceAction133: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AProxyExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AProxyExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3327 /* 8: AProxyExpr < AProxyExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -76738,7 +108561,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AProxyExpr[84] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AProxyExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction133 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -76754,6 +108577,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AProxyExpr[84] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -76767,136 +108592,92 @@ const classtable_elt_t VFT_parser___parser_nodes___AProxyExpr[84] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ANode___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ANode___visit_all},
-  {(bigint) 1 /* 60: AProxyExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___AProxyExpr___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AProxyExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 75: AProxyExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___AProxyExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) 4 /* 82: AProxyExpr < AProxyExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AProxyExpr___n_expr},
+  {(bigint) 0 /* 50: ReduceAction133 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction133___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction133 < ReduceAction133: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AProxyExpr(val_t p0){
+/* 2: Attribute ReduceAction133::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction133[] = "init var of ReduceAction133";
+void INIT_ATTRIBUTES__parser___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_INIT_ATTRIBUTES__parser___parser_nodes___AProxyExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction133;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AProxyExpr(void)
+val_t NEW_parser___ReduceAction133(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 12);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AProxyExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction133;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AProxyExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction133[] = "check new ReduceAction133";
+void CHECKNEW_parser___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_parser___parser_nodes___AProxyExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction133;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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___parser_nodes___AProxyExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AProxyExpr_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ReduceAction133_parser___ReduceAction___init[] = "new ReduceAction133 parser::ReduceAction::init";
+val_t NEW_ReduceAction133_parser___ReduceAction___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};
+  int init_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_AProxyExpr_parser___parser_nodes___ANode___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction133_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___AProxyExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AProxyExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AProxyExpr(fra.me.REG[1]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction133();
+  INIT_ATTRIBUTES__parser___ReduceAction133(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction133(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AAsCastExpr[88] = {
-  {(bigint) 3731 /* 0: Identity */},
-  {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AAsCastExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AAsCastExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AAsCastExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3259 /* 5: AAsCastExpr < ATypeCheckExpr: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: AAsCastExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AAsCastExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3731 /* 8: AAsCastExpr < AAsCastExpr: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction134[55] = {
+  {(bigint) 2715 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction134" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction134 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction134 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2715 /* 5: ReduceAction134 < ReduceAction134: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -76906,7 +108687,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAsCastExpr[88] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 18: AAsCastExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction134 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -76922,6 +108703,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AAsCastExpr[88] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -76935,196 +108718,92 @@ const classtable_elt_t VFT_parser___parser_nodes___AAsCastExpr[88] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AAsCastExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AAsCastExpr___visit_all},
-  {(bigint) 2 /* 60: AAsCastExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___AAsCastExpr___after_typing},
-  {(bigint) 0 /* 67: AAsCastExpr < ATypeCheckExpr: superclass init_table position */},
-  {(bigint) syntax___typing___ATypeCheckExpr___check_expr_cast},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 70: AAsCastExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 4 /* 75: AAsCastExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___AAsCastExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) parser___parser_prod___AAsCastExpr___empty_init},
-  {(bigint) parser___parser_prod___AAsCastExpr___init_aascastexpr},
-  {(bigint) 5 /* 84: AAsCastExpr < AAsCastExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AAsCastExpr___n_expr},
-  {(bigint) parser___parser_nodes___AAsCastExpr___n_kwas},
-  {(bigint) parser___parser_nodes___AAsCastExpr___n_type},
+  {(bigint) 0 /* 50: ReduceAction134 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction134___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction134 < ReduceAction134: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AAsCastExpr(val_t p0){
+/* 2: Attribute ReduceAction134::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction134[] = "init var of ReduceAction134";
+void INIT_ATTRIBUTES__parser___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_INIT_ATTRIBUTES__parser___parser_nodes___AAsCastExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction134;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AAsCastExpr(void)
+val_t NEW_parser___ReduceAction134(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 14);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AAsCastExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction134;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AAsCastExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction134[] = "check new ReduceAction134";
+void CHECKNEW_parser___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_parser___parser_nodes___AAsCastExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction134;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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___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___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___parser_nodes___AAsCastExpr____n_type(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AAsCastExpr_parser___parser_prod___AAsCastExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction134_parser___ReduceAction___init[] = "new ReduceAction134 parser::ReduceAction::init";
+val_t NEW_ReduceAction134_parser___ReduceAction___init(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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7034;
-  fra.me.meth = LOCATE_NEW_AAsCastExpr_parser___parser_prod___AAsCastExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction134_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:7034 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AAsCastExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AAsCastExpr(fra.me.REG[0]);
-  parser___parser_prod___AAsCastExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AAsCastExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction134();
+  INIT_ATTRIBUTES__parser___ReduceAction134(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction134(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AAsCastExpr_parser___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 = 7036;
-  fra.me.meth = LOCATE_NEW_AAsCastExpr_parser___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:7036 */
-  fra.me.REG[3] = NEW_parser___parser_nodes___AAsCastExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AAsCastExpr(fra.me.REG[3]);
-  parser___parser_prod___AAsCastExpr___init_aascastexpr(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
-  CHECKNEW_parser___parser_nodes___AAsCastExpr(fra.me.REG[3]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[3];
-}
-val_t NEW_AAsCastExpr_parser___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___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_parser___parser_nodes___AAsCastExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AAsCastExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AAsCastExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AAsNotnullExpr[89] = {
-  {(bigint) 3511 /* 0: Identity */},
-  {(bigint) 15 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AAsNotnullExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AAsNotnullExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AAsNotnullExpr < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction135[55] = {
+  {(bigint) 2711 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction135" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction135 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction135 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2711 /* 5: ReduceAction135 < ReduceAction135: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AAsNotnullExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AAsNotnullExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3511 /* 8: AAsNotnullExpr < AAsNotnullExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -77134,7 +108813,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAsNotnullExpr[89] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AAsNotnullExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction135 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -77150,6 +108829,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AAsNotnullExpr[89] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -77163,205 +108844,92 @@ const classtable_elt_t VFT_parser___parser_nodes___AAsNotnullExpr[89] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AAsNotnullExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AAsNotnullExpr___visit_all},
-  {(bigint) 1 /* 60: AAsNotnullExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___AAsNotnullExpr___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AAsNotnullExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 75: AAsNotnullExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___AAsNotnullExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) parser___parser_prod___AAsNotnullExpr___empty_init},
-  {(bigint) parser___parser_prod___AAsNotnullExpr___init_aasnotnullexpr},
-  {(bigint) 4 /* 84: AAsNotnullExpr < AAsNotnullExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AAsNotnullExpr___n_expr},
-  {(bigint) parser___parser_nodes___AAsNotnullExpr___n_kwas},
-  {(bigint) parser___parser_nodes___AAsNotnullExpr___n_kwnot},
-  {(bigint) parser___parser_nodes___AAsNotnullExpr___n_kwnull},
+  {(bigint) 0 /* 50: ReduceAction135 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction135___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction135 < ReduceAction135: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AAsNotnullExpr(val_t p0){
+/* 2: Attribute ReduceAction135::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction135[] = "init var of ReduceAction135";
+void INIT_ATTRIBUTES__parser___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_INIT_ATTRIBUTES__parser___parser_nodes___AAsNotnullExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction135;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AAsNotnullExpr(void)
+val_t NEW_parser___ReduceAction135(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 15);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AAsNotnullExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction135;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AAsNotnullExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction135[] = "check new ReduceAction135";
+void CHECKNEW_parser___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_parser___parser_nodes___AAsNotnullExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction135;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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___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___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___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___parser_nodes___AAsNotnullExpr____n_kwnull(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwnull", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AAsNotnullExpr_parser___parser_prod___AAsNotnullExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction135_parser___ReduceAction___init[] = "new ReduceAction135 parser::ReduceAction::init";
+val_t NEW_ReduceAction135_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7093;
-  fra.me.meth = LOCATE_NEW_AAsNotnullExpr_parser___parser_prod___AAsNotnullExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction135_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:7093 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AAsNotnullExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AAsNotnullExpr(fra.me.REG[0]);
-  parser___parser_prod___AAsNotnullExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AAsNotnullExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction135();
+  INIT_ATTRIBUTES__parser___ReduceAction135(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction135(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AAsNotnullExpr_parser___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 = 7095;
-  fra.me.meth = LOCATE_NEW_AAsNotnullExpr_parser___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:7095 */
-  fra.me.REG[4] = NEW_parser___parser_nodes___AAsNotnullExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AAsNotnullExpr(fra.me.REG[4]);
-  parser___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_parser___parser_nodes___AAsNotnullExpr(fra.me.REG[4]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[4];
-}
-val_t NEW_AAsNotnullExpr_parser___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___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_parser___parser_nodes___AAsNotnullExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AAsNotnullExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AAsNotnullExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AIssetAttrExpr[100] = {
-  {(bigint) 3635 /* 0: Identity */},
-  {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AIssetAttrExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AIssetAttrExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AIssetAttrExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3495 /* 5: AIssetAttrExpr < AAttrFormExpr: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: AIssetAttrExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AIssetAttrExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3635 /* 8: AIssetAttrExpr < AIssetAttrExpr: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction136[55] = {
+  {(bigint) 2707 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction136" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction136 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction136 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2707 /* 5: ReduceAction136 < ReduceAction136: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -77371,7 +108939,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AIssetAttrExpr[100] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AIssetAttrExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction136 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -77387,6 +108955,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AIssetAttrExpr[100] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -77400,214 +108970,91 @@ const classtable_elt_t VFT_parser___parser_nodes___AIssetAttrExpr[100] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AIssetAttrExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AIssetAttrExpr___visit_all},
-  {(bigint) 1 /* 60: AIssetAttrExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___AIssetAttrExpr___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AIssetAttrExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 75: AIssetAttrExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___AIssetAttrExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___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) syntax___typing___AAttrFormExpr___do_typing},
-  {(bigint) syntax___typing___AAttrFormExpr___prop},
-  {(bigint) syntax___typing___AAttrFormExpr___attr_type},
-  {(bigint) 4 /* 93: AIssetAttrExpr < AAttrFormExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AAttrFormExpr___n_expr},
-  {(bigint) parser___parser_nodes___AAttrFormExpr___n_id},
-  {(bigint) parser___parser_prod___AIssetAttrExpr___empty_init},
-  {(bigint) parser___parser_prod___AIssetAttrExpr___init_aissetattrexpr},
-  {(bigint) 5 /* 98: AIssetAttrExpr < AIssetAttrExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AIssetAttrExpr___n_kwisset},
+  {(bigint) 0 /* 50: ReduceAction136 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction136___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction136 < ReduceAction136: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AIssetAttrExpr(val_t p0){
+/* 2: Attribute ReduceAction136::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction136[] = "init var of ReduceAction136";
+void INIT_ATTRIBUTES__parser___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_INIT_ATTRIBUTES__parser___parser_nodes___AIssetAttrExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction136;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AIssetAttrExpr(void)
+val_t NEW_parser___ReduceAction136(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 21);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AIssetAttrExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction136;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AIssetAttrExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction136[] = "check new ReduceAction136";
+void CHECKNEW_parser___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_parser___parser_nodes___AIssetAttrExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction136;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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___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___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___parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AIssetAttrExpr_parser___parser_prod___AIssetAttrExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction136_parser___ReduceAction___init[] = "new ReduceAction136 parser::ReduceAction::init";
+val_t NEW_ReduceAction136_parser___ReduceAction___init(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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7166;
-  fra.me.meth = LOCATE_NEW_AIssetAttrExpr_parser___parser_prod___AIssetAttrExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction136_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:7166 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AIssetAttrExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AIssetAttrExpr(fra.me.REG[0]);
-  parser___parser_prod___AIssetAttrExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AIssetAttrExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction136();
+  INIT_ATTRIBUTES__parser___ReduceAction136(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction136(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AIssetAttrExpr_parser___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 = 7168;
-  fra.me.meth = LOCATE_NEW_AIssetAttrExpr_parser___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:7168 */
-  fra.me.REG[3] = NEW_parser___parser_nodes___AIssetAttrExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AIssetAttrExpr(fra.me.REG[3]);
-  parser___parser_prod___AIssetAttrExpr___init_aissetattrexpr(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
-  CHECKNEW_parser___parser_nodes___AIssetAttrExpr(fra.me.REG[3]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[3];
-}
-val_t NEW_AIssetAttrExpr_parser___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___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_parser___parser_nodes___AIssetAttrExpr();
-  INIT_ATTRIBUTES__parser___parser_nodes___AIssetAttrExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AIssetAttrExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AAssignOp[74] = {
-  {(bigint) 3135 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AAssignOp" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AAssignOp < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AAssignOp < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction137[55] = {
+  {(bigint) 2703 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction137" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction137 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction137 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2703 /* 5: ReduceAction137 < ReduceAction137: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AAssignOp < Prod: superclass typecheck marker */},
-  {(bigint) 3135 /* 7: AAssignOp < AAssignOp: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -77618,7 +109065,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAssignOp[74] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AAssignOp < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction137 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -77634,6 +109081,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AAssignOp[74] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -77647,101 +109096,92 @@ const classtable_elt_t VFT_parser___parser_nodes___AAssignOp[74] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ANode___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ANode___visit_all},
-  {(bigint) 1 /* 60: AAssignOp < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AAssignOp < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AAssignOp___method_name},
-  {(bigint) 3 /* 73: AAssignOp < AAssignOp: superclass init_table position */},
+  {(bigint) 0 /* 50: ReduceAction137 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction137___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction137 < ReduceAction137: 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__parser___parser_nodes___AAssignOp(val_t p0){
+/* 2: Attribute ReduceAction137::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction137[] = "init var of ReduceAction137";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___AAssignOp;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction137;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AAssignOp(void)
+val_t NEW_parser___ReduceAction137(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AAssignOp;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction137;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AAssignOp(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction137[] = "check new ReduceAction137";
+void CHECKNEW_parser___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_parser___parser_nodes___AAssignOp;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction137;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AAssignOp_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ReduceAction137_parser___ReduceAction___init[] = "new ReduceAction137 parser::ReduceAction::init";
+val_t NEW_ReduceAction137_parser___ReduceAction___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};
+  int init_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_AAssignOp_parser___parser_nodes___ANode___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction137_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___AAssignOp();
-  INIT_ATTRIBUTES__parser___parser_nodes___AAssignOp(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AAssignOp(fra.me.REG[1]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction137();
+  INIT_ATTRIBUTES__parser___ReduceAction137(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction137(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___APlusAssignOp[78] = {
-  {(bigint) 3347 /* 0: Identity */},
-  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "APlusAssignOp" /* 2: Class Name */},
-  {(bigint) 3 /* 3: APlusAssignOp < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: APlusAssignOp < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction138[55] = {
+  {(bigint) 2699 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction138" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction138 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction138 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2699 /* 5: ReduceAction138 < ReduceAction138: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: APlusAssignOp < Prod: superclass typecheck marker */},
-  {(bigint) 3135 /* 7: APlusAssignOp < AAssignOp: superclass typecheck marker */},
-  {(bigint) 3347 /* 8: APlusAssignOp < APlusAssignOp: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -77751,7 +109191,7 @@ const classtable_elt_t VFT_parser___parser_nodes___APlusAssignOp[78] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: APlusAssignOp < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction138 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -77767,6 +109207,8 @@ const classtable_elt_t VFT_parser___parser_nodes___APlusAssignOp[78] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -77780,154 +109222,92 @@ const classtable_elt_t VFT_parser___parser_nodes___APlusAssignOp[78] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___APlusAssignOp___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___APlusAssignOp___visit_all},
-  {(bigint) 1 /* 60: APlusAssignOp < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: APlusAssignOp < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___APlusAssignOp___method_name},
-  {(bigint) 3 /* 73: APlusAssignOp < AAssignOp: superclass init_table position */},
-  {(bigint) parser___parser_prod___APlusAssignOp___empty_init},
-  {(bigint) parser___parser_prod___APlusAssignOp___init_aplusassignop},
-  {(bigint) 4 /* 76: APlusAssignOp < APlusAssignOp: superclass init_table position */},
-  {(bigint) parser___parser_nodes___APlusAssignOp___n_pluseq},
+  {(bigint) 0 /* 50: ReduceAction138 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction138___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction138 < ReduceAction138: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___APlusAssignOp(val_t p0){
+/* 2: Attribute ReduceAction138::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction138[] = "init var of ReduceAction138";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___APlusAssignOp;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction138;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___APlusAssignOp(void)
+val_t NEW_parser___ReduceAction138(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___APlusAssignOp;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction138;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___APlusAssignOp(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction138[] = "check new ReduceAction138";
+void CHECKNEW_parser___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_parser___parser_nodes___APlusAssignOp;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction138;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___APlusAssignOp____n_pluseq(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_pluseq", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_APlusAssignOp_parser___parser_prod___APlusAssignOp___empty_init(void){
+static const char LOCATE_NEW_ReduceAction138_parser___ReduceAction___init[] = "new ReduceAction138 parser::ReduceAction::init";
+val_t NEW_ReduceAction138_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7225;
-  fra.me.meth = LOCATE_NEW_APlusAssignOp_parser___parser_prod___APlusAssignOp___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction138_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:7225 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___APlusAssignOp();
-  INIT_ATTRIBUTES__parser___parser_nodes___APlusAssignOp(fra.me.REG[0]);
-  parser___parser_prod___APlusAssignOp___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___APlusAssignOp(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction138();
+  INIT_ATTRIBUTES__parser___ReduceAction138(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction138(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_APlusAssignOp_parser___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 = 7227;
-  fra.me.meth = LOCATE_NEW_APlusAssignOp_parser___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:7227 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___APlusAssignOp();
-  INIT_ATTRIBUTES__parser___parser_nodes___APlusAssignOp(fra.me.REG[1]);
-  parser___parser_prod___APlusAssignOp___init_aplusassignop(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___APlusAssignOp(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_APlusAssignOp_parser___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___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_parser___parser_nodes___APlusAssignOp();
-  INIT_ATTRIBUTES__parser___parser_nodes___APlusAssignOp(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___APlusAssignOp(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AMinusAssignOp[78] = {
-  {(bigint) 3371 /* 0: Identity */},
-  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AMinusAssignOp" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AMinusAssignOp < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AMinusAssignOp < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction139[55] = {
+  {(bigint) 2695 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction139" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction139 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction139 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2695 /* 5: ReduceAction139 < ReduceAction139: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AMinusAssignOp < Prod: superclass typecheck marker */},
-  {(bigint) 3135 /* 7: AMinusAssignOp < AAssignOp: superclass typecheck marker */},
-  {(bigint) 3371 /* 8: AMinusAssignOp < AMinusAssignOp: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -77937,7 +109317,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AMinusAssignOp[78] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AMinusAssignOp < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction139 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -77953,6 +109333,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AMinusAssignOp[78] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -77966,153 +109348,91 @@ const classtable_elt_t VFT_parser___parser_nodes___AMinusAssignOp[78] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AMinusAssignOp___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AMinusAssignOp___visit_all},
-  {(bigint) 1 /* 60: AMinusAssignOp < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AMinusAssignOp < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AMinusAssignOp___method_name},
-  {(bigint) 3 /* 73: AMinusAssignOp < AAssignOp: superclass init_table position */},
-  {(bigint) parser___parser_prod___AMinusAssignOp___empty_init},
-  {(bigint) parser___parser_prod___AMinusAssignOp___init_aminusassignop},
-  {(bigint) 4 /* 76: AMinusAssignOp < AMinusAssignOp: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AMinusAssignOp___n_minuseq},
+  {(bigint) 0 /* 50: ReduceAction139 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction139___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction139 < ReduceAction139: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AMinusAssignOp(val_t p0){
+/* 2: Attribute ReduceAction139::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction139[] = "init var of ReduceAction139";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___AMinusAssignOp;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction139;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AMinusAssignOp(void)
+val_t NEW_parser___ReduceAction139(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AMinusAssignOp;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction139;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AMinusAssignOp(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction139[] = "check new ReduceAction139";
+void CHECKNEW_parser___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_parser___parser_nodes___AMinusAssignOp;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction139;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AMinusAssignOp____n_minuseq(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_minuseq", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AMinusAssignOp_parser___parser_prod___AMinusAssignOp___empty_init(void){
+static const char LOCATE_NEW_ReduceAction139_parser___ReduceAction___init[] = "new ReduceAction139 parser::ReduceAction::init";
+val_t NEW_ReduceAction139_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7256;
-  fra.me.meth = LOCATE_NEW_AMinusAssignOp_parser___parser_prod___AMinusAssignOp___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction139_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:7256 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AMinusAssignOp();
-  INIT_ATTRIBUTES__parser___parser_nodes___AMinusAssignOp(fra.me.REG[0]);
-  parser___parser_prod___AMinusAssignOp___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AMinusAssignOp(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction139();
+  INIT_ATTRIBUTES__parser___ReduceAction139(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction139(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AMinusAssignOp_parser___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 = 7258;
-  fra.me.meth = LOCATE_NEW_AMinusAssignOp_parser___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:7258 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___AMinusAssignOp();
-  INIT_ATTRIBUTES__parser___parser_nodes___AMinusAssignOp(fra.me.REG[1]);
-  parser___parser_prod___AMinusAssignOp___init_aminusassignop(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AMinusAssignOp(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_AMinusAssignOp_parser___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___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_parser___parser_nodes___AMinusAssignOp();
-  INIT_ATTRIBUTES__parser___parser_nodes___AMinusAssignOp(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AMinusAssignOp(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AClosureDef[87] = {
-  {(bigint) 3459 /* 0: Identity */},
-  {(bigint) 17 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AClosureDef" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AClosureDef < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AClosureDef < ANode: superclass typecheck marker */},
-  {(bigint) 3087 /* 5: AClosureDef < ALabelable: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: AClosureDef < Prod: superclass typecheck marker */},
-  {(bigint) 3459 /* 7: AClosureDef < AClosureDef: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction140[55] = {
+  {(bigint) 2687 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction140" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction140 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction140 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2687 /* 5: ReduceAction140 < ReduceAction140: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -78123,7 +109443,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AClosureDef[87] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AClosureDef < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction140 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -78139,6 +109459,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AClosureDef[87] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -78152,216 +109474,91 @@ const classtable_elt_t VFT_parser___parser_nodes___AClosureDef[87] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AClosureDef___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AClosureDef___visit_all},
-  {(bigint) 1 /* 60: AClosureDef < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___AClosureDef___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) 3 /* 67: AClosureDef < ALabelable: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ALabelable___n_label},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AClosureDef < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___icode_generation___AClosureDef___generate_iclosuredef},
-  {(bigint) syntax___typing___AClosureDef___escapable},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___AClosureDef___accept_typing2},
-  {(bigint) syntax___typing___AClosureDef___closure},
-  {(bigint) syntax___syntax_base___AClosureDef___variables},
-  {(bigint) syntax___syntax_base___AClosureDef___variables__eq},
-  {(bigint) parser___parser_prod___AClosureDef___empty_init},
-  {(bigint) parser___parser_prod___AClosureDef___init_aclosuredef},
-  {(bigint) 4 /* 81: AClosureDef < AClosureDef: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AClosureDef___n_bang},
-  {(bigint) parser___parser_nodes___AClosureDef___n_id},
-  {(bigint) parser___parser_nodes___AClosureDef___n_ids},
-  {(bigint) parser___parser_nodes___AClosureDef___n_kwdo},
-  {(bigint) parser___parser_nodes___AClosureDef___n_expr},
+  {(bigint) 0 /* 50: ReduceAction140 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction140___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction140 < ReduceAction140: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___AClosureDef(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction140::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction140[] = "init var of ReduceAction140";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___AClosureDef;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction140;
   fra.me.has_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:1947 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AClosureDef____accept_typing2(fra.me.REG[0]) = REGB0;
-  /* ./parser//parser_nodes.nit:1055 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___AClosureDef____n_ids(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:1056 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AClosureDef____n_kwdo(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:1057 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AClosureDef____n_expr(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:689 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AClosureDef(void)
+val_t NEW_parser___ReduceAction140(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 17);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AClosureDef;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction140;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AClosureDef(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction140[] = "check new ReduceAction140";
+void CHECKNEW_parser___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_parser___parser_nodes___AClosureDef;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction140;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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___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___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___parser_nodes___AClosureDef____n_ids(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_ids", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AClosureDef_parser___parser_prod___AClosureDef___empty_init(void){
+static const char LOCATE_NEW_ReduceAction140_parser___ReduceAction___init[] = "new ReduceAction140 parser::ReduceAction::init";
+val_t NEW_ReduceAction140_parser___ReduceAction___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};
+  int init_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_AClosureDef_parser___parser_prod___AClosureDef___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction140_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:7287 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AClosureDef();
-  INIT_ATTRIBUTES__parser___parser_nodes___AClosureDef(fra.me.REG[0]);
-  parser___parser_prod___AClosureDef___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AClosureDef(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction140();
+  INIT_ATTRIBUTES__parser___ReduceAction140(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction140(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AClosureDef_parser___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 = 7289;
-  fra.me.meth = LOCATE_NEW_AClosureDef_parser___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:7289 */
-  fra.me.REG[6] = NEW_parser___parser_nodes___AClosureDef();
-  INIT_ATTRIBUTES__parser___parser_nodes___AClosureDef(fra.me.REG[6]);
-  parser___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_parser___parser_nodes___AClosureDef(fra.me.REG[6]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[6];
-}
-val_t NEW_AClosureDef_parser___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___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_parser___parser_nodes___AClosureDef();
-  INIT_ATTRIBUTES__parser___parser_nodes___AClosureDef(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AClosureDef(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AClosureId[74] = {
-  {(bigint) 3119 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AClosureId" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AClosureId < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AClosureId < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction141[55] = {
+  {(bigint) 2683 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction141" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction141 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction141 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2683 /* 5: ReduceAction141 < ReduceAction141: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AClosureId < Prod: superclass typecheck marker */},
-  {(bigint) 3119 /* 7: AClosureId < AClosureId: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -78372,7 +109569,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AClosureId[74] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AClosureId < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction141 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -78388,6 +109585,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AClosureId[74] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -78401,101 +109600,92 @@ const classtable_elt_t VFT_parser___parser_nodes___AClosureId[74] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ANode___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ANode___visit_all},
-  {(bigint) 1 /* 60: AClosureId < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AClosureId < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AClosureId___to_symbol},
-  {(bigint) 3 /* 73: AClosureId < AClosureId: superclass init_table position */},
+  {(bigint) 0 /* 50: ReduceAction141 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction141___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction141 < ReduceAction141: 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__parser___parser_nodes___AClosureId(val_t p0){
+/* 2: Attribute ReduceAction141::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction141[] = "init var of ReduceAction141";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___AClosureId;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction141;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AClosureId(void)
+val_t NEW_parser___ReduceAction141(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AClosureId;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction141;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AClosureId(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction141[] = "check new ReduceAction141";
+void CHECKNEW_parser___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_parser___parser_nodes___AClosureId;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction141;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AClosureId_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ReduceAction141_parser___ReduceAction___init[] = "new ReduceAction141 parser::ReduceAction::init";
+val_t NEW_ReduceAction141_parser___ReduceAction___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};
+  int init_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_AClosureId_parser___parser_nodes___ANode___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction141_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_parser___parser_nodes___AClosureId();
-  INIT_ATTRIBUTES__parser___parser_nodes___AClosureId(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AClosureId(fra.me.REG[1]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction141();
+  INIT_ATTRIBUTES__parser___ReduceAction141(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction141(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ASimpleClosureId[78] = {
-  {(bigint) 3299 /* 0: Identity */},
-  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ASimpleClosureId" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ASimpleClosureId < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ASimpleClosureId < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction142[55] = {
+  {(bigint) 2679 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction142" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction142 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction142 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2679 /* 5: ReduceAction142 < ReduceAction142: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: ASimpleClosureId < Prod: superclass typecheck marker */},
-  {(bigint) 3119 /* 7: ASimpleClosureId < AClosureId: superclass typecheck marker */},
-  {(bigint) 3299 /* 8: ASimpleClosureId < ASimpleClosureId: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -78505,7 +109695,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ASimpleClosureId[78] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: ASimpleClosureId < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction142 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -78521,6 +109711,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ASimpleClosureId[78] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -78534,154 +109726,92 @@ const classtable_elt_t VFT_parser___parser_nodes___ASimpleClosureId[78] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ASimpleClosureId___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ASimpleClosureId___visit_all},
-  {(bigint) 1 /* 60: ASimpleClosureId < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: ASimpleClosureId < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___ASimpleClosureId___to_symbol},
-  {(bigint) 3 /* 73: ASimpleClosureId < AClosureId: superclass init_table position */},
-  {(bigint) parser___parser_prod___ASimpleClosureId___empty_init},
-  {(bigint) parser___parser_prod___ASimpleClosureId___init_asimpleclosureid},
-  {(bigint) 4 /* 76: ASimpleClosureId < ASimpleClosureId: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ASimpleClosureId___n_id},
+  {(bigint) 0 /* 50: ReduceAction142 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction142___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction142 < ReduceAction142: superclass init_table position */},
 };
 /* 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__parser___parser_nodes___ASimpleClosureId(val_t p0){
+/* 2: Attribute ReduceAction142::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction142[] = "init var of ReduceAction142";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___ASimpleClosureId;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction142;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___ASimpleClosureId(void)
+val_t NEW_parser___ReduceAction142(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ASimpleClosureId;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction142;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___ASimpleClosureId(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction142[] = "check new ReduceAction142";
+void CHECKNEW_parser___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_parser___parser_nodes___ASimpleClosureId;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction142;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASimpleClosureId____n_id(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ASimpleClosureId_parser___parser_prod___ASimpleClosureId___empty_init(void){
+static const char LOCATE_NEW_ReduceAction142_parser___ReduceAction___init[] = "new ReduceAction142 parser::ReduceAction::init";
+val_t NEW_ReduceAction142_parser___ReduceAction___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};
+  int init_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_ASimpleClosureId_parser___parser_prod___ASimpleClosureId___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction142_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:7407 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ASimpleClosureId();
-  INIT_ATTRIBUTES__parser___parser_nodes___ASimpleClosureId(fra.me.REG[0]);
-  parser___parser_prod___ASimpleClosureId___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ASimpleClosureId(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction142();
+  INIT_ATTRIBUTES__parser___ReduceAction142(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction142(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_ASimpleClosureId_parser___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 = 7409;
-  fra.me.meth = LOCATE_NEW_ASimpleClosureId_parser___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:7409 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___ASimpleClosureId();
-  INIT_ATTRIBUTES__parser___parser_nodes___ASimpleClosureId(fra.me.REG[1]);
-  parser___parser_prod___ASimpleClosureId___init_asimpleclosureid(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ASimpleClosureId(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_ASimpleClosureId_parser___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___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_parser___parser_nodes___ASimpleClosureId();
-  INIT_ATTRIBUTES__parser___parser_nodes___ASimpleClosureId(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ASimpleClosureId(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___ABreakClosureId[78] = {
-  {(bigint) 3471 /* 0: Identity */},
-  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ABreakClosureId" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ABreakClosureId < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ABreakClosureId < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction143[55] = {
+  {(bigint) 2675 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction143" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction143 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction143 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2675 /* 5: ReduceAction143 < ReduceAction143: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: ABreakClosureId < Prod: superclass typecheck marker */},
-  {(bigint) 3119 /* 7: ABreakClosureId < AClosureId: superclass typecheck marker */},
-  {(bigint) 3471 /* 8: ABreakClosureId < ABreakClosureId: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -78691,7 +109821,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ABreakClosureId[78] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: ABreakClosureId < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction143 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -78707,6 +109837,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ABreakClosureId[78] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -78720,153 +109852,91 @@ const classtable_elt_t VFT_parser___parser_nodes___ABreakClosureId[78] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ABreakClosureId___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ABreakClosureId___visit_all},
-  {(bigint) 1 /* 60: ABreakClosureId < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: ABreakClosureId < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___ABreakClosureId___to_symbol},
-  {(bigint) 3 /* 73: ABreakClosureId < AClosureId: superclass init_table position */},
-  {(bigint) parser___parser_prod___ABreakClosureId___empty_init},
-  {(bigint) parser___parser_prod___ABreakClosureId___init_abreakclosureid},
-  {(bigint) 4 /* 76: ABreakClosureId < ABreakClosureId: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ABreakClosureId___n_kwbreak},
+  {(bigint) 0 /* 50: ReduceAction143 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction143___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction143 < ReduceAction143: superclass init_table position */},
 };
 /* 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__parser___parser_nodes___ABreakClosureId(val_t p0){
+/* 2: Attribute ReduceAction143::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction143[] = "init var of ReduceAction143";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___ABreakClosureId;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction143;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___ABreakClosureId(void)
+val_t NEW_parser___ReduceAction143(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ABreakClosureId;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction143;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___ABreakClosureId(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction143[] = "check new ReduceAction143";
+void CHECKNEW_parser___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_parser___parser_nodes___ABreakClosureId;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction143;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABreakClosureId____n_kwbreak(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwbreak", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ABreakClosureId_parser___parser_prod___ABreakClosureId___empty_init(void){
+static const char LOCATE_NEW_ReduceAction143_parser___ReduceAction___init[] = "new ReduceAction143 parser::ReduceAction::init";
+val_t NEW_ReduceAction143_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7438;
-  fra.me.meth = LOCATE_NEW_ABreakClosureId_parser___parser_prod___ABreakClosureId___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction143_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:7438 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ABreakClosureId();
-  INIT_ATTRIBUTES__parser___parser_nodes___ABreakClosureId(fra.me.REG[0]);
-  parser___parser_prod___ABreakClosureId___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ABreakClosureId(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction143();
+  INIT_ATTRIBUTES__parser___ReduceAction143(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction143(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_ABreakClosureId_parser___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 = 7440;
-  fra.me.meth = LOCATE_NEW_ABreakClosureId_parser___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:7440 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___ABreakClosureId();
-  INIT_ATTRIBUTES__parser___parser_nodes___ABreakClosureId(fra.me.REG[1]);
-  parser___parser_prod___ABreakClosureId___init_abreakclosureid(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ABreakClosureId(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_ABreakClosureId_parser___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___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_parser___parser_nodes___ABreakClosureId();
-  INIT_ATTRIBUTES__parser___parser_nodes___ABreakClosureId(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ABreakClosureId(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AModuleName[78] = {
-  {(bigint) 3075 /* 0: Identity */},
-  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AModuleName" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AModuleName < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AModuleName < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction144[55] = {
+  {(bigint) 2671 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction144" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction144 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction144 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2671 /* 5: ReduceAction144 < ReduceAction144: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AModuleName < Prod: superclass typecheck marker */},
-  {(bigint) 3075 /* 7: AModuleName < AModuleName: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -78877,7 +109947,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AModuleName[78] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AModuleName < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction144 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -78893,6 +109963,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AModuleName[78] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -78906,173 +109978,91 @@ const classtable_elt_t VFT_parser___parser_nodes___AModuleName[78] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AModuleName___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AModuleName___visit_all},
-  {(bigint) 1 /* 60: AModuleName < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AModuleName < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) parser___parser_prod___AModuleName___empty_init},
-  {(bigint) parser___parser_prod___AModuleName___init_amodulename},
-  {(bigint) 3 /* 74: AModuleName < AModuleName: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AModuleName___n_quad},
-  {(bigint) parser___parser_nodes___AModuleName___n_path},
-  {(bigint) parser___parser_nodes___AModuleName___n_id},
+  {(bigint) 0 /* 50: ReduceAction144 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction144___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction144 < ReduceAction144: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AModuleName::_parent */
-/* 3: Attribute AModuleName::_location */
-/* 4: Attribute AModuleName::_first_location */
-/* 5: Attribute AModuleName::_last_location */
-/* 6: Attribute AModuleName::_n_quad */
-/* 7: Attribute AModuleName::_n_path */
-/* 8: Attribute AModuleName::_n_id */
-void INIT_ATTRIBUTES__parser___parser_nodes___AModuleName(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+/* 2: Attribute ReduceAction144::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction144[] = "init var of ReduceAction144";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___AModuleName;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction144;
   fra.me.has_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:1072 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AModuleName____n_quad(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:1073 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___AModuleName____n_path(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AModuleName(void)
+val_t NEW_parser___ReduceAction144(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 9);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AModuleName;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction144;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AModuleName(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction144[] = "check new ReduceAction144";
+void CHECKNEW_parser___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_parser___parser_nodes___AModuleName;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction144;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AModuleName____n_path(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_n_path", LOCATE_nitc, 0);
-  }
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AModuleName____n_id(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AModuleName_parser___parser_prod___AModuleName___empty_init(void){
+static const char LOCATE_NEW_ReduceAction144_parser___ReduceAction___init[] = "new ReduceAction144 parser::ReduceAction::init";
+val_t NEW_ReduceAction144_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7469;
-  fra.me.meth = LOCATE_NEW_AModuleName_parser___parser_prod___AModuleName___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction144_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:7469 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AModuleName();
-  INIT_ATTRIBUTES__parser___parser_nodes___AModuleName(fra.me.REG[0]);
-  parser___parser_prod___AModuleName___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AModuleName(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction144();
+  INIT_ATTRIBUTES__parser___ReduceAction144(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction144(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AModuleName_parser___parser_prod___AModuleName___init_amodulename(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 = 7471;
-  fra.me.meth = LOCATE_NEW_AModuleName_parser___parser_prod___AModuleName___init_amodulename;
-  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:7471 */
-  fra.me.REG[3] = NEW_parser___parser_nodes___AModuleName();
-  INIT_ATTRIBUTES__parser___parser_nodes___AModuleName(fra.me.REG[3]);
-  parser___parser_prod___AModuleName___init_amodulename(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
-  CHECKNEW_parser___parser_nodes___AModuleName(fra.me.REG[3]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[3];
-}
-val_t NEW_AModuleName_parser___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_AModuleName_parser___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_parser___parser_nodes___AModuleName();
-  INIT_ATTRIBUTES__parser___parser_nodes___AModuleName(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AModuleName(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___AQualified[78] = {
-  {(bigint) 3059 /* 0: Identity */},
-  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AQualified" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AQualified < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AQualified < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction145[55] = {
+  {(bigint) 2667 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction145" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction145 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction145 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2667 /* 5: ReduceAction145 < ReduceAction145: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AQualified < Prod: superclass typecheck marker */},
-  {(bigint) 3059 /* 7: AQualified < AQualified: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -79083,7 +110073,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AQualified[78] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AQualified < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction145 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -79099,6 +110089,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AQualified[78] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -79112,169 +110104,91 @@ const classtable_elt_t VFT_parser___parser_nodes___AQualified[78] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___AQualified___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___AQualified___visit_all},
-  {(bigint) 1 /* 60: AQualified < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AQualified < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) parser___parser_prod___AQualified___empty_init},
-  {(bigint) parser___parser_prod___AQualified___init_aqualified},
-  {(bigint) 3 /* 74: AQualified < AQualified: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AQualified___n_quad},
-  {(bigint) parser___parser_nodes___AQualified___n_id},
-  {(bigint) parser___parser_nodes___AQualified___n_classid},
+  {(bigint) 0 /* 50: ReduceAction145 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction145___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction145 < ReduceAction145: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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_quad */
-/* 7: Attribute AQualified::_n_id */
-/* 8: Attribute AQualified::_n_classid */
-void INIT_ATTRIBUTES__parser___parser_nodes___AQualified(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+/* 2: Attribute ReduceAction145::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction145[] = "init var of ReduceAction145";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___AQualified;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction145;
   fra.me.has_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:1079 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___AQualified____n_id(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:1080 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AQualified____n_classid(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_nodes.nit:1078 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___AQualified____n_quad(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___AQualified(void)
+val_t NEW_parser___ReduceAction145(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 9);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___AQualified;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction145;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___AQualified(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction145[] = "check new ReduceAction145";
+void CHECKNEW_parser___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_parser___parser_nodes___AQualified;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction145;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AQualified____n_id(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AQualified_parser___parser_prod___AQualified___empty_init(void){
+static const char LOCATE_NEW_ReduceAction145_parser___ReduceAction___init[] = "new ReduceAction145 parser::ReduceAction::init";
+val_t NEW_ReduceAction145_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7954;
-  fra.me.meth = LOCATE_NEW_AQualified_parser___parser_prod___AQualified___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction145_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:7954 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___AQualified();
-  INIT_ATTRIBUTES__parser___parser_nodes___AQualified(fra.me.REG[0]);
-  parser___parser_prod___AQualified___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AQualified(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction145();
+  INIT_ATTRIBUTES__parser___ReduceAction145(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction145(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AQualified_parser___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 = 7956;
-  fra.me.meth = LOCATE_NEW_AQualified_parser___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:7956 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___AQualified();
-  INIT_ATTRIBUTES__parser___parser_nodes___AQualified(fra.me.REG[2]);
-  parser___parser_prod___AQualified___init_aqualified(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___AQualified(fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
-}
-val_t NEW_AQualified_parser___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___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_parser___parser_nodes___AQualified();
-  INIT_ATTRIBUTES__parser___parser_nodes___AQualified(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___AQualified(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___ADoc[76] = {
-  {(bigint) 3115 /* 0: Identity */},
-  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ADoc" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ADoc < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ADoc < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction146[55] = {
+  {(bigint) 2663 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction146" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction146 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction146 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2663 /* 5: ReduceAction146 < ReduceAction146: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: ADoc < Prod: superclass typecheck marker */},
-  {(bigint) 3115 /* 7: ADoc < ADoc: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -79285,7 +110199,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ADoc[76] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: ADoc < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction146 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -79301,6 +110215,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ADoc[76] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -79314,157 +110230,91 @@ const classtable_elt_t VFT_parser___parser_nodes___ADoc[76] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ADoc___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ADoc___visit_all},
-  {(bigint) 1 /* 60: ADoc < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: ADoc < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) parser___parser_prod___ADoc___empty_init},
-  {(bigint) parser___parser_prod___ADoc___init_adoc},
-  {(bigint) 3 /* 74: ADoc < ADoc: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ADoc___n_comment},
+  {(bigint) 0 /* 50: ReduceAction146 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction146___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction146 < ReduceAction146: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___ADoc(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+/* 2: Attribute ReduceAction146::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction146[] = "init var of ReduceAction146";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___ADoc;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction146;
   fra.me.has_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:1084 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___ADoc____n_comment(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___ADoc(void)
+val_t NEW_parser___ReduceAction146(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___ADoc;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction146;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___ADoc(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction146[] = "check new ReduceAction146";
+void CHECKNEW_parser___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_parser___parser_nodes___ADoc;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction146;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ADoc____n_comment(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_comment", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ADoc_parser___parser_prod___ADoc___empty_init(void){
+static const char LOCATE_NEW_ReduceAction146_parser___ReduceAction___init[] = "new ReduceAction146 parser::ReduceAction::init";
+val_t NEW_ReduceAction146_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8010;
-  fra.me.meth = LOCATE_NEW_ADoc_parser___parser_prod___ADoc___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction146_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:8010 */
-  fra.me.REG[0] = NEW_parser___parser_nodes___ADoc();
-  INIT_ATTRIBUTES__parser___parser_nodes___ADoc(fra.me.REG[0]);
-  parser___parser_prod___ADoc___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ADoc(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction146();
+  INIT_ATTRIBUTES__parser___ReduceAction146(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction146(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_ADoc_parser___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 = 8012;
-  fra.me.meth = LOCATE_NEW_ADoc_parser___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:8012 */
-  fra.me.REG[1] = NEW_parser___parser_nodes___ADoc();
-  INIT_ATTRIBUTES__parser___parser_nodes___ADoc(fra.me.REG[1]);
-  parser___parser_prod___ADoc___init_adoc(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ADoc(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_ADoc_parser___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___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_parser___parser_nodes___ADoc();
-  INIT_ATTRIBUTES__parser___parser_nodes___ADoc(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___ADoc(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_parser___parser_nodes___Start[76] = {
-  {(bigint) 2775 /* 0: Identity */},
-  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "Start" /* 2: Class Name */},
-  {(bigint) 3 /* 3: Start < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: Start < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction147[55] = {
+  {(bigint) 2659 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction147" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction147 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction147 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2659 /* 5: ReduceAction147 < ReduceAction147: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: Start < Prod: superclass typecheck marker */},
-  {(bigint) 2775 /* 7: Start < Start: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -79475,7 +110325,7 @@ const classtable_elt_t VFT_parser___parser_nodes___Start[76] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: Start < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction147 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -79491,6 +110341,8 @@ const classtable_elt_t VFT_parser___parser_nodes___Start[76] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -79504,133 +110356,89 @@ const classtable_elt_t VFT_parser___parser_nodes___Start[76] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___Start___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___Start___visit_all},
-  {(bigint) 1 /* 60: Start < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: Start < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) parser___parser_prod___Start___init},
-  {(bigint) 3 /* 73: Start < Start: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Start___n_base},
-  {(bigint) parser___parser_nodes___Start___n_eof},
+  {(bigint) 0 /* 50: ReduceAction147 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction147___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction147 < ReduceAction147: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__parser___parser_nodes___Start(val_t p0){
+/* 2: Attribute ReduceAction147::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction147[] = "init var of ReduceAction147";
+void INIT_ATTRIBUTES__parser___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__parser___parser_nodes___Start;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction147;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_nodes___Start(void)
+val_t NEW_parser___ReduceAction147(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 8);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_nodes___Start;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction147;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_nodes___Start(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction147[] = "check new ReduceAction147";
+void CHECKNEW_parser___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_parser___parser_nodes___Start;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction147;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___Start____n_eof(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_eof", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_Start_parser___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___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_parser___parser_nodes___Start();
-  INIT_ATTRIBUTES__parser___parser_nodes___Start(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_nodes___Start(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_Start_parser___parser_prod___Start___init(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_ReduceAction147_parser___ReduceAction___init[] = "new ReduceAction147 parser::ReduceAction::init";
+val_t NEW_ReduceAction147_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8049;
-  fra.me.meth = LOCATE_NEW_Start_parser___parser_prod___Start___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction147_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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:8049 */
-  fra.me.REG[2] = NEW_parser___parser_nodes___Start();
-  INIT_ATTRIBUTES__parser___parser_nodes___Start(fra.me.REG[2]);
-  parser___parser_prod___Start___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_parser___parser_nodes___Start(fra.me.REG[2]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction147();
+  INIT_ATTRIBUTES__parser___ReduceAction147(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction147(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___lexer___Lexer[59] = {
-  {(bigint) 2203 /* 0: Identity */},
-  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "Lexer" /* 2: Class Name */},
-  {(bigint) 3 /* 3: Lexer < Object: superclass typecheck marker */},
-  {(bigint) 23 /* 4: Lexer < TablesCapable: superclass typecheck marker */},
-  {(bigint) 2203 /* 5: Lexer < Lexer: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction148[55] = {
+  {(bigint) 2655 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction148" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction148 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction148 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2655 /* 5: ReduceAction148 < ReduceAction148: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -79643,7 +110451,7 @@ const classtable_elt_t VFT_parser___lexer___Lexer[59] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: Lexer < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction148 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -79659,6 +110467,8 @@ const classtable_elt_t VFT_parser___lexer___Lexer[59] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -79672,137 +110482,88 @@ const classtable_elt_t VFT_parser___lexer___Lexer[59] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: Lexer < TablesCapable: superclass init_table position */},
-  {(bigint) parser___tables___TablesCapable___lexer_goto},
-  {(bigint) parser___tables___TablesCapable___lexer_accept},
-  {(bigint) parser___tables___TablesCapable___parser_goto},
-  {(bigint) parser___tables___TablesCapable___parser_action},
-  {(bigint) 2 /* 52: Lexer < Lexer: superclass init_table position */},
-  {(bigint) parser___lexer___Lexer___file},
-  {(bigint) parser___lexer___Lexer___state_initial},
-  {(bigint) parser___lexer___Lexer___init},
-  {(bigint) parser___lexer___Lexer___peek},
-  {(bigint) parser___lexer___Lexer___next},
-  {(bigint) parser___lexer___Lexer___get_token},
+  {(bigint) 0 /* 50: ReduceAction148 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction148___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction148 < ReduceAction148: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute Lexer::_token */
-/* 3: Attribute Lexer::_state */
-/* 4: Attribute Lexer::_file */
-/* 5: Attribute Lexer::_stream_pos */
-/* 6: Attribute Lexer::_line */
-/* 7: Attribute Lexer::_pos */
-/* 8: Attribute Lexer::_cr */
-void INIT_ATTRIBUTES__parser___lexer___Lexer(val_t p0){
+/* 2: Attribute ReduceAction148::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction148[] = "init var of ReduceAction148";
+void INIT_ATTRIBUTES__parser___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_INIT_ATTRIBUTES__parser___lexer___Lexer;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction148;
   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_parser___lexer___Lexer____state(fra.me.REG[0]) = REGB0;
-  /* ./parser//lexer.nit:1214 */
-  REGB0 = TAG_Int(0);
-  ATTR_parser___lexer___Lexer____stream_pos(fra.me.REG[0]) = REGB0;
-  /* ./parser//lexer.nit:1217 */
-  REGB0 = TAG_Int(0);
-  ATTR_parser___lexer___Lexer____line(fra.me.REG[0]) = REGB0;
-  /* ./parser//lexer.nit:1220 */
-  REGB0 = TAG_Int(0);
-  ATTR_parser___lexer___Lexer____pos(fra.me.REG[0]) = REGB0;
-  /* ./parser//lexer.nit:1223 */
-  REGB0 = TAG_Bool(false);
-  ATTR_parser___lexer___Lexer____cr(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___lexer___Lexer(void)
+val_t NEW_parser___ReduceAction148(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 9);
-  obj->vft = (classtable_elt_t*)VFT_parser___lexer___Lexer;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction148;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___lexer___Lexer(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction148[] = "check new ReduceAction148";
+void CHECKNEW_parser___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_parser___lexer___Lexer;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction148;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___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_parser___lexer___Lexer____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_parser___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_parser___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_parser___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_parser___lexer___Lexer____cr(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_cr", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_Lexer_parser___lexer___Lexer___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ReduceAction148_parser___ReduceAction___init[] = "new ReduceAction148 parser::ReduceAction::init";
+val_t NEW_ReduceAction148_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1228;
-  fra.me.meth = LOCATE_NEW_Lexer_parser___lexer___Lexer___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction148_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./parser//lexer.nit:1228 */
-  fra.me.REG[1] = NEW_parser___lexer___Lexer();
-  INIT_ATTRIBUTES__parser___lexer___Lexer(fra.me.REG[1]);
-  parser___lexer___Lexer___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___lexer___Lexer(fra.me.REG[1]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction148();
+  INIT_ATTRIBUTES__parser___ReduceAction148(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction148(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_prod___Visitor[52] = {
-  {(bigint) 15 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction149[55] = {
+  {(bigint) 2651 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "Visitor" /* 2: Class Name */},
-  {(bigint) 3 /* 3: Visitor < Object: superclass typecheck marker */},
-  {(bigint) 15 /* 4: Visitor < Visitor: superclass typecheck marker */},
+  {(bigint) "ReduceAction149" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction149 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction149 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2651 /* 5: ReduceAction149 < ReduceAction149: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -79816,7 +110577,7 @@ const classtable_elt_t VFT_parser___parser_prod___Visitor[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: Visitor < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction149 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -79832,6 +110593,8 @@ const classtable_elt_t VFT_parser___parser_prod___Visitor[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -79845,76 +110608,88 @@ const classtable_elt_t VFT_parser___parser_prod___Visitor[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: Visitor < Visitor: superclass init_table position */},
-  {(bigint) parser___parser_prod___Visitor___visit},
-  {(bigint) parser___parser_prod___Visitor___enter_visit},
-  {(bigint) parser___parser_prod___Visitor___current_node},
-  {(bigint) parser___parser_prod___Visitor___init},
+  {(bigint) 0 /* 50: ReduceAction149 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction149___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction149 < ReduceAction149: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute Visitor::_current_node */
-void INIT_ATTRIBUTES__parser___parser_prod___Visitor(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+/* 2: Attribute ReduceAction149::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction149[] = "init var of ReduceAction149";
+void INIT_ATTRIBUTES__parser___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__parser___parser_prod___Visitor;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction149;
   fra.me.has_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___parser_prod___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___parser_prod___Visitor(void)
+val_t NEW_parser___ReduceAction149(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___parser_prod___Visitor;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction149;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___parser_prod___Visitor(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction149[] = "check new ReduceAction149";
+void CHECKNEW_parser___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_parser___parser_prod___Visitor;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction149;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_Visitor_parser___parser_prod___Visitor___init(void){
+static const char LOCATE_NEW_ReduceAction149_parser___ReduceAction___init[] = "new ReduceAction149 parser::ReduceAction::init";
+val_t NEW_ReduceAction149_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[2] = {0, 0};
+  int init_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_Visitor_parser___parser_prod___Visitor___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction149_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = NEW_parser___parser_prod___Visitor();
-  INIT_ATTRIBUTES__parser___parser_prod___Visitor(fra.me.REG[0]);
-  parser___parser_prod___Visitor___init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___parser_prod___Visitor(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction149();
+  INIT_ATTRIBUTES__parser___ReduceAction149(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction149(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___State[53] = {
-  {(bigint) 39 /* 0: Identity */},
-  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "State" /* 2: Class Name */},
-  {(bigint) 3 /* 3: State < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 4: State < State: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction150[55] = {
+  {(bigint) 2643 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction150" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction150 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction150 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2643 /* 5: ReduceAction150 < ReduceAction150: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -79928,7 +110703,7 @@ const classtable_elt_t VFT_parser___State[53] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: State < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction150 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -79944,6 +110719,8 @@ const classtable_elt_t VFT_parser___State[53] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -79957,86 +110734,89 @@ const classtable_elt_t VFT_parser___State[53] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: 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},
+  {(bigint) 0 /* 50: ReduceAction150 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction150___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction150 < ReduceAction150: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute State::_state */
-/* 3: Attribute State::_nodes */
-void INIT_ATTRIBUTES__parser___State(val_t p0){
+/* 2: Attribute ReduceAction150::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction150[] = "init var of ReduceAction150";
+void INIT_ATTRIBUTES__parser___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__parser___State;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction150;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___State(void)
+val_t NEW_parser___ReduceAction150(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_parser___State;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction150;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___State(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction150[] = "check new ReduceAction150";
+void CHECKNEW_parser___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_parser___State;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction150;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___State____state(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_state", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-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;
+static const char LOCATE_NEW_ReduceAction150_parser___ReduceAction___init[] = "new ReduceAction150 parser::ReduceAction::init";
+val_t NEW_ReduceAction150_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
-  int init_table[2] = {0, 0};
+  int init_table[3] = {0, 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.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction150_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_parser___State();
-  INIT_ATTRIBUTES__parser___State(fra.me.REG[1]);
-  parser___State___init(fra.me.REG[1], REGB0, fra.me.REG[0], init_table);
-  CHECKNEW_parser___State(fra.me.REG[1]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction150();
+  INIT_ATTRIBUTES__parser___ReduceAction150(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction150(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___Parser[60] = {
-  {(bigint) 2083 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "Parser" /* 2: Class Name */},
-  {(bigint) 3 /* 3: Parser < Object: superclass typecheck marker */},
-  {(bigint) 23 /* 4: Parser < TablesCapable: superclass typecheck marker */},
-  {(bigint) 2083 /* 5: Parser < Parser: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction151[55] = {
+  {(bigint) 2639 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction151" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction151 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction151 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2639 /* 5: ReduceAction151 < ReduceAction151: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -80049,7 +110829,7 @@ const classtable_elt_t VFT_parser___Parser[60] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: Parser < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction151 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -80065,6 +110845,8 @@ const classtable_elt_t VFT_parser___Parser[60] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -80078,108 +110860,89 @@ const classtable_elt_t VFT_parser___Parser[60] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: Parser < TablesCapable: superclass init_table position */},
-  {(bigint) parser___tables___TablesCapable___lexer_goto},
-  {(bigint) parser___tables___TablesCapable___lexer_accept},
-  {(bigint) parser___tables___TablesCapable___parser_goto},
-  {(bigint) parser___tables___TablesCapable___parser_action},
-  {(bigint) 2 /* 52: 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) 0 /* 50: ReduceAction151 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction151___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction151 < ReduceAction151: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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___Parser(val_t p0){
+/* 2: Attribute ReduceAction151::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction151[] = "init var of ReduceAction151";
+void INIT_ATTRIBUTES__parser___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__parser___Parser;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction151;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___Parser(void)
+val_t NEW_parser___ReduceAction151(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_parser___Parser;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction151;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___Parser(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction151[] = "check new ReduceAction151";
+void CHECKNEW_parser___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_parser___Parser;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction151;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_reduce_table", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", 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;
+static const char LOCATE_NEW_ReduceAction151_parser___ReduceAction___init[] = "new ReduceAction151 parser::ReduceAction::init";
+val_t NEW_ReduceAction151_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
   int init_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.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction151_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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___Parser();
-  INIT_ATTRIBUTES__parser___Parser(fra.me.REG[1]);
-  parser___Parser___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_parser___Parser(fra.me.REG[1]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction151();
+  INIT_ATTRIBUTES__parser___ReduceAction151(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction151(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ComputeProdLocationVisitor[54] = {
-  {(bigint) 2327 /* 0: Identity */},
-  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ComputeProdLocationVisitor" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ComputeProdLocationVisitor < Object: superclass typecheck marker */},
-  {(bigint) 15 /* 4: ComputeProdLocationVisitor < Visitor: superclass typecheck marker */},
-  {(bigint) 2327 /* 5: ComputeProdLocationVisitor < ComputeProdLocationVisitor: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction152[55] = {
+  {(bigint) 2635 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction152" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction152 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction152 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2635 /* 5: ReduceAction152 < ReduceAction152: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -80192,7 +110955,7 @@ const classtable_elt_t VFT_parser___ComputeProdLocationVisitor[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: ComputeProdLocationVisitor < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction152 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -80208,6 +110971,8 @@ const classtable_elt_t VFT_parser___ComputeProdLocationVisitor[54] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -80221,114 +110986,89 @@ const classtable_elt_t VFT_parser___ComputeProdLocationVisitor[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: ComputeProdLocationVisitor < Visitor: superclass init_table position */},
-  {(bigint) parser___ComputeProdLocationVisitor___visit},
-  {(bigint) parser___parser_prod___Visitor___enter_visit},
-  {(bigint) parser___parser_prod___Visitor___current_node},
-  {(bigint) parser___parser_prod___Visitor___init},
-  {(bigint) 2 /* 52: ComputeProdLocationVisitor < ComputeProdLocationVisitor: superclass init_table position */},
-  {(bigint) parser___ComputeProdLocationVisitor___init},
+  {(bigint) 0 /* 50: ReduceAction152 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction152___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction152 < ReduceAction152: superclass init_table position */},
 };
 /* 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__parser___ComputeProdLocationVisitor(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+/* 2: Attribute ReduceAction152::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction152[] = "init var of ReduceAction152";
+void INIT_ATTRIBUTES__parser___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__parser___ComputeProdLocationVisitor;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction152;
   fra.me.has_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:918 */
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-  ATTR_parser___ComputeProdLocationVisitor____need_first_prods(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser.nit:921 */
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-  ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser.nit:924 */
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-  ATTR_parser___ComputeProdLocationVisitor____need_before_epsilons(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser.nit:926 */
-  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___parser_prod___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ComputeProdLocationVisitor(void)
+val_t NEW_parser___ReduceAction152(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_parser___ComputeProdLocationVisitor;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction152;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ComputeProdLocationVisitor(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction152[] = "check new ReduceAction152";
+void CHECKNEW_parser___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_parser___ComputeProdLocationVisitor;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction152;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_need_before_epsilons", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ComputeProdLocationVisitor_parser___ComputeProdLocationVisitor___init(void){
+static const char LOCATE_NEW_ReduceAction152_parser___ReduceAction___init[] = "new ReduceAction152 parser::ReduceAction::init";
+val_t NEW_ReduceAction152_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 997;
-  fra.me.meth = LOCATE_NEW_ComputeProdLocationVisitor_parser___ComputeProdLocationVisitor___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction152_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser.nit:997 */
-  fra.me.REG[0] = NEW_parser___ComputeProdLocationVisitor();
-  INIT_ATTRIBUTES__parser___ComputeProdLocationVisitor(fra.me.REG[0]);
-  parser___ComputeProdLocationVisitor___init(fra.me.REG[0], init_table);
-  CHECKNEW_parser___ComputeProdLocationVisitor(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction152();
+  INIT_ATTRIBUTES__parser___ReduceAction152(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction152(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction0[52] = {
-  {(bigint) 2051 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction153[55] = {
+  {(bigint) 2631 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction0" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction0 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction0 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2051 /* 5: ReduceAction0 < ReduceAction0: superclass typecheck marker */},
+  {(bigint) "ReduceAction153" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction153 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction153 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2631 /* 5: ReduceAction153 < ReduceAction153: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -80341,7 +111081,7 @@ const classtable_elt_t VFT_parser___ReduceAction0[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction0 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction153 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -80357,6 +111097,8 @@ const classtable_elt_t VFT_parser___ReduceAction0[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -80370,45 +111112,49 @@ const classtable_elt_t VFT_parser___ReduceAction0[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction0 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction0___action},
+  {(bigint) 0 /* 50: ReduceAction153 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction153___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction0 < ReduceAction0: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction153 < ReduceAction153: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction0::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction0(val_t p0){
+/* 2: Attribute ReduceAction153::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction153[] = "init var of ReduceAction153";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction153;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction0(void)
+val_t NEW_parser___ReduceAction153(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction0;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction153;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction0(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction153[] = "check new ReduceAction153";
+void CHECKNEW_parser___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_parser___ReduceAction0;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction153;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -80418,34 +111164,37 @@ void CHECKNEW_parser___ReduceAction0(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction0_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction153_parser___ReduceAction___init[] = "new ReduceAction153 parser::ReduceAction::init";
+val_t NEW_ReduceAction153_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction0_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction153_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction0();
-  INIT_ATTRIBUTES__parser___ReduceAction0(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction153();
+  INIT_ATTRIBUTES__parser___ReduceAction153(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction0(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction153(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction1[52] = {
-  {(bigint) 2047 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction154[55] = {
+  {(bigint) 2627 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction1" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction1 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction1 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2047 /* 5: ReduceAction1 < ReduceAction1: superclass typecheck marker */},
+  {(bigint) "ReduceAction154" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction154 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction154 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2627 /* 5: ReduceAction154 < ReduceAction154: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -80458,7 +111207,7 @@ const classtable_elt_t VFT_parser___ReduceAction1[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction1 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction154 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -80474,6 +111223,8 @@ const classtable_elt_t VFT_parser___ReduceAction1[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -80487,45 +111238,49 @@ const classtable_elt_t VFT_parser___ReduceAction1[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction1 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction1___action},
+  {(bigint) 0 /* 50: ReduceAction154 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction154___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction1 < ReduceAction1: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction154 < ReduceAction154: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction1::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction1(val_t p0){
+/* 2: Attribute ReduceAction154::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction154[] = "init var of ReduceAction154";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction1;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction154;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction1(void)
+val_t NEW_parser___ReduceAction154(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction1;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction154;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction1(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction154[] = "check new ReduceAction154";
+void CHECKNEW_parser___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_parser___ReduceAction1;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction154;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -80535,34 +111290,37 @@ void CHECKNEW_parser___ReduceAction1(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction1_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction154_parser___ReduceAction___init[] = "new ReduceAction154 parser::ReduceAction::init";
+val_t NEW_ReduceAction154_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction1_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction154_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction1();
-  INIT_ATTRIBUTES__parser___ReduceAction1(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction154();
+  INIT_ATTRIBUTES__parser___ReduceAction154(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction1(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction154(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction2[52] = {
-  {(bigint) 1603 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction155[55] = {
+  {(bigint) 2623 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction2" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction2 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction2 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1603 /* 5: ReduceAction2 < ReduceAction2: superclass typecheck marker */},
+  {(bigint) "ReduceAction155" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction155 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction155 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2623 /* 5: ReduceAction155 < ReduceAction155: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -80575,7 +111333,7 @@ const classtable_elt_t VFT_parser___ReduceAction2[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction2 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction155 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -80591,6 +111349,8 @@ const classtable_elt_t VFT_parser___ReduceAction2[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -80604,45 +111364,49 @@ const classtable_elt_t VFT_parser___ReduceAction2[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction2 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction2___action},
+  {(bigint) 0 /* 50: ReduceAction155 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction155___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction2 < ReduceAction2: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction155 < ReduceAction155: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction2::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction2(val_t p0){
+/* 2: Attribute ReduceAction155::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction155[] = "init var of ReduceAction155";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction2;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction155;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction2(void)
+val_t NEW_parser___ReduceAction155(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction2;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction155;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction2(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction155[] = "check new ReduceAction155";
+void CHECKNEW_parser___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_parser___ReduceAction2;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction155;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -80652,34 +111416,37 @@ void CHECKNEW_parser___ReduceAction2(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction2_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction155_parser___ReduceAction___init[] = "new ReduceAction155 parser::ReduceAction::init";
+val_t NEW_ReduceAction155_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction2_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction155_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction2();
-  INIT_ATTRIBUTES__parser___ReduceAction2(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction155();
+  INIT_ATTRIBUTES__parser___ReduceAction155(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction2(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction155(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction3[52] = {
-  {(bigint) 1199 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction156[55] = {
+  {(bigint) 2619 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction3" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction3 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction3 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1199 /* 5: ReduceAction3 < ReduceAction3: superclass typecheck marker */},
+  {(bigint) "ReduceAction156" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction156 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction156 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2619 /* 5: ReduceAction156 < ReduceAction156: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -80692,7 +111459,7 @@ const classtable_elt_t VFT_parser___ReduceAction3[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction3 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction156 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -80708,6 +111475,8 @@ const classtable_elt_t VFT_parser___ReduceAction3[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -80721,45 +111490,49 @@ const classtable_elt_t VFT_parser___ReduceAction3[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction3 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction3___action},
+  {(bigint) 0 /* 50: ReduceAction156 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction156___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction3 < ReduceAction3: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction156 < ReduceAction156: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction3::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction3(val_t p0){
+/* 2: Attribute ReduceAction156::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction156[] = "init var of ReduceAction156";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction3;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction156;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction3(void)
+val_t NEW_parser___ReduceAction156(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction3;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction156;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction3(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction156[] = "check new ReduceAction156";
+void CHECKNEW_parser___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_parser___ReduceAction3;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction156;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -80769,34 +111542,37 @@ void CHECKNEW_parser___ReduceAction3(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction3_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction156_parser___ReduceAction___init[] = "new ReduceAction156 parser::ReduceAction::init";
+val_t NEW_ReduceAction156_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction3_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction156_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction3();
-  INIT_ATTRIBUTES__parser___ReduceAction3(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction156();
+  INIT_ATTRIBUTES__parser___ReduceAction156(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction3(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction156(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction4[52] = {
-  {(bigint) 847 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction157[55] = {
+  {(bigint) 2615 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction4" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction4 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction4 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 847 /* 5: ReduceAction4 < ReduceAction4: superclass typecheck marker */},
+  {(bigint) "ReduceAction157" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction157 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction157 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2615 /* 5: ReduceAction157 < ReduceAction157: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -80809,7 +111585,7 @@ const classtable_elt_t VFT_parser___ReduceAction4[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction4 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction157 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -80825,6 +111601,8 @@ const classtable_elt_t VFT_parser___ReduceAction4[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -80838,45 +111616,49 @@ const classtable_elt_t VFT_parser___ReduceAction4[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction4 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction4___action},
+  {(bigint) 0 /* 50: ReduceAction157 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction157___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction4 < ReduceAction4: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction157 < ReduceAction157: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction4::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction4(val_t p0){
+/* 2: Attribute ReduceAction157::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction157[] = "init var of ReduceAction157";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction4;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction157;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction4(void)
+val_t NEW_parser___ReduceAction157(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction4;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction157;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction4(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction157[] = "check new ReduceAction157";
+void CHECKNEW_parser___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_parser___ReduceAction4;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction157;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -80886,34 +111668,37 @@ void CHECKNEW_parser___ReduceAction4(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction4_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction157_parser___ReduceAction___init[] = "new ReduceAction157 parser::ReduceAction::init";
+val_t NEW_ReduceAction157_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction4_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction157_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction4();
-  INIT_ATTRIBUTES__parser___ReduceAction4(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction157();
+  INIT_ATTRIBUTES__parser___ReduceAction157(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction4(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction157(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction5[52] = {
-  {(bigint) 711 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction158[55] = {
+  {(bigint) 2611 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction5" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction5 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction5 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 711 /* 5: ReduceAction5 < ReduceAction5: superclass typecheck marker */},
+  {(bigint) "ReduceAction158" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction158 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction158 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2611 /* 5: ReduceAction158 < ReduceAction158: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -80926,7 +111711,7 @@ const classtable_elt_t VFT_parser___ReduceAction5[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction5 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction158 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -80942,6 +111727,8 @@ const classtable_elt_t VFT_parser___ReduceAction5[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -80955,45 +111742,49 @@ const classtable_elt_t VFT_parser___ReduceAction5[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction5 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction5___action},
+  {(bigint) 0 /* 50: ReduceAction158 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction158___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction5 < ReduceAction5: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction158 < ReduceAction158: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction5::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction5(val_t p0){
+/* 2: Attribute ReduceAction158::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction158[] = "init var of ReduceAction158";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction5;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction158;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction5(void)
+val_t NEW_parser___ReduceAction158(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction5;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction158;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction5(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction158[] = "check new ReduceAction158";
+void CHECKNEW_parser___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_parser___ReduceAction5;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction158;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -81003,34 +111794,37 @@ void CHECKNEW_parser___ReduceAction5(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction5_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction158_parser___ReduceAction___init[] = "new ReduceAction158 parser::ReduceAction::init";
+val_t NEW_ReduceAction158_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction5_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction158_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction5();
-  INIT_ATTRIBUTES__parser___ReduceAction5(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction158();
+  INIT_ATTRIBUTES__parser___ReduceAction158(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction5(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction158(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction6[52] = {
-  {(bigint) 667 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction159[55] = {
+  {(bigint) 2607 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction6" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction6 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction6 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 667 /* 5: ReduceAction6 < ReduceAction6: superclass typecheck marker */},
+  {(bigint) "ReduceAction159" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction159 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction159 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2607 /* 5: ReduceAction159 < ReduceAction159: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -81043,7 +111837,7 @@ const classtable_elt_t VFT_parser___ReduceAction6[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction6 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction159 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -81059,6 +111853,8 @@ const classtable_elt_t VFT_parser___ReduceAction6[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -81072,45 +111868,49 @@ const classtable_elt_t VFT_parser___ReduceAction6[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction6 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction6___action},
+  {(bigint) 0 /* 50: ReduceAction159 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction159___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction6 < ReduceAction6: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction159 < ReduceAction159: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction6::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction6(val_t p0){
+/* 2: Attribute ReduceAction159::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction159[] = "init var of ReduceAction159";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction6;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction159;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction6(void)
+val_t NEW_parser___ReduceAction159(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction6;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction159;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction6(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction159[] = "check new ReduceAction159";
+void CHECKNEW_parser___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_parser___ReduceAction6;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction159;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -81120,34 +111920,37 @@ void CHECKNEW_parser___ReduceAction6(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction6_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction159_parser___ReduceAction___init[] = "new ReduceAction159 parser::ReduceAction::init";
+val_t NEW_ReduceAction159_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction6_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction159_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction6();
-  INIT_ATTRIBUTES__parser___ReduceAction6(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction159();
+  INIT_ATTRIBUTES__parser___ReduceAction159(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction6(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction159(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction7[52] = {
-  {(bigint) 607 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction160[55] = {
+  {(bigint) 2599 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction7" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction7 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction7 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 607 /* 5: ReduceAction7 < ReduceAction7: superclass typecheck marker */},
+  {(bigint) "ReduceAction160" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction160 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction160 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2599 /* 5: ReduceAction160 < ReduceAction160: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -81160,7 +111963,7 @@ const classtable_elt_t VFT_parser___ReduceAction7[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction7 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction160 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -81176,6 +111979,8 @@ const classtable_elt_t VFT_parser___ReduceAction7[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -81189,45 +111994,49 @@ const classtable_elt_t VFT_parser___ReduceAction7[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction7 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction7___action},
+  {(bigint) 0 /* 50: ReduceAction160 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction160___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction7 < ReduceAction7: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction160 < ReduceAction160: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction7::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction7(val_t p0){
+/* 2: Attribute ReduceAction160::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction160[] = "init var of ReduceAction160";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction7;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction160;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction7(void)
+val_t NEW_parser___ReduceAction160(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction7;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction160;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction7(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction160[] = "check new ReduceAction160";
+void CHECKNEW_parser___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_parser___ReduceAction7;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction160;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -81237,34 +112046,37 @@ void CHECKNEW_parser___ReduceAction7(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction7_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction160_parser___ReduceAction___init[] = "new ReduceAction160 parser::ReduceAction::init";
+val_t NEW_ReduceAction160_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction7_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction160_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction7();
-  INIT_ATTRIBUTES__parser___ReduceAction7(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction160();
+  INIT_ATTRIBUTES__parser___ReduceAction160(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction7(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction160(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction8[52] = {
-  {(bigint) 455 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction161[55] = {
+  {(bigint) 2595 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction8" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction8 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction8 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 455 /* 5: ReduceAction8 < ReduceAction8: superclass typecheck marker */},
+  {(bigint) "ReduceAction161" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction161 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction161 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2595 /* 5: ReduceAction161 < ReduceAction161: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -81277,7 +112089,7 @@ const classtable_elt_t VFT_parser___ReduceAction8[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction8 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction161 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -81293,6 +112105,8 @@ const classtable_elt_t VFT_parser___ReduceAction8[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -81306,45 +112120,49 @@ const classtable_elt_t VFT_parser___ReduceAction8[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction8 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction8___action},
+  {(bigint) 0 /* 50: ReduceAction161 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction161___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction8 < ReduceAction8: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction161 < ReduceAction161: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction8::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction8(val_t p0){
+/* 2: Attribute ReduceAction161::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction161[] = "init var of ReduceAction161";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction8;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction161;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction8(void)
+val_t NEW_parser___ReduceAction161(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction8;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction161;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction8(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction161[] = "check new ReduceAction161";
+void CHECKNEW_parser___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_parser___ReduceAction8;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction161;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -81354,34 +112172,37 @@ void CHECKNEW_parser___ReduceAction8(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction8_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction161_parser___ReduceAction___init[] = "new ReduceAction161 parser::ReduceAction::init";
+val_t NEW_ReduceAction161_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction8_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction161_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction8();
-  INIT_ATTRIBUTES__parser___ReduceAction8(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction161();
+  INIT_ATTRIBUTES__parser___ReduceAction161(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction8(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction161(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction9[52] = {
-  {(bigint) 411 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction162[55] = {
+  {(bigint) 2591 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction9" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction9 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction9 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 411 /* 5: ReduceAction9 < ReduceAction9: superclass typecheck marker */},
+  {(bigint) "ReduceAction162" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction162 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction162 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2591 /* 5: ReduceAction162 < ReduceAction162: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -81394,7 +112215,7 @@ const classtable_elt_t VFT_parser___ReduceAction9[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction9 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction162 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -81410,6 +112231,8 @@ const classtable_elt_t VFT_parser___ReduceAction9[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -81423,45 +112246,49 @@ const classtable_elt_t VFT_parser___ReduceAction9[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction9 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction9___action},
+  {(bigint) 0 /* 50: ReduceAction162 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction162___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction9 < ReduceAction9: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction162 < ReduceAction162: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction9::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction9(val_t p0){
+/* 2: Attribute ReduceAction162::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction162[] = "init var of ReduceAction162";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction9;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction162;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction9(void)
+val_t NEW_parser___ReduceAction162(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction9;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction162;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction9(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction162[] = "check new ReduceAction162";
+void CHECKNEW_parser___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_parser___ReduceAction9;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction162;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -81471,34 +112298,37 @@ void CHECKNEW_parser___ReduceAction9(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction9_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction162_parser___ReduceAction___init[] = "new ReduceAction162 parser::ReduceAction::init";
+val_t NEW_ReduceAction162_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction9_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction162_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction9();
-  INIT_ATTRIBUTES__parser___ReduceAction9(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction162();
+  INIT_ATTRIBUTES__parser___ReduceAction162(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction9(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction162(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction10[52] = {
-  {(bigint) 2043 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction163[55] = {
+  {(bigint) 2587 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction10" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction10 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction10 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2043 /* 5: ReduceAction10 < ReduceAction10: superclass typecheck marker */},
+  {(bigint) "ReduceAction163" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction163 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction163 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2587 /* 5: ReduceAction163 < ReduceAction163: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -81511,7 +112341,7 @@ const classtable_elt_t VFT_parser___ReduceAction10[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction10 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction163 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -81527,6 +112357,8 @@ const classtable_elt_t VFT_parser___ReduceAction10[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -81540,45 +112372,49 @@ const classtable_elt_t VFT_parser___ReduceAction10[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction10 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction10___action},
+  {(bigint) 0 /* 50: ReduceAction163 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction163___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction10 < ReduceAction10: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction163 < ReduceAction163: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction10::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction10(val_t p0){
+/* 2: Attribute ReduceAction163::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction163[] = "init var of ReduceAction163";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction10;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction163;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction10(void)
+val_t NEW_parser___ReduceAction163(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction10;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction163;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction10(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction163[] = "check new ReduceAction163";
+void CHECKNEW_parser___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_parser___ReduceAction10;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction163;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -81588,34 +112424,37 @@ void CHECKNEW_parser___ReduceAction10(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction10_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction163_parser___ReduceAction___init[] = "new ReduceAction163 parser::ReduceAction::init";
+val_t NEW_ReduceAction163_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction10_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction163_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction10();
-  INIT_ATTRIBUTES__parser___ReduceAction10(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction163();
+  INIT_ATTRIBUTES__parser___ReduceAction163(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction10(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction163(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction11[52] = {
-  {(bigint) 1999 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction164[55] = {
+  {(bigint) 2583 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction11" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction11 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction11 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1999 /* 5: ReduceAction11 < ReduceAction11: superclass typecheck marker */},
+  {(bigint) "ReduceAction164" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction164 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction164 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2583 /* 5: ReduceAction164 < ReduceAction164: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -81628,7 +112467,7 @@ const classtable_elt_t VFT_parser___ReduceAction11[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction11 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction164 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -81644,6 +112483,8 @@ const classtable_elt_t VFT_parser___ReduceAction11[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -81657,45 +112498,49 @@ const classtable_elt_t VFT_parser___ReduceAction11[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction11 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction11___action},
+  {(bigint) 0 /* 50: ReduceAction164 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction164___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction11 < ReduceAction11: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction164 < ReduceAction164: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction11::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction11(val_t p0){
+/* 2: Attribute ReduceAction164::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction164[] = "init var of ReduceAction164";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction11;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction164;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction11(void)
+val_t NEW_parser___ReduceAction164(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction11;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction164;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction11(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction164[] = "check new ReduceAction164";
+void CHECKNEW_parser___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_parser___ReduceAction11;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction164;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -81705,34 +112550,37 @@ void CHECKNEW_parser___ReduceAction11(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction11_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction164_parser___ReduceAction___init[] = "new ReduceAction164 parser::ReduceAction::init";
+val_t NEW_ReduceAction164_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction11_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction164_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction11();
-  INIT_ATTRIBUTES__parser___ReduceAction11(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction164();
+  INIT_ATTRIBUTES__parser___ReduceAction164(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction11(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction164(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction12[52] = {
-  {(bigint) 1955 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction165[55] = {
+  {(bigint) 2579 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction12" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction12 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction12 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1955 /* 5: ReduceAction12 < ReduceAction12: superclass typecheck marker */},
+  {(bigint) "ReduceAction165" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction165 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction165 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2579 /* 5: ReduceAction165 < ReduceAction165: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -81745,7 +112593,7 @@ const classtable_elt_t VFT_parser___ReduceAction12[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction12 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction165 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -81761,6 +112609,8 @@ const classtable_elt_t VFT_parser___ReduceAction12[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -81774,45 +112624,49 @@ const classtable_elt_t VFT_parser___ReduceAction12[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction12 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction12___action},
+  {(bigint) 0 /* 50: ReduceAction165 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction165___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction12 < ReduceAction12: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction165 < ReduceAction165: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction12::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction12(val_t p0){
+/* 2: Attribute ReduceAction165::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction165[] = "init var of ReduceAction165";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction12;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction165;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction12(void)
+val_t NEW_parser___ReduceAction165(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction12;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction165;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction12(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction165[] = "check new ReduceAction165";
+void CHECKNEW_parser___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_parser___ReduceAction12;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction165;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -81822,34 +112676,37 @@ void CHECKNEW_parser___ReduceAction12(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction12_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction165_parser___ReduceAction___init[] = "new ReduceAction165 parser::ReduceAction::init";
+val_t NEW_ReduceAction165_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction12_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction165_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction12();
-  INIT_ATTRIBUTES__parser___ReduceAction12(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction165();
+  INIT_ATTRIBUTES__parser___ReduceAction165(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction12(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction165(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction13[52] = {
-  {(bigint) 1911 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction166[55] = {
+  {(bigint) 2575 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction13" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction13 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction13 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1911 /* 5: ReduceAction13 < ReduceAction13: superclass typecheck marker */},
+  {(bigint) "ReduceAction166" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction166 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction166 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2575 /* 5: ReduceAction166 < ReduceAction166: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -81862,7 +112719,7 @@ const classtable_elt_t VFT_parser___ReduceAction13[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction13 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction166 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -81878,6 +112735,8 @@ const classtable_elt_t VFT_parser___ReduceAction13[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -81891,45 +112750,49 @@ const classtable_elt_t VFT_parser___ReduceAction13[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction13 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction13___action},
+  {(bigint) 0 /* 50: ReduceAction166 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction166___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction13 < ReduceAction13: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction166 < ReduceAction166: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction13::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction13(val_t p0){
+/* 2: Attribute ReduceAction166::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction166[] = "init var of ReduceAction166";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction13;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction166;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction13(void)
+val_t NEW_parser___ReduceAction166(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction13;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction166;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction13(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction166[] = "check new ReduceAction166";
+void CHECKNEW_parser___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_parser___ReduceAction13;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction166;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -81939,34 +112802,37 @@ void CHECKNEW_parser___ReduceAction13(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction13_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction166_parser___ReduceAction___init[] = "new ReduceAction166 parser::ReduceAction::init";
+val_t NEW_ReduceAction166_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction13_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction166_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction13();
-  INIT_ATTRIBUTES__parser___ReduceAction13(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction166();
+  INIT_ATTRIBUTES__parser___ReduceAction166(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction13(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction166(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction14[52] = {
-  {(bigint) 1867 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction167[55] = {
+  {(bigint) 2571 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction14" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction14 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction14 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1867 /* 5: ReduceAction14 < ReduceAction14: superclass typecheck marker */},
+  {(bigint) "ReduceAction167" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction167 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction167 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2571 /* 5: ReduceAction167 < ReduceAction167: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -81979,7 +112845,7 @@ const classtable_elt_t VFT_parser___ReduceAction14[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction14 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction167 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -81995,6 +112861,8 @@ const classtable_elt_t VFT_parser___ReduceAction14[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -82008,45 +112876,49 @@ const classtable_elt_t VFT_parser___ReduceAction14[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction14 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction14___action},
+  {(bigint) 0 /* 50: ReduceAction167 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction167___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction14 < ReduceAction14: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction167 < ReduceAction167: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction14::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction14(val_t p0){
+/* 2: Attribute ReduceAction167::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction167[] = "init var of ReduceAction167";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction14;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction167;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction14(void)
+val_t NEW_parser___ReduceAction167(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction14;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction167;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction14(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction167[] = "check new ReduceAction167";
+void CHECKNEW_parser___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_parser___ReduceAction14;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction167;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -82056,34 +112928,37 @@ void CHECKNEW_parser___ReduceAction14(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction14_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction167_parser___ReduceAction___init[] = "new ReduceAction167 parser::ReduceAction::init";
+val_t NEW_ReduceAction167_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction14_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction167_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction14();
-  INIT_ATTRIBUTES__parser___ReduceAction14(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction167();
+  INIT_ATTRIBUTES__parser___ReduceAction167(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction14(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction167(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction15[52] = {
-  {(bigint) 1823 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction168[55] = {
+  {(bigint) 2567 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction15" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction15 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction15 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1823 /* 5: ReduceAction15 < ReduceAction15: superclass typecheck marker */},
+  {(bigint) "ReduceAction168" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction168 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction168 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2567 /* 5: ReduceAction168 < ReduceAction168: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -82096,7 +112971,7 @@ const classtable_elt_t VFT_parser___ReduceAction15[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction15 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction168 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -82112,6 +112987,8 @@ const classtable_elt_t VFT_parser___ReduceAction15[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -82125,45 +113002,49 @@ const classtable_elt_t VFT_parser___ReduceAction15[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction15 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction15___action},
+  {(bigint) 0 /* 50: ReduceAction168 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction168___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction15 < ReduceAction15: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction168 < ReduceAction168: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction15::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction15(val_t p0){
+/* 2: Attribute ReduceAction168::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction168[] = "init var of ReduceAction168";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction15;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction168;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction15(void)
+val_t NEW_parser___ReduceAction168(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction15;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction168;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction15(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction168[] = "check new ReduceAction168";
+void CHECKNEW_parser___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_parser___ReduceAction15;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction168;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -82173,34 +113054,37 @@ void CHECKNEW_parser___ReduceAction15(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction15_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction168_parser___ReduceAction___init[] = "new ReduceAction168 parser::ReduceAction::init";
+val_t NEW_ReduceAction168_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction15_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction168_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction15();
-  INIT_ATTRIBUTES__parser___ReduceAction15(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction168();
+  INIT_ATTRIBUTES__parser___ReduceAction168(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction15(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction168(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction16[52] = {
-  {(bigint) 1779 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction169[55] = {
+  {(bigint) 2563 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction16" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction16 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction16 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1779 /* 5: ReduceAction16 < ReduceAction16: superclass typecheck marker */},
+  {(bigint) "ReduceAction169" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction169 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction169 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2563 /* 5: ReduceAction169 < ReduceAction169: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -82213,7 +113097,7 @@ const classtable_elt_t VFT_parser___ReduceAction16[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction16 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction169 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -82229,6 +113113,8 @@ const classtable_elt_t VFT_parser___ReduceAction16[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -82242,45 +113128,49 @@ const classtable_elt_t VFT_parser___ReduceAction16[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction16 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction16___action},
+  {(bigint) 0 /* 50: ReduceAction169 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction169___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction16 < ReduceAction16: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction169 < ReduceAction169: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction16::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction16(val_t p0){
+/* 2: Attribute ReduceAction169::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction169[] = "init var of ReduceAction169";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction16;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction169;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction16(void)
+val_t NEW_parser___ReduceAction169(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction16;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction169;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction16(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction169[] = "check new ReduceAction169";
+void CHECKNEW_parser___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_parser___ReduceAction16;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction169;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -82290,34 +113180,37 @@ void CHECKNEW_parser___ReduceAction16(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction16_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction169_parser___ReduceAction___init[] = "new ReduceAction169 parser::ReduceAction::init";
+val_t NEW_ReduceAction169_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction16_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction169_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction16();
-  INIT_ATTRIBUTES__parser___ReduceAction16(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction169();
+  INIT_ATTRIBUTES__parser___ReduceAction169(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction16(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction169(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction17[52] = {
-  {(bigint) 1735 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction170[55] = {
+  {(bigint) 2555 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction17" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction17 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction17 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1735 /* 5: ReduceAction17 < ReduceAction17: superclass typecheck marker */},
+  {(bigint) "ReduceAction170" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction170 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction170 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2555 /* 5: ReduceAction170 < ReduceAction170: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -82330,7 +113223,7 @@ const classtable_elt_t VFT_parser___ReduceAction17[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction17 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction170 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -82346,6 +113239,8 @@ const classtable_elt_t VFT_parser___ReduceAction17[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -82359,45 +113254,49 @@ const classtable_elt_t VFT_parser___ReduceAction17[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction17 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction17___action},
+  {(bigint) 0 /* 50: ReduceAction170 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction170___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction17 < ReduceAction17: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction170 < ReduceAction170: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction17::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction17(val_t p0){
+/* 2: Attribute ReduceAction170::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction170[] = "init var of ReduceAction170";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction17;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction170;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction17(void)
+val_t NEW_parser___ReduceAction170(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction17;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction170;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction17(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction170[] = "check new ReduceAction170";
+void CHECKNEW_parser___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_parser___ReduceAction17;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction170;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -82407,34 +113306,37 @@ void CHECKNEW_parser___ReduceAction17(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction17_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction170_parser___ReduceAction___init[] = "new ReduceAction170 parser::ReduceAction::init";
+val_t NEW_ReduceAction170_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction17_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction170_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction17();
-  INIT_ATTRIBUTES__parser___ReduceAction17(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction170();
+  INIT_ATTRIBUTES__parser___ReduceAction170(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction17(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction170(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction18[52] = {
-  {(bigint) 1691 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction171[55] = {
+  {(bigint) 2551 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction18" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction18 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction18 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1691 /* 5: ReduceAction18 < ReduceAction18: superclass typecheck marker */},
+  {(bigint) "ReduceAction171" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction171 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction171 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2551 /* 5: ReduceAction171 < ReduceAction171: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -82447,7 +113349,7 @@ const classtable_elt_t VFT_parser___ReduceAction18[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction18 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction171 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -82463,6 +113365,8 @@ const classtable_elt_t VFT_parser___ReduceAction18[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -82476,45 +113380,49 @@ const classtable_elt_t VFT_parser___ReduceAction18[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction18 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction18___action},
+  {(bigint) 0 /* 50: ReduceAction171 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction171___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction18 < ReduceAction18: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction171 < ReduceAction171: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction18::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction18(val_t p0){
+/* 2: Attribute ReduceAction171::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction171[] = "init var of ReduceAction171";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction18;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction171;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction18(void)
+val_t NEW_parser___ReduceAction171(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction18;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction171;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction18(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction171[] = "check new ReduceAction171";
+void CHECKNEW_parser___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_parser___ReduceAction18;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction171;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -82524,34 +113432,37 @@ void CHECKNEW_parser___ReduceAction18(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction18_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction171_parser___ReduceAction___init[] = "new ReduceAction171 parser::ReduceAction::init";
+val_t NEW_ReduceAction171_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction18_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction171_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction18();
-  INIT_ATTRIBUTES__parser___ReduceAction18(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction171();
+  INIT_ATTRIBUTES__parser___ReduceAction171(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction18(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction171(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction19[52] = {
-  {(bigint) 1647 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction172[55] = {
+  {(bigint) 2547 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction19" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction19 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction19 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1647 /* 5: ReduceAction19 < ReduceAction19: superclass typecheck marker */},
+  {(bigint) "ReduceAction172" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction172 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction172 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2547 /* 5: ReduceAction172 < ReduceAction172: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -82564,7 +113475,7 @@ const classtable_elt_t VFT_parser___ReduceAction19[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction19 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction172 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -82580,6 +113491,8 @@ const classtable_elt_t VFT_parser___ReduceAction19[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -82593,45 +113506,49 @@ const classtable_elt_t VFT_parser___ReduceAction19[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction19 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction19___action},
+  {(bigint) 0 /* 50: ReduceAction172 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction172___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction19 < ReduceAction19: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction172 < ReduceAction172: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction19::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction19(val_t p0){
+/* 2: Attribute ReduceAction172::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction172[] = "init var of ReduceAction172";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction19;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction172;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction19(void)
+val_t NEW_parser___ReduceAction172(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction19;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction172;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction19(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction172[] = "check new ReduceAction172";
+void CHECKNEW_parser___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_parser___ReduceAction19;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction172;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -82641,34 +113558,37 @@ void CHECKNEW_parser___ReduceAction19(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction19_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction172_parser___ReduceAction___init[] = "new ReduceAction172 parser::ReduceAction::init";
+val_t NEW_ReduceAction172_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction19_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction172_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction19();
-  INIT_ATTRIBUTES__parser___ReduceAction19(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction172();
+  INIT_ATTRIBUTES__parser___ReduceAction172(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction19(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction172(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction20[52] = {
-  {(bigint) 1599 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction173[55] = {
+  {(bigint) 2543 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction20" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction20 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction20 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1599 /* 5: ReduceAction20 < ReduceAction20: superclass typecheck marker */},
+  {(bigint) "ReduceAction173" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction173 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction173 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2543 /* 5: ReduceAction173 < ReduceAction173: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -82681,7 +113601,7 @@ const classtable_elt_t VFT_parser___ReduceAction20[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction20 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction173 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -82697,6 +113617,8 @@ const classtable_elt_t VFT_parser___ReduceAction20[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -82710,45 +113632,49 @@ const classtable_elt_t VFT_parser___ReduceAction20[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction20 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction20___action},
+  {(bigint) 0 /* 50: ReduceAction173 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction173___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction20 < ReduceAction20: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction173 < ReduceAction173: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction20::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction20(val_t p0){
+/* 2: Attribute ReduceAction173::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction173[] = "init var of ReduceAction173";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction20;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction173;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction20(void)
+val_t NEW_parser___ReduceAction173(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction20;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction173;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction20(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction173[] = "check new ReduceAction173";
+void CHECKNEW_parser___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_parser___ReduceAction20;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction173;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -82758,34 +113684,37 @@ void CHECKNEW_parser___ReduceAction20(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction20_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction173_parser___ReduceAction___init[] = "new ReduceAction173 parser::ReduceAction::init";
+val_t NEW_ReduceAction173_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction20_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction173_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction20();
-  INIT_ATTRIBUTES__parser___ReduceAction20(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction173();
+  INIT_ATTRIBUTES__parser___ReduceAction173(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction20(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction173(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction21[52] = {
-  {(bigint) 1555 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction174[55] = {
+  {(bigint) 2539 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction21" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction21 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction21 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1555 /* 5: ReduceAction21 < ReduceAction21: superclass typecheck marker */},
+  {(bigint) "ReduceAction174" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction174 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction174 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2539 /* 5: ReduceAction174 < ReduceAction174: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -82798,7 +113727,7 @@ const classtable_elt_t VFT_parser___ReduceAction21[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction21 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction174 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -82814,6 +113743,8 @@ const classtable_elt_t VFT_parser___ReduceAction21[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -82827,45 +113758,49 @@ const classtable_elt_t VFT_parser___ReduceAction21[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction21 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction21___action},
+  {(bigint) 0 /* 50: ReduceAction174 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction174___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction21 < ReduceAction21: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction174 < ReduceAction174: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction21::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction21(val_t p0){
+/* 2: Attribute ReduceAction174::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction174[] = "init var of ReduceAction174";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction21;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction174;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction21(void)
+val_t NEW_parser___ReduceAction174(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction21;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction174;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction21(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction174[] = "check new ReduceAction174";
+void CHECKNEW_parser___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_parser___ReduceAction21;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction174;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -82875,34 +113810,37 @@ void CHECKNEW_parser___ReduceAction21(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction21_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction174_parser___ReduceAction___init[] = "new ReduceAction174 parser::ReduceAction::init";
+val_t NEW_ReduceAction174_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction21_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction174_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction21();
-  INIT_ATTRIBUTES__parser___ReduceAction21(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction174();
+  INIT_ATTRIBUTES__parser___ReduceAction174(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction21(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction174(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction22[52] = {
-  {(bigint) 1515 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction175[55] = {
+  {(bigint) 2535 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction22" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction22 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction22 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1515 /* 5: ReduceAction22 < ReduceAction22: superclass typecheck marker */},
+  {(bigint) "ReduceAction175" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction175 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction175 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2535 /* 5: ReduceAction175 < ReduceAction175: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -82915,7 +113853,7 @@ const classtable_elt_t VFT_parser___ReduceAction22[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction22 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction175 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -82931,6 +113869,8 @@ const classtable_elt_t VFT_parser___ReduceAction22[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -82944,45 +113884,49 @@ const classtable_elt_t VFT_parser___ReduceAction22[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction22 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction22___action},
+  {(bigint) 0 /* 50: ReduceAction175 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction175___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction22 < ReduceAction22: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction175 < ReduceAction175: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction22::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction22(val_t p0){
+/* 2: Attribute ReduceAction175::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction175[] = "init var of ReduceAction175";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction22;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction175;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction22(void)
+val_t NEW_parser___ReduceAction175(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction22;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction175;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction22(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction175[] = "check new ReduceAction175";
+void CHECKNEW_parser___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_parser___ReduceAction22;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction175;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -82992,34 +113936,37 @@ void CHECKNEW_parser___ReduceAction22(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction22_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction175_parser___ReduceAction___init[] = "new ReduceAction175 parser::ReduceAction::init";
+val_t NEW_ReduceAction175_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction22_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction175_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction22();
-  INIT_ATTRIBUTES__parser___ReduceAction22(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction175();
+  INIT_ATTRIBUTES__parser___ReduceAction175(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction22(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction175(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction23[52] = {
-  {(bigint) 1471 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction176[55] = {
+  {(bigint) 2531 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction23" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction23 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction23 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1471 /* 5: ReduceAction23 < ReduceAction23: superclass typecheck marker */},
+  {(bigint) "ReduceAction176" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction176 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction176 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2531 /* 5: ReduceAction176 < ReduceAction176: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -83032,7 +113979,7 @@ const classtable_elt_t VFT_parser___ReduceAction23[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction23 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction176 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -83048,6 +113995,8 @@ const classtable_elt_t VFT_parser___ReduceAction23[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -83061,45 +114010,49 @@ const classtable_elt_t VFT_parser___ReduceAction23[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction23 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction23___action},
+  {(bigint) 0 /* 50: ReduceAction176 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction176___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction23 < ReduceAction23: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction176 < ReduceAction176: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction23::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction23(val_t p0){
+/* 2: Attribute ReduceAction176::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction176[] = "init var of ReduceAction176";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction23;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction176;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction23(void)
+val_t NEW_parser___ReduceAction176(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction23;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction176;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction23(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction176[] = "check new ReduceAction176";
+void CHECKNEW_parser___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_parser___ReduceAction23;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction176;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -83109,34 +114062,37 @@ void CHECKNEW_parser___ReduceAction23(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction23_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction176_parser___ReduceAction___init[] = "new ReduceAction176 parser::ReduceAction::init";
+val_t NEW_ReduceAction176_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction23_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction176_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction23();
-  INIT_ATTRIBUTES__parser___ReduceAction23(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction176();
+  INIT_ATTRIBUTES__parser___ReduceAction176(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction23(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction176(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction24[52] = {
-  {(bigint) 1431 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction177[55] = {
+  {(bigint) 2527 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction24" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction24 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction24 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1431 /* 5: ReduceAction24 < ReduceAction24: superclass typecheck marker */},
+  {(bigint) "ReduceAction177" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction177 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction177 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2527 /* 5: ReduceAction177 < ReduceAction177: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -83149,7 +114105,7 @@ const classtable_elt_t VFT_parser___ReduceAction24[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction24 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction177 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -83165,6 +114121,8 @@ const classtable_elt_t VFT_parser___ReduceAction24[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -83178,45 +114136,49 @@ const classtable_elt_t VFT_parser___ReduceAction24[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction24 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction24___action},
+  {(bigint) 0 /* 50: ReduceAction177 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction177___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction24 < ReduceAction24: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction177 < ReduceAction177: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction24::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction24(val_t p0){
+/* 2: Attribute ReduceAction177::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction177[] = "init var of ReduceAction177";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction24;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction177;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction24(void)
+val_t NEW_parser___ReduceAction177(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction24;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction177;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction24(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction177[] = "check new ReduceAction177";
+void CHECKNEW_parser___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_parser___ReduceAction24;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction177;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -83226,34 +114188,37 @@ void CHECKNEW_parser___ReduceAction24(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction24_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction177_parser___ReduceAction___init[] = "new ReduceAction177 parser::ReduceAction::init";
+val_t NEW_ReduceAction177_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction24_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction177_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction24();
-  INIT_ATTRIBUTES__parser___ReduceAction24(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction177();
+  INIT_ATTRIBUTES__parser___ReduceAction177(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction24(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction177(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction25[52] = {
-  {(bigint) 1395 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction178[55] = {
+  {(bigint) 2523 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction25" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction25 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction25 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1395 /* 5: ReduceAction25 < ReduceAction25: superclass typecheck marker */},
+  {(bigint) "ReduceAction178" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction178 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction178 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2523 /* 5: ReduceAction178 < ReduceAction178: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -83266,7 +114231,7 @@ const classtable_elt_t VFT_parser___ReduceAction25[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction25 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction178 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -83282,6 +114247,8 @@ const classtable_elt_t VFT_parser___ReduceAction25[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -83295,45 +114262,49 @@ const classtable_elt_t VFT_parser___ReduceAction25[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction25 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction25___action},
+  {(bigint) 0 /* 50: ReduceAction178 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction178___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction25 < ReduceAction25: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction178 < ReduceAction178: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction25::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction25(val_t p0){
+/* 2: Attribute ReduceAction178::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction178[] = "init var of ReduceAction178";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction25;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction178;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction25(void)
+val_t NEW_parser___ReduceAction178(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction25;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction178;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction25(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction178[] = "check new ReduceAction178";
+void CHECKNEW_parser___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_parser___ReduceAction25;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction178;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -83343,34 +114314,37 @@ void CHECKNEW_parser___ReduceAction25(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction25_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction178_parser___ReduceAction___init[] = "new ReduceAction178 parser::ReduceAction::init";
+val_t NEW_ReduceAction178_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction25_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction178_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction25();
-  INIT_ATTRIBUTES__parser___ReduceAction25(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction178();
+  INIT_ATTRIBUTES__parser___ReduceAction178(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction25(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction178(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction26[52] = {
-  {(bigint) 1363 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction179[55] = {
+  {(bigint) 2519 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction26" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction26 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction26 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1363 /* 5: ReduceAction26 < ReduceAction26: superclass typecheck marker */},
+  {(bigint) "ReduceAction179" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction179 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction179 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2519 /* 5: ReduceAction179 < ReduceAction179: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -83383,7 +114357,7 @@ const classtable_elt_t VFT_parser___ReduceAction26[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction26 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction179 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -83399,6 +114373,8 @@ const classtable_elt_t VFT_parser___ReduceAction26[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -83412,45 +114388,49 @@ const classtable_elt_t VFT_parser___ReduceAction26[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction26 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction26___action},
+  {(bigint) 0 /* 50: ReduceAction179 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction179___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction26 < ReduceAction26: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction179 < ReduceAction179: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction26::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction26(val_t p0){
+/* 2: Attribute ReduceAction179::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction179[] = "init var of ReduceAction179";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction26;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction179;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction26(void)
+val_t NEW_parser___ReduceAction179(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction26;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction179;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction26(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction179[] = "check new ReduceAction179";
+void CHECKNEW_parser___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_parser___ReduceAction26;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction179;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -83460,34 +114440,37 @@ void CHECKNEW_parser___ReduceAction26(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction26_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction179_parser___ReduceAction___init[] = "new ReduceAction179 parser::ReduceAction::init";
+val_t NEW_ReduceAction179_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction26_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction179_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction26();
-  INIT_ATTRIBUTES__parser___ReduceAction26(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction179();
+  INIT_ATTRIBUTES__parser___ReduceAction179(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction26(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction179(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction27[52] = {
-  {(bigint) 1331 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction180[55] = {
+  {(bigint) 2511 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction27" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction27 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction27 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1331 /* 5: ReduceAction27 < ReduceAction27: superclass typecheck marker */},
+  {(bigint) "ReduceAction180" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction180 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction180 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2511 /* 5: ReduceAction180 < ReduceAction180: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -83500,7 +114483,7 @@ const classtable_elt_t VFT_parser___ReduceAction27[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction27 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction180 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -83516,6 +114499,8 @@ const classtable_elt_t VFT_parser___ReduceAction27[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -83529,45 +114514,49 @@ const classtable_elt_t VFT_parser___ReduceAction27[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction27 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction27___action},
+  {(bigint) 0 /* 50: ReduceAction180 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction180___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction27 < ReduceAction27: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction180 < ReduceAction180: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction27::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction27(val_t p0){
+/* 2: Attribute ReduceAction180::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction180[] = "init var of ReduceAction180";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction27;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction180;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction27(void)
+val_t NEW_parser___ReduceAction180(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction27;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction180;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction27(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction180[] = "check new ReduceAction180";
+void CHECKNEW_parser___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_parser___ReduceAction27;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction180;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -83577,34 +114566,37 @@ void CHECKNEW_parser___ReduceAction27(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction27_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction180_parser___ReduceAction___init[] = "new ReduceAction180 parser::ReduceAction::init";
+val_t NEW_ReduceAction180_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction27_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction180_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction27();
-  INIT_ATTRIBUTES__parser___ReduceAction27(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction180();
+  INIT_ATTRIBUTES__parser___ReduceAction180(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction27(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction180(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction28[52] = {
-  {(bigint) 1287 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction181[55] = {
+  {(bigint) 2507 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction28" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction28 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction28 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1287 /* 5: ReduceAction28 < ReduceAction28: superclass typecheck marker */},
+  {(bigint) "ReduceAction181" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction181 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction181 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2507 /* 5: ReduceAction181 < ReduceAction181: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -83617,7 +114609,7 @@ const classtable_elt_t VFT_parser___ReduceAction28[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction28 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction181 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -83633,6 +114625,8 @@ const classtable_elt_t VFT_parser___ReduceAction28[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -83646,45 +114640,49 @@ const classtable_elt_t VFT_parser___ReduceAction28[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction28 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction28___action},
+  {(bigint) 0 /* 50: ReduceAction181 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction181___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction28 < ReduceAction28: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction181 < ReduceAction181: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction28::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction28(val_t p0){
+/* 2: Attribute ReduceAction181::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction181[] = "init var of ReduceAction181";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction28;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction181;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction28(void)
+val_t NEW_parser___ReduceAction181(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction28;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction181;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction28(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction181[] = "check new ReduceAction181";
+void CHECKNEW_parser___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_parser___ReduceAction28;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction181;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -83694,34 +114692,37 @@ void CHECKNEW_parser___ReduceAction28(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction28_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction181_parser___ReduceAction___init[] = "new ReduceAction181 parser::ReduceAction::init";
+val_t NEW_ReduceAction181_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction28_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction181_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction28();
-  INIT_ATTRIBUTES__parser___ReduceAction28(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction181();
+  INIT_ATTRIBUTES__parser___ReduceAction181(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction28(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction181(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction29[52] = {
-  {(bigint) 1243 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction182[55] = {
+  {(bigint) 2503 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction29" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction29 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction29 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1243 /* 5: ReduceAction29 < ReduceAction29: superclass typecheck marker */},
+  {(bigint) "ReduceAction182" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction182 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction182 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2503 /* 5: ReduceAction182 < ReduceAction182: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -83734,7 +114735,7 @@ const classtable_elt_t VFT_parser___ReduceAction29[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction29 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction182 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -83750,6 +114751,8 @@ const classtable_elt_t VFT_parser___ReduceAction29[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -83763,45 +114766,49 @@ const classtable_elt_t VFT_parser___ReduceAction29[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction29 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction29___action},
+  {(bigint) 0 /* 50: ReduceAction182 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction182___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction29 < ReduceAction29: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction182 < ReduceAction182: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction29::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction29(val_t p0){
+/* 2: Attribute ReduceAction182::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction182[] = "init var of ReduceAction182";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction29;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction182;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction29(void)
+val_t NEW_parser___ReduceAction182(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction29;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction182;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction29(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction182[] = "check new ReduceAction182";
+void CHECKNEW_parser___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_parser___ReduceAction29;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction182;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -83811,34 +114818,37 @@ void CHECKNEW_parser___ReduceAction29(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction29_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction182_parser___ReduceAction___init[] = "new ReduceAction182 parser::ReduceAction::init";
+val_t NEW_ReduceAction182_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction29_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction182_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction29();
-  INIT_ATTRIBUTES__parser___ReduceAction29(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction182();
+  INIT_ATTRIBUTES__parser___ReduceAction182(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction29(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction182(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction30[52] = {
-  {(bigint) 1195 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction183[55] = {
+  {(bigint) 2499 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction30" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction30 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction30 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1195 /* 5: ReduceAction30 < ReduceAction30: superclass typecheck marker */},
+  {(bigint) "ReduceAction183" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction183 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction183 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2499 /* 5: ReduceAction183 < ReduceAction183: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -83851,7 +114861,7 @@ const classtable_elt_t VFT_parser___ReduceAction30[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction30 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction183 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -83867,6 +114877,8 @@ const classtable_elt_t VFT_parser___ReduceAction30[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -83880,45 +114892,49 @@ const classtable_elt_t VFT_parser___ReduceAction30[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction30 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction30___action},
+  {(bigint) 0 /* 50: ReduceAction183 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction183___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction30 < ReduceAction30: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction183 < ReduceAction183: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction30::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction30(val_t p0){
+/* 2: Attribute ReduceAction183::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction183[] = "init var of ReduceAction183";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction30;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction183;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction30(void)
+val_t NEW_parser___ReduceAction183(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction30;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction183;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction30(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction183[] = "check new ReduceAction183";
+void CHECKNEW_parser___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_parser___ReduceAction30;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction183;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -83928,34 +114944,37 @@ void CHECKNEW_parser___ReduceAction30(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction30_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction183_parser___ReduceAction___init[] = "new ReduceAction183 parser::ReduceAction::init";
+val_t NEW_ReduceAction183_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction30_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction183_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction30();
-  INIT_ATTRIBUTES__parser___ReduceAction30(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction183();
+  INIT_ATTRIBUTES__parser___ReduceAction183(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction30(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction183(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction31[52] = {
-  {(bigint) 1151 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction184[55] = {
+  {(bigint) 2495 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction31" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction31 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction31 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1151 /* 5: ReduceAction31 < ReduceAction31: superclass typecheck marker */},
+  {(bigint) "ReduceAction184" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction184 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction184 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2495 /* 5: ReduceAction184 < ReduceAction184: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -83968,7 +114987,7 @@ const classtable_elt_t VFT_parser___ReduceAction31[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction31 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction184 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -83984,6 +115003,8 @@ const classtable_elt_t VFT_parser___ReduceAction31[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -83997,45 +115018,49 @@ const classtable_elt_t VFT_parser___ReduceAction31[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction31 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction31___action},
+  {(bigint) 0 /* 50: ReduceAction184 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction184___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction31 < ReduceAction31: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction184 < ReduceAction184: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction31::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction31(val_t p0){
+/* 2: Attribute ReduceAction184::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction184[] = "init var of ReduceAction184";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction31;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction184;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction31(void)
+val_t NEW_parser___ReduceAction184(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction31;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction184;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction31(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction184[] = "check new ReduceAction184";
+void CHECKNEW_parser___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_parser___ReduceAction31;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction184;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -84045,34 +115070,37 @@ void CHECKNEW_parser___ReduceAction31(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction31_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction184_parser___ReduceAction___init[] = "new ReduceAction184 parser::ReduceAction::init";
+val_t NEW_ReduceAction184_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction31_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction184_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction31();
-  INIT_ATTRIBUTES__parser___ReduceAction31(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction184();
+  INIT_ATTRIBUTES__parser___ReduceAction184(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction31(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction184(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction32[52] = {
-  {(bigint) 1115 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction185[55] = {
+  {(bigint) 2491 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction32" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction32 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction32 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1115 /* 5: ReduceAction32 < ReduceAction32: superclass typecheck marker */},
+  {(bigint) "ReduceAction185" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction185 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction185 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2491 /* 5: ReduceAction185 < ReduceAction185: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -84085,7 +115113,7 @@ const classtable_elt_t VFT_parser___ReduceAction32[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction32 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction185 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -84101,6 +115129,8 @@ const classtable_elt_t VFT_parser___ReduceAction32[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -84114,45 +115144,49 @@ const classtable_elt_t VFT_parser___ReduceAction32[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction32 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction32___action},
+  {(bigint) 0 /* 50: ReduceAction185 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction185___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction32 < ReduceAction32: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction185 < ReduceAction185: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction32::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction32(val_t p0){
+/* 2: Attribute ReduceAction185::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction185[] = "init var of ReduceAction185";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction32;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction185;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction32(void)
+val_t NEW_parser___ReduceAction185(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction32;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction185;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction32(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction185[] = "check new ReduceAction185";
+void CHECKNEW_parser___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_parser___ReduceAction32;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction185;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -84162,34 +115196,37 @@ void CHECKNEW_parser___ReduceAction32(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction32_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction185_parser___ReduceAction___init[] = "new ReduceAction185 parser::ReduceAction::init";
+val_t NEW_ReduceAction185_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction32_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction185_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction32();
-  INIT_ATTRIBUTES__parser___ReduceAction32(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction185();
+  INIT_ATTRIBUTES__parser___ReduceAction185(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction32(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction185(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction33[52] = {
-  {(bigint) 1071 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction186[55] = {
+  {(bigint) 2487 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction33" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction33 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction33 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1071 /* 5: ReduceAction33 < ReduceAction33: superclass typecheck marker */},
+  {(bigint) "ReduceAction186" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction186 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction186 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2487 /* 5: ReduceAction186 < ReduceAction186: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -84202,7 +115239,7 @@ const classtable_elt_t VFT_parser___ReduceAction33[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction33 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction186 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -84218,6 +115255,8 @@ const classtable_elt_t VFT_parser___ReduceAction33[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -84231,45 +115270,49 @@ const classtable_elt_t VFT_parser___ReduceAction33[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction33 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction33___action},
+  {(bigint) 0 /* 50: ReduceAction186 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction186___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction33 < ReduceAction33: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction186 < ReduceAction186: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction33::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction33(val_t p0){
+/* 2: Attribute ReduceAction186::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction186[] = "init var of ReduceAction186";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction33;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction186;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction33(void)
+val_t NEW_parser___ReduceAction186(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction33;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction186;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction33(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction186[] = "check new ReduceAction186";
+void CHECKNEW_parser___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_parser___ReduceAction33;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction186;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -84279,34 +115322,37 @@ void CHECKNEW_parser___ReduceAction33(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction33_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction186_parser___ReduceAction___init[] = "new ReduceAction186 parser::ReduceAction::init";
+val_t NEW_ReduceAction186_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction33_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction186_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction33();
-  INIT_ATTRIBUTES__parser___ReduceAction33(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction186();
+  INIT_ATTRIBUTES__parser___ReduceAction186(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction33(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction186(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction34[52] = {
-  {(bigint) 1047 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction187[55] = {
+  {(bigint) 2483 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction34" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction34 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction34 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1047 /* 5: ReduceAction34 < ReduceAction34: superclass typecheck marker */},
+  {(bigint) "ReduceAction187" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction187 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction187 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2483 /* 5: ReduceAction187 < ReduceAction187: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -84319,7 +115365,7 @@ const classtable_elt_t VFT_parser___ReduceAction34[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction34 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction187 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -84335,6 +115381,8 @@ const classtable_elt_t VFT_parser___ReduceAction34[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -84348,45 +115396,49 @@ const classtable_elt_t VFT_parser___ReduceAction34[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction34 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction34___action},
+  {(bigint) 0 /* 50: ReduceAction187 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction187___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction34 < ReduceAction34: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction187 < ReduceAction187: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction34::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction34(val_t p0){
+/* 2: Attribute ReduceAction187::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction187[] = "init var of ReduceAction187";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction34;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction187;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction34(void)
+val_t NEW_parser___ReduceAction187(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction34;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction187;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction34(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction187[] = "check new ReduceAction187";
+void CHECKNEW_parser___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_parser___ReduceAction34;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction187;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -84396,34 +115448,37 @@ void CHECKNEW_parser___ReduceAction34(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction34_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction187_parser___ReduceAction___init[] = "new ReduceAction187 parser::ReduceAction::init";
+val_t NEW_ReduceAction187_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction34_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction187_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction34();
-  INIT_ATTRIBUTES__parser___ReduceAction34(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction187();
+  INIT_ATTRIBUTES__parser___ReduceAction187(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction34(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction187(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction35[52] = {
-  {(bigint) 1011 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction188[55] = {
+  {(bigint) 2479 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction35" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction35 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction35 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1011 /* 5: ReduceAction35 < ReduceAction35: superclass typecheck marker */},
+  {(bigint) "ReduceAction188" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction188 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction188 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2479 /* 5: ReduceAction188 < ReduceAction188: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -84436,7 +115491,7 @@ const classtable_elt_t VFT_parser___ReduceAction35[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction35 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction188 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -84452,6 +115507,8 @@ const classtable_elt_t VFT_parser___ReduceAction35[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -84465,45 +115522,49 @@ const classtable_elt_t VFT_parser___ReduceAction35[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction35 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction35___action},
+  {(bigint) 0 /* 50: ReduceAction188 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction188___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction35 < ReduceAction35: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction188 < ReduceAction188: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction35::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction35(val_t p0){
+/* 2: Attribute ReduceAction188::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction188[] = "init var of ReduceAction188";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction35;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction188;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction35(void)
+val_t NEW_parser___ReduceAction188(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction35;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction188;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction35(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction188[] = "check new ReduceAction188";
+void CHECKNEW_parser___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_parser___ReduceAction35;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction188;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -84513,34 +115574,37 @@ void CHECKNEW_parser___ReduceAction35(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction35_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction188_parser___ReduceAction___init[] = "new ReduceAction188 parser::ReduceAction::init";
+val_t NEW_ReduceAction188_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction35_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction188_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction35();
-  INIT_ATTRIBUTES__parser___ReduceAction35(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction188();
+  INIT_ATTRIBUTES__parser___ReduceAction188(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction35(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction188(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction36[52] = {
-  {(bigint) 975 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction189[55] = {
+  {(bigint) 2475 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction36" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction36 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction36 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 975 /* 5: ReduceAction36 < ReduceAction36: superclass typecheck marker */},
+  {(bigint) "ReduceAction189" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction189 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction189 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2475 /* 5: ReduceAction189 < ReduceAction189: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -84553,7 +115617,7 @@ const classtable_elt_t VFT_parser___ReduceAction36[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction36 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction189 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -84569,6 +115633,8 @@ const classtable_elt_t VFT_parser___ReduceAction36[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -84582,45 +115648,49 @@ const classtable_elt_t VFT_parser___ReduceAction36[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction36 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction36___action},
+  {(bigint) 0 /* 50: ReduceAction189 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction189___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction36 < ReduceAction36: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction189 < ReduceAction189: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction36::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction36(val_t p0){
+/* 2: Attribute ReduceAction189::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction189[] = "init var of ReduceAction189";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction36;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction189;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction36(void)
+val_t NEW_parser___ReduceAction189(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction36;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction189;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction36(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction189[] = "check new ReduceAction189";
+void CHECKNEW_parser___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_parser___ReduceAction36;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction189;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -84630,34 +115700,37 @@ void CHECKNEW_parser___ReduceAction36(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction36_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction189_parser___ReduceAction___init[] = "new ReduceAction189 parser::ReduceAction::init";
+val_t NEW_ReduceAction189_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction36_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction189_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction36();
-  INIT_ATTRIBUTES__parser___ReduceAction36(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction189();
+  INIT_ATTRIBUTES__parser___ReduceAction189(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction36(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction189(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction37[52] = {
-  {(bigint) 939 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction190[55] = {
+  {(bigint) 2467 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction37" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction37 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction37 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 939 /* 5: ReduceAction37 < ReduceAction37: superclass typecheck marker */},
+  {(bigint) "ReduceAction190" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction190 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction190 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2467 /* 5: ReduceAction190 < ReduceAction190: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -84670,7 +115743,7 @@ const classtable_elt_t VFT_parser___ReduceAction37[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction37 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction190 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -84686,6 +115759,8 @@ const classtable_elt_t VFT_parser___ReduceAction37[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -84699,45 +115774,49 @@ const classtable_elt_t VFT_parser___ReduceAction37[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction37 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction37___action},
+  {(bigint) 0 /* 50: ReduceAction190 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction190___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction37 < ReduceAction37: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction190 < ReduceAction190: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction37::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction37(val_t p0){
+/* 2: Attribute ReduceAction190::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction190[] = "init var of ReduceAction190";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction37;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction190;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction37(void)
+val_t NEW_parser___ReduceAction190(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction37;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction190;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction37(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction190[] = "check new ReduceAction190";
+void CHECKNEW_parser___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_parser___ReduceAction37;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction190;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -84747,34 +115826,37 @@ void CHECKNEW_parser___ReduceAction37(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction37_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction190_parser___ReduceAction___init[] = "new ReduceAction190 parser::ReduceAction::init";
+val_t NEW_ReduceAction190_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction37_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction190_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction37();
-  INIT_ATTRIBUTES__parser___ReduceAction37(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction190();
+  INIT_ATTRIBUTES__parser___ReduceAction190(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction37(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction190(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction39[52] = {
-  {(bigint) 883 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction191[55] = {
+  {(bigint) 2463 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction39" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction39 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction39 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 883 /* 5: ReduceAction39 < ReduceAction39: superclass typecheck marker */},
+  {(bigint) "ReduceAction191" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction191 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction191 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2463 /* 5: ReduceAction191 < ReduceAction191: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -84787,7 +115869,7 @@ const classtable_elt_t VFT_parser___ReduceAction39[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction39 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction191 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -84803,6 +115885,8 @@ const classtable_elt_t VFT_parser___ReduceAction39[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -84816,45 +115900,49 @@ const classtable_elt_t VFT_parser___ReduceAction39[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction39 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction39___action},
+  {(bigint) 0 /* 50: ReduceAction191 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction191___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction39 < ReduceAction39: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction191 < ReduceAction191: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction39::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction39(val_t p0){
+/* 2: Attribute ReduceAction191::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction191[] = "init var of ReduceAction191";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction39;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction191;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction39(void)
+val_t NEW_parser___ReduceAction191(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction39;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction191;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction39(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction191[] = "check new ReduceAction191";
+void CHECKNEW_parser___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_parser___ReduceAction39;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction191;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -84864,34 +115952,37 @@ void CHECKNEW_parser___ReduceAction39(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction39_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction191_parser___ReduceAction___init[] = "new ReduceAction191 parser::ReduceAction::init";
+val_t NEW_ReduceAction191_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction39_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction191_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction39();
-  INIT_ATTRIBUTES__parser___ReduceAction39(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction191();
+  INIT_ATTRIBUTES__parser___ReduceAction191(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction39(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction191(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction40[52] = {
-  {(bigint) 843 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction192[55] = {
+  {(bigint) 2459 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction40" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction40 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction40 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 843 /* 5: ReduceAction40 < ReduceAction40: superclass typecheck marker */},
+  {(bigint) "ReduceAction192" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction192 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction192 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2459 /* 5: ReduceAction192 < ReduceAction192: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -84904,7 +115995,7 @@ const classtable_elt_t VFT_parser___ReduceAction40[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction40 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction192 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -84920,6 +116011,8 @@ const classtable_elt_t VFT_parser___ReduceAction40[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -84933,45 +116026,49 @@ const classtable_elt_t VFT_parser___ReduceAction40[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction40 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction40___action},
+  {(bigint) 0 /* 50: ReduceAction192 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction192___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction40 < ReduceAction40: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction192 < ReduceAction192: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction40::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction40(val_t p0){
+/* 2: Attribute ReduceAction192::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction192[] = "init var of ReduceAction192";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction40;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction192;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction40(void)
+val_t NEW_parser___ReduceAction192(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction40;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction192;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction40(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction192[] = "check new ReduceAction192";
+void CHECKNEW_parser___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_parser___ReduceAction40;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction192;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -84981,34 +116078,37 @@ void CHECKNEW_parser___ReduceAction40(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction40_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction192_parser___ReduceAction___init[] = "new ReduceAction192 parser::ReduceAction::init";
+val_t NEW_ReduceAction192_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction40_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction192_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction40();
-  INIT_ATTRIBUTES__parser___ReduceAction40(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction192();
+  INIT_ATTRIBUTES__parser___ReduceAction192(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction40(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction192(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction41[52] = {
-  {(bigint) 823 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction193[55] = {
+  {(bigint) 2455 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction41" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction41 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction41 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 823 /* 5: ReduceAction41 < ReduceAction41: superclass typecheck marker */},
+  {(bigint) "ReduceAction193" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction193 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction193 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2455 /* 5: ReduceAction193 < ReduceAction193: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -85021,7 +116121,7 @@ const classtable_elt_t VFT_parser___ReduceAction41[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction41 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction193 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -85037,6 +116137,8 @@ const classtable_elt_t VFT_parser___ReduceAction41[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -85050,45 +116152,49 @@ const classtable_elt_t VFT_parser___ReduceAction41[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction41 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction41___action},
+  {(bigint) 0 /* 50: ReduceAction193 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction193___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction41 < ReduceAction41: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction193 < ReduceAction193: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction41::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction41(val_t p0){
+/* 2: Attribute ReduceAction193::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction193[] = "init var of ReduceAction193";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction41;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction193;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction41(void)
+val_t NEW_parser___ReduceAction193(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction41;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction193;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction41(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction193[] = "check new ReduceAction193";
+void CHECKNEW_parser___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_parser___ReduceAction41;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction193;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -85098,34 +116204,37 @@ void CHECKNEW_parser___ReduceAction41(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction41_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction193_parser___ReduceAction___init[] = "new ReduceAction193 parser::ReduceAction::init";
+val_t NEW_ReduceAction193_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction41_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction193_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction41();
-  INIT_ATTRIBUTES__parser___ReduceAction41(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction193();
+  INIT_ATTRIBUTES__parser___ReduceAction193(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction41(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction193(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction42[52] = {
-  {(bigint) 783 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction194[55] = {
+  {(bigint) 2451 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction42" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction42 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction42 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 783 /* 5: ReduceAction42 < ReduceAction42: superclass typecheck marker */},
+  {(bigint) "ReduceAction194" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction194 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction194 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2451 /* 5: ReduceAction194 < ReduceAction194: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -85138,7 +116247,7 @@ const classtable_elt_t VFT_parser___ReduceAction42[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction42 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction194 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -85154,6 +116263,8 @@ const classtable_elt_t VFT_parser___ReduceAction42[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -85167,45 +116278,49 @@ const classtable_elt_t VFT_parser___ReduceAction42[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction42 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction42___action},
+  {(bigint) 0 /* 50: ReduceAction194 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction194___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction42 < ReduceAction42: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction194 < ReduceAction194: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction42::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction42(val_t p0){
+/* 2: Attribute ReduceAction194::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction194[] = "init var of ReduceAction194";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction42;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction194;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction42(void)
+val_t NEW_parser___ReduceAction194(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction42;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction194;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction42(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction194[] = "check new ReduceAction194";
+void CHECKNEW_parser___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_parser___ReduceAction42;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction194;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -85215,34 +116330,37 @@ void CHECKNEW_parser___ReduceAction42(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction42_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction194_parser___ReduceAction___init[] = "new ReduceAction194 parser::ReduceAction::init";
+val_t NEW_ReduceAction194_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction42_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction194_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction42();
-  INIT_ATTRIBUTES__parser___ReduceAction42(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction194();
+  INIT_ATTRIBUTES__parser___ReduceAction194(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction42(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction194(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction43[52] = {
-  {(bigint) 747 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction195[55] = {
+  {(bigint) 2447 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction43" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction43 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction43 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 747 /* 5: ReduceAction43 < ReduceAction43: superclass typecheck marker */},
+  {(bigint) "ReduceAction195" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction195 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction195 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2447 /* 5: ReduceAction195 < ReduceAction195: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -85255,7 +116373,7 @@ const classtable_elt_t VFT_parser___ReduceAction43[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction43 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction195 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -85271,6 +116389,8 @@ const classtable_elt_t VFT_parser___ReduceAction43[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -85284,45 +116404,49 @@ const classtable_elt_t VFT_parser___ReduceAction43[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction43 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction43___action},
+  {(bigint) 0 /* 50: ReduceAction195 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction195___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction43 < ReduceAction43: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction195 < ReduceAction195: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction43::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction43(val_t p0){
+/* 2: Attribute ReduceAction195::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction195[] = "init var of ReduceAction195";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction43;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction195;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction43(void)
+val_t NEW_parser___ReduceAction195(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction43;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction195;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction43(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction195[] = "check new ReduceAction195";
+void CHECKNEW_parser___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_parser___ReduceAction43;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction195;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -85332,34 +116456,37 @@ void CHECKNEW_parser___ReduceAction43(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction43_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction195_parser___ReduceAction___init[] = "new ReduceAction195 parser::ReduceAction::init";
+val_t NEW_ReduceAction195_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction43_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction195_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction43();
-  INIT_ATTRIBUTES__parser___ReduceAction43(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction195();
+  INIT_ATTRIBUTES__parser___ReduceAction195(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction43(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction195(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction44[52] = {
-  {(bigint) 735 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction196[55] = {
+  {(bigint) 2443 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction44" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction44 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction44 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 735 /* 5: ReduceAction44 < ReduceAction44: superclass typecheck marker */},
+  {(bigint) "ReduceAction196" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction196 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction196 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2443 /* 5: ReduceAction196 < ReduceAction196: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -85372,7 +116499,7 @@ const classtable_elt_t VFT_parser___ReduceAction44[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction44 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction196 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -85388,6 +116515,8 @@ const classtable_elt_t VFT_parser___ReduceAction44[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -85401,45 +116530,49 @@ const classtable_elt_t VFT_parser___ReduceAction44[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction44 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction44___action},
+  {(bigint) 0 /* 50: ReduceAction196 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction196___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction44 < ReduceAction44: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction196 < ReduceAction196: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction44::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction44(val_t p0){
+/* 2: Attribute ReduceAction196::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction196[] = "init var of ReduceAction196";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction44;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction196;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction44(void)
+val_t NEW_parser___ReduceAction196(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction44;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction196;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction44(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction196[] = "check new ReduceAction196";
+void CHECKNEW_parser___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_parser___ReduceAction44;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction196;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -85449,34 +116582,37 @@ void CHECKNEW_parser___ReduceAction44(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction44_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction196_parser___ReduceAction___init[] = "new ReduceAction196 parser::ReduceAction::init";
+val_t NEW_ReduceAction196_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction44_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction196_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction44();
-  INIT_ATTRIBUTES__parser___ReduceAction44(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction196();
+  INIT_ATTRIBUTES__parser___ReduceAction196(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction44(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction196(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction45[52] = {
-  {(bigint) 731 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction197[55] = {
+  {(bigint) 2439 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction45" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction45 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction45 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 731 /* 5: ReduceAction45 < ReduceAction45: superclass typecheck marker */},
+  {(bigint) "ReduceAction197" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction197 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction197 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2439 /* 5: ReduceAction197 < ReduceAction197: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -85489,7 +116625,7 @@ const classtable_elt_t VFT_parser___ReduceAction45[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction45 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction197 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -85505,6 +116641,8 @@ const classtable_elt_t VFT_parser___ReduceAction45[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -85518,45 +116656,49 @@ const classtable_elt_t VFT_parser___ReduceAction45[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction45 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction45___action},
+  {(bigint) 0 /* 50: ReduceAction197 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction197___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction45 < ReduceAction45: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction197 < ReduceAction197: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction45::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction45(val_t p0){
+/* 2: Attribute ReduceAction197::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction197[] = "init var of ReduceAction197";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction45;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction197;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction45(void)
+val_t NEW_parser___ReduceAction197(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction45;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction197;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction45(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction197[] = "check new ReduceAction197";
+void CHECKNEW_parser___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_parser___ReduceAction45;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction197;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -85566,34 +116708,37 @@ void CHECKNEW_parser___ReduceAction45(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction45_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction197_parser___ReduceAction___init[] = "new ReduceAction197 parser::ReduceAction::init";
+val_t NEW_ReduceAction197_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction45_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction197_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction45();
-  INIT_ATTRIBUTES__parser___ReduceAction45(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction197();
+  INIT_ATTRIBUTES__parser___ReduceAction197(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction45(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction197(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction46[52] = {
-  {(bigint) 727 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction198[55] = {
+  {(bigint) 2435 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction46" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction46 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction46 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 727 /* 5: ReduceAction46 < ReduceAction46: superclass typecheck marker */},
+  {(bigint) "ReduceAction198" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction198 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction198 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2435 /* 5: ReduceAction198 < ReduceAction198: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -85606,7 +116751,7 @@ const classtable_elt_t VFT_parser___ReduceAction46[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction46 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction198 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -85622,6 +116767,8 @@ const classtable_elt_t VFT_parser___ReduceAction46[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -85635,45 +116782,49 @@ const classtable_elt_t VFT_parser___ReduceAction46[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction46 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction46___action},
+  {(bigint) 0 /* 50: ReduceAction198 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction198___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction46 < ReduceAction46: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction198 < ReduceAction198: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction46::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction46(val_t p0){
+/* 2: Attribute ReduceAction198::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction198[] = "init var of ReduceAction198";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction46;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction198;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction46(void)
+val_t NEW_parser___ReduceAction198(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction46;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction198;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction46(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction198[] = "check new ReduceAction198";
+void CHECKNEW_parser___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_parser___ReduceAction46;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction198;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -85683,34 +116834,37 @@ void CHECKNEW_parser___ReduceAction46(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction46_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction198_parser___ReduceAction___init[] = "new ReduceAction198 parser::ReduceAction::init";
+val_t NEW_ReduceAction198_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction46_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction198_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction46();
-  INIT_ATTRIBUTES__parser___ReduceAction46(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction198();
+  INIT_ATTRIBUTES__parser___ReduceAction198(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction46(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction198(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction47[52] = {
-  {(bigint) 723 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction199[55] = {
+  {(bigint) 2431 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction47" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction47 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction47 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 723 /* 5: ReduceAction47 < ReduceAction47: superclass typecheck marker */},
+  {(bigint) "ReduceAction199" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction199 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction199 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2431 /* 5: ReduceAction199 < ReduceAction199: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -85723,7 +116877,7 @@ const classtable_elt_t VFT_parser___ReduceAction47[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction47 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction199 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -85739,6 +116893,8 @@ const classtable_elt_t VFT_parser___ReduceAction47[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -85752,45 +116908,49 @@ const classtable_elt_t VFT_parser___ReduceAction47[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction47 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction47___action},
+  {(bigint) 0 /* 50: ReduceAction199 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction199___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction47 < ReduceAction47: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction199 < ReduceAction199: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction47::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction47(val_t p0){
+/* 2: Attribute ReduceAction199::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction199[] = "init var of ReduceAction199";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction47;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction199;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction47(void)
+val_t NEW_parser___ReduceAction199(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction47;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction199;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction47(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction199[] = "check new ReduceAction199";
+void CHECKNEW_parser___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_parser___ReduceAction47;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction199;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -85800,34 +116960,37 @@ void CHECKNEW_parser___ReduceAction47(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction47_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction199_parser___ReduceAction___init[] = "new ReduceAction199 parser::ReduceAction::init";
+val_t NEW_ReduceAction199_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction47_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction199_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction47();
-  INIT_ATTRIBUTES__parser___ReduceAction47(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction199();
+  INIT_ATTRIBUTES__parser___ReduceAction199(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction47(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction199(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction48[52] = {
-  {(bigint) 719 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction200[55] = {
+  {(bigint) 2419 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction48" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction48 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction48 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 719 /* 5: ReduceAction48 < ReduceAction48: superclass typecheck marker */},
+  {(bigint) "ReduceAction200" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction200 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction200 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2419 /* 5: ReduceAction200 < ReduceAction200: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -85840,7 +117003,7 @@ const classtable_elt_t VFT_parser___ReduceAction48[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction48 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction200 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -85856,6 +117019,8 @@ const classtable_elt_t VFT_parser___ReduceAction48[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -85869,45 +117034,49 @@ const classtable_elt_t VFT_parser___ReduceAction48[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction48 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction48___action},
+  {(bigint) 0 /* 50: ReduceAction200 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction200___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction48 < ReduceAction48: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction200 < ReduceAction200: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction48::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction48(val_t p0){
+/* 2: Attribute ReduceAction200::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction200[] = "init var of ReduceAction200";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction48;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction200;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction48(void)
+val_t NEW_parser___ReduceAction200(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction48;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction200;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction48(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction200[] = "check new ReduceAction200";
+void CHECKNEW_parser___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_parser___ReduceAction48;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction200;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -85917,34 +117086,37 @@ void CHECKNEW_parser___ReduceAction48(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction48_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction200_parser___ReduceAction___init[] = "new ReduceAction200 parser::ReduceAction::init";
+val_t NEW_ReduceAction200_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction48_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction200_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction48();
-  INIT_ATTRIBUTES__parser___ReduceAction48(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction200();
+  INIT_ATTRIBUTES__parser___ReduceAction200(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction48(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction200(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction49[52] = {
-  {(bigint) 715 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction201[55] = {
+  {(bigint) 2415 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction49" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction49 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction49 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 715 /* 5: ReduceAction49 < ReduceAction49: superclass typecheck marker */},
+  {(bigint) "ReduceAction201" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction201 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction201 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2415 /* 5: ReduceAction201 < ReduceAction201: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -85957,7 +117129,7 @@ const classtable_elt_t VFT_parser___ReduceAction49[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction49 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction201 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -85973,6 +117145,8 @@ const classtable_elt_t VFT_parser___ReduceAction49[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -85986,45 +117160,49 @@ const classtable_elt_t VFT_parser___ReduceAction49[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction49 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction49___action},
+  {(bigint) 0 /* 50: ReduceAction201 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction201___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction49 < ReduceAction49: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction201 < ReduceAction201: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction49::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction49(val_t p0){
+/* 2: Attribute ReduceAction201::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction201[] = "init var of ReduceAction201";
+void INIT_ATTRIBUTES__parser___ReduceAction201(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction49;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction201;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction49(void)
+val_t NEW_parser___ReduceAction201(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction49;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction201;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction49(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction201[] = "check new ReduceAction201";
+void CHECKNEW_parser___ReduceAction201(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction49;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction201;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -86034,34 +117212,37 @@ void CHECKNEW_parser___ReduceAction49(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction49_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction201_parser___ReduceAction___init[] = "new ReduceAction201 parser::ReduceAction::init";
+val_t NEW_ReduceAction201_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction49_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction201_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction49();
-  INIT_ATTRIBUTES__parser___ReduceAction49(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction201();
+  INIT_ATTRIBUTES__parser___ReduceAction201(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction49(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction201(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction50[52] = {
-  {(bigint) 707 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction202[55] = {
+  {(bigint) 2411 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction50" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction50 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction50 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 707 /* 5: ReduceAction50 < ReduceAction50: superclass typecheck marker */},
+  {(bigint) "ReduceAction202" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction202 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction202 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2411 /* 5: ReduceAction202 < ReduceAction202: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -86074,7 +117255,7 @@ const classtable_elt_t VFT_parser___ReduceAction50[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction50 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction202 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -86090,6 +117271,8 @@ const classtable_elt_t VFT_parser___ReduceAction50[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -86103,45 +117286,49 @@ const classtable_elt_t VFT_parser___ReduceAction50[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction50 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction50___action},
+  {(bigint) 0 /* 50: ReduceAction202 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction202___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction50 < ReduceAction50: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction202 < ReduceAction202: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction50::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction50(val_t p0){
+/* 2: Attribute ReduceAction202::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction202[] = "init var of ReduceAction202";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction50;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction202;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction50(void)
+val_t NEW_parser___ReduceAction202(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction50;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction202;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction50(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction202[] = "check new ReduceAction202";
+void CHECKNEW_parser___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_parser___ReduceAction50;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction202;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -86151,34 +117338,37 @@ void CHECKNEW_parser___ReduceAction50(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction50_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction202_parser___ReduceAction___init[] = "new ReduceAction202 parser::ReduceAction::init";
+val_t NEW_ReduceAction202_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction50_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction202_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction50();
-  INIT_ATTRIBUTES__parser___ReduceAction50(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction202();
+  INIT_ATTRIBUTES__parser___ReduceAction202(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction50(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction202(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction51[52] = {
-  {(bigint) 703 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction203[55] = {
+  {(bigint) 2407 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction51" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction51 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction51 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 703 /* 5: ReduceAction51 < ReduceAction51: superclass typecheck marker */},
+  {(bigint) "ReduceAction203" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction203 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction203 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2407 /* 5: ReduceAction203 < ReduceAction203: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -86191,7 +117381,7 @@ const classtable_elt_t VFT_parser___ReduceAction51[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction51 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction203 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -86207,6 +117397,8 @@ const classtable_elt_t VFT_parser___ReduceAction51[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -86220,45 +117412,49 @@ const classtable_elt_t VFT_parser___ReduceAction51[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction51 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction51___action},
+  {(bigint) 0 /* 50: ReduceAction203 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction203___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction51 < ReduceAction51: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction203 < ReduceAction203: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction51::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction51(val_t p0){
+/* 2: Attribute ReduceAction203::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction203[] = "init var of ReduceAction203";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction51;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction203;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction51(void)
+val_t NEW_parser___ReduceAction203(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction51;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction203;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction51(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction203[] = "check new ReduceAction203";
+void CHECKNEW_parser___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_parser___ReduceAction51;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction203;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -86268,34 +117464,37 @@ void CHECKNEW_parser___ReduceAction51(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction51_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction203_parser___ReduceAction___init[] = "new ReduceAction203 parser::ReduceAction::init";
+val_t NEW_ReduceAction203_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction51_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction203_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction51();
-  INIT_ATTRIBUTES__parser___ReduceAction51(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction203();
+  INIT_ATTRIBUTES__parser___ReduceAction203(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction51(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction203(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction52[52] = {
-  {(bigint) 699 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction204[55] = {
+  {(bigint) 2403 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction52" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction52 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction52 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 699 /* 5: ReduceAction52 < ReduceAction52: superclass typecheck marker */},
+  {(bigint) "ReduceAction204" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction204 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction204 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2403 /* 5: ReduceAction204 < ReduceAction204: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -86308,7 +117507,7 @@ const classtable_elt_t VFT_parser___ReduceAction52[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction52 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction204 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -86324,6 +117523,8 @@ const classtable_elt_t VFT_parser___ReduceAction52[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -86337,45 +117538,49 @@ const classtable_elt_t VFT_parser___ReduceAction52[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction52 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction52___action},
+  {(bigint) 0 /* 50: ReduceAction204 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction204___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction52 < ReduceAction52: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction204 < ReduceAction204: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction52::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction52(val_t p0){
+/* 2: Attribute ReduceAction204::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction204[] = "init var of ReduceAction204";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction52;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction204;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction52(void)
+val_t NEW_parser___ReduceAction204(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction52;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction204;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction52(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction204[] = "check new ReduceAction204";
+void CHECKNEW_parser___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_parser___ReduceAction52;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction204;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -86385,34 +117590,37 @@ void CHECKNEW_parser___ReduceAction52(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction52_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction204_parser___ReduceAction___init[] = "new ReduceAction204 parser::ReduceAction::init";
+val_t NEW_ReduceAction204_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction52_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction204_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction52();
-  INIT_ATTRIBUTES__parser___ReduceAction52(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction204();
+  INIT_ATTRIBUTES__parser___ReduceAction204(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction52(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction204(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction53[52] = {
-  {(bigint) 695 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction205[55] = {
+  {(bigint) 2399 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction53" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction53 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction53 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 695 /* 5: ReduceAction53 < ReduceAction53: superclass typecheck marker */},
+  {(bigint) "ReduceAction205" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction205 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction205 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2399 /* 5: ReduceAction205 < ReduceAction205: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -86425,7 +117633,7 @@ const classtable_elt_t VFT_parser___ReduceAction53[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction53 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction205 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -86441,6 +117649,8 @@ const classtable_elt_t VFT_parser___ReduceAction53[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -86454,45 +117664,49 @@ const classtable_elt_t VFT_parser___ReduceAction53[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction53 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction53___action},
+  {(bigint) 0 /* 50: ReduceAction205 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction205___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction53 < ReduceAction53: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction205 < ReduceAction205: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction53::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction53(val_t p0){
+/* 2: Attribute ReduceAction205::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction205[] = "init var of ReduceAction205";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction53;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction205;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction53(void)
+val_t NEW_parser___ReduceAction205(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction53;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction205;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction53(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction205[] = "check new ReduceAction205";
+void CHECKNEW_parser___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_parser___ReduceAction53;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction205;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -86502,34 +117716,37 @@ void CHECKNEW_parser___ReduceAction53(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction53_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction205_parser___ReduceAction___init[] = "new ReduceAction205 parser::ReduceAction::init";
+val_t NEW_ReduceAction205_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction53_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction205_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction53();
-  INIT_ATTRIBUTES__parser___ReduceAction53(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction205();
+  INIT_ATTRIBUTES__parser___ReduceAction205(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction53(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction205(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction54[52] = {
-  {(bigint) 691 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction206[55] = {
+  {(bigint) 2395 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction54" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction54 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction54 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 691 /* 5: ReduceAction54 < ReduceAction54: superclass typecheck marker */},
+  {(bigint) "ReduceAction206" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction206 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction206 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2395 /* 5: ReduceAction206 < ReduceAction206: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -86542,7 +117759,7 @@ const classtable_elt_t VFT_parser___ReduceAction54[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction54 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction206 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -86558,6 +117775,8 @@ const classtable_elt_t VFT_parser___ReduceAction54[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -86571,45 +117790,49 @@ const classtable_elt_t VFT_parser___ReduceAction54[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction54 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction54___action},
+  {(bigint) 0 /* 50: ReduceAction206 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction206___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction54 < ReduceAction54: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction206 < ReduceAction206: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction54::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction54(val_t p0){
+/* 2: Attribute ReduceAction206::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction206[] = "init var of ReduceAction206";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction54;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction206;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction54(void)
+val_t NEW_parser___ReduceAction206(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction54;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction206;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction54(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction206[] = "check new ReduceAction206";
+void CHECKNEW_parser___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_parser___ReduceAction54;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction206;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -86619,34 +117842,37 @@ void CHECKNEW_parser___ReduceAction54(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction54_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction206_parser___ReduceAction___init[] = "new ReduceAction206 parser::ReduceAction::init";
+val_t NEW_ReduceAction206_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction54_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction206_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction54();
-  INIT_ATTRIBUTES__parser___ReduceAction54(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction206();
+  INIT_ATTRIBUTES__parser___ReduceAction206(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction54(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction206(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction55[52] = {
-  {(bigint) 687 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction207[55] = {
+  {(bigint) 2391 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction55" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction55 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction55 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 687 /* 5: ReduceAction55 < ReduceAction55: superclass typecheck marker */},
+  {(bigint) "ReduceAction207" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction207 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction207 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2391 /* 5: ReduceAction207 < ReduceAction207: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -86659,7 +117885,7 @@ const classtable_elt_t VFT_parser___ReduceAction55[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction55 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction207 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -86675,6 +117901,8 @@ const classtable_elt_t VFT_parser___ReduceAction55[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -86688,45 +117916,49 @@ const classtable_elt_t VFT_parser___ReduceAction55[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction55 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction55___action},
+  {(bigint) 0 /* 50: ReduceAction207 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction207___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction55 < ReduceAction55: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction207 < ReduceAction207: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction55::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction55(val_t p0){
+/* 2: Attribute ReduceAction207::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction207[] = "init var of ReduceAction207";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction55;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction207;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction55(void)
+val_t NEW_parser___ReduceAction207(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction55;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction207;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction55(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction207[] = "check new ReduceAction207";
+void CHECKNEW_parser___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_parser___ReduceAction55;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction207;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -86736,34 +117968,37 @@ void CHECKNEW_parser___ReduceAction55(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction55_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction207_parser___ReduceAction___init[] = "new ReduceAction207 parser::ReduceAction::init";
+val_t NEW_ReduceAction207_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction55_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction207_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction55();
-  INIT_ATTRIBUTES__parser___ReduceAction55(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction207();
+  INIT_ATTRIBUTES__parser___ReduceAction207(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction55(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction207(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction56[52] = {
-  {(bigint) 683 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction208[55] = {
+  {(bigint) 2387 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction56" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction56 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction56 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 683 /* 5: ReduceAction56 < ReduceAction56: superclass typecheck marker */},
+  {(bigint) "ReduceAction208" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction208 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction208 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2387 /* 5: ReduceAction208 < ReduceAction208: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -86776,7 +118011,7 @@ const classtable_elt_t VFT_parser___ReduceAction56[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction56 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction208 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -86792,6 +118027,8 @@ const classtable_elt_t VFT_parser___ReduceAction56[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -86805,45 +118042,49 @@ const classtable_elt_t VFT_parser___ReduceAction56[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction56 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction56___action},
+  {(bigint) 0 /* 50: ReduceAction208 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction208___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction56 < ReduceAction56: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction208 < ReduceAction208: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction56::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction56(val_t p0){
+/* 2: Attribute ReduceAction208::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction208[] = "init var of ReduceAction208";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction56;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction208;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction56(void)
+val_t NEW_parser___ReduceAction208(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction56;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction208;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction56(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction208[] = "check new ReduceAction208";
+void CHECKNEW_parser___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_parser___ReduceAction56;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction208;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -86853,34 +118094,37 @@ void CHECKNEW_parser___ReduceAction56(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction56_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction208_parser___ReduceAction___init[] = "new ReduceAction208 parser::ReduceAction::init";
+val_t NEW_ReduceAction208_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction56_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction208_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction56();
-  INIT_ATTRIBUTES__parser___ReduceAction56(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction208();
+  INIT_ATTRIBUTES__parser___ReduceAction208(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction56(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction208(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction57[52] = {
-  {(bigint) 679 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction209[55] = {
+  {(bigint) 2383 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction57" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction57 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction57 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 679 /* 5: ReduceAction57 < ReduceAction57: superclass typecheck marker */},
+  {(bigint) "ReduceAction209" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction209 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction209 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2383 /* 5: ReduceAction209 < ReduceAction209: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -86893,7 +118137,7 @@ const classtable_elt_t VFT_parser___ReduceAction57[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction57 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction209 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -86909,6 +118153,8 @@ const classtable_elt_t VFT_parser___ReduceAction57[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -86922,45 +118168,49 @@ const classtable_elt_t VFT_parser___ReduceAction57[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction57 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction57___action},
+  {(bigint) 0 /* 50: ReduceAction209 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction209___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction57 < ReduceAction57: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction209 < ReduceAction209: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction57::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction57(val_t p0){
+/* 2: Attribute ReduceAction209::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction209[] = "init var of ReduceAction209";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction57;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction209;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction57(void)
+val_t NEW_parser___ReduceAction209(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction57;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction209;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction57(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction209[] = "check new ReduceAction209";
+void CHECKNEW_parser___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_parser___ReduceAction57;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction209;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -86970,34 +118220,37 @@ void CHECKNEW_parser___ReduceAction57(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction57_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction209_parser___ReduceAction___init[] = "new ReduceAction209 parser::ReduceAction::init";
+val_t NEW_ReduceAction209_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction57_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction209_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction57();
-  INIT_ATTRIBUTES__parser___ReduceAction57(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction209();
+  INIT_ATTRIBUTES__parser___ReduceAction209(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction57(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction209(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction58[52] = {
-  {(bigint) 675 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction210[55] = {
+  {(bigint) 2375 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction58" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction58 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction58 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 675 /* 5: ReduceAction58 < ReduceAction58: superclass typecheck marker */},
+  {(bigint) "ReduceAction210" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction210 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction210 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2375 /* 5: ReduceAction210 < ReduceAction210: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -87010,7 +118263,7 @@ const classtable_elt_t VFT_parser___ReduceAction58[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction58 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction210 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -87026,6 +118279,8 @@ const classtable_elt_t VFT_parser___ReduceAction58[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -87039,45 +118294,49 @@ const classtable_elt_t VFT_parser___ReduceAction58[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction58 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction58___action},
+  {(bigint) 0 /* 50: ReduceAction210 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction210___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction58 < ReduceAction58: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction210 < ReduceAction210: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction58::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction58(val_t p0){
+/* 2: Attribute ReduceAction210::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction210[] = "init var of ReduceAction210";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction58;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction210;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction58(void)
+val_t NEW_parser___ReduceAction210(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction58;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction210;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction58(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction210[] = "check new ReduceAction210";
+void CHECKNEW_parser___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_parser___ReduceAction58;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction210;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -87087,34 +118346,37 @@ void CHECKNEW_parser___ReduceAction58(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction58_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction210_parser___ReduceAction___init[] = "new ReduceAction210 parser::ReduceAction::init";
+val_t NEW_ReduceAction210_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction58_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction210_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction58();
-  INIT_ATTRIBUTES__parser___ReduceAction58(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction210();
+  INIT_ATTRIBUTES__parser___ReduceAction210(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction58(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction210(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction59[52] = {
-  {(bigint) 671 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction211[55] = {
+  {(bigint) 2371 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction59" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction59 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction59 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 671 /* 5: ReduceAction59 < ReduceAction59: superclass typecheck marker */},
+  {(bigint) "ReduceAction211" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction211 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction211 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2371 /* 5: ReduceAction211 < ReduceAction211: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -87127,7 +118389,7 @@ const classtable_elt_t VFT_parser___ReduceAction59[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction59 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction211 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -87143,6 +118405,8 @@ const classtable_elt_t VFT_parser___ReduceAction59[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -87156,45 +118420,49 @@ const classtable_elt_t VFT_parser___ReduceAction59[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction59 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction59___action},
+  {(bigint) 0 /* 50: ReduceAction211 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction211___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction59 < ReduceAction59: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction211 < ReduceAction211: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction59::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction59(val_t p0){
+/* 2: Attribute ReduceAction211::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction211[] = "init var of ReduceAction211";
+void INIT_ATTRIBUTES__parser___ReduceAction211(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction59;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction211;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction59(void)
+val_t NEW_parser___ReduceAction211(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction59;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction211;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction59(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction211[] = "check new ReduceAction211";
+void CHECKNEW_parser___ReduceAction211(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction59;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction211;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -87204,34 +118472,37 @@ void CHECKNEW_parser___ReduceAction59(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction59_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction211_parser___ReduceAction___init[] = "new ReduceAction211 parser::ReduceAction::init";
+val_t NEW_ReduceAction211_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction59_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction211_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction59();
-  INIT_ATTRIBUTES__parser___ReduceAction59(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction211();
+  INIT_ATTRIBUTES__parser___ReduceAction211(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction59(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction211(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction60[52] = {
-  {(bigint) 663 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction212[55] = {
+  {(bigint) 2367 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction60" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction60 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction60 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 663 /* 5: ReduceAction60 < ReduceAction60: superclass typecheck marker */},
+  {(bigint) "ReduceAction212" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction212 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction212 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2367 /* 5: ReduceAction212 < ReduceAction212: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -87244,7 +118515,7 @@ const classtable_elt_t VFT_parser___ReduceAction60[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction60 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction212 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -87260,6 +118531,8 @@ const classtable_elt_t VFT_parser___ReduceAction60[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -87273,45 +118546,49 @@ const classtable_elt_t VFT_parser___ReduceAction60[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction60 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction60___action},
+  {(bigint) 0 /* 50: ReduceAction212 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction212___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction60 < ReduceAction60: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction212 < ReduceAction212: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction60::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction60(val_t p0){
+/* 2: Attribute ReduceAction212::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction212[] = "init var of ReduceAction212";
+void INIT_ATTRIBUTES__parser___ReduceAction212(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction60;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction212;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction60(void)
+val_t NEW_parser___ReduceAction212(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction60;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction212;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction60(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction212[] = "check new ReduceAction212";
+void CHECKNEW_parser___ReduceAction212(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction60;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction212;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -87321,34 +118598,37 @@ void CHECKNEW_parser___ReduceAction60(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction60_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction212_parser___ReduceAction___init[] = "new ReduceAction212 parser::ReduceAction::init";
+val_t NEW_ReduceAction212_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction60_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction212_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction60();
-  INIT_ATTRIBUTES__parser___ReduceAction60(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction212();
+  INIT_ATTRIBUTES__parser___ReduceAction212(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction60(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction212(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction61[52] = {
-  {(bigint) 659 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction213[55] = {
+  {(bigint) 2363 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction61" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction61 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction61 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 659 /* 5: ReduceAction61 < ReduceAction61: superclass typecheck marker */},
+  {(bigint) "ReduceAction213" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction213 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction213 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2363 /* 5: ReduceAction213 < ReduceAction213: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -87361,7 +118641,7 @@ const classtable_elt_t VFT_parser___ReduceAction61[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction61 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction213 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -87377,6 +118657,8 @@ const classtable_elt_t VFT_parser___ReduceAction61[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -87390,45 +118672,49 @@ const classtable_elt_t VFT_parser___ReduceAction61[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction61 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction61___action},
+  {(bigint) 0 /* 50: ReduceAction213 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction213___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction61 < ReduceAction61: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction213 < ReduceAction213: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction61::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction61(val_t p0){
+/* 2: Attribute ReduceAction213::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction213[] = "init var of ReduceAction213";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction61;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction213;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction61(void)
+val_t NEW_parser___ReduceAction213(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction61;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction213;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction61(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction213[] = "check new ReduceAction213";
+void CHECKNEW_parser___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_parser___ReduceAction61;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction213;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -87438,34 +118724,37 @@ void CHECKNEW_parser___ReduceAction61(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction61_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction213_parser___ReduceAction___init[] = "new ReduceAction213 parser::ReduceAction::init";
+val_t NEW_ReduceAction213_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction61_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction213_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction61();
-  INIT_ATTRIBUTES__parser___ReduceAction61(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction213();
+  INIT_ATTRIBUTES__parser___ReduceAction213(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction61(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction213(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction62[52] = {
-  {(bigint) 655 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction214[55] = {
+  {(bigint) 2359 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction62" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction62 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction62 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 655 /* 5: ReduceAction62 < ReduceAction62: superclass typecheck marker */},
+  {(bigint) "ReduceAction214" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction214 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction214 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2359 /* 5: ReduceAction214 < ReduceAction214: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -87478,7 +118767,7 @@ const classtable_elt_t VFT_parser___ReduceAction62[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction62 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction214 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -87494,6 +118783,8 @@ const classtable_elt_t VFT_parser___ReduceAction62[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -87507,45 +118798,49 @@ const classtable_elt_t VFT_parser___ReduceAction62[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction62 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction62___action},
+  {(bigint) 0 /* 50: ReduceAction214 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction214___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction62 < ReduceAction62: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction214 < ReduceAction214: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction62::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction62(val_t p0){
+/* 2: Attribute ReduceAction214::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction214[] = "init var of ReduceAction214";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction62;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction214;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction62(void)
+val_t NEW_parser___ReduceAction214(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction62;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction214;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction62(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction214[] = "check new ReduceAction214";
+void CHECKNEW_parser___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_parser___ReduceAction62;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction214;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -87555,34 +118850,37 @@ void CHECKNEW_parser___ReduceAction62(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction62_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction214_parser___ReduceAction___init[] = "new ReduceAction214 parser::ReduceAction::init";
+val_t NEW_ReduceAction214_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction62_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction214_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction62();
-  INIT_ATTRIBUTES__parser___ReduceAction62(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction214();
+  INIT_ATTRIBUTES__parser___ReduceAction214(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction62(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction214(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction63[52] = {
-  {(bigint) 651 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction215[55] = {
+  {(bigint) 2355 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction63" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction63 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction63 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 651 /* 5: ReduceAction63 < ReduceAction63: superclass typecheck marker */},
+  {(bigint) "ReduceAction215" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction215 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction215 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2355 /* 5: ReduceAction215 < ReduceAction215: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -87595,7 +118893,7 @@ const classtable_elt_t VFT_parser___ReduceAction63[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction63 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction215 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -87611,6 +118909,8 @@ const classtable_elt_t VFT_parser___ReduceAction63[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -87624,45 +118924,49 @@ const classtable_elt_t VFT_parser___ReduceAction63[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction63 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction63___action},
+  {(bigint) 0 /* 50: ReduceAction215 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction215___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction63 < ReduceAction63: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction215 < ReduceAction215: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction63::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction63(val_t p0){
+/* 2: Attribute ReduceAction215::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction215[] = "init var of ReduceAction215";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction63;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction215;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction63(void)
+val_t NEW_parser___ReduceAction215(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction63;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction215;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction63(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction215[] = "check new ReduceAction215";
+void CHECKNEW_parser___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_parser___ReduceAction63;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction215;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -87672,34 +118976,37 @@ void CHECKNEW_parser___ReduceAction63(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction63_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction215_parser___ReduceAction___init[] = "new ReduceAction215 parser::ReduceAction::init";
+val_t NEW_ReduceAction215_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction63_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction215_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction63();
-  INIT_ATTRIBUTES__parser___ReduceAction63(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction215();
+  INIT_ATTRIBUTES__parser___ReduceAction215(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction63(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction215(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction64[52] = {
-  {(bigint) 647 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction216[55] = {
+  {(bigint) 2351 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction64" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction64 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction64 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 647 /* 5: ReduceAction64 < ReduceAction64: superclass typecheck marker */},
+  {(bigint) "ReduceAction216" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction216 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction216 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2351 /* 5: ReduceAction216 < ReduceAction216: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -87712,7 +119019,7 @@ const classtable_elt_t VFT_parser___ReduceAction64[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction64 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction216 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -87728,6 +119035,8 @@ const classtable_elt_t VFT_parser___ReduceAction64[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -87741,45 +119050,49 @@ const classtable_elt_t VFT_parser___ReduceAction64[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction64 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction64___action},
+  {(bigint) 0 /* 50: ReduceAction216 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction216___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction64 < ReduceAction64: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction216 < ReduceAction216: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction64::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction64(val_t p0){
+/* 2: Attribute ReduceAction216::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction216[] = "init var of ReduceAction216";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction64;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction216;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction64(void)
+val_t NEW_parser___ReduceAction216(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction64;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction216;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction64(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction216[] = "check new ReduceAction216";
+void CHECKNEW_parser___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_parser___ReduceAction64;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction216;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -87789,34 +119102,37 @@ void CHECKNEW_parser___ReduceAction64(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction64_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction216_parser___ReduceAction___init[] = "new ReduceAction216 parser::ReduceAction::init";
+val_t NEW_ReduceAction216_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction64_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction216_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction64();
-  INIT_ATTRIBUTES__parser___ReduceAction64(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction216();
+  INIT_ATTRIBUTES__parser___ReduceAction216(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction64(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction216(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction65[52] = {
-  {(bigint) 643 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction217[55] = {
+  {(bigint) 2347 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction65" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction65 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction65 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 643 /* 5: ReduceAction65 < ReduceAction65: superclass typecheck marker */},
+  {(bigint) "ReduceAction217" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction217 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction217 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2347 /* 5: ReduceAction217 < ReduceAction217: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -87829,7 +119145,7 @@ const classtable_elt_t VFT_parser___ReduceAction65[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction65 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction217 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -87845,6 +119161,8 @@ const classtable_elt_t VFT_parser___ReduceAction65[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -87858,45 +119176,49 @@ const classtable_elt_t VFT_parser___ReduceAction65[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction65 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction65___action},
+  {(bigint) 0 /* 50: ReduceAction217 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction217___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction65 < ReduceAction65: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction217 < ReduceAction217: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction65::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction65(val_t p0){
+/* 2: Attribute ReduceAction217::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction217[] = "init var of ReduceAction217";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction65;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction217;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction65(void)
+val_t NEW_parser___ReduceAction217(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction65;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction217;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction65(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction217[] = "check new ReduceAction217";
+void CHECKNEW_parser___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_parser___ReduceAction65;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction217;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -87906,34 +119228,37 @@ void CHECKNEW_parser___ReduceAction65(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction65_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction217_parser___ReduceAction___init[] = "new ReduceAction217 parser::ReduceAction::init";
+val_t NEW_ReduceAction217_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction65_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction217_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction65();
-  INIT_ATTRIBUTES__parser___ReduceAction65(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction217();
+  INIT_ATTRIBUTES__parser___ReduceAction217(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction65(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction217(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction66[52] = {
-  {(bigint) 639 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction218[55] = {
+  {(bigint) 2343 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction66" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction66 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction66 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 639 /* 5: ReduceAction66 < ReduceAction66: superclass typecheck marker */},
+  {(bigint) "ReduceAction218" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction218 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction218 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2343 /* 5: ReduceAction218 < ReduceAction218: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -87946,7 +119271,7 @@ const classtable_elt_t VFT_parser___ReduceAction66[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction66 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction218 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -87962,6 +119287,8 @@ const classtable_elt_t VFT_parser___ReduceAction66[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -87975,45 +119302,49 @@ const classtable_elt_t VFT_parser___ReduceAction66[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction66 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction66___action},
+  {(bigint) 0 /* 50: ReduceAction218 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction218___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction66 < ReduceAction66: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction218 < ReduceAction218: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction66::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction66(val_t p0){
+/* 2: Attribute ReduceAction218::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction218[] = "init var of ReduceAction218";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction66;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction218;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction66(void)
+val_t NEW_parser___ReduceAction218(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction66;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction218;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction66(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction218[] = "check new ReduceAction218";
+void CHECKNEW_parser___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_parser___ReduceAction66;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction218;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -88023,34 +119354,37 @@ void CHECKNEW_parser___ReduceAction66(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction66_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction218_parser___ReduceAction___init[] = "new ReduceAction218 parser::ReduceAction::init";
+val_t NEW_ReduceAction218_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction66_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction218_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction66();
-  INIT_ATTRIBUTES__parser___ReduceAction66(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction218();
+  INIT_ATTRIBUTES__parser___ReduceAction218(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction66(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction218(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction67[52] = {
-  {(bigint) 635 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction219[55] = {
+  {(bigint) 2339 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction67" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction67 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction67 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 635 /* 5: ReduceAction67 < ReduceAction67: superclass typecheck marker */},
+  {(bigint) "ReduceAction219" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction219 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction219 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2339 /* 5: ReduceAction219 < ReduceAction219: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -88063,7 +119397,7 @@ const classtable_elt_t VFT_parser___ReduceAction67[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction67 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction219 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -88079,6 +119413,8 @@ const classtable_elt_t VFT_parser___ReduceAction67[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -88092,45 +119428,49 @@ const classtable_elt_t VFT_parser___ReduceAction67[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction67 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction67___action},
+  {(bigint) 0 /* 50: ReduceAction219 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction219___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction67 < ReduceAction67: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction219 < ReduceAction219: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction67::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction67(val_t p0){
+/* 2: Attribute ReduceAction219::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction219[] = "init var of ReduceAction219";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction67;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction219;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction67(void)
+val_t NEW_parser___ReduceAction219(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction67;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction219;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction67(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction219[] = "check new ReduceAction219";
+void CHECKNEW_parser___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_parser___ReduceAction67;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction219;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -88140,34 +119480,37 @@ void CHECKNEW_parser___ReduceAction67(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction67_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction219_parser___ReduceAction___init[] = "new ReduceAction219 parser::ReduceAction::init";
+val_t NEW_ReduceAction219_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction67_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction219_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction67();
-  INIT_ATTRIBUTES__parser___ReduceAction67(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction219();
+  INIT_ATTRIBUTES__parser___ReduceAction219(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction67(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction219(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction68[52] = {
-  {(bigint) 631 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction220[55] = {
+  {(bigint) 2331 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction68" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction68 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction68 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 631 /* 5: ReduceAction68 < ReduceAction68: superclass typecheck marker */},
+  {(bigint) "ReduceAction220" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction220 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction220 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2331 /* 5: ReduceAction220 < ReduceAction220: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -88180,7 +119523,7 @@ const classtable_elt_t VFT_parser___ReduceAction68[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction68 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction220 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -88196,6 +119539,8 @@ const classtable_elt_t VFT_parser___ReduceAction68[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -88209,45 +119554,49 @@ const classtable_elt_t VFT_parser___ReduceAction68[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction68 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction68___action},
+  {(bigint) 0 /* 50: ReduceAction220 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction220___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction68 < ReduceAction68: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction220 < ReduceAction220: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction68::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction68(val_t p0){
+/* 2: Attribute ReduceAction220::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction220[] = "init var of ReduceAction220";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction68;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction220;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction68(void)
+val_t NEW_parser___ReduceAction220(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction68;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction220;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction68(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction220[] = "check new ReduceAction220";
+void CHECKNEW_parser___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_parser___ReduceAction68;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction220;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -88257,34 +119606,37 @@ void CHECKNEW_parser___ReduceAction68(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction68_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction220_parser___ReduceAction___init[] = "new ReduceAction220 parser::ReduceAction::init";
+val_t NEW_ReduceAction220_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction68_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction220_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction68();
-  INIT_ATTRIBUTES__parser___ReduceAction68(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction220();
+  INIT_ATTRIBUTES__parser___ReduceAction220(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction68(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction220(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction69[52] = {
-  {(bigint) 619 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction221[55] = {
+  {(bigint) 2327 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction69" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction69 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction69 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 619 /* 5: ReduceAction69 < ReduceAction69: superclass typecheck marker */},
+  {(bigint) "ReduceAction221" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction221 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction221 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2327 /* 5: ReduceAction221 < ReduceAction221: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -88297,7 +119649,7 @@ const classtable_elt_t VFT_parser___ReduceAction69[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction69 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction221 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -88313,6 +119665,8 @@ const classtable_elt_t VFT_parser___ReduceAction69[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -88326,45 +119680,49 @@ const classtable_elt_t VFT_parser___ReduceAction69[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction69 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction69___action},
+  {(bigint) 0 /* 50: ReduceAction221 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction221___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction69 < ReduceAction69: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction221 < ReduceAction221: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction69::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction69(val_t p0){
+/* 2: Attribute ReduceAction221::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction221[] = "init var of ReduceAction221";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction69;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction221;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction69(void)
+val_t NEW_parser___ReduceAction221(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction69;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction221;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction69(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction221[] = "check new ReduceAction221";
+void CHECKNEW_parser___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_parser___ReduceAction69;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction221;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -88374,34 +119732,37 @@ void CHECKNEW_parser___ReduceAction69(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction69_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction221_parser___ReduceAction___init[] = "new ReduceAction221 parser::ReduceAction::init";
+val_t NEW_ReduceAction221_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction69_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction221_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction69();
-  INIT_ATTRIBUTES__parser___ReduceAction69(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction221();
+  INIT_ATTRIBUTES__parser___ReduceAction221(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction69(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction221(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction70[52] = {
-  {(bigint) 603 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction222[55] = {
+  {(bigint) 2323 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction70" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction70 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction70 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 603 /* 5: ReduceAction70 < ReduceAction70: superclass typecheck marker */},
+  {(bigint) "ReduceAction222" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction222 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction222 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2323 /* 5: ReduceAction222 < ReduceAction222: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -88414,7 +119775,7 @@ const classtable_elt_t VFT_parser___ReduceAction70[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction70 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction222 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -88430,6 +119791,8 @@ const classtable_elt_t VFT_parser___ReduceAction70[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -88443,45 +119806,49 @@ const classtable_elt_t VFT_parser___ReduceAction70[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction70 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction70___action},
+  {(bigint) 0 /* 50: ReduceAction222 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction222___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction70 < ReduceAction70: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction222 < ReduceAction222: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction70::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction70(val_t p0){
+/* 2: Attribute ReduceAction222::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction222[] = "init var of ReduceAction222";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction70;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction222;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction70(void)
+val_t NEW_parser___ReduceAction222(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction70;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction222;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction70(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction222[] = "check new ReduceAction222";
+void CHECKNEW_parser___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_parser___ReduceAction70;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction222;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -88491,34 +119858,37 @@ void CHECKNEW_parser___ReduceAction70(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction70_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction222_parser___ReduceAction___init[] = "new ReduceAction222 parser::ReduceAction::init";
+val_t NEW_ReduceAction222_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction70_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction222_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction70();
-  INIT_ATTRIBUTES__parser___ReduceAction70(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction222();
+  INIT_ATTRIBUTES__parser___ReduceAction222(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction70(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction222(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction71[52] = {
-  {(bigint) 591 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction223[55] = {
+  {(bigint) 2319 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction71" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction71 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction71 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 591 /* 5: ReduceAction71 < ReduceAction71: superclass typecheck marker */},
+  {(bigint) "ReduceAction223" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction223 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction223 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2319 /* 5: ReduceAction223 < ReduceAction223: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -88531,7 +119901,7 @@ const classtable_elt_t VFT_parser___ReduceAction71[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction71 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction223 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -88547,6 +119917,8 @@ const classtable_elt_t VFT_parser___ReduceAction71[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -88560,45 +119932,49 @@ const classtable_elt_t VFT_parser___ReduceAction71[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction71 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction71___action},
+  {(bigint) 0 /* 50: ReduceAction223 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction223___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction71 < ReduceAction71: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction223 < ReduceAction223: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction71::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction71(val_t p0){
+/* 2: Attribute ReduceAction223::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction223[] = "init var of ReduceAction223";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction71;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction223;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction71(void)
+val_t NEW_parser___ReduceAction223(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction71;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction223;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction71(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction223[] = "check new ReduceAction223";
+void CHECKNEW_parser___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_parser___ReduceAction71;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction223;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -88608,34 +119984,37 @@ void CHECKNEW_parser___ReduceAction71(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction71_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction223_parser___ReduceAction___init[] = "new ReduceAction223 parser::ReduceAction::init";
+val_t NEW_ReduceAction223_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction71_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction223_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction71();
-  INIT_ATTRIBUTES__parser___ReduceAction71(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction223();
+  INIT_ATTRIBUTES__parser___ReduceAction223(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction71(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction223(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction72[52] = {
-  {(bigint) 563 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction224[55] = {
+  {(bigint) 2315 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction72" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction72 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction72 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 563 /* 5: ReduceAction72 < ReduceAction72: superclass typecheck marker */},
+  {(bigint) "ReduceAction224" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction224 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction224 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2315 /* 5: ReduceAction224 < ReduceAction224: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -88648,7 +120027,7 @@ const classtable_elt_t VFT_parser___ReduceAction72[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction72 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction224 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -88664,6 +120043,8 @@ const classtable_elt_t VFT_parser___ReduceAction72[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -88677,45 +120058,49 @@ const classtable_elt_t VFT_parser___ReduceAction72[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction72 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction72___action},
+  {(bigint) 0 /* 50: ReduceAction224 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction224___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction72 < ReduceAction72: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction224 < ReduceAction224: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction72::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction72(val_t p0){
+/* 2: Attribute ReduceAction224::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction224[] = "init var of ReduceAction224";
+void INIT_ATTRIBUTES__parser___ReduceAction224(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction72;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction224;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction72(void)
+val_t NEW_parser___ReduceAction224(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction72;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction224;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction72(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction224[] = "check new ReduceAction224";
+void CHECKNEW_parser___ReduceAction224(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction72;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction224;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -88725,34 +120110,37 @@ void CHECKNEW_parser___ReduceAction72(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction72_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction224_parser___ReduceAction___init[] = "new ReduceAction224 parser::ReduceAction::init";
+val_t NEW_ReduceAction224_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction72_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction224_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction72();
-  INIT_ATTRIBUTES__parser___ReduceAction72(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction224();
+  INIT_ATTRIBUTES__parser___ReduceAction224(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction72(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction224(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction73[52] = {
-  {(bigint) 527 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction225[55] = {
+  {(bigint) 2311 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction73" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction73 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction73 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 527 /* 5: ReduceAction73 < ReduceAction73: superclass typecheck marker */},
+  {(bigint) "ReduceAction225" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction225 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction225 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2311 /* 5: ReduceAction225 < ReduceAction225: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -88765,7 +120153,7 @@ const classtable_elt_t VFT_parser___ReduceAction73[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction73 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction225 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -88781,6 +120169,8 @@ const classtable_elt_t VFT_parser___ReduceAction73[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -88794,45 +120184,49 @@ const classtable_elt_t VFT_parser___ReduceAction73[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction73 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction73___action},
+  {(bigint) 0 /* 50: ReduceAction225 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction225___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction73 < ReduceAction73: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction225 < ReduceAction225: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction73::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction73(val_t p0){
+/* 2: Attribute ReduceAction225::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction225[] = "init var of ReduceAction225";
+void INIT_ATTRIBUTES__parser___ReduceAction225(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction73;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction225;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction73(void)
+val_t NEW_parser___ReduceAction225(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction73;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction225;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction73(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction225[] = "check new ReduceAction225";
+void CHECKNEW_parser___ReduceAction225(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction73;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction225;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -88842,34 +120236,37 @@ void CHECKNEW_parser___ReduceAction73(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction73_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction225_parser___ReduceAction___init[] = "new ReduceAction225 parser::ReduceAction::init";
+val_t NEW_ReduceAction225_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction73_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction225_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction73();
-  INIT_ATTRIBUTES__parser___ReduceAction73(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction225();
+  INIT_ATTRIBUTES__parser___ReduceAction225(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction73(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction225(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction74[52] = {
-  {(bigint) 499 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction226[55] = {
+  {(bigint) 2307 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction74" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction74 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction74 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 499 /* 5: ReduceAction74 < ReduceAction74: superclass typecheck marker */},
+  {(bigint) "ReduceAction226" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction226 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction226 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2307 /* 5: ReduceAction226 < ReduceAction226: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -88882,7 +120279,7 @@ const classtable_elt_t VFT_parser___ReduceAction74[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction74 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction226 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -88898,6 +120295,8 @@ const classtable_elt_t VFT_parser___ReduceAction74[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -88911,45 +120310,49 @@ const classtable_elt_t VFT_parser___ReduceAction74[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction74 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction74___action},
+  {(bigint) 0 /* 50: ReduceAction226 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction226___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction74 < ReduceAction74: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction226 < ReduceAction226: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction74::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction74(val_t p0){
+/* 2: Attribute ReduceAction226::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction226[] = "init var of ReduceAction226";
+void INIT_ATTRIBUTES__parser___ReduceAction226(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction74;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction226;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction74(void)
+val_t NEW_parser___ReduceAction226(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction74;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction226;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction74(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction226[] = "check new ReduceAction226";
+void CHECKNEW_parser___ReduceAction226(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction74;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction226;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -88959,34 +120362,37 @@ void CHECKNEW_parser___ReduceAction74(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction74_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction226_parser___ReduceAction___init[] = "new ReduceAction226 parser::ReduceAction::init";
+val_t NEW_ReduceAction226_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction74_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction226_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction74();
-  INIT_ATTRIBUTES__parser___ReduceAction74(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction226();
+  INIT_ATTRIBUTES__parser___ReduceAction226(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction74(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction226(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction75[52] = {
-  {(bigint) 475 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction227[55] = {
+  {(bigint) 2303 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction75" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction75 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction75 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 475 /* 5: ReduceAction75 < ReduceAction75: superclass typecheck marker */},
+  {(bigint) "ReduceAction227" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction227 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction227 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2303 /* 5: ReduceAction227 < ReduceAction227: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -88999,7 +120405,7 @@ const classtable_elt_t VFT_parser___ReduceAction75[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction75 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction227 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -89015,6 +120421,8 @@ const classtable_elt_t VFT_parser___ReduceAction75[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -89028,45 +120436,49 @@ const classtable_elt_t VFT_parser___ReduceAction75[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction75 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction75___action},
+  {(bigint) 0 /* 50: ReduceAction227 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction227___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction75 < ReduceAction75: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction227 < ReduceAction227: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction75::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction75(val_t p0){
+/* 2: Attribute ReduceAction227::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction227[] = "init var of ReduceAction227";
+void INIT_ATTRIBUTES__parser___ReduceAction227(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction75;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction227;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction75(void)
+val_t NEW_parser___ReduceAction227(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction75;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction227;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction75(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction227[] = "check new ReduceAction227";
+void CHECKNEW_parser___ReduceAction227(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction75;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction227;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -89076,34 +120488,37 @@ void CHECKNEW_parser___ReduceAction75(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction75_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction227_parser___ReduceAction___init[] = "new ReduceAction227 parser::ReduceAction::init";
+val_t NEW_ReduceAction227_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction75_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction227_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction75();
-  INIT_ATTRIBUTES__parser___ReduceAction75(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction227();
+  INIT_ATTRIBUTES__parser___ReduceAction227(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction75(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction227(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction76[52] = {
-  {(bigint) 471 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction228[55] = {
+  {(bigint) 2299 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction76" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction76 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction76 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 471 /* 5: ReduceAction76 < ReduceAction76: superclass typecheck marker */},
+  {(bigint) "ReduceAction228" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction228 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction228 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2299 /* 5: ReduceAction228 < ReduceAction228: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -89116,7 +120531,7 @@ const classtable_elt_t VFT_parser___ReduceAction76[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction76 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction228 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -89132,6 +120547,8 @@ const classtable_elt_t VFT_parser___ReduceAction76[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -89145,45 +120562,49 @@ const classtable_elt_t VFT_parser___ReduceAction76[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction76 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction76___action},
+  {(bigint) 0 /* 50: ReduceAction228 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction228___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction76 < ReduceAction76: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction228 < ReduceAction228: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction76::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction76(val_t p0){
+/* 2: Attribute ReduceAction228::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction228[] = "init var of ReduceAction228";
+void INIT_ATTRIBUTES__parser___ReduceAction228(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction76;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction228;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction76(void)
+val_t NEW_parser___ReduceAction228(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction76;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction228;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction76(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction228[] = "check new ReduceAction228";
+void CHECKNEW_parser___ReduceAction228(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction76;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction228;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -89193,34 +120614,37 @@ void CHECKNEW_parser___ReduceAction76(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction76_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction228_parser___ReduceAction___init[] = "new ReduceAction228 parser::ReduceAction::init";
+val_t NEW_ReduceAction228_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction76_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction228_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction76();
-  INIT_ATTRIBUTES__parser___ReduceAction76(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction228();
+  INIT_ATTRIBUTES__parser___ReduceAction228(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction76(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction228(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction77[52] = {
-  {(bigint) 467 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction229[55] = {
+  {(bigint) 2295 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction77" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction77 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction77 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 467 /* 5: ReduceAction77 < ReduceAction77: superclass typecheck marker */},
+  {(bigint) "ReduceAction229" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction229 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction229 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2295 /* 5: ReduceAction229 < ReduceAction229: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -89233,7 +120657,7 @@ const classtable_elt_t VFT_parser___ReduceAction77[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction77 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction229 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -89249,6 +120673,8 @@ const classtable_elt_t VFT_parser___ReduceAction77[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -89262,45 +120688,49 @@ const classtable_elt_t VFT_parser___ReduceAction77[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction77 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction77___action},
+  {(bigint) 0 /* 50: ReduceAction229 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction229___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction77 < ReduceAction77: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction229 < ReduceAction229: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction77::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction77(val_t p0){
+/* 2: Attribute ReduceAction229::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction229[] = "init var of ReduceAction229";
+void INIT_ATTRIBUTES__parser___ReduceAction229(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction77;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction229;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction77(void)
+val_t NEW_parser___ReduceAction229(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction77;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction229;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction77(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction229[] = "check new ReduceAction229";
+void CHECKNEW_parser___ReduceAction229(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction77;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction229;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -89310,34 +120740,37 @@ void CHECKNEW_parser___ReduceAction77(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction77_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction229_parser___ReduceAction___init[] = "new ReduceAction229 parser::ReduceAction::init";
+val_t NEW_ReduceAction229_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction77_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction229_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction77();
-  INIT_ATTRIBUTES__parser___ReduceAction77(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction229();
+  INIT_ATTRIBUTES__parser___ReduceAction229(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction77(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction229(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction78[52] = {
-  {(bigint) 463 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction230[55] = {
+  {(bigint) 2287 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction78" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction78 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction78 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 463 /* 5: ReduceAction78 < ReduceAction78: superclass typecheck marker */},
+  {(bigint) "ReduceAction230" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction230 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction230 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2287 /* 5: ReduceAction230 < ReduceAction230: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -89350,7 +120783,7 @@ const classtable_elt_t VFT_parser___ReduceAction78[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction78 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction230 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -89366,6 +120799,8 @@ const classtable_elt_t VFT_parser___ReduceAction78[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -89379,45 +120814,49 @@ const classtable_elt_t VFT_parser___ReduceAction78[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction78 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction78___action},
+  {(bigint) 0 /* 50: ReduceAction230 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction230___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction78 < ReduceAction78: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction230 < ReduceAction230: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction78::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction78(val_t p0){
+/* 2: Attribute ReduceAction230::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction230[] = "init var of ReduceAction230";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction78;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction230;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction78(void)
+val_t NEW_parser___ReduceAction230(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction78;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction230;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction78(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction230[] = "check new ReduceAction230";
+void CHECKNEW_parser___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_parser___ReduceAction78;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction230;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -89427,34 +120866,37 @@ void CHECKNEW_parser___ReduceAction78(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction78_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction230_parser___ReduceAction___init[] = "new ReduceAction230 parser::ReduceAction::init";
+val_t NEW_ReduceAction230_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction78_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction230_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction78();
-  INIT_ATTRIBUTES__parser___ReduceAction78(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction230();
+  INIT_ATTRIBUTES__parser___ReduceAction230(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction78(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction230(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction79[52] = {
-  {(bigint) 459 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction231[55] = {
+  {(bigint) 2283 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction79" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction79 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction79 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 459 /* 5: ReduceAction79 < ReduceAction79: superclass typecheck marker */},
+  {(bigint) "ReduceAction231" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction231 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction231 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2283 /* 5: ReduceAction231 < ReduceAction231: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -89467,7 +120909,7 @@ const classtable_elt_t VFT_parser___ReduceAction79[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction79 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction231 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -89483,6 +120925,8 @@ const classtable_elt_t VFT_parser___ReduceAction79[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -89496,45 +120940,49 @@ const classtable_elt_t VFT_parser___ReduceAction79[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction79 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction79___action},
+  {(bigint) 0 /* 50: ReduceAction231 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction231___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction79 < ReduceAction79: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction231 < ReduceAction231: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction79::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction79(val_t p0){
+/* 2: Attribute ReduceAction231::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction231[] = "init var of ReduceAction231";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction79;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction231;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction79(void)
+val_t NEW_parser___ReduceAction231(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction79;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction231;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction79(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction231[] = "check new ReduceAction231";
+void CHECKNEW_parser___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_parser___ReduceAction79;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction231;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -89544,34 +120992,37 @@ void CHECKNEW_parser___ReduceAction79(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction79_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction231_parser___ReduceAction___init[] = "new ReduceAction231 parser::ReduceAction::init";
+val_t NEW_ReduceAction231_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction79_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction231_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction79();
-  INIT_ATTRIBUTES__parser___ReduceAction79(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction231();
+  INIT_ATTRIBUTES__parser___ReduceAction231(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction79(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction231(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction80[52] = {
-  {(bigint) 451 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction232[55] = {
+  {(bigint) 2279 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction80" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction80 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction80 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 451 /* 5: ReduceAction80 < ReduceAction80: superclass typecheck marker */},
+  {(bigint) "ReduceAction232" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction232 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction232 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2279 /* 5: ReduceAction232 < ReduceAction232: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -89584,7 +121035,7 @@ const classtable_elt_t VFT_parser___ReduceAction80[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction80 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction232 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -89600,6 +121051,8 @@ const classtable_elt_t VFT_parser___ReduceAction80[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -89613,45 +121066,49 @@ const classtable_elt_t VFT_parser___ReduceAction80[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction80 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction80___action},
+  {(bigint) 0 /* 50: ReduceAction232 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction232___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction80 < ReduceAction80: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction232 < ReduceAction232: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction80::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction80(val_t p0){
+/* 2: Attribute ReduceAction232::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction232[] = "init var of ReduceAction232";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction80;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction232;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction80(void)
+val_t NEW_parser___ReduceAction232(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction80;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction232;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction80(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction232[] = "check new ReduceAction232";
+void CHECKNEW_parser___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_parser___ReduceAction80;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction232;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -89661,34 +121118,37 @@ void CHECKNEW_parser___ReduceAction80(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction80_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction232_parser___ReduceAction___init[] = "new ReduceAction232 parser::ReduceAction::init";
+val_t NEW_ReduceAction232_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction80_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction232_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction80();
-  INIT_ATTRIBUTES__parser___ReduceAction80(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction232();
+  INIT_ATTRIBUTES__parser___ReduceAction232(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction80(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction232(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction81[52] = {
-  {(bigint) 447 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction233[55] = {
+  {(bigint) 2275 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction81" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction81 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction81 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 447 /* 5: ReduceAction81 < ReduceAction81: superclass typecheck marker */},
+  {(bigint) "ReduceAction233" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction233 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction233 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2275 /* 5: ReduceAction233 < ReduceAction233: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -89701,7 +121161,7 @@ const classtable_elt_t VFT_parser___ReduceAction81[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction81 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction233 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -89717,6 +121177,8 @@ const classtable_elt_t VFT_parser___ReduceAction81[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -89730,45 +121192,49 @@ const classtable_elt_t VFT_parser___ReduceAction81[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction81 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction81___action},
+  {(bigint) 0 /* 50: ReduceAction233 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction233___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction81 < ReduceAction81: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction233 < ReduceAction233: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction81::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction81(val_t p0){
+/* 2: Attribute ReduceAction233::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction233[] = "init var of ReduceAction233";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction81;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction233;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction81(void)
+val_t NEW_parser___ReduceAction233(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction81;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction233;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction81(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction233[] = "check new ReduceAction233";
+void CHECKNEW_parser___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_parser___ReduceAction81;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction233;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -89778,34 +121244,37 @@ void CHECKNEW_parser___ReduceAction81(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction81_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction233_parser___ReduceAction___init[] = "new ReduceAction233 parser::ReduceAction::init";
+val_t NEW_ReduceAction233_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction81_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction233_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction81();
-  INIT_ATTRIBUTES__parser___ReduceAction81(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction233();
+  INIT_ATTRIBUTES__parser___ReduceAction233(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction81(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction233(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction82[52] = {
-  {(bigint) 443 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction234[55] = {
+  {(bigint) 2271 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction82" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction82 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction82 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 443 /* 5: ReduceAction82 < ReduceAction82: superclass typecheck marker */},
+  {(bigint) "ReduceAction234" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction234 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction234 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2271 /* 5: ReduceAction234 < ReduceAction234: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -89818,7 +121287,7 @@ const classtable_elt_t VFT_parser___ReduceAction82[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction82 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction234 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -89834,6 +121303,8 @@ const classtable_elt_t VFT_parser___ReduceAction82[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -89847,45 +121318,49 @@ const classtable_elt_t VFT_parser___ReduceAction82[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction82 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction82___action},
+  {(bigint) 0 /* 50: ReduceAction234 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction234___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction82 < ReduceAction82: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction234 < ReduceAction234: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction82::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction82(val_t p0){
+/* 2: Attribute ReduceAction234::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction234[] = "init var of ReduceAction234";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction82;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction234;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction82(void)
+val_t NEW_parser___ReduceAction234(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction82;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction234;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction82(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction234[] = "check new ReduceAction234";
+void CHECKNEW_parser___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_parser___ReduceAction82;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction234;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -89895,34 +121370,37 @@ void CHECKNEW_parser___ReduceAction82(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction82_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction234_parser___ReduceAction___init[] = "new ReduceAction234 parser::ReduceAction::init";
+val_t NEW_ReduceAction234_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction82_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction234_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction82();
-  INIT_ATTRIBUTES__parser___ReduceAction82(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction234();
+  INIT_ATTRIBUTES__parser___ReduceAction234(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction82(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction234(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction83[52] = {
-  {(bigint) 439 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction235[55] = {
+  {(bigint) 2267 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction83" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction83 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction83 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 439 /* 5: ReduceAction83 < ReduceAction83: superclass typecheck marker */},
+  {(bigint) "ReduceAction235" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction235 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction235 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2267 /* 5: ReduceAction235 < ReduceAction235: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -89935,7 +121413,7 @@ const classtable_elt_t VFT_parser___ReduceAction83[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction83 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction235 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -89951,6 +121429,8 @@ const classtable_elt_t VFT_parser___ReduceAction83[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -89964,45 +121444,49 @@ const classtable_elt_t VFT_parser___ReduceAction83[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction83 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction83___action},
+  {(bigint) 0 /* 50: ReduceAction235 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction235___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction83 < ReduceAction83: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction235 < ReduceAction235: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction83::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction83(val_t p0){
+/* 2: Attribute ReduceAction235::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction235[] = "init var of ReduceAction235";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction83;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction235;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction83(void)
+val_t NEW_parser___ReduceAction235(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction83;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction235;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction83(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction235[] = "check new ReduceAction235";
+void CHECKNEW_parser___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_parser___ReduceAction83;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction235;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -90012,34 +121496,37 @@ void CHECKNEW_parser___ReduceAction83(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction83_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction235_parser___ReduceAction___init[] = "new ReduceAction235 parser::ReduceAction::init";
+val_t NEW_ReduceAction235_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction83_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction235_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction83();
-  INIT_ATTRIBUTES__parser___ReduceAction83(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction235();
+  INIT_ATTRIBUTES__parser___ReduceAction235(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction83(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction235(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction84[52] = {
-  {(bigint) 435 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction236[55] = {
+  {(bigint) 2263 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction84" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction84 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction84 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 435 /* 5: ReduceAction84 < ReduceAction84: superclass typecheck marker */},
+  {(bigint) "ReduceAction236" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction236 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction236 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2263 /* 5: ReduceAction236 < ReduceAction236: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -90052,7 +121539,7 @@ const classtable_elt_t VFT_parser___ReduceAction84[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction84 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction236 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -90068,6 +121555,8 @@ const classtable_elt_t VFT_parser___ReduceAction84[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -90081,45 +121570,49 @@ const classtable_elt_t VFT_parser___ReduceAction84[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction84 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction84___action},
+  {(bigint) 0 /* 50: ReduceAction236 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction236___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction84 < ReduceAction84: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction236 < ReduceAction236: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction84::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction84(val_t p0){
+/* 2: Attribute ReduceAction236::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction236[] = "init var of ReduceAction236";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction84;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction236;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction84(void)
+val_t NEW_parser___ReduceAction236(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction84;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction236;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction84(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction236[] = "check new ReduceAction236";
+void CHECKNEW_parser___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_parser___ReduceAction84;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction236;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -90129,34 +121622,37 @@ void CHECKNEW_parser___ReduceAction84(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction84_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction236_parser___ReduceAction___init[] = "new ReduceAction236 parser::ReduceAction::init";
+val_t NEW_ReduceAction236_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction84_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction236_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction84();
-  INIT_ATTRIBUTES__parser___ReduceAction84(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction236();
+  INIT_ATTRIBUTES__parser___ReduceAction236(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction84(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction236(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction85[52] = {
-  {(bigint) 431 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction237[55] = {
+  {(bigint) 2259 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction85" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction85 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction85 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 431 /* 5: ReduceAction85 < ReduceAction85: superclass typecheck marker */},
+  {(bigint) "ReduceAction237" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction237 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction237 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2259 /* 5: ReduceAction237 < ReduceAction237: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -90169,7 +121665,7 @@ const classtable_elt_t VFT_parser___ReduceAction85[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction85 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction237 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -90185,6 +121681,8 @@ const classtable_elt_t VFT_parser___ReduceAction85[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -90198,45 +121696,49 @@ const classtable_elt_t VFT_parser___ReduceAction85[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction85 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction85___action},
+  {(bigint) 0 /* 50: ReduceAction237 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction237___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction85 < ReduceAction85: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction237 < ReduceAction237: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction85::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction85(val_t p0){
+/* 2: Attribute ReduceAction237::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction237[] = "init var of ReduceAction237";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction85;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction237;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction85(void)
+val_t NEW_parser___ReduceAction237(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction85;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction237;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction85(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction237[] = "check new ReduceAction237";
+void CHECKNEW_parser___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_parser___ReduceAction85;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction237;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -90246,34 +121748,37 @@ void CHECKNEW_parser___ReduceAction85(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction85_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction237_parser___ReduceAction___init[] = "new ReduceAction237 parser::ReduceAction::init";
+val_t NEW_ReduceAction237_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction85_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction237_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction85();
-  INIT_ATTRIBUTES__parser___ReduceAction85(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction237();
+  INIT_ATTRIBUTES__parser___ReduceAction237(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction85(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction237(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction86[52] = {
-  {(bigint) 427 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction238[55] = {
+  {(bigint) 2255 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction86" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction86 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction86 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 427 /* 5: ReduceAction86 < ReduceAction86: superclass typecheck marker */},
+  {(bigint) "ReduceAction238" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction238 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction238 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2255 /* 5: ReduceAction238 < ReduceAction238: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -90286,7 +121791,7 @@ const classtable_elt_t VFT_parser___ReduceAction86[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction86 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction238 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -90302,6 +121807,8 @@ const classtable_elt_t VFT_parser___ReduceAction86[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -90315,45 +121822,49 @@ const classtable_elt_t VFT_parser___ReduceAction86[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction86 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction86___action},
+  {(bigint) 0 /* 50: ReduceAction238 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction238___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction86 < ReduceAction86: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction238 < ReduceAction238: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction86::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction86(val_t p0){
+/* 2: Attribute ReduceAction238::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction238[] = "init var of ReduceAction238";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction86;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction238;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction86(void)
+val_t NEW_parser___ReduceAction238(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction86;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction238;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction86(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction238[] = "check new ReduceAction238";
+void CHECKNEW_parser___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_parser___ReduceAction86;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction238;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -90363,34 +121874,37 @@ void CHECKNEW_parser___ReduceAction86(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction86_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction238_parser___ReduceAction___init[] = "new ReduceAction238 parser::ReduceAction::init";
+val_t NEW_ReduceAction238_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction86_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction238_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction86();
-  INIT_ATTRIBUTES__parser___ReduceAction86(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction238();
+  INIT_ATTRIBUTES__parser___ReduceAction238(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction86(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction238(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction87[52] = {
-  {(bigint) 423 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction239[55] = {
+  {(bigint) 2251 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction87" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction87 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction87 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 423 /* 5: ReduceAction87 < ReduceAction87: superclass typecheck marker */},
+  {(bigint) "ReduceAction239" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction239 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction239 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2251 /* 5: ReduceAction239 < ReduceAction239: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -90403,7 +121917,7 @@ const classtable_elt_t VFT_parser___ReduceAction87[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction87 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction239 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -90419,6 +121933,8 @@ const classtable_elt_t VFT_parser___ReduceAction87[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -90432,45 +121948,49 @@ const classtable_elt_t VFT_parser___ReduceAction87[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction87 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction87___action},
+  {(bigint) 0 /* 50: ReduceAction239 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction239___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction87 < ReduceAction87: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction239 < ReduceAction239: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction87::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction87(val_t p0){
+/* 2: Attribute ReduceAction239::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction239[] = "init var of ReduceAction239";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction87;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction239;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction87(void)
+val_t NEW_parser___ReduceAction239(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction87;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction239;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction87(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction239[] = "check new ReduceAction239";
+void CHECKNEW_parser___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_parser___ReduceAction87;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction239;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -90480,34 +122000,37 @@ void CHECKNEW_parser___ReduceAction87(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction87_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction239_parser___ReduceAction___init[] = "new ReduceAction239 parser::ReduceAction::init";
+val_t NEW_ReduceAction239_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction87_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction239_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction87();
-  INIT_ATTRIBUTES__parser___ReduceAction87(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction239();
+  INIT_ATTRIBUTES__parser___ReduceAction239(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction87(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction239(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction88[52] = {
-  {(bigint) 419 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction240[55] = {
+  {(bigint) 2243 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction88" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction88 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction88 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 419 /* 5: ReduceAction88 < ReduceAction88: superclass typecheck marker */},
+  {(bigint) "ReduceAction240" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction240 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction240 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2243 /* 5: ReduceAction240 < ReduceAction240: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -90520,7 +122043,7 @@ const classtable_elt_t VFT_parser___ReduceAction88[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction88 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction240 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -90536,6 +122059,8 @@ const classtable_elt_t VFT_parser___ReduceAction88[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -90549,45 +122074,49 @@ const classtable_elt_t VFT_parser___ReduceAction88[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction88 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction88___action},
+  {(bigint) 0 /* 50: ReduceAction240 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction240___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction88 < ReduceAction88: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction240 < ReduceAction240: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction88::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction88(val_t p0){
+/* 2: Attribute ReduceAction240::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction240[] = "init var of ReduceAction240";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction88;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction240;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction88(void)
+val_t NEW_parser___ReduceAction240(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction88;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction240;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction88(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction240[] = "check new ReduceAction240";
+void CHECKNEW_parser___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_parser___ReduceAction88;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction240;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -90597,34 +122126,37 @@ void CHECKNEW_parser___ReduceAction88(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction88_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction240_parser___ReduceAction___init[] = "new ReduceAction240 parser::ReduceAction::init";
+val_t NEW_ReduceAction240_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction88_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction240_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction88();
-  INIT_ATTRIBUTES__parser___ReduceAction88(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction240();
+  INIT_ATTRIBUTES__parser___ReduceAction240(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction88(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction240(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction89[52] = {
-  {(bigint) 415 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction241[55] = {
+  {(bigint) 2239 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction89" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction89 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction89 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 415 /* 5: ReduceAction89 < ReduceAction89: superclass typecheck marker */},
+  {(bigint) "ReduceAction241" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction241 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction241 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2239 /* 5: ReduceAction241 < ReduceAction241: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -90637,7 +122169,7 @@ const classtable_elt_t VFT_parser___ReduceAction89[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction89 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction241 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -90653,6 +122185,8 @@ const classtable_elt_t VFT_parser___ReduceAction89[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -90666,45 +122200,49 @@ const classtable_elt_t VFT_parser___ReduceAction89[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction89 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction89___action},
+  {(bigint) 0 /* 50: ReduceAction241 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction241___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction89 < ReduceAction89: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction241 < ReduceAction241: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction89::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction89(val_t p0){
+/* 2: Attribute ReduceAction241::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction241[] = "init var of ReduceAction241";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction89;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction241;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction89(void)
+val_t NEW_parser___ReduceAction241(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction89;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction241;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction89(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction241[] = "check new ReduceAction241";
+void CHECKNEW_parser___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_parser___ReduceAction89;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction241;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -90714,34 +122252,37 @@ void CHECKNEW_parser___ReduceAction89(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction89_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction241_parser___ReduceAction___init[] = "new ReduceAction241 parser::ReduceAction::init";
+val_t NEW_ReduceAction241_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction89_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction241_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction89();
-  INIT_ATTRIBUTES__parser___ReduceAction89(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction241();
+  INIT_ATTRIBUTES__parser___ReduceAction241(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction89(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction241(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction90[52] = {
-  {(bigint) 407 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction242[55] = {
+  {(bigint) 2235 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction90" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction90 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction90 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 407 /* 5: ReduceAction90 < ReduceAction90: superclass typecheck marker */},
+  {(bigint) "ReduceAction242" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction242 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction242 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2235 /* 5: ReduceAction242 < ReduceAction242: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -90754,7 +122295,7 @@ const classtable_elt_t VFT_parser___ReduceAction90[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction90 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction242 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -90770,6 +122311,8 @@ const classtable_elt_t VFT_parser___ReduceAction90[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -90783,45 +122326,49 @@ const classtable_elt_t VFT_parser___ReduceAction90[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction90 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction90___action},
+  {(bigint) 0 /* 50: ReduceAction242 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction242___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction90 < ReduceAction90: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction242 < ReduceAction242: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction90::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction90(val_t p0){
+/* 2: Attribute ReduceAction242::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction242[] = "init var of ReduceAction242";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction90;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction242;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction90(void)
+val_t NEW_parser___ReduceAction242(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction90;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction242;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction90(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction242[] = "check new ReduceAction242";
+void CHECKNEW_parser___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_parser___ReduceAction90;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction242;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -90831,34 +122378,37 @@ void CHECKNEW_parser___ReduceAction90(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction90_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction242_parser___ReduceAction___init[] = "new ReduceAction242 parser::ReduceAction::init";
+val_t NEW_ReduceAction242_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction90_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction242_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction90();
-  INIT_ATTRIBUTES__parser___ReduceAction90(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction242();
+  INIT_ATTRIBUTES__parser___ReduceAction242(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction90(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction242(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction91[52] = {
-  {(bigint) 403 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction243[55] = {
+  {(bigint) 2231 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction91" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction91 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction91 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 403 /* 5: ReduceAction91 < ReduceAction91: superclass typecheck marker */},
+  {(bigint) "ReduceAction243" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction243 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction243 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2231 /* 5: ReduceAction243 < ReduceAction243: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -90871,7 +122421,7 @@ const classtable_elt_t VFT_parser___ReduceAction91[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction91 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction243 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -90887,6 +122437,8 @@ const classtable_elt_t VFT_parser___ReduceAction91[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -90900,45 +122452,49 @@ const classtable_elt_t VFT_parser___ReduceAction91[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction91 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction91___action},
+  {(bigint) 0 /* 50: ReduceAction243 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction243___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction91 < ReduceAction91: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction243 < ReduceAction243: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction91::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction91(val_t p0){
+/* 2: Attribute ReduceAction243::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction243[] = "init var of ReduceAction243";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction91;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction243;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction91(void)
+val_t NEW_parser___ReduceAction243(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction91;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction243;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction91(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction243[] = "check new ReduceAction243";
+void CHECKNEW_parser___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_parser___ReduceAction91;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction243;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -90948,34 +122504,37 @@ void CHECKNEW_parser___ReduceAction91(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction91_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction243_parser___ReduceAction___init[] = "new ReduceAction243 parser::ReduceAction::init";
+val_t NEW_ReduceAction243_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction91_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction243_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction91();
-  INIT_ATTRIBUTES__parser___ReduceAction91(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction243();
+  INIT_ATTRIBUTES__parser___ReduceAction243(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction91(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction243(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction92[52] = {
-  {(bigint) 399 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction244[55] = {
+  {(bigint) 2227 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction92" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction92 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction92 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 399 /* 5: ReduceAction92 < ReduceAction92: superclass typecheck marker */},
+  {(bigint) "ReduceAction244" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction244 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction244 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2227 /* 5: ReduceAction244 < ReduceAction244: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -90988,7 +122547,7 @@ const classtable_elt_t VFT_parser___ReduceAction92[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction92 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction244 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -91004,6 +122563,8 @@ const classtable_elt_t VFT_parser___ReduceAction92[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -91017,45 +122578,49 @@ const classtable_elt_t VFT_parser___ReduceAction92[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction92 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction92___action},
+  {(bigint) 0 /* 50: ReduceAction244 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction244___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction92 < ReduceAction92: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction244 < ReduceAction244: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction92::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction92(val_t p0){
+/* 2: Attribute ReduceAction244::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction244[] = "init var of ReduceAction244";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction92;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction244;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction92(void)
+val_t NEW_parser___ReduceAction244(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction92;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction244;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction92(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction244[] = "check new ReduceAction244";
+void CHECKNEW_parser___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_parser___ReduceAction92;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction244;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -91065,34 +122630,37 @@ void CHECKNEW_parser___ReduceAction92(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction92_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction244_parser___ReduceAction___init[] = "new ReduceAction244 parser::ReduceAction::init";
+val_t NEW_ReduceAction244_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction92_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction244_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction92();
-  INIT_ATTRIBUTES__parser___ReduceAction92(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction244();
+  INIT_ATTRIBUTES__parser___ReduceAction244(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction92(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction244(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction93[52] = {
-  {(bigint) 395 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction245[55] = {
+  {(bigint) 2223 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction93" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction93 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction93 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 395 /* 5: ReduceAction93 < ReduceAction93: superclass typecheck marker */},
+  {(bigint) "ReduceAction245" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction245 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction245 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2223 /* 5: ReduceAction245 < ReduceAction245: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -91105,7 +122673,7 @@ const classtable_elt_t VFT_parser___ReduceAction93[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction93 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction245 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -91121,6 +122689,8 @@ const classtable_elt_t VFT_parser___ReduceAction93[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -91134,45 +122704,49 @@ const classtable_elt_t VFT_parser___ReduceAction93[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction93 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction93___action},
+  {(bigint) 0 /* 50: ReduceAction245 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction245___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction93 < ReduceAction93: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction245 < ReduceAction245: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction93::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction93(val_t p0){
+/* 2: Attribute ReduceAction245::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction245[] = "init var of ReduceAction245";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction93;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction245;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction93(void)
+val_t NEW_parser___ReduceAction245(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction93;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction245;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction93(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction245[] = "check new ReduceAction245";
+void CHECKNEW_parser___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_parser___ReduceAction93;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction245;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -91182,34 +122756,36 @@ void CHECKNEW_parser___ReduceAction93(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction93_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction245_parser___ReduceAction___init[] = "new ReduceAction245 parser::ReduceAction::init";
+val_t NEW_ReduceAction245_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction93_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction245_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction93();
-  INIT_ATTRIBUTES__parser___ReduceAction93(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction245();
+  INIT_ATTRIBUTES__parser___ReduceAction245(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction93(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction245(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction94[52] = {
-  {(bigint) 391 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction246[55] = {
+  {(bigint) 2219 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction94" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction94 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction94 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 391 /* 5: ReduceAction94 < ReduceAction94: superclass typecheck marker */},
+  {(bigint) "ReduceAction246" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction246 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction246 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2219 /* 5: ReduceAction246 < ReduceAction246: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -91220,126 +122796,10 @@ const classtable_elt_t VFT_parser___ReduceAction94[52] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction94 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
-  {(bigint) standard___file___Object___printn},
-  {(bigint) standard___file___Object___print},
-  {(bigint) standard___file___Object___getc},
-  {(bigint) standard___file___Object___gets},
-  {(bigint) standard___file___Object___stdin},
-  {(bigint) standard___file___Object___stdout},
-  {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
-  {(bigint) standard___string___Object___native_class_name},
-  {(bigint) standard___string___Object___class_name},
-  {(bigint) standard___string___Object___inspect},
-  {(bigint) standard___string___Object___inspect_head},
-  {(bigint) standard___string___Object___args},
-  {(bigint) standard___hash___Object___hash},
-  {(bigint) standard___math___Object___atan2},
-  {(bigint) standard___math___Object___pi},
-  {(bigint) standard___math___Object___srand_from},
-  {(bigint) standard___math___Object___srand},
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction94 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction94___action},
-  {(bigint) parser___ReduceAction___concat},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction94 < ReduceAction94: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Object_id */
-/* 2: Attribute ReduceAction94::_goto */
-void INIT_ATTRIBUTES__parser___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__parser___ReduceAction94;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
-  stack_frame_head = fra.me.prev;
-}
-val_t NEW_parser___ReduceAction94(void)
-{
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction94;
-  obj[1].object_id = object_id_counter;
-  object_id_counter = object_id_counter + 1;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_parser___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_parser___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___ReduceAction____goto(fra.me.REG[0])!=NIT_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___ReduceAction___init(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  int init_table[3] = {0, 0, 0};
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction94_parser___ReduceAction___init;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction94();
-  INIT_ATTRIBUTES__parser___ReduceAction94(fra.me.REG[0]);
-  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction94(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-const classtable_elt_t VFT_parser___ReduceAction95[52] = {
-  {(bigint) 387 /* 0: Identity */},
-  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction95" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction95 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction95 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 387 /* 5: ReduceAction95 < ReduceAction95: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* 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) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction95 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction246 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -91355,6 +122815,8 @@ const classtable_elt_t VFT_parser___ReduceAction95[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -91368,45 +122830,49 @@ const classtable_elt_t VFT_parser___ReduceAction95[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction95 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction95___action},
+  {(bigint) 0 /* 50: ReduceAction246 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction246___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction95 < ReduceAction95: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction246 < ReduceAction246: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction95::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction95(val_t p0){
+/* 2: Attribute ReduceAction246::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction246[] = "init var of ReduceAction246";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction95;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction246;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction95(void)
+val_t NEW_parser___ReduceAction246(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction95;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction246;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction95(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction246[] = "check new ReduceAction246";
+void CHECKNEW_parser___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_parser___ReduceAction95;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction246;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -91416,34 +122882,37 @@ void CHECKNEW_parser___ReduceAction95(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction95_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction246_parser___ReduceAction___init[] = "new ReduceAction246 parser::ReduceAction::init";
+val_t NEW_ReduceAction246_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction95_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction246_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction95();
-  INIT_ATTRIBUTES__parser___ReduceAction95(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction246();
+  INIT_ATTRIBUTES__parser___ReduceAction246(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction95(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction246(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction96[52] = {
-  {(bigint) 383 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction247[55] = {
+  {(bigint) 2215 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction96" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction96 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction96 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 383 /* 5: ReduceAction96 < ReduceAction96: superclass typecheck marker */},
+  {(bigint) "ReduceAction247" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction247 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction247 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2215 /* 5: ReduceAction247 < ReduceAction247: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -91456,7 +122925,7 @@ const classtable_elt_t VFT_parser___ReduceAction96[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction96 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction247 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -91472,6 +122941,8 @@ const classtable_elt_t VFT_parser___ReduceAction96[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -91485,45 +122956,49 @@ const classtable_elt_t VFT_parser___ReduceAction96[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction96 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction96___action},
+  {(bigint) 0 /* 50: ReduceAction247 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction247___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction96 < ReduceAction96: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction247 < ReduceAction247: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction96::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction96(val_t p0){
+/* 2: Attribute ReduceAction247::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction247[] = "init var of ReduceAction247";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction96;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction247;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction96(void)
+val_t NEW_parser___ReduceAction247(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction96;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction247;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction96(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction247[] = "check new ReduceAction247";
+void CHECKNEW_parser___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_parser___ReduceAction96;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction247;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -91533,34 +123008,37 @@ void CHECKNEW_parser___ReduceAction96(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction96_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction247_parser___ReduceAction___init[] = "new ReduceAction247 parser::ReduceAction::init";
+val_t NEW_ReduceAction247_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction96_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction247_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction96();
-  INIT_ATTRIBUTES__parser___ReduceAction96(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction247();
+  INIT_ATTRIBUTES__parser___ReduceAction247(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction96(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction247(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction97[52] = {
-  {(bigint) 379 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction248[55] = {
+  {(bigint) 2211 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction97" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction97 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction97 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 379 /* 5: ReduceAction97 < ReduceAction97: superclass typecheck marker */},
+  {(bigint) "ReduceAction248" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction248 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction248 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2211 /* 5: ReduceAction248 < ReduceAction248: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -91573,7 +123051,7 @@ const classtable_elt_t VFT_parser___ReduceAction97[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction97 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction248 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -91589,6 +123067,8 @@ const classtable_elt_t VFT_parser___ReduceAction97[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -91602,45 +123082,49 @@ const classtable_elt_t VFT_parser___ReduceAction97[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction97 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction97___action},
+  {(bigint) 0 /* 50: ReduceAction248 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction248___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction97 < ReduceAction97: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction248 < ReduceAction248: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction97::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction97(val_t p0){
+/* 2: Attribute ReduceAction248::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction248[] = "init var of ReduceAction248";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction97;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction248;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction97(void)
+val_t NEW_parser___ReduceAction248(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction97;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction248;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction97(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction248[] = "check new ReduceAction248";
+void CHECKNEW_parser___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_parser___ReduceAction97;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction248;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -91650,34 +123134,37 @@ void CHECKNEW_parser___ReduceAction97(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction97_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction248_parser___ReduceAction___init[] = "new ReduceAction248 parser::ReduceAction::init";
+val_t NEW_ReduceAction248_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction97_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction248_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction97();
-  INIT_ATTRIBUTES__parser___ReduceAction97(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction248();
+  INIT_ATTRIBUTES__parser___ReduceAction248(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction97(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction248(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction98[52] = {
-  {(bigint) 375 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction249[55] = {
+  {(bigint) 2207 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction98" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction98 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction98 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 375 /* 5: ReduceAction98 < ReduceAction98: superclass typecheck marker */},
+  {(bigint) "ReduceAction249" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction249 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction249 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2207 /* 5: ReduceAction249 < ReduceAction249: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -91690,7 +123177,7 @@ const classtable_elt_t VFT_parser___ReduceAction98[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction98 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction249 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -91706,6 +123193,8 @@ const classtable_elt_t VFT_parser___ReduceAction98[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -91719,45 +123208,49 @@ const classtable_elt_t VFT_parser___ReduceAction98[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction98 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction98___action},
+  {(bigint) 0 /* 50: ReduceAction249 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction249___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction98 < ReduceAction98: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction249 < ReduceAction249: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction98::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction98(val_t p0){
+/* 2: Attribute ReduceAction249::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction249[] = "init var of ReduceAction249";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction98;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction249;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction98(void)
+val_t NEW_parser___ReduceAction249(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction98;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction249;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction98(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction249[] = "check new ReduceAction249";
+void CHECKNEW_parser___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_parser___ReduceAction98;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction249;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -91767,34 +123260,37 @@ void CHECKNEW_parser___ReduceAction98(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction98_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction249_parser___ReduceAction___init[] = "new ReduceAction249 parser::ReduceAction::init";
+val_t NEW_ReduceAction249_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction98_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction249_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction98();
-  INIT_ATTRIBUTES__parser___ReduceAction98(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction249();
+  INIT_ATTRIBUTES__parser___ReduceAction249(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction98(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction249(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction99[52] = {
-  {(bigint) 371 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction250[55] = {
+  {(bigint) 2199 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction99" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction99 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction99 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 371 /* 5: ReduceAction99 < ReduceAction99: superclass typecheck marker */},
+  {(bigint) "ReduceAction250" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction250 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction250 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2199 /* 5: ReduceAction250 < ReduceAction250: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -91807,7 +123303,7 @@ const classtable_elt_t VFT_parser___ReduceAction99[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction99 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction250 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -91823,6 +123319,8 @@ const classtable_elt_t VFT_parser___ReduceAction99[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -91836,45 +123334,49 @@ const classtable_elt_t VFT_parser___ReduceAction99[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction99 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction99___action},
+  {(bigint) 0 /* 50: ReduceAction250 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction250___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction99 < ReduceAction99: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction250 < ReduceAction250: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction99::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction99(val_t p0){
+/* 2: Attribute ReduceAction250::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction250[] = "init var of ReduceAction250";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction99;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction250;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction99(void)
+val_t NEW_parser___ReduceAction250(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction99;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction250;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction99(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction250[] = "check new ReduceAction250";
+void CHECKNEW_parser___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_parser___ReduceAction99;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction250;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -91884,34 +123386,37 @@ void CHECKNEW_parser___ReduceAction99(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction99_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction250_parser___ReduceAction___init[] = "new ReduceAction250 parser::ReduceAction::init";
+val_t NEW_ReduceAction250_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction99_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction250_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction99();
-  INIT_ATTRIBUTES__parser___ReduceAction99(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction250();
+  INIT_ATTRIBUTES__parser___ReduceAction250(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction99(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction250(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction100[52] = {
-  {(bigint) 2039 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction251[55] = {
+  {(bigint) 2195 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction100" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction100 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction100 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2039 /* 5: ReduceAction100 < ReduceAction100: superclass typecheck marker */},
+  {(bigint) "ReduceAction251" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction251 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction251 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2195 /* 5: ReduceAction251 < ReduceAction251: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -91924,7 +123429,7 @@ const classtable_elt_t VFT_parser___ReduceAction100[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction100 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction251 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -91940,6 +123445,8 @@ const classtable_elt_t VFT_parser___ReduceAction100[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -91953,45 +123460,49 @@ const classtable_elt_t VFT_parser___ReduceAction100[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction100 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction100___action},
+  {(bigint) 0 /* 50: ReduceAction251 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction251___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction100 < ReduceAction100: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction251 < ReduceAction251: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction100::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction100(val_t p0){
+/* 2: Attribute ReduceAction251::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction251[] = "init var of ReduceAction251";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction100;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction251;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction100(void)
+val_t NEW_parser___ReduceAction251(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction100;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction251;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction100(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction251[] = "check new ReduceAction251";
+void CHECKNEW_parser___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_parser___ReduceAction100;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction251;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -92001,34 +123512,37 @@ void CHECKNEW_parser___ReduceAction100(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction100_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction251_parser___ReduceAction___init[] = "new ReduceAction251 parser::ReduceAction::init";
+val_t NEW_ReduceAction251_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction100_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction251_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction100();
-  INIT_ATTRIBUTES__parser___ReduceAction100(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction251();
+  INIT_ATTRIBUTES__parser___ReduceAction251(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction100(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction251(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction101[52] = {
-  {(bigint) 2035 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction252[55] = {
+  {(bigint) 2191 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction101" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction101 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction101 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2035 /* 5: ReduceAction101 < ReduceAction101: superclass typecheck marker */},
+  {(bigint) "ReduceAction252" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction252 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction252 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2191 /* 5: ReduceAction252 < ReduceAction252: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -92041,7 +123555,7 @@ const classtable_elt_t VFT_parser___ReduceAction101[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction101 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction252 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -92057,6 +123571,8 @@ const classtable_elt_t VFT_parser___ReduceAction101[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -92070,45 +123586,49 @@ const classtable_elt_t VFT_parser___ReduceAction101[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction101 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction101___action},
+  {(bigint) 0 /* 50: ReduceAction252 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction252___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction101 < ReduceAction101: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction252 < ReduceAction252: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction101::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction101(val_t p0){
+/* 2: Attribute ReduceAction252::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction252[] = "init var of ReduceAction252";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction101;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction252;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction101(void)
+val_t NEW_parser___ReduceAction252(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction101;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction252;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction101(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction252[] = "check new ReduceAction252";
+void CHECKNEW_parser___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_parser___ReduceAction101;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction252;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -92118,34 +123638,37 @@ void CHECKNEW_parser___ReduceAction101(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction101_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction252_parser___ReduceAction___init[] = "new ReduceAction252 parser::ReduceAction::init";
+val_t NEW_ReduceAction252_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction101_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction252_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction101();
-  INIT_ATTRIBUTES__parser___ReduceAction101(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction252();
+  INIT_ATTRIBUTES__parser___ReduceAction252(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction101(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction252(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction102[52] = {
-  {(bigint) 2031 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction253[55] = {
+  {(bigint) 2187 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction102" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction102 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction102 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2031 /* 5: ReduceAction102 < ReduceAction102: superclass typecheck marker */},
+  {(bigint) "ReduceAction253" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction253 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction253 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2187 /* 5: ReduceAction253 < ReduceAction253: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -92158,7 +123681,7 @@ const classtable_elt_t VFT_parser___ReduceAction102[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction102 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction253 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -92174,6 +123697,8 @@ const classtable_elt_t VFT_parser___ReduceAction102[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -92187,45 +123712,49 @@ const classtable_elt_t VFT_parser___ReduceAction102[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction102 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction102___action},
+  {(bigint) 0 /* 50: ReduceAction253 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction253___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction102 < ReduceAction102: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction253 < ReduceAction253: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction102::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction102(val_t p0){
+/* 2: Attribute ReduceAction253::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction253[] = "init var of ReduceAction253";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction102;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction253;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction102(void)
+val_t NEW_parser___ReduceAction253(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction102;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction253;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction102(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction253[] = "check new ReduceAction253";
+void CHECKNEW_parser___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_parser___ReduceAction102;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction253;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -92235,34 +123764,37 @@ void CHECKNEW_parser___ReduceAction102(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction102_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction253_parser___ReduceAction___init[] = "new ReduceAction253 parser::ReduceAction::init";
+val_t NEW_ReduceAction253_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction102_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction253_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction102();
-  INIT_ATTRIBUTES__parser___ReduceAction102(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction253();
+  INIT_ATTRIBUTES__parser___ReduceAction253(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction102(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction253(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction103[52] = {
-  {(bigint) 2027 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction254[55] = {
+  {(bigint) 2183 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction103" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction103 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction103 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2027 /* 5: ReduceAction103 < ReduceAction103: superclass typecheck marker */},
+  {(bigint) "ReduceAction254" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction254 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction254 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2183 /* 5: ReduceAction254 < ReduceAction254: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -92275,7 +123807,7 @@ const classtable_elt_t VFT_parser___ReduceAction103[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction103 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction254 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -92291,6 +123823,8 @@ const classtable_elt_t VFT_parser___ReduceAction103[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -92304,45 +123838,49 @@ const classtable_elt_t VFT_parser___ReduceAction103[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction103 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction103___action},
+  {(bigint) 0 /* 50: ReduceAction254 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction254___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction103 < ReduceAction103: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction254 < ReduceAction254: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction103::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction103(val_t p0){
+/* 2: Attribute ReduceAction254::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction254[] = "init var of ReduceAction254";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction103;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction254;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction103(void)
+val_t NEW_parser___ReduceAction254(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction103;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction254;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction103(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction254[] = "check new ReduceAction254";
+void CHECKNEW_parser___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_parser___ReduceAction103;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction254;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -92352,34 +123890,37 @@ void CHECKNEW_parser___ReduceAction103(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction103_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction254_parser___ReduceAction___init[] = "new ReduceAction254 parser::ReduceAction::init";
+val_t NEW_ReduceAction254_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction103_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction254_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction103();
-  INIT_ATTRIBUTES__parser___ReduceAction103(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction254();
+  INIT_ATTRIBUTES__parser___ReduceAction254(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction103(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction254(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction104[52] = {
-  {(bigint) 2023 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction255[55] = {
+  {(bigint) 2179 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction104" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction104 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction104 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2023 /* 5: ReduceAction104 < ReduceAction104: superclass typecheck marker */},
+  {(bigint) "ReduceAction255" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction255 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction255 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2179 /* 5: ReduceAction255 < ReduceAction255: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -92392,7 +123933,7 @@ const classtable_elt_t VFT_parser___ReduceAction104[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction104 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction255 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -92408,6 +123949,8 @@ const classtable_elt_t VFT_parser___ReduceAction104[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -92421,45 +123964,49 @@ const classtable_elt_t VFT_parser___ReduceAction104[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction104 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction104___action},
+  {(bigint) 0 /* 50: ReduceAction255 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction255___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction104 < ReduceAction104: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction255 < ReduceAction255: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction104::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction104(val_t p0){
+/* 2: Attribute ReduceAction255::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction255[] = "init var of ReduceAction255";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction104;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction255;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction104(void)
+val_t NEW_parser___ReduceAction255(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction104;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction255;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction104(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction255[] = "check new ReduceAction255";
+void CHECKNEW_parser___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_parser___ReduceAction104;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction255;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -92469,34 +124016,37 @@ void CHECKNEW_parser___ReduceAction104(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction104_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction255_parser___ReduceAction___init[] = "new ReduceAction255 parser::ReduceAction::init";
+val_t NEW_ReduceAction255_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction104_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction255_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction104();
-  INIT_ATTRIBUTES__parser___ReduceAction104(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction255();
+  INIT_ATTRIBUTES__parser___ReduceAction255(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction104(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction255(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction105[52] = {
-  {(bigint) 2019 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction256[55] = {
+  {(bigint) 2175 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction105" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction105 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction105 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2019 /* 5: ReduceAction105 < ReduceAction105: superclass typecheck marker */},
+  {(bigint) "ReduceAction256" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction256 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction256 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2175 /* 5: ReduceAction256 < ReduceAction256: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -92509,7 +124059,7 @@ const classtable_elt_t VFT_parser___ReduceAction105[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction105 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction256 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -92525,6 +124075,8 @@ const classtable_elt_t VFT_parser___ReduceAction105[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -92538,45 +124090,49 @@ const classtable_elt_t VFT_parser___ReduceAction105[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction105 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction105___action},
+  {(bigint) 0 /* 50: ReduceAction256 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction256___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction105 < ReduceAction105: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction256 < ReduceAction256: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction105::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction105(val_t p0){
+/* 2: Attribute ReduceAction256::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction256[] = "init var of ReduceAction256";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction105;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction256;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction105(void)
+val_t NEW_parser___ReduceAction256(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction105;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction256;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction105(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction256[] = "check new ReduceAction256";
+void CHECKNEW_parser___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_parser___ReduceAction105;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction256;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -92586,34 +124142,37 @@ void CHECKNEW_parser___ReduceAction105(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction105_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction256_parser___ReduceAction___init[] = "new ReduceAction256 parser::ReduceAction::init";
+val_t NEW_ReduceAction256_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction105_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction256_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction105();
-  INIT_ATTRIBUTES__parser___ReduceAction105(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction256();
+  INIT_ATTRIBUTES__parser___ReduceAction256(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction105(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction256(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction106[52] = {
-  {(bigint) 2015 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction257[55] = {
+  {(bigint) 2171 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction106" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction106 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction106 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2015 /* 5: ReduceAction106 < ReduceAction106: superclass typecheck marker */},
+  {(bigint) "ReduceAction257" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction257 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction257 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2171 /* 5: ReduceAction257 < ReduceAction257: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -92626,7 +124185,7 @@ const classtable_elt_t VFT_parser___ReduceAction106[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction106 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction257 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -92642,6 +124201,8 @@ const classtable_elt_t VFT_parser___ReduceAction106[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -92655,45 +124216,49 @@ const classtable_elt_t VFT_parser___ReduceAction106[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction106 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction106___action},
+  {(bigint) 0 /* 50: ReduceAction257 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction257___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction106 < ReduceAction106: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction257 < ReduceAction257: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction106::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction106(val_t p0){
+/* 2: Attribute ReduceAction257::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction257[] = "init var of ReduceAction257";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction106;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction257;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction106(void)
+val_t NEW_parser___ReduceAction257(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction106;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction257;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction106(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction257[] = "check new ReduceAction257";
+void CHECKNEW_parser___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_parser___ReduceAction106;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction257;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -92703,34 +124268,37 @@ void CHECKNEW_parser___ReduceAction106(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction106_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction257_parser___ReduceAction___init[] = "new ReduceAction257 parser::ReduceAction::init";
+val_t NEW_ReduceAction257_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction106_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction257_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction106();
-  INIT_ATTRIBUTES__parser___ReduceAction106(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction257();
+  INIT_ATTRIBUTES__parser___ReduceAction257(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction106(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction257(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction107[52] = {
-  {(bigint) 2011 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction258[55] = {
+  {(bigint) 2167 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction107" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction107 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction107 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2011 /* 5: ReduceAction107 < ReduceAction107: superclass typecheck marker */},
+  {(bigint) "ReduceAction258" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction258 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction258 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2167 /* 5: ReduceAction258 < ReduceAction258: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -92743,7 +124311,7 @@ const classtable_elt_t VFT_parser___ReduceAction107[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction107 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction258 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -92759,6 +124327,8 @@ const classtable_elt_t VFT_parser___ReduceAction107[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -92772,45 +124342,49 @@ const classtable_elt_t VFT_parser___ReduceAction107[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction107 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction107___action},
+  {(bigint) 0 /* 50: ReduceAction258 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction258___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction107 < ReduceAction107: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction258 < ReduceAction258: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction107::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction107(val_t p0){
+/* 2: Attribute ReduceAction258::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction258[] = "init var of ReduceAction258";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction107;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction258;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction107(void)
+val_t NEW_parser___ReduceAction258(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction107;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction258;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction107(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction258[] = "check new ReduceAction258";
+void CHECKNEW_parser___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_parser___ReduceAction107;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction258;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -92820,34 +124394,37 @@ void CHECKNEW_parser___ReduceAction107(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction107_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction258_parser___ReduceAction___init[] = "new ReduceAction258 parser::ReduceAction::init";
+val_t NEW_ReduceAction258_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction107_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction258_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction107();
-  INIT_ATTRIBUTES__parser___ReduceAction107(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction258();
+  INIT_ATTRIBUTES__parser___ReduceAction258(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction107(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction258(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction108[52] = {
-  {(bigint) 2007 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction259[55] = {
+  {(bigint) 2163 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction108" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction108 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction108 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2007 /* 5: ReduceAction108 < ReduceAction108: superclass typecheck marker */},
+  {(bigint) "ReduceAction259" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction259 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction259 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2163 /* 5: ReduceAction259 < ReduceAction259: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -92860,7 +124437,7 @@ const classtable_elt_t VFT_parser___ReduceAction108[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction108 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction259 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -92876,6 +124453,8 @@ const classtable_elt_t VFT_parser___ReduceAction108[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -92889,45 +124468,49 @@ const classtable_elt_t VFT_parser___ReduceAction108[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction108 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction108___action},
+  {(bigint) 0 /* 50: ReduceAction259 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction259___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction108 < ReduceAction108: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction259 < ReduceAction259: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction108::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction108(val_t p0){
+/* 2: Attribute ReduceAction259::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction259[] = "init var of ReduceAction259";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction108;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction259;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction108(void)
+val_t NEW_parser___ReduceAction259(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction108;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction259;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction108(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction259[] = "check new ReduceAction259";
+void CHECKNEW_parser___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_parser___ReduceAction108;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction259;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -92937,34 +124520,37 @@ void CHECKNEW_parser___ReduceAction108(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction108_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction259_parser___ReduceAction___init[] = "new ReduceAction259 parser::ReduceAction::init";
+val_t NEW_ReduceAction259_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction108_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction259_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction108();
-  INIT_ATTRIBUTES__parser___ReduceAction108(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction259();
+  INIT_ATTRIBUTES__parser___ReduceAction259(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction108(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction259(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction109[52] = {
-  {(bigint) 2003 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction260[55] = {
+  {(bigint) 2155 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction109" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction109 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction109 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2003 /* 5: ReduceAction109 < ReduceAction109: superclass typecheck marker */},
+  {(bigint) "ReduceAction260" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction260 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction260 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2155 /* 5: ReduceAction260 < ReduceAction260: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -92977,7 +124563,7 @@ const classtable_elt_t VFT_parser___ReduceAction109[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction109 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction260 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -92993,6 +124579,8 @@ const classtable_elt_t VFT_parser___ReduceAction109[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -93006,45 +124594,49 @@ const classtable_elt_t VFT_parser___ReduceAction109[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction109 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction109___action},
+  {(bigint) 0 /* 50: ReduceAction260 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction260___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction109 < ReduceAction109: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction260 < ReduceAction260: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction109::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction109(val_t p0){
+/* 2: Attribute ReduceAction260::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction260[] = "init var of ReduceAction260";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction109;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction260;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction109(void)
+val_t NEW_parser___ReduceAction260(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction109;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction260;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction109(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction260[] = "check new ReduceAction260";
+void CHECKNEW_parser___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_parser___ReduceAction109;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction260;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -93054,34 +124646,37 @@ void CHECKNEW_parser___ReduceAction109(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction109_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction260_parser___ReduceAction___init[] = "new ReduceAction260 parser::ReduceAction::init";
+val_t NEW_ReduceAction260_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction109_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction260_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction109();
-  INIT_ATTRIBUTES__parser___ReduceAction109(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction260();
+  INIT_ATTRIBUTES__parser___ReduceAction260(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction109(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction260(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction110[52] = {
-  {(bigint) 1995 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction261[55] = {
+  {(bigint) 2151 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction110" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction110 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction110 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1995 /* 5: ReduceAction110 < ReduceAction110: superclass typecheck marker */},
+  {(bigint) "ReduceAction261" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction261 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction261 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2151 /* 5: ReduceAction261 < ReduceAction261: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -93094,7 +124689,7 @@ const classtable_elt_t VFT_parser___ReduceAction110[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction110 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction261 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -93110,6 +124705,8 @@ const classtable_elt_t VFT_parser___ReduceAction110[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -93123,45 +124720,49 @@ const classtable_elt_t VFT_parser___ReduceAction110[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction110 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction110___action},
+  {(bigint) 0 /* 50: ReduceAction261 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction261___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction110 < ReduceAction110: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction261 < ReduceAction261: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction110::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction110(val_t p0){
+/* 2: Attribute ReduceAction261::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction261[] = "init var of ReduceAction261";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction110;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction261;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction110(void)
+val_t NEW_parser___ReduceAction261(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction110;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction261;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction110(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction261[] = "check new ReduceAction261";
+void CHECKNEW_parser___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_parser___ReduceAction110;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction261;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -93171,34 +124772,37 @@ void CHECKNEW_parser___ReduceAction110(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction110_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction261_parser___ReduceAction___init[] = "new ReduceAction261 parser::ReduceAction::init";
+val_t NEW_ReduceAction261_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction110_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction261_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction110();
-  INIT_ATTRIBUTES__parser___ReduceAction110(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction261();
+  INIT_ATTRIBUTES__parser___ReduceAction261(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction110(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction261(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction111[52] = {
-  {(bigint) 1991 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction262[55] = {
+  {(bigint) 2147 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction111" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction111 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction111 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1991 /* 5: ReduceAction111 < ReduceAction111: superclass typecheck marker */},
+  {(bigint) "ReduceAction262" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction262 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction262 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2147 /* 5: ReduceAction262 < ReduceAction262: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -93211,7 +124815,7 @@ const classtable_elt_t VFT_parser___ReduceAction111[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction111 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction262 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -93227,6 +124831,8 @@ const classtable_elt_t VFT_parser___ReduceAction111[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -93240,45 +124846,49 @@ const classtable_elt_t VFT_parser___ReduceAction111[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction111 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction111___action},
+  {(bigint) 0 /* 50: ReduceAction262 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction262___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction111 < ReduceAction111: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction262 < ReduceAction262: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction111::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction111(val_t p0){
+/* 2: Attribute ReduceAction262::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction262[] = "init var of ReduceAction262";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction111;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction262;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction111(void)
+val_t NEW_parser___ReduceAction262(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction111;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction262;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction111(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction262[] = "check new ReduceAction262";
+void CHECKNEW_parser___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_parser___ReduceAction111;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction262;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -93288,34 +124898,37 @@ void CHECKNEW_parser___ReduceAction111(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction111_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction262_parser___ReduceAction___init[] = "new ReduceAction262 parser::ReduceAction::init";
+val_t NEW_ReduceAction262_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction111_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction262_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction111();
-  INIT_ATTRIBUTES__parser___ReduceAction111(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction262();
+  INIT_ATTRIBUTES__parser___ReduceAction262(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction111(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction262(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction112[52] = {
-  {(bigint) 1987 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction263[55] = {
+  {(bigint) 2143 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction112" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction112 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction112 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1987 /* 5: ReduceAction112 < ReduceAction112: superclass typecheck marker */},
+  {(bigint) "ReduceAction263" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction263 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction263 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2143 /* 5: ReduceAction263 < ReduceAction263: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -93328,7 +124941,7 @@ const classtable_elt_t VFT_parser___ReduceAction112[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction112 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction263 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -93344,6 +124957,8 @@ const classtable_elt_t VFT_parser___ReduceAction112[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -93357,45 +124972,49 @@ const classtable_elt_t VFT_parser___ReduceAction112[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction112 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction112___action},
+  {(bigint) 0 /* 50: ReduceAction263 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction263___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction112 < ReduceAction112: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction263 < ReduceAction263: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction112::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction112(val_t p0){
+/* 2: Attribute ReduceAction263::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction263[] = "init var of ReduceAction263";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction112;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction263;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction112(void)
+val_t NEW_parser___ReduceAction263(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction112;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction263;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction112(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction263[] = "check new ReduceAction263";
+void CHECKNEW_parser___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_parser___ReduceAction112;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction263;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -93405,34 +125024,37 @@ void CHECKNEW_parser___ReduceAction112(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction112_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction263_parser___ReduceAction___init[] = "new ReduceAction263 parser::ReduceAction::init";
+val_t NEW_ReduceAction263_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction112_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction263_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction112();
-  INIT_ATTRIBUTES__parser___ReduceAction112(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction263();
+  INIT_ATTRIBUTES__parser___ReduceAction263(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction112(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction263(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction113[52] = {
-  {(bigint) 1983 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction264[55] = {
+  {(bigint) 2139 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction113" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction113 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction113 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1983 /* 5: ReduceAction113 < ReduceAction113: superclass typecheck marker */},
+  {(bigint) "ReduceAction264" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction264 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction264 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2139 /* 5: ReduceAction264 < ReduceAction264: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -93445,7 +125067,7 @@ const classtable_elt_t VFT_parser___ReduceAction113[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction113 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction264 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -93461,6 +125083,8 @@ const classtable_elt_t VFT_parser___ReduceAction113[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -93474,45 +125098,49 @@ const classtable_elt_t VFT_parser___ReduceAction113[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction113 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction113___action},
+  {(bigint) 0 /* 50: ReduceAction264 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction264___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction113 < ReduceAction113: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction264 < ReduceAction264: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction113::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction113(val_t p0){
+/* 2: Attribute ReduceAction264::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction264[] = "init var of ReduceAction264";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction113;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction264;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction113(void)
+val_t NEW_parser___ReduceAction264(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction113;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction264;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction113(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction264[] = "check new ReduceAction264";
+void CHECKNEW_parser___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_parser___ReduceAction113;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction264;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -93522,34 +125150,37 @@ void CHECKNEW_parser___ReduceAction113(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction113_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction264_parser___ReduceAction___init[] = "new ReduceAction264 parser::ReduceAction::init";
+val_t NEW_ReduceAction264_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction113_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction264_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction113();
-  INIT_ATTRIBUTES__parser___ReduceAction113(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction264();
+  INIT_ATTRIBUTES__parser___ReduceAction264(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction113(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction264(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction114[52] = {
-  {(bigint) 1979 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction265[55] = {
+  {(bigint) 2135 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction114" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction114 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction114 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1979 /* 5: ReduceAction114 < ReduceAction114: superclass typecheck marker */},
+  {(bigint) "ReduceAction265" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction265 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction265 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2135 /* 5: ReduceAction265 < ReduceAction265: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -93562,7 +125193,7 @@ const classtable_elt_t VFT_parser___ReduceAction114[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction114 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction265 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -93578,6 +125209,8 @@ const classtable_elt_t VFT_parser___ReduceAction114[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -93591,45 +125224,49 @@ const classtable_elt_t VFT_parser___ReduceAction114[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction114 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction114___action},
+  {(bigint) 0 /* 50: ReduceAction265 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction265___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction114 < ReduceAction114: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction265 < ReduceAction265: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction114::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction114(val_t p0){
+/* 2: Attribute ReduceAction265::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction265[] = "init var of ReduceAction265";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction114;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction265;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction114(void)
+val_t NEW_parser___ReduceAction265(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction114;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction265;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction114(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction265[] = "check new ReduceAction265";
+void CHECKNEW_parser___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_parser___ReduceAction114;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction265;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -93639,34 +125276,37 @@ void CHECKNEW_parser___ReduceAction114(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction114_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction265_parser___ReduceAction___init[] = "new ReduceAction265 parser::ReduceAction::init";
+val_t NEW_ReduceAction265_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction114_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction265_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction114();
-  INIT_ATTRIBUTES__parser___ReduceAction114(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction265();
+  INIT_ATTRIBUTES__parser___ReduceAction265(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction114(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction265(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction115[52] = {
-  {(bigint) 1975 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction266[55] = {
+  {(bigint) 2131 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction115" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction115 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction115 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1975 /* 5: ReduceAction115 < ReduceAction115: superclass typecheck marker */},
+  {(bigint) "ReduceAction266" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction266 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction266 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2131 /* 5: ReduceAction266 < ReduceAction266: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -93679,7 +125319,7 @@ const classtable_elt_t VFT_parser___ReduceAction115[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction115 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction266 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -93695,6 +125335,8 @@ const classtable_elt_t VFT_parser___ReduceAction115[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -93708,45 +125350,49 @@ const classtable_elt_t VFT_parser___ReduceAction115[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction115 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction115___action},
+  {(bigint) 0 /* 50: ReduceAction266 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction266___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction115 < ReduceAction115: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction266 < ReduceAction266: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction115::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction115(val_t p0){
+/* 2: Attribute ReduceAction266::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction266[] = "init var of ReduceAction266";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction115;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction266;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction115(void)
+val_t NEW_parser___ReduceAction266(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction115;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction266;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction115(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction266[] = "check new ReduceAction266";
+void CHECKNEW_parser___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_parser___ReduceAction115;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction266;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -93756,34 +125402,37 @@ void CHECKNEW_parser___ReduceAction115(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction115_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction266_parser___ReduceAction___init[] = "new ReduceAction266 parser::ReduceAction::init";
+val_t NEW_ReduceAction266_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction115_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction266_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction115();
-  INIT_ATTRIBUTES__parser___ReduceAction115(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction266();
+  INIT_ATTRIBUTES__parser___ReduceAction266(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction115(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction266(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction116[52] = {
-  {(bigint) 1971 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction267[55] = {
+  {(bigint) 2127 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction116" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction116 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction116 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1971 /* 5: ReduceAction116 < ReduceAction116: superclass typecheck marker */},
+  {(bigint) "ReduceAction267" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction267 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction267 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2127 /* 5: ReduceAction267 < ReduceAction267: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -93796,7 +125445,7 @@ const classtable_elt_t VFT_parser___ReduceAction116[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction116 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction267 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -93812,6 +125461,8 @@ const classtable_elt_t VFT_parser___ReduceAction116[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -93825,45 +125476,49 @@ const classtable_elt_t VFT_parser___ReduceAction116[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction116 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction116___action},
+  {(bigint) 0 /* 50: ReduceAction267 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction267___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction116 < ReduceAction116: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction267 < ReduceAction267: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction116::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction116(val_t p0){
+/* 2: Attribute ReduceAction267::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction267[] = "init var of ReduceAction267";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction116;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction267;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction116(void)
+val_t NEW_parser___ReduceAction267(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction116;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction267;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction116(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction267[] = "check new ReduceAction267";
+void CHECKNEW_parser___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_parser___ReduceAction116;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction267;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -93873,34 +125528,37 @@ void CHECKNEW_parser___ReduceAction116(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction116_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction267_parser___ReduceAction___init[] = "new ReduceAction267 parser::ReduceAction::init";
+val_t NEW_ReduceAction267_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction116_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction267_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction116();
-  INIT_ATTRIBUTES__parser___ReduceAction116(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction267();
+  INIT_ATTRIBUTES__parser___ReduceAction267(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction116(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction267(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction117[52] = {
-  {(bigint) 1967 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction268[55] = {
+  {(bigint) 2123 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction117" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction117 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction117 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1967 /* 5: ReduceAction117 < ReduceAction117: superclass typecheck marker */},
+  {(bigint) "ReduceAction268" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction268 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction268 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2123 /* 5: ReduceAction268 < ReduceAction268: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -93913,7 +125571,7 @@ const classtable_elt_t VFT_parser___ReduceAction117[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction117 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction268 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -93929,6 +125587,8 @@ const classtable_elt_t VFT_parser___ReduceAction117[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -93942,45 +125602,49 @@ const classtable_elt_t VFT_parser___ReduceAction117[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction117 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction117___action},
+  {(bigint) 0 /* 50: ReduceAction268 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction268___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction117 < ReduceAction117: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction268 < ReduceAction268: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction117::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction117(val_t p0){
+/* 2: Attribute ReduceAction268::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction268[] = "init var of ReduceAction268";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction117;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction268;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction117(void)
+val_t NEW_parser___ReduceAction268(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction117;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction268;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction117(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction268[] = "check new ReduceAction268";
+void CHECKNEW_parser___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_parser___ReduceAction117;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction268;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -93990,34 +125654,37 @@ void CHECKNEW_parser___ReduceAction117(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction117_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction268_parser___ReduceAction___init[] = "new ReduceAction268 parser::ReduceAction::init";
+val_t NEW_ReduceAction268_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction117_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction268_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction117();
-  INIT_ATTRIBUTES__parser___ReduceAction117(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction268();
+  INIT_ATTRIBUTES__parser___ReduceAction268(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction117(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction268(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction118[52] = {
-  {(bigint) 1963 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction269[55] = {
+  {(bigint) 2119 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction118" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction118 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction118 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1963 /* 5: ReduceAction118 < ReduceAction118: superclass typecheck marker */},
+  {(bigint) "ReduceAction269" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction269 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction269 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2119 /* 5: ReduceAction269 < ReduceAction269: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -94030,7 +125697,7 @@ const classtable_elt_t VFT_parser___ReduceAction118[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction118 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction269 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -94046,6 +125713,8 @@ const classtable_elt_t VFT_parser___ReduceAction118[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -94059,45 +125728,49 @@ const classtable_elt_t VFT_parser___ReduceAction118[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction118 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction118___action},
+  {(bigint) 0 /* 50: ReduceAction269 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction269___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction118 < ReduceAction118: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction269 < ReduceAction269: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction118::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction118(val_t p0){
+/* 2: Attribute ReduceAction269::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction269[] = "init var of ReduceAction269";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction118;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction269;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction118(void)
+val_t NEW_parser___ReduceAction269(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction118;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction269;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction118(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction269[] = "check new ReduceAction269";
+void CHECKNEW_parser___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_parser___ReduceAction118;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction269;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -94107,34 +125780,37 @@ void CHECKNEW_parser___ReduceAction118(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction118_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction269_parser___ReduceAction___init[] = "new ReduceAction269 parser::ReduceAction::init";
+val_t NEW_ReduceAction269_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction118_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction269_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction118();
-  INIT_ATTRIBUTES__parser___ReduceAction118(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction269();
+  INIT_ATTRIBUTES__parser___ReduceAction269(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction118(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction269(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction119[52] = {
-  {(bigint) 1959 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction270[55] = {
+  {(bigint) 2111 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction119" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction119 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction119 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1959 /* 5: ReduceAction119 < ReduceAction119: superclass typecheck marker */},
+  {(bigint) "ReduceAction270" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction270 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction270 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2111 /* 5: ReduceAction270 < ReduceAction270: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -94147,7 +125823,7 @@ const classtable_elt_t VFT_parser___ReduceAction119[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction119 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction270 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -94163,6 +125839,8 @@ const classtable_elt_t VFT_parser___ReduceAction119[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -94176,45 +125854,49 @@ const classtable_elt_t VFT_parser___ReduceAction119[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction119 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction119___action},
+  {(bigint) 0 /* 50: ReduceAction270 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction270___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction119 < ReduceAction119: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction270 < ReduceAction270: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction119::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction119(val_t p0){
+/* 2: Attribute ReduceAction270::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction270[] = "init var of ReduceAction270";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction119;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction270;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction119(void)
+val_t NEW_parser___ReduceAction270(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction119;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction270;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction119(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction270[] = "check new ReduceAction270";
+void CHECKNEW_parser___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_parser___ReduceAction119;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction270;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -94224,34 +125906,37 @@ void CHECKNEW_parser___ReduceAction119(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction119_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction270_parser___ReduceAction___init[] = "new ReduceAction270 parser::ReduceAction::init";
+val_t NEW_ReduceAction270_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction119_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction270_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction119();
-  INIT_ATTRIBUTES__parser___ReduceAction119(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction270();
+  INIT_ATTRIBUTES__parser___ReduceAction270(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction119(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction270(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction120[52] = {
-  {(bigint) 1951 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction271[55] = {
+  {(bigint) 2107 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction120" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction120 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction120 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1951 /* 5: ReduceAction120 < ReduceAction120: superclass typecheck marker */},
+  {(bigint) "ReduceAction271" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction271 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction271 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2107 /* 5: ReduceAction271 < ReduceAction271: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -94264,7 +125949,7 @@ const classtable_elt_t VFT_parser___ReduceAction120[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction120 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction271 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -94280,6 +125965,8 @@ const classtable_elt_t VFT_parser___ReduceAction120[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -94293,45 +125980,49 @@ const classtable_elt_t VFT_parser___ReduceAction120[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction120 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction120___action},
+  {(bigint) 0 /* 50: ReduceAction271 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction271___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction120 < ReduceAction120: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction271 < ReduceAction271: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction120::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction120(val_t p0){
+/* 2: Attribute ReduceAction271::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction271[] = "init var of ReduceAction271";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction120;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction271;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction120(void)
+val_t NEW_parser___ReduceAction271(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction120;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction271;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction120(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction271[] = "check new ReduceAction271";
+void CHECKNEW_parser___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_parser___ReduceAction120;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction271;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -94341,34 +126032,37 @@ void CHECKNEW_parser___ReduceAction120(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction120_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction271_parser___ReduceAction___init[] = "new ReduceAction271 parser::ReduceAction::init";
+val_t NEW_ReduceAction271_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction120_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction271_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction120();
-  INIT_ATTRIBUTES__parser___ReduceAction120(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction271();
+  INIT_ATTRIBUTES__parser___ReduceAction271(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction120(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction271(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction121[52] = {
-  {(bigint) 1947 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction272[55] = {
+  {(bigint) 2103 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction121" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction121 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction121 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1947 /* 5: ReduceAction121 < ReduceAction121: superclass typecheck marker */},
+  {(bigint) "ReduceAction272" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction272 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction272 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2103 /* 5: ReduceAction272 < ReduceAction272: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -94381,7 +126075,7 @@ const classtable_elt_t VFT_parser___ReduceAction121[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction121 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction272 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -94397,6 +126091,8 @@ const classtable_elt_t VFT_parser___ReduceAction121[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -94410,45 +126106,49 @@ const classtable_elt_t VFT_parser___ReduceAction121[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction121 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction121___action},
+  {(bigint) 0 /* 50: ReduceAction272 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction272___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction121 < ReduceAction121: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction272 < ReduceAction272: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction121::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction121(val_t p0){
+/* 2: Attribute ReduceAction272::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction272[] = "init var of ReduceAction272";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction121;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction272;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction121(void)
+val_t NEW_parser___ReduceAction272(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction121;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction272;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction121(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction272[] = "check new ReduceAction272";
+void CHECKNEW_parser___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_parser___ReduceAction121;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction272;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -94458,34 +126158,37 @@ void CHECKNEW_parser___ReduceAction121(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction121_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction272_parser___ReduceAction___init[] = "new ReduceAction272 parser::ReduceAction::init";
+val_t NEW_ReduceAction272_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction121_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction272_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction121();
-  INIT_ATTRIBUTES__parser___ReduceAction121(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction272();
+  INIT_ATTRIBUTES__parser___ReduceAction272(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction121(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction272(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction122[52] = {
-  {(bigint) 1943 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction273[55] = {
+  {(bigint) 2099 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction122" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction122 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction122 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1943 /* 5: ReduceAction122 < ReduceAction122: superclass typecheck marker */},
+  {(bigint) "ReduceAction273" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction273 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction273 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2099 /* 5: ReduceAction273 < ReduceAction273: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -94498,7 +126201,7 @@ const classtable_elt_t VFT_parser___ReduceAction122[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction122 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction273 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -94514,6 +126217,8 @@ const classtable_elt_t VFT_parser___ReduceAction122[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -94527,45 +126232,49 @@ const classtable_elt_t VFT_parser___ReduceAction122[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction122 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction122___action},
+  {(bigint) 0 /* 50: ReduceAction273 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction273___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction122 < ReduceAction122: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction273 < ReduceAction273: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction122::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction122(val_t p0){
+/* 2: Attribute ReduceAction273::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction273[] = "init var of ReduceAction273";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction122;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction273;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction122(void)
+val_t NEW_parser___ReduceAction273(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction122;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction273;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction122(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction273[] = "check new ReduceAction273";
+void CHECKNEW_parser___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_parser___ReduceAction122;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction273;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -94575,34 +126284,37 @@ void CHECKNEW_parser___ReduceAction122(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction122_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction273_parser___ReduceAction___init[] = "new ReduceAction273 parser::ReduceAction::init";
+val_t NEW_ReduceAction273_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction122_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction273_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction122();
-  INIT_ATTRIBUTES__parser___ReduceAction122(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction273();
+  INIT_ATTRIBUTES__parser___ReduceAction273(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction122(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction273(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction123[52] = {
-  {(bigint) 1939 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction274[55] = {
+  {(bigint) 2095 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction123" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction123 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction123 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1939 /* 5: ReduceAction123 < ReduceAction123: superclass typecheck marker */},
+  {(bigint) "ReduceAction274" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction274 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction274 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2095 /* 5: ReduceAction274 < ReduceAction274: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -94615,7 +126327,7 @@ const classtable_elt_t VFT_parser___ReduceAction123[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction123 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction274 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -94631,6 +126343,8 @@ const classtable_elt_t VFT_parser___ReduceAction123[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -94644,45 +126358,49 @@ const classtable_elt_t VFT_parser___ReduceAction123[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction123 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction123___action},
+  {(bigint) 0 /* 50: ReduceAction274 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction274___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction123 < ReduceAction123: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction274 < ReduceAction274: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction123::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction123(val_t p0){
+/* 2: Attribute ReduceAction274::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction274[] = "init var of ReduceAction274";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction123;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction274;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction123(void)
+val_t NEW_parser___ReduceAction274(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction123;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction274;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction123(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction274[] = "check new ReduceAction274";
+void CHECKNEW_parser___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_parser___ReduceAction123;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction274;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -94692,34 +126410,37 @@ void CHECKNEW_parser___ReduceAction123(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction123_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction274_parser___ReduceAction___init[] = "new ReduceAction274 parser::ReduceAction::init";
+val_t NEW_ReduceAction274_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction123_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction274_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction123();
-  INIT_ATTRIBUTES__parser___ReduceAction123(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction274();
+  INIT_ATTRIBUTES__parser___ReduceAction274(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction123(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction274(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction124[52] = {
-  {(bigint) 1935 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction275[55] = {
+  {(bigint) 2091 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction124" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction124 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction124 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1935 /* 5: ReduceAction124 < ReduceAction124: superclass typecheck marker */},
+  {(bigint) "ReduceAction275" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction275 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction275 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2091 /* 5: ReduceAction275 < ReduceAction275: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -94732,7 +126453,7 @@ const classtable_elt_t VFT_parser___ReduceAction124[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction124 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction275 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -94748,6 +126469,8 @@ const classtable_elt_t VFT_parser___ReduceAction124[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -94761,45 +126484,49 @@ const classtable_elt_t VFT_parser___ReduceAction124[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction124 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction124___action},
+  {(bigint) 0 /* 50: ReduceAction275 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction275___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction124 < ReduceAction124: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction275 < ReduceAction275: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction124::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction124(val_t p0){
+/* 2: Attribute ReduceAction275::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction275[] = "init var of ReduceAction275";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction124;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction275;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction124(void)
+val_t NEW_parser___ReduceAction275(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction124;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction275;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction124(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction275[] = "check new ReduceAction275";
+void CHECKNEW_parser___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_parser___ReduceAction124;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction275;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -94809,34 +126536,37 @@ void CHECKNEW_parser___ReduceAction124(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction124_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction275_parser___ReduceAction___init[] = "new ReduceAction275 parser::ReduceAction::init";
+val_t NEW_ReduceAction275_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction124_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction275_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction124();
-  INIT_ATTRIBUTES__parser___ReduceAction124(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction275();
+  INIT_ATTRIBUTES__parser___ReduceAction275(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction124(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction275(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction125[52] = {
-  {(bigint) 1931 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction276[55] = {
+  {(bigint) 2087 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction125" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction125 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction125 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1931 /* 5: ReduceAction125 < ReduceAction125: superclass typecheck marker */},
+  {(bigint) "ReduceAction276" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction276 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction276 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2087 /* 5: ReduceAction276 < ReduceAction276: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -94849,7 +126579,7 @@ const classtable_elt_t VFT_parser___ReduceAction125[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction125 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction276 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -94865,6 +126595,8 @@ const classtable_elt_t VFT_parser___ReduceAction125[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -94878,45 +126610,49 @@ const classtable_elt_t VFT_parser___ReduceAction125[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction125 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction125___action},
+  {(bigint) 0 /* 50: ReduceAction276 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction276___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction125 < ReduceAction125: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction276 < ReduceAction276: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction125::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction125(val_t p0){
+/* 2: Attribute ReduceAction276::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction276[] = "init var of ReduceAction276";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction125;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction276;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction125(void)
+val_t NEW_parser___ReduceAction276(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction125;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction276;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction125(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction276[] = "check new ReduceAction276";
+void CHECKNEW_parser___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_parser___ReduceAction125;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction276;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -94926,34 +126662,37 @@ void CHECKNEW_parser___ReduceAction125(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction125_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction276_parser___ReduceAction___init[] = "new ReduceAction276 parser::ReduceAction::init";
+val_t NEW_ReduceAction276_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction125_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction276_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction125();
-  INIT_ATTRIBUTES__parser___ReduceAction125(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction276();
+  INIT_ATTRIBUTES__parser___ReduceAction276(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction125(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction276(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction126[52] = {
-  {(bigint) 1927 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction277[55] = {
+  {(bigint) 2083 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction126" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction126 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction126 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1927 /* 5: ReduceAction126 < ReduceAction126: superclass typecheck marker */},
+  {(bigint) "ReduceAction277" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction277 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction277 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2083 /* 5: ReduceAction277 < ReduceAction277: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -94966,7 +126705,7 @@ const classtable_elt_t VFT_parser___ReduceAction126[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction126 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction277 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -94982,6 +126721,8 @@ const classtable_elt_t VFT_parser___ReduceAction126[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -94995,45 +126736,49 @@ const classtable_elt_t VFT_parser___ReduceAction126[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction126 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction126___action},
+  {(bigint) 0 /* 50: ReduceAction277 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction277___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction126 < ReduceAction126: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction277 < ReduceAction277: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction126::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction126(val_t p0){
+/* 2: Attribute ReduceAction277::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction277[] = "init var of ReduceAction277";
+void INIT_ATTRIBUTES__parser___ReduceAction277(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction126;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction277;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction126(void)
+val_t NEW_parser___ReduceAction277(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction126;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction277;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction126(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction277[] = "check new ReduceAction277";
+void CHECKNEW_parser___ReduceAction277(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction126;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction277;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -95043,34 +126788,37 @@ void CHECKNEW_parser___ReduceAction126(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction126_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction277_parser___ReduceAction___init[] = "new ReduceAction277 parser::ReduceAction::init";
+val_t NEW_ReduceAction277_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction126_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction277_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction126();
-  INIT_ATTRIBUTES__parser___ReduceAction126(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction277();
+  INIT_ATTRIBUTES__parser___ReduceAction277(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction126(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction277(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction127[52] = {
-  {(bigint) 1923 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction278[55] = {
+  {(bigint) 2079 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction127" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction127 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction127 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1923 /* 5: ReduceAction127 < ReduceAction127: superclass typecheck marker */},
+  {(bigint) "ReduceAction278" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction278 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction278 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2079 /* 5: ReduceAction278 < ReduceAction278: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -95083,7 +126831,7 @@ const classtable_elt_t VFT_parser___ReduceAction127[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction127 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction278 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -95099,6 +126847,8 @@ const classtable_elt_t VFT_parser___ReduceAction127[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -95112,45 +126862,49 @@ const classtable_elt_t VFT_parser___ReduceAction127[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction127 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction127___action},
+  {(bigint) 0 /* 50: ReduceAction278 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction278___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction127 < ReduceAction127: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction278 < ReduceAction278: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction127::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction127(val_t p0){
+/* 2: Attribute ReduceAction278::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction278[] = "init var of ReduceAction278";
+void INIT_ATTRIBUTES__parser___ReduceAction278(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction127;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction278;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction127(void)
+val_t NEW_parser___ReduceAction278(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction127;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction278;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction127(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction278[] = "check new ReduceAction278";
+void CHECKNEW_parser___ReduceAction278(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction127;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction278;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -95160,34 +126914,37 @@ void CHECKNEW_parser___ReduceAction127(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction127_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction278_parser___ReduceAction___init[] = "new ReduceAction278 parser::ReduceAction::init";
+val_t NEW_ReduceAction278_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction127_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction278_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction127();
-  INIT_ATTRIBUTES__parser___ReduceAction127(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction278();
+  INIT_ATTRIBUTES__parser___ReduceAction278(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction127(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction278(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction128[52] = {
-  {(bigint) 1919 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction279[55] = {
+  {(bigint) 2075 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction128" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction128 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction128 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1919 /* 5: ReduceAction128 < ReduceAction128: superclass typecheck marker */},
+  {(bigint) "ReduceAction279" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction279 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction279 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2075 /* 5: ReduceAction279 < ReduceAction279: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -95200,7 +126957,7 @@ const classtable_elt_t VFT_parser___ReduceAction128[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction128 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction279 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -95216,6 +126973,8 @@ const classtable_elt_t VFT_parser___ReduceAction128[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -95229,45 +126988,49 @@ const classtable_elt_t VFT_parser___ReduceAction128[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction128 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction128___action},
+  {(bigint) 0 /* 50: ReduceAction279 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction279___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction128 < ReduceAction128: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction279 < ReduceAction279: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction128::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction128(val_t p0){
+/* 2: Attribute ReduceAction279::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction279[] = "init var of ReduceAction279";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction128;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction279;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction128(void)
+val_t NEW_parser___ReduceAction279(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction128;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction279;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction128(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction279[] = "check new ReduceAction279";
+void CHECKNEW_parser___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_parser___ReduceAction128;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction279;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -95277,34 +127040,37 @@ void CHECKNEW_parser___ReduceAction128(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction128_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction279_parser___ReduceAction___init[] = "new ReduceAction279 parser::ReduceAction::init";
+val_t NEW_ReduceAction279_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction128_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction279_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction128();
-  INIT_ATTRIBUTES__parser___ReduceAction128(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction279();
+  INIT_ATTRIBUTES__parser___ReduceAction279(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction128(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction279(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction129[52] = {
-  {(bigint) 1915 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction280[55] = {
+  {(bigint) 2067 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction129" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction129 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction129 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1915 /* 5: ReduceAction129 < ReduceAction129: superclass typecheck marker */},
+  {(bigint) "ReduceAction280" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction280 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction280 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2067 /* 5: ReduceAction280 < ReduceAction280: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -95317,7 +127083,7 @@ const classtable_elt_t VFT_parser___ReduceAction129[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction129 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction280 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -95333,6 +127099,8 @@ const classtable_elt_t VFT_parser___ReduceAction129[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -95346,45 +127114,49 @@ const classtable_elt_t VFT_parser___ReduceAction129[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction129 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction129___action},
+  {(bigint) 0 /* 50: ReduceAction280 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction280___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction129 < ReduceAction129: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction280 < ReduceAction280: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction129::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction129(val_t p0){
+/* 2: Attribute ReduceAction280::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction280[] = "init var of ReduceAction280";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction129;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction280;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction129(void)
+val_t NEW_parser___ReduceAction280(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction129;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction280;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction129(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction280[] = "check new ReduceAction280";
+void CHECKNEW_parser___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_parser___ReduceAction129;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction280;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -95394,34 +127166,37 @@ void CHECKNEW_parser___ReduceAction129(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction129_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction280_parser___ReduceAction___init[] = "new ReduceAction280 parser::ReduceAction::init";
+val_t NEW_ReduceAction280_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction129_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction280_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction129();
-  INIT_ATTRIBUTES__parser___ReduceAction129(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction280();
+  INIT_ATTRIBUTES__parser___ReduceAction280(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction129(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction280(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction130[52] = {
-  {(bigint) 1907 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction281[55] = {
+  {(bigint) 2063 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction130" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction130 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction130 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1907 /* 5: ReduceAction130 < ReduceAction130: superclass typecheck marker */},
+  {(bigint) "ReduceAction281" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction281 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction281 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2063 /* 5: ReduceAction281 < ReduceAction281: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -95434,7 +127209,7 @@ const classtable_elt_t VFT_parser___ReduceAction130[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction130 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction281 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -95450,6 +127225,8 @@ const classtable_elt_t VFT_parser___ReduceAction130[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -95463,45 +127240,49 @@ const classtable_elt_t VFT_parser___ReduceAction130[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction130 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction130___action},
+  {(bigint) 0 /* 50: ReduceAction281 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction281___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction130 < ReduceAction130: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction281 < ReduceAction281: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction130::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction130(val_t p0){
+/* 2: Attribute ReduceAction281::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction281[] = "init var of ReduceAction281";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction130;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction281;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction130(void)
+val_t NEW_parser___ReduceAction281(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction130;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction281;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction130(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction281[] = "check new ReduceAction281";
+void CHECKNEW_parser___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_parser___ReduceAction130;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction281;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -95511,34 +127292,37 @@ void CHECKNEW_parser___ReduceAction130(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction130_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction281_parser___ReduceAction___init[] = "new ReduceAction281 parser::ReduceAction::init";
+val_t NEW_ReduceAction281_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction130_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction281_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction130();
-  INIT_ATTRIBUTES__parser___ReduceAction130(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction281();
+  INIT_ATTRIBUTES__parser___ReduceAction281(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction130(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction281(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction131[52] = {
-  {(bigint) 1903 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction282[55] = {
+  {(bigint) 2059 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction131" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction131 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction131 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1903 /* 5: ReduceAction131 < ReduceAction131: superclass typecheck marker */},
+  {(bigint) "ReduceAction282" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction282 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction282 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2059 /* 5: ReduceAction282 < ReduceAction282: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -95551,7 +127335,7 @@ const classtable_elt_t VFT_parser___ReduceAction131[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction131 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction282 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -95567,6 +127351,8 @@ const classtable_elt_t VFT_parser___ReduceAction131[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -95580,45 +127366,49 @@ const classtable_elt_t VFT_parser___ReduceAction131[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction131 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction131___action},
+  {(bigint) 0 /* 50: ReduceAction282 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction282___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction131 < ReduceAction131: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction282 < ReduceAction282: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction131::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction131(val_t p0){
+/* 2: Attribute ReduceAction282::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction282[] = "init var of ReduceAction282";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction131;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction282;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction131(void)
+val_t NEW_parser___ReduceAction282(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction131;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction282;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction131(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction282[] = "check new ReduceAction282";
+void CHECKNEW_parser___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_parser___ReduceAction131;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction282;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -95628,34 +127418,37 @@ void CHECKNEW_parser___ReduceAction131(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction131_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction282_parser___ReduceAction___init[] = "new ReduceAction282 parser::ReduceAction::init";
+val_t NEW_ReduceAction282_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction131_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction282_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction131();
-  INIT_ATTRIBUTES__parser___ReduceAction131(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction282();
+  INIT_ATTRIBUTES__parser___ReduceAction282(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction131(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction282(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction132[52] = {
-  {(bigint) 1899 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction283[55] = {
+  {(bigint) 2055 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction132" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction132 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction132 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1899 /* 5: ReduceAction132 < ReduceAction132: superclass typecheck marker */},
+  {(bigint) "ReduceAction283" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction283 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction283 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2055 /* 5: ReduceAction283 < ReduceAction283: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -95668,7 +127461,7 @@ const classtable_elt_t VFT_parser___ReduceAction132[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction132 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction283 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -95684,6 +127477,8 @@ const classtable_elt_t VFT_parser___ReduceAction132[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -95697,45 +127492,49 @@ const classtable_elt_t VFT_parser___ReduceAction132[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction132 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction132___action},
+  {(bigint) 0 /* 50: ReduceAction283 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction283___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction132 < ReduceAction132: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction283 < ReduceAction283: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction132::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction132(val_t p0){
+/* 2: Attribute ReduceAction283::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction283[] = "init var of ReduceAction283";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction132;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction283;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction132(void)
+val_t NEW_parser___ReduceAction283(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction132;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction283;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction132(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction283[] = "check new ReduceAction283";
+void CHECKNEW_parser___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_parser___ReduceAction132;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction283;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -95745,34 +127544,37 @@ void CHECKNEW_parser___ReduceAction132(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction132_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction283_parser___ReduceAction___init[] = "new ReduceAction283 parser::ReduceAction::init";
+val_t NEW_ReduceAction283_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction132_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction283_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction132();
-  INIT_ATTRIBUTES__parser___ReduceAction132(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction283();
+  INIT_ATTRIBUTES__parser___ReduceAction283(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction132(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction283(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction133[52] = {
-  {(bigint) 1895 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction284[55] = {
+  {(bigint) 2051 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction133" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction133 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction133 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1895 /* 5: ReduceAction133 < ReduceAction133: superclass typecheck marker */},
+  {(bigint) "ReduceAction284" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction284 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction284 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2051 /* 5: ReduceAction284 < ReduceAction284: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -95785,7 +127587,7 @@ const classtable_elt_t VFT_parser___ReduceAction133[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction133 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction284 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -95801,6 +127603,8 @@ const classtable_elt_t VFT_parser___ReduceAction133[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -95814,45 +127618,49 @@ const classtable_elt_t VFT_parser___ReduceAction133[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction133 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction133___action},
+  {(bigint) 0 /* 50: ReduceAction284 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction284___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction133 < ReduceAction133: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction284 < ReduceAction284: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction133::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction133(val_t p0){
+/* 2: Attribute ReduceAction284::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction284[] = "init var of ReduceAction284";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction133;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction284;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction133(void)
+val_t NEW_parser___ReduceAction284(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction133;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction284;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction133(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction284[] = "check new ReduceAction284";
+void CHECKNEW_parser___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_parser___ReduceAction133;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction284;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -95862,34 +127670,37 @@ void CHECKNEW_parser___ReduceAction133(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction133_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction284_parser___ReduceAction___init[] = "new ReduceAction284 parser::ReduceAction::init";
+val_t NEW_ReduceAction284_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction133_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction284_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction133();
-  INIT_ATTRIBUTES__parser___ReduceAction133(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction284();
+  INIT_ATTRIBUTES__parser___ReduceAction284(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction133(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction284(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction134[52] = {
-  {(bigint) 1891 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction285[55] = {
+  {(bigint) 2047 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction134" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction134 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction134 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1891 /* 5: ReduceAction134 < ReduceAction134: superclass typecheck marker */},
+  {(bigint) "ReduceAction285" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction285 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction285 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2047 /* 5: ReduceAction285 < ReduceAction285: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -95902,7 +127713,7 @@ const classtable_elt_t VFT_parser___ReduceAction134[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction134 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction285 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -95918,6 +127729,8 @@ const classtable_elt_t VFT_parser___ReduceAction134[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -95931,45 +127744,49 @@ const classtable_elt_t VFT_parser___ReduceAction134[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction134 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction134___action},
+  {(bigint) 0 /* 50: ReduceAction285 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction285___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction134 < ReduceAction134: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction285 < ReduceAction285: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction134::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction134(val_t p0){
+/* 2: Attribute ReduceAction285::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction285[] = "init var of ReduceAction285";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction134;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction285;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction134(void)
+val_t NEW_parser___ReduceAction285(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction134;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction285;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction134(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction285[] = "check new ReduceAction285";
+void CHECKNEW_parser___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_parser___ReduceAction134;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction285;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -95979,34 +127796,37 @@ void CHECKNEW_parser___ReduceAction134(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction134_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction285_parser___ReduceAction___init[] = "new ReduceAction285 parser::ReduceAction::init";
+val_t NEW_ReduceAction285_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction134_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction285_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction134();
-  INIT_ATTRIBUTES__parser___ReduceAction134(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction285();
+  INIT_ATTRIBUTES__parser___ReduceAction285(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction134(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction285(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction135[52] = {
-  {(bigint) 1887 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction286[55] = {
+  {(bigint) 2043 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction135" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction135 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction135 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1887 /* 5: ReduceAction135 < ReduceAction135: superclass typecheck marker */},
+  {(bigint) "ReduceAction286" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction286 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction286 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2043 /* 5: ReduceAction286 < ReduceAction286: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -96019,7 +127839,7 @@ const classtable_elt_t VFT_parser___ReduceAction135[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction135 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction286 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -96035,6 +127855,8 @@ const classtable_elt_t VFT_parser___ReduceAction135[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -96048,45 +127870,49 @@ const classtable_elt_t VFT_parser___ReduceAction135[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction135 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction135___action},
+  {(bigint) 0 /* 50: ReduceAction286 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction286___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction135 < ReduceAction135: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction286 < ReduceAction286: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction135::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction135(val_t p0){
+/* 2: Attribute ReduceAction286::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction286[] = "init var of ReduceAction286";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction135;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction286;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction135(void)
+val_t NEW_parser___ReduceAction286(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction135;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction286;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction135(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction286[] = "check new ReduceAction286";
+void CHECKNEW_parser___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_parser___ReduceAction135;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction286;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -96096,34 +127922,37 @@ void CHECKNEW_parser___ReduceAction135(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction135_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction286_parser___ReduceAction___init[] = "new ReduceAction286 parser::ReduceAction::init";
+val_t NEW_ReduceAction286_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction135_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction286_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction135();
-  INIT_ATTRIBUTES__parser___ReduceAction135(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction286();
+  INIT_ATTRIBUTES__parser___ReduceAction286(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction135(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction286(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction136[52] = {
-  {(bigint) 1883 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction287[55] = {
+  {(bigint) 2039 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction136" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction136 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction136 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1883 /* 5: ReduceAction136 < ReduceAction136: superclass typecheck marker */},
+  {(bigint) "ReduceAction287" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction287 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction287 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2039 /* 5: ReduceAction287 < ReduceAction287: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -96136,7 +127965,7 @@ const classtable_elt_t VFT_parser___ReduceAction136[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction136 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction287 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -96152,6 +127981,8 @@ const classtable_elt_t VFT_parser___ReduceAction136[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -96165,45 +127996,49 @@ const classtable_elt_t VFT_parser___ReduceAction136[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction136 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction136___action},
+  {(bigint) 0 /* 50: ReduceAction287 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction287___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction136 < ReduceAction136: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction287 < ReduceAction287: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction136::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction136(val_t p0){
+/* 2: Attribute ReduceAction287::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction287[] = "init var of ReduceAction287";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction136;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction287;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction136(void)
+val_t NEW_parser___ReduceAction287(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction136;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction287;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction136(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction287[] = "check new ReduceAction287";
+void CHECKNEW_parser___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_parser___ReduceAction136;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction287;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -96213,34 +128048,37 @@ void CHECKNEW_parser___ReduceAction136(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction136_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction287_parser___ReduceAction___init[] = "new ReduceAction287 parser::ReduceAction::init";
+val_t NEW_ReduceAction287_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction136_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction287_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction136();
-  INIT_ATTRIBUTES__parser___ReduceAction136(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction287();
+  INIT_ATTRIBUTES__parser___ReduceAction287(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction136(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction287(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction137[52] = {
-  {(bigint) 1879 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction288[55] = {
+  {(bigint) 2035 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction137" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction137 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction137 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1879 /* 5: ReduceAction137 < ReduceAction137: superclass typecheck marker */},
+  {(bigint) "ReduceAction288" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction288 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction288 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2035 /* 5: ReduceAction288 < ReduceAction288: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -96253,7 +128091,7 @@ const classtable_elt_t VFT_parser___ReduceAction137[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction137 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction288 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -96269,6 +128107,8 @@ const classtable_elt_t VFT_parser___ReduceAction137[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -96282,45 +128122,49 @@ const classtable_elt_t VFT_parser___ReduceAction137[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction137 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction137___action},
+  {(bigint) 0 /* 50: ReduceAction288 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction288___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction137 < ReduceAction137: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction288 < ReduceAction288: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction137::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction137(val_t p0){
+/* 2: Attribute ReduceAction288::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction288[] = "init var of ReduceAction288";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction137;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction288;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction137(void)
+val_t NEW_parser___ReduceAction288(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction137;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction288;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction137(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction288[] = "check new ReduceAction288";
+void CHECKNEW_parser___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_parser___ReduceAction137;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction288;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -96330,34 +128174,37 @@ void CHECKNEW_parser___ReduceAction137(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction137_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction288_parser___ReduceAction___init[] = "new ReduceAction288 parser::ReduceAction::init";
+val_t NEW_ReduceAction288_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction137_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction288_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction137();
-  INIT_ATTRIBUTES__parser___ReduceAction137(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction288();
+  INIT_ATTRIBUTES__parser___ReduceAction288(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction137(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction288(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction138[52] = {
-  {(bigint) 1875 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction289[55] = {
+  {(bigint) 2031 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction138" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction138 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction138 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1875 /* 5: ReduceAction138 < ReduceAction138: superclass typecheck marker */},
+  {(bigint) "ReduceAction289" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction289 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction289 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2031 /* 5: ReduceAction289 < ReduceAction289: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -96370,7 +128217,7 @@ const classtable_elt_t VFT_parser___ReduceAction138[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction138 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction289 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -96386,6 +128233,8 @@ const classtable_elt_t VFT_parser___ReduceAction138[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -96399,45 +128248,49 @@ const classtable_elt_t VFT_parser___ReduceAction138[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction138 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction138___action},
+  {(bigint) 0 /* 50: ReduceAction289 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction289___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction138 < ReduceAction138: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction289 < ReduceAction289: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction138::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction138(val_t p0){
+/* 2: Attribute ReduceAction289::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction289[] = "init var of ReduceAction289";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction138;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction289;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction138(void)
+val_t NEW_parser___ReduceAction289(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction138;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction289;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction138(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction289[] = "check new ReduceAction289";
+void CHECKNEW_parser___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_parser___ReduceAction138;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction289;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -96447,34 +128300,37 @@ void CHECKNEW_parser___ReduceAction138(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction138_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction289_parser___ReduceAction___init[] = "new ReduceAction289 parser::ReduceAction::init";
+val_t NEW_ReduceAction289_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction138_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction289_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction138();
-  INIT_ATTRIBUTES__parser___ReduceAction138(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction289();
+  INIT_ATTRIBUTES__parser___ReduceAction289(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction138(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction289(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction139[52] = {
-  {(bigint) 1871 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction290[55] = {
+  {(bigint) 2023 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction139" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction139 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction139 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1871 /* 5: ReduceAction139 < ReduceAction139: superclass typecheck marker */},
+  {(bigint) "ReduceAction290" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction290 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction290 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2023 /* 5: ReduceAction290 < ReduceAction290: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -96487,7 +128343,7 @@ const classtable_elt_t VFT_parser___ReduceAction139[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction139 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction290 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -96503,6 +128359,8 @@ const classtable_elt_t VFT_parser___ReduceAction139[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -96516,45 +128374,49 @@ const classtable_elt_t VFT_parser___ReduceAction139[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction139 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction139___action},
+  {(bigint) 0 /* 50: ReduceAction290 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction290___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction139 < ReduceAction139: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction290 < ReduceAction290: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction139::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction139(val_t p0){
+/* 2: Attribute ReduceAction290::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction290[] = "init var of ReduceAction290";
+void INIT_ATTRIBUTES__parser___ReduceAction290(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction139;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction290;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction139(void)
+val_t NEW_parser___ReduceAction290(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction139;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction290;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction139(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction290[] = "check new ReduceAction290";
+void CHECKNEW_parser___ReduceAction290(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction139;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction290;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -96564,34 +128426,37 @@ void CHECKNEW_parser___ReduceAction139(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction139_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction290_parser___ReduceAction___init[] = "new ReduceAction290 parser::ReduceAction::init";
+val_t NEW_ReduceAction290_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction139_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction290_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction139();
-  INIT_ATTRIBUTES__parser___ReduceAction139(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction290();
+  INIT_ATTRIBUTES__parser___ReduceAction290(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction139(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction290(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction140[52] = {
-  {(bigint) 1863 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction291[55] = {
+  {(bigint) 2019 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction140" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction140 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction140 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1863 /* 5: ReduceAction140 < ReduceAction140: superclass typecheck marker */},
+  {(bigint) "ReduceAction291" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction291 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction291 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2019 /* 5: ReduceAction291 < ReduceAction291: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -96604,7 +128469,7 @@ const classtable_elt_t VFT_parser___ReduceAction140[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction140 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction291 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -96620,6 +128485,8 @@ const classtable_elt_t VFT_parser___ReduceAction140[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -96633,45 +128500,49 @@ const classtable_elt_t VFT_parser___ReduceAction140[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction140 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction140___action},
+  {(bigint) 0 /* 50: ReduceAction291 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction291___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction140 < ReduceAction140: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction291 < ReduceAction291: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction140::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction140(val_t p0){
+/* 2: Attribute ReduceAction291::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction291[] = "init var of ReduceAction291";
+void INIT_ATTRIBUTES__parser___ReduceAction291(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction140;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction291;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction140(void)
+val_t NEW_parser___ReduceAction291(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction140;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction291;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction140(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction291[] = "check new ReduceAction291";
+void CHECKNEW_parser___ReduceAction291(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction140;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction291;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -96681,34 +128552,37 @@ void CHECKNEW_parser___ReduceAction140(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction140_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction291_parser___ReduceAction___init[] = "new ReduceAction291 parser::ReduceAction::init";
+val_t NEW_ReduceAction291_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction140_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction291_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction140();
-  INIT_ATTRIBUTES__parser___ReduceAction140(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction291();
+  INIT_ATTRIBUTES__parser___ReduceAction291(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction140(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction291(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction141[52] = {
-  {(bigint) 1859 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction292[55] = {
+  {(bigint) 2015 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction141" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction141 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction141 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1859 /* 5: ReduceAction141 < ReduceAction141: superclass typecheck marker */},
+  {(bigint) "ReduceAction292" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction292 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction292 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2015 /* 5: ReduceAction292 < ReduceAction292: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -96721,7 +128595,7 @@ const classtable_elt_t VFT_parser___ReduceAction141[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction141 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction292 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -96737,6 +128611,8 @@ const classtable_elt_t VFT_parser___ReduceAction141[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -96750,45 +128626,49 @@ const classtable_elt_t VFT_parser___ReduceAction141[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction141 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction141___action},
+  {(bigint) 0 /* 50: ReduceAction292 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction292___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction141 < ReduceAction141: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction292 < ReduceAction292: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction141::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction141(val_t p0){
+/* 2: Attribute ReduceAction292::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction292[] = "init var of ReduceAction292";
+void INIT_ATTRIBUTES__parser___ReduceAction292(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction141;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction292;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction141(void)
+val_t NEW_parser___ReduceAction292(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction141;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction292;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction141(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction292[] = "check new ReduceAction292";
+void CHECKNEW_parser___ReduceAction292(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction141;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction292;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -96798,34 +128678,37 @@ void CHECKNEW_parser___ReduceAction141(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction141_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction292_parser___ReduceAction___init[] = "new ReduceAction292 parser::ReduceAction::init";
+val_t NEW_ReduceAction292_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction141_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction292_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction141();
-  INIT_ATTRIBUTES__parser___ReduceAction141(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction292();
+  INIT_ATTRIBUTES__parser___ReduceAction292(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction141(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction292(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction142[52] = {
-  {(bigint) 1855 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction293[55] = {
+  {(bigint) 2011 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction142" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction142 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction142 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1855 /* 5: ReduceAction142 < ReduceAction142: superclass typecheck marker */},
+  {(bigint) "ReduceAction293" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction293 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction293 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2011 /* 5: ReduceAction293 < ReduceAction293: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -96838,7 +128721,7 @@ const classtable_elt_t VFT_parser___ReduceAction142[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction142 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction293 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -96854,6 +128737,8 @@ const classtable_elt_t VFT_parser___ReduceAction142[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -96867,45 +128752,49 @@ const classtable_elt_t VFT_parser___ReduceAction142[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction142 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction142___action},
+  {(bigint) 0 /* 50: ReduceAction293 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction293___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction142 < ReduceAction142: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction293 < ReduceAction293: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction142::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction142(val_t p0){
+/* 2: Attribute ReduceAction293::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction293[] = "init var of ReduceAction293";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction142;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction293;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction142(void)
+val_t NEW_parser___ReduceAction293(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction142;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction293;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction142(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction293[] = "check new ReduceAction293";
+void CHECKNEW_parser___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_parser___ReduceAction142;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction293;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -96915,34 +128804,37 @@ void CHECKNEW_parser___ReduceAction142(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction142_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction293_parser___ReduceAction___init[] = "new ReduceAction293 parser::ReduceAction::init";
+val_t NEW_ReduceAction293_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction142_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction293_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction142();
-  INIT_ATTRIBUTES__parser___ReduceAction142(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction293();
+  INIT_ATTRIBUTES__parser___ReduceAction293(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction142(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction293(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction143[52] = {
-  {(bigint) 1851 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction294[55] = {
+  {(bigint) 2007 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction143" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction143 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction143 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1851 /* 5: ReduceAction143 < ReduceAction143: superclass typecheck marker */},
+  {(bigint) "ReduceAction294" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction294 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction294 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2007 /* 5: ReduceAction294 < ReduceAction294: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -96955,7 +128847,7 @@ const classtable_elt_t VFT_parser___ReduceAction143[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction143 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction294 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -96971,6 +128863,8 @@ const classtable_elt_t VFT_parser___ReduceAction143[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -96984,45 +128878,49 @@ const classtable_elt_t VFT_parser___ReduceAction143[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction143 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction143___action},
+  {(bigint) 0 /* 50: ReduceAction294 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction294___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction143 < ReduceAction143: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction294 < ReduceAction294: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction143::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction143(val_t p0){
+/* 2: Attribute ReduceAction294::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction294[] = "init var of ReduceAction294";
+void INIT_ATTRIBUTES__parser___ReduceAction294(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction143;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction294;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction143(void)
+val_t NEW_parser___ReduceAction294(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction143;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction294;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction143(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction294[] = "check new ReduceAction294";
+void CHECKNEW_parser___ReduceAction294(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction143;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction294;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -97032,34 +128930,37 @@ void CHECKNEW_parser___ReduceAction143(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction143_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction294_parser___ReduceAction___init[] = "new ReduceAction294 parser::ReduceAction::init";
+val_t NEW_ReduceAction294_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction143_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction294_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction143();
-  INIT_ATTRIBUTES__parser___ReduceAction143(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction294();
+  INIT_ATTRIBUTES__parser___ReduceAction294(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction143(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction294(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction144[52] = {
-  {(bigint) 1847 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction295[55] = {
+  {(bigint) 2003 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction144" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction144 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction144 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1847 /* 5: ReduceAction144 < ReduceAction144: superclass typecheck marker */},
+  {(bigint) "ReduceAction295" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction295 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction295 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2003 /* 5: ReduceAction295 < ReduceAction295: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -97072,7 +128973,7 @@ const classtable_elt_t VFT_parser___ReduceAction144[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction144 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction295 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -97088,6 +128989,8 @@ const classtable_elt_t VFT_parser___ReduceAction144[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -97101,45 +129004,49 @@ const classtable_elt_t VFT_parser___ReduceAction144[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction144 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction144___action},
+  {(bigint) 0 /* 50: ReduceAction295 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction295___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction144 < ReduceAction144: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction295 < ReduceAction295: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction144::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction144(val_t p0){
+/* 2: Attribute ReduceAction295::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction295[] = "init var of ReduceAction295";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction144;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction295;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction144(void)
+val_t NEW_parser___ReduceAction295(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction144;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction295;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction144(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction295[] = "check new ReduceAction295";
+void CHECKNEW_parser___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_parser___ReduceAction144;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction295;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -97149,34 +129056,37 @@ void CHECKNEW_parser___ReduceAction144(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction144_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction295_parser___ReduceAction___init[] = "new ReduceAction295 parser::ReduceAction::init";
+val_t NEW_ReduceAction295_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction144_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction295_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction144();
-  INIT_ATTRIBUTES__parser___ReduceAction144(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction295();
+  INIT_ATTRIBUTES__parser___ReduceAction295(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction144(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction295(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction145[52] = {
-  {(bigint) 1843 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction296[55] = {
+  {(bigint) 1999 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction145" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction145 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction145 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1843 /* 5: ReduceAction145 < ReduceAction145: superclass typecheck marker */},
+  {(bigint) "ReduceAction296" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction296 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction296 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1999 /* 5: ReduceAction296 < ReduceAction296: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -97189,7 +129099,7 @@ const classtable_elt_t VFT_parser___ReduceAction145[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction145 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction296 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -97205,6 +129115,8 @@ const classtable_elt_t VFT_parser___ReduceAction145[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -97218,45 +129130,49 @@ const classtable_elt_t VFT_parser___ReduceAction145[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction145 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction145___action},
+  {(bigint) 0 /* 50: ReduceAction296 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction296___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction145 < ReduceAction145: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction296 < ReduceAction296: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction145::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction145(val_t p0){
+/* 2: Attribute ReduceAction296::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction296[] = "init var of ReduceAction296";
+void INIT_ATTRIBUTES__parser___ReduceAction296(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction145;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction296;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction145(void)
+val_t NEW_parser___ReduceAction296(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction145;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction296;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction145(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction296[] = "check new ReduceAction296";
+void CHECKNEW_parser___ReduceAction296(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction145;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction296;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -97266,34 +129182,37 @@ void CHECKNEW_parser___ReduceAction145(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction145_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction296_parser___ReduceAction___init[] = "new ReduceAction296 parser::ReduceAction::init";
+val_t NEW_ReduceAction296_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction145_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction296_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction145();
-  INIT_ATTRIBUTES__parser___ReduceAction145(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction296();
+  INIT_ATTRIBUTES__parser___ReduceAction296(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction145(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction296(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction146[52] = {
-  {(bigint) 1839 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction297[55] = {
+  {(bigint) 1995 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction146" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction146 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction146 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1839 /* 5: ReduceAction146 < ReduceAction146: superclass typecheck marker */},
+  {(bigint) "ReduceAction297" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction297 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction297 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1995 /* 5: ReduceAction297 < ReduceAction297: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -97306,7 +129225,7 @@ const classtable_elt_t VFT_parser___ReduceAction146[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction146 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction297 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -97322,6 +129241,8 @@ const classtable_elt_t VFT_parser___ReduceAction146[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -97335,45 +129256,49 @@ const classtable_elt_t VFT_parser___ReduceAction146[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction146 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction146___action},
+  {(bigint) 0 /* 50: ReduceAction297 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction297___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction146 < ReduceAction146: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction297 < ReduceAction297: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction146::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction146(val_t p0){
+/* 2: Attribute ReduceAction297::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction297[] = "init var of ReduceAction297";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction146;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction297;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction146(void)
+val_t NEW_parser___ReduceAction297(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction146;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction297;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction146(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction297[] = "check new ReduceAction297";
+void CHECKNEW_parser___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_parser___ReduceAction146;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction297;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -97383,34 +129308,37 @@ void CHECKNEW_parser___ReduceAction146(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction146_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction297_parser___ReduceAction___init[] = "new ReduceAction297 parser::ReduceAction::init";
+val_t NEW_ReduceAction297_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction146_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction297_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction146();
-  INIT_ATTRIBUTES__parser___ReduceAction146(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction297();
+  INIT_ATTRIBUTES__parser___ReduceAction297(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction146(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction297(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction147[52] = {
-  {(bigint) 1835 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction298[55] = {
+  {(bigint) 1991 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction147" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction147 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction147 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1835 /* 5: ReduceAction147 < ReduceAction147: superclass typecheck marker */},
+  {(bigint) "ReduceAction298" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction298 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction298 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1991 /* 5: ReduceAction298 < ReduceAction298: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -97423,7 +129351,7 @@ const classtable_elt_t VFT_parser___ReduceAction147[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction147 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction298 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -97439,6 +129367,8 @@ const classtable_elt_t VFT_parser___ReduceAction147[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -97452,45 +129382,49 @@ const classtable_elt_t VFT_parser___ReduceAction147[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction147 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction147___action},
+  {(bigint) 0 /* 50: ReduceAction298 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction298___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction147 < ReduceAction147: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction298 < ReduceAction298: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction147::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction147(val_t p0){
+/* 2: Attribute ReduceAction298::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction298[] = "init var of ReduceAction298";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction147;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction298;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction147(void)
+val_t NEW_parser___ReduceAction298(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction147;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction298;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction147(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction298[] = "check new ReduceAction298";
+void CHECKNEW_parser___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_parser___ReduceAction147;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction298;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -97500,34 +129434,37 @@ void CHECKNEW_parser___ReduceAction147(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction147_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction298_parser___ReduceAction___init[] = "new ReduceAction298 parser::ReduceAction::init";
+val_t NEW_ReduceAction298_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction147_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction298_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction147();
-  INIT_ATTRIBUTES__parser___ReduceAction147(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction298();
+  INIT_ATTRIBUTES__parser___ReduceAction298(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction147(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction298(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction148[52] = {
-  {(bigint) 1831 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction299[55] = {
+  {(bigint) 1987 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction148" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction148 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction148 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1831 /* 5: ReduceAction148 < ReduceAction148: superclass typecheck marker */},
+  {(bigint) "ReduceAction299" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction299 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction299 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1987 /* 5: ReduceAction299 < ReduceAction299: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -97540,7 +129477,7 @@ const classtable_elt_t VFT_parser___ReduceAction148[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction148 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction299 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -97556,6 +129493,8 @@ const classtable_elt_t VFT_parser___ReduceAction148[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -97569,45 +129508,49 @@ const classtable_elt_t VFT_parser___ReduceAction148[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction148 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction148___action},
+  {(bigint) 0 /* 50: ReduceAction299 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction299___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction148 < ReduceAction148: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction299 < ReduceAction299: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction148::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction148(val_t p0){
+/* 2: Attribute ReduceAction299::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction299[] = "init var of ReduceAction299";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction148;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction299;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction148(void)
+val_t NEW_parser___ReduceAction299(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction148;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction299;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction148(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction299[] = "check new ReduceAction299";
+void CHECKNEW_parser___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_parser___ReduceAction148;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction299;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -97617,34 +129560,37 @@ void CHECKNEW_parser___ReduceAction148(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction148_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction299_parser___ReduceAction___init[] = "new ReduceAction299 parser::ReduceAction::init";
+val_t NEW_ReduceAction299_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction148_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction299_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction148();
-  INIT_ATTRIBUTES__parser___ReduceAction148(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction299();
+  INIT_ATTRIBUTES__parser___ReduceAction299(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction148(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction299(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction149[52] = {
-  {(bigint) 1827 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction300[55] = {
+  {(bigint) 1975 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction149" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction149 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction149 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1827 /* 5: ReduceAction149 < ReduceAction149: superclass typecheck marker */},
+  {(bigint) "ReduceAction300" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction300 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction300 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1975 /* 5: ReduceAction300 < ReduceAction300: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -97657,7 +129603,7 @@ const classtable_elt_t VFT_parser___ReduceAction149[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction149 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction300 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -97673,6 +129619,8 @@ const classtable_elt_t VFT_parser___ReduceAction149[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -97686,45 +129634,49 @@ const classtable_elt_t VFT_parser___ReduceAction149[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction149 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction149___action},
+  {(bigint) 0 /* 50: ReduceAction300 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction300___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction149 < ReduceAction149: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction300 < ReduceAction300: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction149::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction149(val_t p0){
+/* 2: Attribute ReduceAction300::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction300[] = "init var of ReduceAction300";
+void INIT_ATTRIBUTES__parser___ReduceAction300(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction149;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction300;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction149(void)
+val_t NEW_parser___ReduceAction300(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction149;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction300;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction149(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction300[] = "check new ReduceAction300";
+void CHECKNEW_parser___ReduceAction300(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction149;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction300;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -97734,34 +129686,37 @@ void CHECKNEW_parser___ReduceAction149(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction149_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction300_parser___ReduceAction___init[] = "new ReduceAction300 parser::ReduceAction::init";
+val_t NEW_ReduceAction300_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction149_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction300_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction149();
-  INIT_ATTRIBUTES__parser___ReduceAction149(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction300();
+  INIT_ATTRIBUTES__parser___ReduceAction300(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction149(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction300(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction150[52] = {
-  {(bigint) 1819 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction301[55] = {
+  {(bigint) 1971 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction150" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction150 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction150 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1819 /* 5: ReduceAction150 < ReduceAction150: superclass typecheck marker */},
+  {(bigint) "ReduceAction301" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction301 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction301 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1971 /* 5: ReduceAction301 < ReduceAction301: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -97774,7 +129729,7 @@ const classtable_elt_t VFT_parser___ReduceAction150[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction150 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction301 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -97790,6 +129745,8 @@ const classtable_elt_t VFT_parser___ReduceAction150[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -97803,45 +129760,49 @@ const classtable_elt_t VFT_parser___ReduceAction150[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction150 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction150___action},
+  {(bigint) 0 /* 50: ReduceAction301 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction301___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction150 < ReduceAction150: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction301 < ReduceAction301: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction150::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction150(val_t p0){
+/* 2: Attribute ReduceAction301::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction301[] = "init var of ReduceAction301";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction150;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction301;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction150(void)
+val_t NEW_parser___ReduceAction301(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction150;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction301;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction150(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction301[] = "check new ReduceAction301";
+void CHECKNEW_parser___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_parser___ReduceAction150;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction301;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -97851,34 +129812,37 @@ void CHECKNEW_parser___ReduceAction150(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction150_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction301_parser___ReduceAction___init[] = "new ReduceAction301 parser::ReduceAction::init";
+val_t NEW_ReduceAction301_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction150_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction301_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction150();
-  INIT_ATTRIBUTES__parser___ReduceAction150(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction301();
+  INIT_ATTRIBUTES__parser___ReduceAction301(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction150(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction301(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction151[52] = {
-  {(bigint) 1815 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction302[55] = {
+  {(bigint) 1967 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction151" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction151 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction151 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1815 /* 5: ReduceAction151 < ReduceAction151: superclass typecheck marker */},
+  {(bigint) "ReduceAction302" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction302 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction302 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1967 /* 5: ReduceAction302 < ReduceAction302: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -97891,7 +129855,7 @@ const classtable_elt_t VFT_parser___ReduceAction151[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction151 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction302 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -97907,6 +129871,8 @@ const classtable_elt_t VFT_parser___ReduceAction151[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -97920,45 +129886,49 @@ const classtable_elt_t VFT_parser___ReduceAction151[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction151 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction151___action},
+  {(bigint) 0 /* 50: ReduceAction302 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction302___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction151 < ReduceAction151: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction302 < ReduceAction302: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction151::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction151(val_t p0){
+/* 2: Attribute ReduceAction302::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction302[] = "init var of ReduceAction302";
+void INIT_ATTRIBUTES__parser___ReduceAction302(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction151;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction302;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction151(void)
+val_t NEW_parser___ReduceAction302(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction151;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction302;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction151(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction302[] = "check new ReduceAction302";
+void CHECKNEW_parser___ReduceAction302(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction151;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction302;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -97968,34 +129938,37 @@ void CHECKNEW_parser___ReduceAction151(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction151_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction302_parser___ReduceAction___init[] = "new ReduceAction302 parser::ReduceAction::init";
+val_t NEW_ReduceAction302_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction151_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction302_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction151();
-  INIT_ATTRIBUTES__parser___ReduceAction151(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction302();
+  INIT_ATTRIBUTES__parser___ReduceAction302(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction151(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction302(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction152[52] = {
-  {(bigint) 1811 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction303[55] = {
+  {(bigint) 1963 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction152" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction152 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction152 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1811 /* 5: ReduceAction152 < ReduceAction152: superclass typecheck marker */},
+  {(bigint) "ReduceAction303" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction303 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction303 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1963 /* 5: ReduceAction303 < ReduceAction303: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -98008,7 +129981,7 @@ const classtable_elt_t VFT_parser___ReduceAction152[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction152 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction303 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -98024,6 +129997,8 @@ const classtable_elt_t VFT_parser___ReduceAction152[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -98037,45 +130012,49 @@ const classtable_elt_t VFT_parser___ReduceAction152[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction152 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction152___action},
+  {(bigint) 0 /* 50: ReduceAction303 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction303___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction152 < ReduceAction152: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction303 < ReduceAction303: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction152::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction152(val_t p0){
+/* 2: Attribute ReduceAction303::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction303[] = "init var of ReduceAction303";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction152;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction303;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction152(void)
+val_t NEW_parser___ReduceAction303(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction152;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction303;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction152(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction303[] = "check new ReduceAction303";
+void CHECKNEW_parser___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_parser___ReduceAction152;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction303;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -98085,34 +130064,37 @@ void CHECKNEW_parser___ReduceAction152(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction152_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction303_parser___ReduceAction___init[] = "new ReduceAction303 parser::ReduceAction::init";
+val_t NEW_ReduceAction303_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction152_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction303_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction152();
-  INIT_ATTRIBUTES__parser___ReduceAction152(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction303();
+  INIT_ATTRIBUTES__parser___ReduceAction303(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction152(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction303(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction153[52] = {
-  {(bigint) 1807 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction304[55] = {
+  {(bigint) 1959 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction153" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction153 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction153 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1807 /* 5: ReduceAction153 < ReduceAction153: superclass typecheck marker */},
+  {(bigint) "ReduceAction304" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction304 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction304 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1959 /* 5: ReduceAction304 < ReduceAction304: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -98125,7 +130107,7 @@ const classtable_elt_t VFT_parser___ReduceAction153[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction153 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction304 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -98141,6 +130123,8 @@ const classtable_elt_t VFT_parser___ReduceAction153[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -98154,45 +130138,49 @@ const classtable_elt_t VFT_parser___ReduceAction153[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction153 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction153___action},
+  {(bigint) 0 /* 50: ReduceAction304 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction304___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction153 < ReduceAction153: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction304 < ReduceAction304: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction153::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction153(val_t p0){
+/* 2: Attribute ReduceAction304::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction304[] = "init var of ReduceAction304";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction153;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction304;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction153(void)
+val_t NEW_parser___ReduceAction304(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction153;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction304;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction153(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction304[] = "check new ReduceAction304";
+void CHECKNEW_parser___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_parser___ReduceAction153;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction304;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -98202,34 +130190,37 @@ void CHECKNEW_parser___ReduceAction153(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction153_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction304_parser___ReduceAction___init[] = "new ReduceAction304 parser::ReduceAction::init";
+val_t NEW_ReduceAction304_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction153_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction304_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction153();
-  INIT_ATTRIBUTES__parser___ReduceAction153(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction304();
+  INIT_ATTRIBUTES__parser___ReduceAction304(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction153(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction304(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction154[52] = {
-  {(bigint) 1803 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction305[55] = {
+  {(bigint) 1955 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction154" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction154 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction154 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1803 /* 5: ReduceAction154 < ReduceAction154: superclass typecheck marker */},
+  {(bigint) "ReduceAction305" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction305 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction305 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1955 /* 5: ReduceAction305 < ReduceAction305: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -98242,7 +130233,7 @@ const classtable_elt_t VFT_parser___ReduceAction154[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction154 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction305 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -98258,6 +130249,8 @@ const classtable_elt_t VFT_parser___ReduceAction154[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -98271,45 +130264,49 @@ const classtable_elt_t VFT_parser___ReduceAction154[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction154 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction154___action},
+  {(bigint) 0 /* 50: ReduceAction305 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction305___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction154 < ReduceAction154: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction305 < ReduceAction305: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction154::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction154(val_t p0){
+/* 2: Attribute ReduceAction305::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction305[] = "init var of ReduceAction305";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction154;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction305;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction154(void)
+val_t NEW_parser___ReduceAction305(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction154;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction305;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction154(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction305[] = "check new ReduceAction305";
+void CHECKNEW_parser___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_parser___ReduceAction154;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction305;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -98319,34 +130316,37 @@ void CHECKNEW_parser___ReduceAction154(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction154_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction305_parser___ReduceAction___init[] = "new ReduceAction305 parser::ReduceAction::init";
+val_t NEW_ReduceAction305_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction154_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction305_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction154();
-  INIT_ATTRIBUTES__parser___ReduceAction154(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction305();
+  INIT_ATTRIBUTES__parser___ReduceAction305(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction154(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction305(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction155[52] = {
-  {(bigint) 1799 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction306[55] = {
+  {(bigint) 1951 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction155" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction155 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction155 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1799 /* 5: ReduceAction155 < ReduceAction155: superclass typecheck marker */},
+  {(bigint) "ReduceAction306" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction306 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction306 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1951 /* 5: ReduceAction306 < ReduceAction306: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -98359,7 +130359,7 @@ const classtable_elt_t VFT_parser___ReduceAction155[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction155 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction306 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -98375,6 +130375,8 @@ const classtable_elt_t VFT_parser___ReduceAction155[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -98388,45 +130390,49 @@ const classtable_elt_t VFT_parser___ReduceAction155[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction155 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction155___action},
+  {(bigint) 0 /* 50: ReduceAction306 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction306___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction155 < ReduceAction155: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction306 < ReduceAction306: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction155::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction155(val_t p0){
+/* 2: Attribute ReduceAction306::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction306[] = "init var of ReduceAction306";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction155;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction306;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction155(void)
+val_t NEW_parser___ReduceAction306(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction155;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction306;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction155(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction306[] = "check new ReduceAction306";
+void CHECKNEW_parser___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_parser___ReduceAction155;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction306;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -98436,34 +130442,37 @@ void CHECKNEW_parser___ReduceAction155(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction155_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction306_parser___ReduceAction___init[] = "new ReduceAction306 parser::ReduceAction::init";
+val_t NEW_ReduceAction306_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction155_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction306_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction155();
-  INIT_ATTRIBUTES__parser___ReduceAction155(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction306();
+  INIT_ATTRIBUTES__parser___ReduceAction306(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction155(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction306(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction156[52] = {
-  {(bigint) 1795 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction307[55] = {
+  {(bigint) 1947 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction156" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction156 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction156 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1795 /* 5: ReduceAction156 < ReduceAction156: superclass typecheck marker */},
+  {(bigint) "ReduceAction307" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction307 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction307 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1947 /* 5: ReduceAction307 < ReduceAction307: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -98476,7 +130485,7 @@ const classtable_elt_t VFT_parser___ReduceAction156[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction156 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction307 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -98492,6 +130501,8 @@ const classtable_elt_t VFT_parser___ReduceAction156[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -98505,45 +130516,49 @@ const classtable_elt_t VFT_parser___ReduceAction156[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction156 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction156___action},
+  {(bigint) 0 /* 50: ReduceAction307 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction307___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction156 < ReduceAction156: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction307 < ReduceAction307: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction156::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction156(val_t p0){
+/* 2: Attribute ReduceAction307::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction307[] = "init var of ReduceAction307";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction156;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction307;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction156(void)
+val_t NEW_parser___ReduceAction307(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction156;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction307;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction156(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction307[] = "check new ReduceAction307";
+void CHECKNEW_parser___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_parser___ReduceAction156;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction307;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -98553,34 +130568,37 @@ void CHECKNEW_parser___ReduceAction156(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction156_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction307_parser___ReduceAction___init[] = "new ReduceAction307 parser::ReduceAction::init";
+val_t NEW_ReduceAction307_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction156_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction307_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction156();
-  INIT_ATTRIBUTES__parser___ReduceAction156(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction307();
+  INIT_ATTRIBUTES__parser___ReduceAction307(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction156(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction307(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction157[52] = {
-  {(bigint) 1791 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction308[55] = {
+  {(bigint) 1943 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction157" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction157 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction157 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1791 /* 5: ReduceAction157 < ReduceAction157: superclass typecheck marker */},
+  {(bigint) "ReduceAction308" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction308 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction308 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1943 /* 5: ReduceAction308 < ReduceAction308: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -98593,7 +130611,7 @@ const classtable_elt_t VFT_parser___ReduceAction157[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction157 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction308 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -98609,6 +130627,8 @@ const classtable_elt_t VFT_parser___ReduceAction157[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -98622,45 +130642,49 @@ const classtable_elt_t VFT_parser___ReduceAction157[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction157 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction157___action},
+  {(bigint) 0 /* 50: ReduceAction308 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction308___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction157 < ReduceAction157: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction308 < ReduceAction308: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction157::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction157(val_t p0){
+/* 2: Attribute ReduceAction308::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction308[] = "init var of ReduceAction308";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction157;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction308;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction157(void)
+val_t NEW_parser___ReduceAction308(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction157;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction308;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction157(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction308[] = "check new ReduceAction308";
+void CHECKNEW_parser___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_parser___ReduceAction157;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction308;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -98670,34 +130694,37 @@ void CHECKNEW_parser___ReduceAction157(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction157_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction308_parser___ReduceAction___init[] = "new ReduceAction308 parser::ReduceAction::init";
+val_t NEW_ReduceAction308_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction157_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction308_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction157();
-  INIT_ATTRIBUTES__parser___ReduceAction157(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction308();
+  INIT_ATTRIBUTES__parser___ReduceAction308(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction157(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction308(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction158[52] = {
-  {(bigint) 1787 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction309[55] = {
+  {(bigint) 1939 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction158" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction158 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction158 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1787 /* 5: ReduceAction158 < ReduceAction158: superclass typecheck marker */},
+  {(bigint) "ReduceAction309" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction309 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction309 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1939 /* 5: ReduceAction309 < ReduceAction309: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -98710,7 +130737,7 @@ const classtable_elt_t VFT_parser___ReduceAction158[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction158 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction309 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -98726,6 +130753,8 @@ const classtable_elt_t VFT_parser___ReduceAction158[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -98739,45 +130768,49 @@ const classtable_elt_t VFT_parser___ReduceAction158[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction158 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction158___action},
+  {(bigint) 0 /* 50: ReduceAction309 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction309___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction158 < ReduceAction158: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction309 < ReduceAction309: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction158::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction158(val_t p0){
+/* 2: Attribute ReduceAction309::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction309[] = "init var of ReduceAction309";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction158;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction309;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction158(void)
+val_t NEW_parser___ReduceAction309(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction158;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction309;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction158(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction309[] = "check new ReduceAction309";
+void CHECKNEW_parser___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_parser___ReduceAction158;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction309;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -98787,34 +130820,37 @@ void CHECKNEW_parser___ReduceAction158(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction158_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction309_parser___ReduceAction___init[] = "new ReduceAction309 parser::ReduceAction::init";
+val_t NEW_ReduceAction309_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction158_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction309_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction158();
-  INIT_ATTRIBUTES__parser___ReduceAction158(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction309();
+  INIT_ATTRIBUTES__parser___ReduceAction309(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction158(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction309(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction159[52] = {
-  {(bigint) 1783 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction310[55] = {
+  {(bigint) 1931 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction159" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction159 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction159 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1783 /* 5: ReduceAction159 < ReduceAction159: superclass typecheck marker */},
+  {(bigint) "ReduceAction310" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction310 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction310 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1931 /* 5: ReduceAction310 < ReduceAction310: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -98827,7 +130863,7 @@ const classtable_elt_t VFT_parser___ReduceAction159[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction159 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction310 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -98843,6 +130879,8 @@ const classtable_elt_t VFT_parser___ReduceAction159[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -98856,45 +130894,49 @@ const classtable_elt_t VFT_parser___ReduceAction159[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction159 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction159___action},
+  {(bigint) 0 /* 50: ReduceAction310 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction310___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction159 < ReduceAction159: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction310 < ReduceAction310: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction159::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction159(val_t p0){
+/* 2: Attribute ReduceAction310::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction310[] = "init var of ReduceAction310";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction159;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction310;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction159(void)
+val_t NEW_parser___ReduceAction310(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction159;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction310;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction159(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction310[] = "check new ReduceAction310";
+void CHECKNEW_parser___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_parser___ReduceAction159;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction310;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -98904,34 +130946,37 @@ void CHECKNEW_parser___ReduceAction159(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction159_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction310_parser___ReduceAction___init[] = "new ReduceAction310 parser::ReduceAction::init";
+val_t NEW_ReduceAction310_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction159_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction310_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction159();
-  INIT_ATTRIBUTES__parser___ReduceAction159(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction310();
+  INIT_ATTRIBUTES__parser___ReduceAction310(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction159(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction310(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction160[52] = {
-  {(bigint) 1775 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction311[55] = {
+  {(bigint) 1927 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction160" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction160 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction160 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1775 /* 5: ReduceAction160 < ReduceAction160: superclass typecheck marker */},
+  {(bigint) "ReduceAction311" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction311 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction311 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1927 /* 5: ReduceAction311 < ReduceAction311: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -98944,7 +130989,7 @@ const classtable_elt_t VFT_parser___ReduceAction160[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction160 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction311 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -98960,6 +131005,8 @@ const classtable_elt_t VFT_parser___ReduceAction160[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -98973,45 +131020,49 @@ const classtable_elt_t VFT_parser___ReduceAction160[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction160 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction160___action},
+  {(bigint) 0 /* 50: ReduceAction311 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction311___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction160 < ReduceAction160: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction311 < ReduceAction311: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction160::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction160(val_t p0){
+/* 2: Attribute ReduceAction311::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction311[] = "init var of ReduceAction311";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction160;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction311;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction160(void)
+val_t NEW_parser___ReduceAction311(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction160;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction311;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction160(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction311[] = "check new ReduceAction311";
+void CHECKNEW_parser___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_parser___ReduceAction160;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction311;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -99021,34 +131072,37 @@ void CHECKNEW_parser___ReduceAction160(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction160_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction311_parser___ReduceAction___init[] = "new ReduceAction311 parser::ReduceAction::init";
+val_t NEW_ReduceAction311_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction160_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction311_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction160();
-  INIT_ATTRIBUTES__parser___ReduceAction160(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction311();
+  INIT_ATTRIBUTES__parser___ReduceAction311(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction160(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction311(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction161[52] = {
-  {(bigint) 1771 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction312[55] = {
+  {(bigint) 1923 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction161" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction161 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction161 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1771 /* 5: ReduceAction161 < ReduceAction161: superclass typecheck marker */},
+  {(bigint) "ReduceAction312" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction312 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction312 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1923 /* 5: ReduceAction312 < ReduceAction312: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -99061,7 +131115,7 @@ const classtable_elt_t VFT_parser___ReduceAction161[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction161 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction312 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -99077,6 +131131,8 @@ const classtable_elt_t VFT_parser___ReduceAction161[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -99090,45 +131146,49 @@ const classtable_elt_t VFT_parser___ReduceAction161[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction161 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction161___action},
+  {(bigint) 0 /* 50: ReduceAction312 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction312___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction161 < ReduceAction161: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction312 < ReduceAction312: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction161::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction161(val_t p0){
+/* 2: Attribute ReduceAction312::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction312[] = "init var of ReduceAction312";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction161;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction312;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction161(void)
+val_t NEW_parser___ReduceAction312(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction161;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction312;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction161(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction312[] = "check new ReduceAction312";
+void CHECKNEW_parser___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_parser___ReduceAction161;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction312;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -99138,34 +131198,37 @@ void CHECKNEW_parser___ReduceAction161(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction161_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction312_parser___ReduceAction___init[] = "new ReduceAction312 parser::ReduceAction::init";
+val_t NEW_ReduceAction312_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction161_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction312_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction161();
-  INIT_ATTRIBUTES__parser___ReduceAction161(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction312();
+  INIT_ATTRIBUTES__parser___ReduceAction312(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction161(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction312(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction162[52] = {
-  {(bigint) 1767 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction313[55] = {
+  {(bigint) 1919 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction162" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction162 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction162 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1767 /* 5: ReduceAction162 < ReduceAction162: superclass typecheck marker */},
+  {(bigint) "ReduceAction313" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction313 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction313 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1919 /* 5: ReduceAction313 < ReduceAction313: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -99178,7 +131241,7 @@ const classtable_elt_t VFT_parser___ReduceAction162[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction162 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction313 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -99194,6 +131257,8 @@ const classtable_elt_t VFT_parser___ReduceAction162[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -99207,45 +131272,49 @@ const classtable_elt_t VFT_parser___ReduceAction162[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction162 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction162___action},
+  {(bigint) 0 /* 50: ReduceAction313 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction313___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction162 < ReduceAction162: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction313 < ReduceAction313: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction162::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction162(val_t p0){
+/* 2: Attribute ReduceAction313::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction313[] = "init var of ReduceAction313";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction162;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction313;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction162(void)
+val_t NEW_parser___ReduceAction313(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction162;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction313;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction162(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction313[] = "check new ReduceAction313";
+void CHECKNEW_parser___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_parser___ReduceAction162;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction313;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -99255,34 +131324,37 @@ void CHECKNEW_parser___ReduceAction162(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction162_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction313_parser___ReduceAction___init[] = "new ReduceAction313 parser::ReduceAction::init";
+val_t NEW_ReduceAction313_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction162_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction313_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction162();
-  INIT_ATTRIBUTES__parser___ReduceAction162(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction313();
+  INIT_ATTRIBUTES__parser___ReduceAction313(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction162(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction313(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction163[52] = {
-  {(bigint) 1763 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction314[55] = {
+  {(bigint) 1915 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction163" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction163 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction163 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1763 /* 5: ReduceAction163 < ReduceAction163: superclass typecheck marker */},
+  {(bigint) "ReduceAction314" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction314 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction314 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1915 /* 5: ReduceAction314 < ReduceAction314: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -99295,7 +131367,7 @@ const classtable_elt_t VFT_parser___ReduceAction163[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction163 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction314 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -99311,6 +131383,8 @@ const classtable_elt_t VFT_parser___ReduceAction163[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -99324,45 +131398,49 @@ const classtable_elt_t VFT_parser___ReduceAction163[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction163 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction163___action},
+  {(bigint) 0 /* 50: ReduceAction314 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction314___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction163 < ReduceAction163: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction314 < ReduceAction314: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction163::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction163(val_t p0){
+/* 2: Attribute ReduceAction314::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction314[] = "init var of ReduceAction314";
+void INIT_ATTRIBUTES__parser___ReduceAction314(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction163;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction314;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction163(void)
+val_t NEW_parser___ReduceAction314(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction163;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction314;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction163(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction314[] = "check new ReduceAction314";
+void CHECKNEW_parser___ReduceAction314(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction163;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction314;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -99372,34 +131450,37 @@ void CHECKNEW_parser___ReduceAction163(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction163_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction314_parser___ReduceAction___init[] = "new ReduceAction314 parser::ReduceAction::init";
+val_t NEW_ReduceAction314_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction163_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction314_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction163();
-  INIT_ATTRIBUTES__parser___ReduceAction163(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction314();
+  INIT_ATTRIBUTES__parser___ReduceAction314(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction163(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction314(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction164[52] = {
-  {(bigint) 1759 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction315[55] = {
+  {(bigint) 1911 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction164" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction164 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction164 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1759 /* 5: ReduceAction164 < ReduceAction164: superclass typecheck marker */},
+  {(bigint) "ReduceAction315" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction315 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction315 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1911 /* 5: ReduceAction315 < ReduceAction315: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -99412,7 +131493,7 @@ const classtable_elt_t VFT_parser___ReduceAction164[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction164 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction315 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -99428,6 +131509,8 @@ const classtable_elt_t VFT_parser___ReduceAction164[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -99441,45 +131524,49 @@ const classtable_elt_t VFT_parser___ReduceAction164[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction164 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction164___action},
+  {(bigint) 0 /* 50: ReduceAction315 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction315___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction164 < ReduceAction164: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction315 < ReduceAction315: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction164::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction164(val_t p0){
+/* 2: Attribute ReduceAction315::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction315[] = "init var of ReduceAction315";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction164;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction315;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction164(void)
+val_t NEW_parser___ReduceAction315(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction164;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction315;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction164(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction315[] = "check new ReduceAction315";
+void CHECKNEW_parser___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_parser___ReduceAction164;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction315;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -99489,34 +131576,37 @@ void CHECKNEW_parser___ReduceAction164(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction164_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction315_parser___ReduceAction___init[] = "new ReduceAction315 parser::ReduceAction::init";
+val_t NEW_ReduceAction315_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction164_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction315_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction164();
-  INIT_ATTRIBUTES__parser___ReduceAction164(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction315();
+  INIT_ATTRIBUTES__parser___ReduceAction315(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction164(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction315(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction165[52] = {
-  {(bigint) 1755 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction316[55] = {
+  {(bigint) 1907 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction165" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction165 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction165 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1755 /* 5: ReduceAction165 < ReduceAction165: superclass typecheck marker */},
+  {(bigint) "ReduceAction316" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction316 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction316 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1907 /* 5: ReduceAction316 < ReduceAction316: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -99529,7 +131619,7 @@ const classtable_elt_t VFT_parser___ReduceAction165[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction165 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction316 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -99545,6 +131635,8 @@ const classtable_elt_t VFT_parser___ReduceAction165[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -99558,45 +131650,49 @@ const classtable_elt_t VFT_parser___ReduceAction165[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction165 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction165___action},
+  {(bigint) 0 /* 50: ReduceAction316 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction316___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction165 < ReduceAction165: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction316 < ReduceAction316: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction165::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction165(val_t p0){
+/* 2: Attribute ReduceAction316::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction316[] = "init var of ReduceAction316";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction165;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction316;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction165(void)
+val_t NEW_parser___ReduceAction316(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction165;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction316;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction165(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction316[] = "check new ReduceAction316";
+void CHECKNEW_parser___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_parser___ReduceAction165;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction316;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -99606,34 +131702,37 @@ void CHECKNEW_parser___ReduceAction165(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction165_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction316_parser___ReduceAction___init[] = "new ReduceAction316 parser::ReduceAction::init";
+val_t NEW_ReduceAction316_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction165_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction316_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction165();
-  INIT_ATTRIBUTES__parser___ReduceAction165(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction316();
+  INIT_ATTRIBUTES__parser___ReduceAction316(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction165(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction316(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction166[52] = {
-  {(bigint) 1751 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction317[55] = {
+  {(bigint) 1903 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction166" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction166 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction166 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1751 /* 5: ReduceAction166 < ReduceAction166: superclass typecheck marker */},
+  {(bigint) "ReduceAction317" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction317 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction317 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1903 /* 5: ReduceAction317 < ReduceAction317: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -99646,7 +131745,7 @@ const classtable_elt_t VFT_parser___ReduceAction166[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction166 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction317 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -99662,6 +131761,8 @@ const classtable_elt_t VFT_parser___ReduceAction166[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -99675,45 +131776,49 @@ const classtable_elt_t VFT_parser___ReduceAction166[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction166 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction166___action},
+  {(bigint) 0 /* 50: ReduceAction317 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction317___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction166 < ReduceAction166: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction317 < ReduceAction317: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction166::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction166(val_t p0){
+/* 2: Attribute ReduceAction317::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction317[] = "init var of ReduceAction317";
+void INIT_ATTRIBUTES__parser___ReduceAction317(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction166;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction317;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction166(void)
+val_t NEW_parser___ReduceAction317(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction166;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction317;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction166(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction317[] = "check new ReduceAction317";
+void CHECKNEW_parser___ReduceAction317(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction166;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction317;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -99723,34 +131828,37 @@ void CHECKNEW_parser___ReduceAction166(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction166_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction317_parser___ReduceAction___init[] = "new ReduceAction317 parser::ReduceAction::init";
+val_t NEW_ReduceAction317_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction166_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction317_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction166();
-  INIT_ATTRIBUTES__parser___ReduceAction166(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction317();
+  INIT_ATTRIBUTES__parser___ReduceAction317(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction166(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction317(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction167[52] = {
-  {(bigint) 1747 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction318[55] = {
+  {(bigint) 1899 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction167" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction167 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction167 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1747 /* 5: ReduceAction167 < ReduceAction167: superclass typecheck marker */},
+  {(bigint) "ReduceAction318" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction318 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction318 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1899 /* 5: ReduceAction318 < ReduceAction318: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -99763,7 +131871,7 @@ const classtable_elt_t VFT_parser___ReduceAction167[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction167 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction318 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -99779,6 +131887,8 @@ const classtable_elt_t VFT_parser___ReduceAction167[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -99792,45 +131902,49 @@ const classtable_elt_t VFT_parser___ReduceAction167[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction167 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction167___action},
+  {(bigint) 0 /* 50: ReduceAction318 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction318___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction167 < ReduceAction167: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction318 < ReduceAction318: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction167::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction167(val_t p0){
+/* 2: Attribute ReduceAction318::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction318[] = "init var of ReduceAction318";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction167;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction318;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction167(void)
+val_t NEW_parser___ReduceAction318(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction167;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction318;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction167(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction318[] = "check new ReduceAction318";
+void CHECKNEW_parser___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_parser___ReduceAction167;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction318;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -99840,34 +131954,37 @@ void CHECKNEW_parser___ReduceAction167(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction167_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction318_parser___ReduceAction___init[] = "new ReduceAction318 parser::ReduceAction::init";
+val_t NEW_ReduceAction318_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction167_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction318_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction167();
-  INIT_ATTRIBUTES__parser___ReduceAction167(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction318();
+  INIT_ATTRIBUTES__parser___ReduceAction318(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction167(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction318(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction168[52] = {
-  {(bigint) 1743 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction319[55] = {
+  {(bigint) 1895 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction168" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction168 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction168 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1743 /* 5: ReduceAction168 < ReduceAction168: superclass typecheck marker */},
+  {(bigint) "ReduceAction319" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction319 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction319 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1895 /* 5: ReduceAction319 < ReduceAction319: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -99880,7 +131997,7 @@ const classtable_elt_t VFT_parser___ReduceAction168[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction168 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction319 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -99896,6 +132013,8 @@ const classtable_elt_t VFT_parser___ReduceAction168[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -99909,45 +132028,49 @@ const classtable_elt_t VFT_parser___ReduceAction168[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction168 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction168___action},
+  {(bigint) 0 /* 50: ReduceAction319 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction319___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction168 < ReduceAction168: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction319 < ReduceAction319: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction168::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction168(val_t p0){
+/* 2: Attribute ReduceAction319::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction319[] = "init var of ReduceAction319";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction168;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction319;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction168(void)
+val_t NEW_parser___ReduceAction319(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction168;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction319;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction168(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction319[] = "check new ReduceAction319";
+void CHECKNEW_parser___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_parser___ReduceAction168;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction319;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -99957,34 +132080,37 @@ void CHECKNEW_parser___ReduceAction168(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction168_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction319_parser___ReduceAction___init[] = "new ReduceAction319 parser::ReduceAction::init";
+val_t NEW_ReduceAction319_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction168_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction319_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction168();
-  INIT_ATTRIBUTES__parser___ReduceAction168(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction319();
+  INIT_ATTRIBUTES__parser___ReduceAction319(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction168(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction319(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction169[52] = {
-  {(bigint) 1739 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction320[55] = {
+  {(bigint) 1887 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction169" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction169 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction169 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1739 /* 5: ReduceAction169 < ReduceAction169: superclass typecheck marker */},
+  {(bigint) "ReduceAction320" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction320 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction320 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1887 /* 5: ReduceAction320 < ReduceAction320: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -99997,7 +132123,7 @@ const classtable_elt_t VFT_parser___ReduceAction169[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction169 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction320 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -100013,6 +132139,8 @@ const classtable_elt_t VFT_parser___ReduceAction169[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -100026,45 +132154,49 @@ const classtable_elt_t VFT_parser___ReduceAction169[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction169 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction169___action},
+  {(bigint) 0 /* 50: ReduceAction320 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction320___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction169 < ReduceAction169: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction320 < ReduceAction320: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction169::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction169(val_t p0){
+/* 2: Attribute ReduceAction320::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction320[] = "init var of ReduceAction320";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction169;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction320;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction169(void)
+val_t NEW_parser___ReduceAction320(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction169;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction320;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction169(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction320[] = "check new ReduceAction320";
+void CHECKNEW_parser___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_parser___ReduceAction169;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction320;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -100074,34 +132206,37 @@ void CHECKNEW_parser___ReduceAction169(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction169_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction320_parser___ReduceAction___init[] = "new ReduceAction320 parser::ReduceAction::init";
+val_t NEW_ReduceAction320_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction169_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction320_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction169();
-  INIT_ATTRIBUTES__parser___ReduceAction169(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction320();
+  INIT_ATTRIBUTES__parser___ReduceAction320(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction169(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction320(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction170[52] = {
-  {(bigint) 1731 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction321[55] = {
+  {(bigint) 1883 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction170" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction170 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction170 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1731 /* 5: ReduceAction170 < ReduceAction170: superclass typecheck marker */},
+  {(bigint) "ReduceAction321" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction321 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction321 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1883 /* 5: ReduceAction321 < ReduceAction321: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -100114,7 +132249,7 @@ const classtable_elt_t VFT_parser___ReduceAction170[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction170 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction321 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -100130,6 +132265,8 @@ const classtable_elt_t VFT_parser___ReduceAction170[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -100143,45 +132280,49 @@ const classtable_elt_t VFT_parser___ReduceAction170[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction170 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction170___action},
+  {(bigint) 0 /* 50: ReduceAction321 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction321___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction170 < ReduceAction170: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction321 < ReduceAction321: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction170::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction170(val_t p0){
+/* 2: Attribute ReduceAction321::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction321[] = "init var of ReduceAction321";
+void INIT_ATTRIBUTES__parser___ReduceAction321(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction170;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction321;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction170(void)
+val_t NEW_parser___ReduceAction321(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction170;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction321;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction170(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction321[] = "check new ReduceAction321";
+void CHECKNEW_parser___ReduceAction321(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction170;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction321;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -100191,34 +132332,37 @@ void CHECKNEW_parser___ReduceAction170(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction170_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction321_parser___ReduceAction___init[] = "new ReduceAction321 parser::ReduceAction::init";
+val_t NEW_ReduceAction321_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction170_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction321_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction170();
-  INIT_ATTRIBUTES__parser___ReduceAction170(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction321();
+  INIT_ATTRIBUTES__parser___ReduceAction321(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction170(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction321(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction171[52] = {
-  {(bigint) 1727 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction322[55] = {
+  {(bigint) 1879 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction171" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction171 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction171 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1727 /* 5: ReduceAction171 < ReduceAction171: superclass typecheck marker */},
+  {(bigint) "ReduceAction322" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction322 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction322 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1879 /* 5: ReduceAction322 < ReduceAction322: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -100231,7 +132375,7 @@ const classtable_elt_t VFT_parser___ReduceAction171[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction171 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction322 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -100247,6 +132391,8 @@ const classtable_elt_t VFT_parser___ReduceAction171[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -100260,45 +132406,49 @@ const classtable_elt_t VFT_parser___ReduceAction171[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction171 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction171___action},
+  {(bigint) 0 /* 50: ReduceAction322 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction322___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction171 < ReduceAction171: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction322 < ReduceAction322: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction171::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction171(val_t p0){
+/* 2: Attribute ReduceAction322::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction322[] = "init var of ReduceAction322";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction171;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction322;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction171(void)
+val_t NEW_parser___ReduceAction322(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction171;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction322;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction171(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction322[] = "check new ReduceAction322";
+void CHECKNEW_parser___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_parser___ReduceAction171;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction322;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -100308,34 +132458,37 @@ void CHECKNEW_parser___ReduceAction171(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction171_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction322_parser___ReduceAction___init[] = "new ReduceAction322 parser::ReduceAction::init";
+val_t NEW_ReduceAction322_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction171_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction322_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction171();
-  INIT_ATTRIBUTES__parser___ReduceAction171(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction322();
+  INIT_ATTRIBUTES__parser___ReduceAction322(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction171(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction322(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction172[52] = {
-  {(bigint) 1723 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction324[55] = {
+  {(bigint) 1875 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction172" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction172 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction172 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1723 /* 5: ReduceAction172 < ReduceAction172: superclass typecheck marker */},
+  {(bigint) "ReduceAction324" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction324 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction324 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1875 /* 5: ReduceAction324 < ReduceAction324: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -100348,7 +132501,7 @@ const classtable_elt_t VFT_parser___ReduceAction172[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction172 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction324 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -100364,6 +132517,8 @@ const classtable_elt_t VFT_parser___ReduceAction172[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -100377,45 +132532,49 @@ const classtable_elt_t VFT_parser___ReduceAction172[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction172 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction172___action},
+  {(bigint) 0 /* 50: ReduceAction324 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction324___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction172 < ReduceAction172: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction324 < ReduceAction324: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction172::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction172(val_t p0){
+/* 2: Attribute ReduceAction324::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction324[] = "init var of ReduceAction324";
+void INIT_ATTRIBUTES__parser___ReduceAction324(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction172;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction324;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction172(void)
+val_t NEW_parser___ReduceAction324(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction172;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction324;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction172(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction324[] = "check new ReduceAction324";
+void CHECKNEW_parser___ReduceAction324(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction172;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction324;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -100425,34 +132584,37 @@ void CHECKNEW_parser___ReduceAction172(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction172_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction324_parser___ReduceAction___init[] = "new ReduceAction324 parser::ReduceAction::init";
+val_t NEW_ReduceAction324_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction172_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction324_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction172();
-  INIT_ATTRIBUTES__parser___ReduceAction172(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction324();
+  INIT_ATTRIBUTES__parser___ReduceAction324(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction172(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction324(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction173[52] = {
-  {(bigint) 1719 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction325[55] = {
+  {(bigint) 1871 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction173" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction173 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction173 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1719 /* 5: ReduceAction173 < ReduceAction173: superclass typecheck marker */},
+  {(bigint) "ReduceAction325" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction325 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction325 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1871 /* 5: ReduceAction325 < ReduceAction325: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -100465,7 +132627,7 @@ const classtable_elt_t VFT_parser___ReduceAction173[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction173 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction325 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -100481,6 +132643,8 @@ const classtable_elt_t VFT_parser___ReduceAction173[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -100494,45 +132658,49 @@ const classtable_elt_t VFT_parser___ReduceAction173[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction173 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction173___action},
+  {(bigint) 0 /* 50: ReduceAction325 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction325___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction173 < ReduceAction173: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction325 < ReduceAction325: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction173::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction173(val_t p0){
+/* 2: Attribute ReduceAction325::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction325[] = "init var of ReduceAction325";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction173;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction325;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction173(void)
+val_t NEW_parser___ReduceAction325(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction173;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction325;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction173(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction325[] = "check new ReduceAction325";
+void CHECKNEW_parser___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_parser___ReduceAction173;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction325;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -100542,34 +132710,37 @@ void CHECKNEW_parser___ReduceAction173(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction173_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction325_parser___ReduceAction___init[] = "new ReduceAction325 parser::ReduceAction::init";
+val_t NEW_ReduceAction325_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction173_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction325_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction173();
-  INIT_ATTRIBUTES__parser___ReduceAction173(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction325();
+  INIT_ATTRIBUTES__parser___ReduceAction325(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction173(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction325(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction174[52] = {
-  {(bigint) 1715 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction326[55] = {
+  {(bigint) 1867 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction174" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction174 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction174 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1715 /* 5: ReduceAction174 < ReduceAction174: superclass typecheck marker */},
+  {(bigint) "ReduceAction326" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction326 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction326 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1867 /* 5: ReduceAction326 < ReduceAction326: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -100582,7 +132753,7 @@ const classtable_elt_t VFT_parser___ReduceAction174[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction174 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction326 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -100598,6 +132769,8 @@ const classtable_elt_t VFT_parser___ReduceAction174[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -100611,45 +132784,49 @@ const classtable_elt_t VFT_parser___ReduceAction174[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction174 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction174___action},
+  {(bigint) 0 /* 50: ReduceAction326 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction326___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction174 < ReduceAction174: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction326 < ReduceAction326: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction174::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction174(val_t p0){
+/* 2: Attribute ReduceAction326::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction326[] = "init var of ReduceAction326";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction174;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction326;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction174(void)
+val_t NEW_parser___ReduceAction326(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction174;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction326;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction174(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction326[] = "check new ReduceAction326";
+void CHECKNEW_parser___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_parser___ReduceAction174;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction326;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -100659,34 +132836,37 @@ void CHECKNEW_parser___ReduceAction174(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction174_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction326_parser___ReduceAction___init[] = "new ReduceAction326 parser::ReduceAction::init";
+val_t NEW_ReduceAction326_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction174_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction326_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction174();
-  INIT_ATTRIBUTES__parser___ReduceAction174(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction326();
+  INIT_ATTRIBUTES__parser___ReduceAction326(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction174(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction326(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction175[52] = {
-  {(bigint) 1711 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction327[55] = {
+  {(bigint) 1863 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction175" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction175 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction175 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1711 /* 5: ReduceAction175 < ReduceAction175: superclass typecheck marker */},
+  {(bigint) "ReduceAction327" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction327 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction327 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1863 /* 5: ReduceAction327 < ReduceAction327: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -100699,7 +132879,7 @@ const classtable_elt_t VFT_parser___ReduceAction175[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction175 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction327 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -100715,6 +132895,8 @@ const classtable_elt_t VFT_parser___ReduceAction175[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -100728,45 +132910,49 @@ const classtable_elt_t VFT_parser___ReduceAction175[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction175 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction175___action},
+  {(bigint) 0 /* 50: ReduceAction327 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction327___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction175 < ReduceAction175: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction327 < ReduceAction327: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction175::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction175(val_t p0){
+/* 2: Attribute ReduceAction327::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction327[] = "init var of ReduceAction327";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction175;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction327;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction175(void)
+val_t NEW_parser___ReduceAction327(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction175;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction327;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction175(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction327[] = "check new ReduceAction327";
+void CHECKNEW_parser___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_parser___ReduceAction175;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction327;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -100776,34 +132962,37 @@ void CHECKNEW_parser___ReduceAction175(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction175_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction327_parser___ReduceAction___init[] = "new ReduceAction327 parser::ReduceAction::init";
+val_t NEW_ReduceAction327_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction175_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction327_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction175();
-  INIT_ATTRIBUTES__parser___ReduceAction175(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction327();
+  INIT_ATTRIBUTES__parser___ReduceAction327(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction175(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction327(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction176[52] = {
-  {(bigint) 1707 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction328[55] = {
+  {(bigint) 1859 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction176" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction176 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction176 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1707 /* 5: ReduceAction176 < ReduceAction176: superclass typecheck marker */},
+  {(bigint) "ReduceAction328" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction328 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction328 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1859 /* 5: ReduceAction328 < ReduceAction328: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -100816,7 +133005,7 @@ const classtable_elt_t VFT_parser___ReduceAction176[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction176 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction328 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -100832,6 +133021,8 @@ const classtable_elt_t VFT_parser___ReduceAction176[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -100845,45 +133036,49 @@ const classtable_elt_t VFT_parser___ReduceAction176[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction176 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction176___action},
+  {(bigint) 0 /* 50: ReduceAction328 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction328___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction176 < ReduceAction176: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction328 < ReduceAction328: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction176::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction176(val_t p0){
+/* 2: Attribute ReduceAction328::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction328[] = "init var of ReduceAction328";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction176;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction328;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction176(void)
+val_t NEW_parser___ReduceAction328(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction176;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction328;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction176(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction328[] = "check new ReduceAction328";
+void CHECKNEW_parser___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_parser___ReduceAction176;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction328;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -100893,34 +133088,37 @@ void CHECKNEW_parser___ReduceAction176(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction176_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction328_parser___ReduceAction___init[] = "new ReduceAction328 parser::ReduceAction::init";
+val_t NEW_ReduceAction328_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction176_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction328_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction176();
-  INIT_ATTRIBUTES__parser___ReduceAction176(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction328();
+  INIT_ATTRIBUTES__parser___ReduceAction328(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction176(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction328(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction177[52] = {
-  {(bigint) 1703 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction329[55] = {
+  {(bigint) 1855 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction177" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction177 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction177 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1703 /* 5: ReduceAction177 < ReduceAction177: superclass typecheck marker */},
+  {(bigint) "ReduceAction329" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction329 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction329 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1855 /* 5: ReduceAction329 < ReduceAction329: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -100933,7 +133131,7 @@ const classtable_elt_t VFT_parser___ReduceAction177[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction177 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction329 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -100949,6 +133147,8 @@ const classtable_elt_t VFT_parser___ReduceAction177[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -100962,45 +133162,49 @@ const classtable_elt_t VFT_parser___ReduceAction177[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction177 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction177___action},
+  {(bigint) 0 /* 50: ReduceAction329 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction329___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction177 < ReduceAction177: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction329 < ReduceAction329: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction177::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction177(val_t p0){
+/* 2: Attribute ReduceAction329::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction329[] = "init var of ReduceAction329";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction177;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction329;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction177(void)
+val_t NEW_parser___ReduceAction329(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction177;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction329;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction177(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction329[] = "check new ReduceAction329";
+void CHECKNEW_parser___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_parser___ReduceAction177;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction329;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -101010,34 +133214,37 @@ void CHECKNEW_parser___ReduceAction177(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction177_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction329_parser___ReduceAction___init[] = "new ReduceAction329 parser::ReduceAction::init";
+val_t NEW_ReduceAction329_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction177_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction329_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction177();
-  INIT_ATTRIBUTES__parser___ReduceAction177(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction329();
+  INIT_ATTRIBUTES__parser___ReduceAction329(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction177(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction329(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction178[52] = {
-  {(bigint) 1699 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction330[55] = {
+  {(bigint) 1847 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction178" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction178 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction178 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1699 /* 5: ReduceAction178 < ReduceAction178: superclass typecheck marker */},
+  {(bigint) "ReduceAction330" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction330 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction330 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1847 /* 5: ReduceAction330 < ReduceAction330: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -101050,7 +133257,7 @@ const classtable_elt_t VFT_parser___ReduceAction178[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction178 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction330 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -101066,6 +133273,8 @@ const classtable_elt_t VFT_parser___ReduceAction178[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -101079,45 +133288,49 @@ const classtable_elt_t VFT_parser___ReduceAction178[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction178 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction178___action},
+  {(bigint) 0 /* 50: ReduceAction330 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction330___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction178 < ReduceAction178: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction330 < ReduceAction330: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction178::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction178(val_t p0){
+/* 2: Attribute ReduceAction330::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction330[] = "init var of ReduceAction330";
+void INIT_ATTRIBUTES__parser___ReduceAction330(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction178;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction330;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction178(void)
+val_t NEW_parser___ReduceAction330(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction178;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction330;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction178(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction330[] = "check new ReduceAction330";
+void CHECKNEW_parser___ReduceAction330(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction178;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction330;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -101127,34 +133340,37 @@ void CHECKNEW_parser___ReduceAction178(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction178_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction330_parser___ReduceAction___init[] = "new ReduceAction330 parser::ReduceAction::init";
+val_t NEW_ReduceAction330_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction178_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction330_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction178();
-  INIT_ATTRIBUTES__parser___ReduceAction178(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction330();
+  INIT_ATTRIBUTES__parser___ReduceAction330(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction178(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction330(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction179[52] = {
-  {(bigint) 1695 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction331[55] = {
+  {(bigint) 1843 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction179" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction179 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction179 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1695 /* 5: ReduceAction179 < ReduceAction179: superclass typecheck marker */},
+  {(bigint) "ReduceAction331" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction331 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction331 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1843 /* 5: ReduceAction331 < ReduceAction331: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -101167,7 +133383,7 @@ const classtable_elt_t VFT_parser___ReduceAction179[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction179 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction331 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -101183,6 +133399,8 @@ const classtable_elt_t VFT_parser___ReduceAction179[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -101196,45 +133414,49 @@ const classtable_elt_t VFT_parser___ReduceAction179[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction179 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction179___action},
+  {(bigint) 0 /* 50: ReduceAction331 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction331___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction179 < ReduceAction179: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction331 < ReduceAction331: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction179::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction179(val_t p0){
+/* 2: Attribute ReduceAction331::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction331[] = "init var of ReduceAction331";
+void INIT_ATTRIBUTES__parser___ReduceAction331(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction179;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction331;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction179(void)
+val_t NEW_parser___ReduceAction331(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction179;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction331;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction179(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction331[] = "check new ReduceAction331";
+void CHECKNEW_parser___ReduceAction331(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction179;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction331;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -101244,34 +133466,37 @@ void CHECKNEW_parser___ReduceAction179(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction179_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction331_parser___ReduceAction___init[] = "new ReduceAction331 parser::ReduceAction::init";
+val_t NEW_ReduceAction331_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction179_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction331_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction179();
-  INIT_ATTRIBUTES__parser___ReduceAction179(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction331();
+  INIT_ATTRIBUTES__parser___ReduceAction331(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction179(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction331(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction180[52] = {
-  {(bigint) 1687 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction332[55] = {
+  {(bigint) 1839 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction180" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction180 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction180 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1687 /* 5: ReduceAction180 < ReduceAction180: superclass typecheck marker */},
+  {(bigint) "ReduceAction332" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction332 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction332 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1839 /* 5: ReduceAction332 < ReduceAction332: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -101284,7 +133509,7 @@ const classtable_elt_t VFT_parser___ReduceAction180[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction180 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction332 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -101300,6 +133525,8 @@ const classtable_elt_t VFT_parser___ReduceAction180[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -101313,45 +133540,49 @@ const classtable_elt_t VFT_parser___ReduceAction180[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction180 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction180___action},
+  {(bigint) 0 /* 50: ReduceAction332 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction332___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction180 < ReduceAction180: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction332 < ReduceAction332: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction180::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction180(val_t p0){
+/* 2: Attribute ReduceAction332::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction332[] = "init var of ReduceAction332";
+void INIT_ATTRIBUTES__parser___ReduceAction332(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction180;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction332;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction180(void)
+val_t NEW_parser___ReduceAction332(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction180;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction332;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction180(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction332[] = "check new ReduceAction332";
+void CHECKNEW_parser___ReduceAction332(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction180;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction332;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -101361,34 +133592,37 @@ void CHECKNEW_parser___ReduceAction180(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction180_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction332_parser___ReduceAction___init[] = "new ReduceAction332 parser::ReduceAction::init";
+val_t NEW_ReduceAction332_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction180_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction332_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction180();
-  INIT_ATTRIBUTES__parser___ReduceAction180(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction332();
+  INIT_ATTRIBUTES__parser___ReduceAction332(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction180(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction332(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction181[52] = {
-  {(bigint) 1683 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction333[55] = {
+  {(bigint) 1835 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction181" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction181 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction181 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1683 /* 5: ReduceAction181 < ReduceAction181: superclass typecheck marker */},
+  {(bigint) "ReduceAction333" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction333 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction333 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1835 /* 5: ReduceAction333 < ReduceAction333: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -101401,7 +133635,7 @@ const classtable_elt_t VFT_parser___ReduceAction181[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction181 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction333 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -101417,6 +133651,8 @@ const classtable_elt_t VFT_parser___ReduceAction181[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -101430,45 +133666,49 @@ const classtable_elt_t VFT_parser___ReduceAction181[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction181 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction181___action},
+  {(bigint) 0 /* 50: ReduceAction333 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction333___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction181 < ReduceAction181: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction333 < ReduceAction333: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction181::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction181(val_t p0){
+/* 2: Attribute ReduceAction333::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction333[] = "init var of ReduceAction333";
+void INIT_ATTRIBUTES__parser___ReduceAction333(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction181;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction333;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction181(void)
+val_t NEW_parser___ReduceAction333(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction181;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction333;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction181(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction333[] = "check new ReduceAction333";
+void CHECKNEW_parser___ReduceAction333(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction181;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction333;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -101478,34 +133718,37 @@ void CHECKNEW_parser___ReduceAction181(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction181_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction333_parser___ReduceAction___init[] = "new ReduceAction333 parser::ReduceAction::init";
+val_t NEW_ReduceAction333_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction181_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction333_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction181();
-  INIT_ATTRIBUTES__parser___ReduceAction181(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction333();
+  INIT_ATTRIBUTES__parser___ReduceAction333(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction181(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction333(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction182[52] = {
-  {(bigint) 1679 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction334[55] = {
+  {(bigint) 1831 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction182" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction182 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction182 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1679 /* 5: ReduceAction182 < ReduceAction182: superclass typecheck marker */},
+  {(bigint) "ReduceAction334" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction334 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction334 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1831 /* 5: ReduceAction334 < ReduceAction334: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -101518,7 +133761,7 @@ const classtable_elt_t VFT_parser___ReduceAction182[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction182 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction334 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -101534,6 +133777,8 @@ const classtable_elt_t VFT_parser___ReduceAction182[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -101547,45 +133792,49 @@ const classtable_elt_t VFT_parser___ReduceAction182[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction182 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction182___action},
+  {(bigint) 0 /* 50: ReduceAction334 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction334___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction182 < ReduceAction182: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction334 < ReduceAction334: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction182::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction182(val_t p0){
+/* 2: Attribute ReduceAction334::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction334[] = "init var of ReduceAction334";
+void INIT_ATTRIBUTES__parser___ReduceAction334(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction182;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction334;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction182(void)
+val_t NEW_parser___ReduceAction334(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction182;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction334;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction182(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction334[] = "check new ReduceAction334";
+void CHECKNEW_parser___ReduceAction334(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction182;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction334;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -101595,34 +133844,37 @@ void CHECKNEW_parser___ReduceAction182(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction182_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction334_parser___ReduceAction___init[] = "new ReduceAction334 parser::ReduceAction::init";
+val_t NEW_ReduceAction334_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction182_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction334_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction182();
-  INIT_ATTRIBUTES__parser___ReduceAction182(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction334();
+  INIT_ATTRIBUTES__parser___ReduceAction334(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction182(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction334(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction183[52] = {
-  {(bigint) 1675 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction335[55] = {
+  {(bigint) 1827 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction183" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction183 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction183 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1675 /* 5: ReduceAction183 < ReduceAction183: superclass typecheck marker */},
+  {(bigint) "ReduceAction335" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction335 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction335 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1827 /* 5: ReduceAction335 < ReduceAction335: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -101635,7 +133887,7 @@ const classtable_elt_t VFT_parser___ReduceAction183[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction183 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction335 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -101651,6 +133903,8 @@ const classtable_elt_t VFT_parser___ReduceAction183[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -101664,45 +133918,49 @@ const classtable_elt_t VFT_parser___ReduceAction183[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction183 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction183___action},
+  {(bigint) 0 /* 50: ReduceAction335 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction335___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction183 < ReduceAction183: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction335 < ReduceAction335: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction183::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction183(val_t p0){
+/* 2: Attribute ReduceAction335::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction335[] = "init var of ReduceAction335";
+void INIT_ATTRIBUTES__parser___ReduceAction335(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction183;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction335;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction183(void)
+val_t NEW_parser___ReduceAction335(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction183;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction335;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction183(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction335[] = "check new ReduceAction335";
+void CHECKNEW_parser___ReduceAction335(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction183;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction335;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -101712,34 +133970,37 @@ void CHECKNEW_parser___ReduceAction183(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction183_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction335_parser___ReduceAction___init[] = "new ReduceAction335 parser::ReduceAction::init";
+val_t NEW_ReduceAction335_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction183_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction335_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction183();
-  INIT_ATTRIBUTES__parser___ReduceAction183(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction335();
+  INIT_ATTRIBUTES__parser___ReduceAction335(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction183(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction335(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction184[52] = {
-  {(bigint) 1671 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction336[55] = {
+  {(bigint) 1823 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction184" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction184 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction184 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1671 /* 5: ReduceAction184 < ReduceAction184: superclass typecheck marker */},
+  {(bigint) "ReduceAction336" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction336 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction336 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1823 /* 5: ReduceAction336 < ReduceAction336: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -101752,7 +134013,7 @@ const classtable_elt_t VFT_parser___ReduceAction184[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction184 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction336 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -101768,6 +134029,8 @@ const classtable_elt_t VFT_parser___ReduceAction184[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -101781,45 +134044,49 @@ const classtable_elt_t VFT_parser___ReduceAction184[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction184 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction184___action},
+  {(bigint) 0 /* 50: ReduceAction336 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction336___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction184 < ReduceAction184: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction336 < ReduceAction336: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction184::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction184(val_t p0){
+/* 2: Attribute ReduceAction336::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction336[] = "init var of ReduceAction336";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction184;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction336;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction184(void)
+val_t NEW_parser___ReduceAction336(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction184;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction336;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction184(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction336[] = "check new ReduceAction336";
+void CHECKNEW_parser___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_parser___ReduceAction184;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction336;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -101829,34 +134096,37 @@ void CHECKNEW_parser___ReduceAction184(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction184_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction336_parser___ReduceAction___init[] = "new ReduceAction336 parser::ReduceAction::init";
+val_t NEW_ReduceAction336_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction184_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction336_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction184();
-  INIT_ATTRIBUTES__parser___ReduceAction184(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction336();
+  INIT_ATTRIBUTES__parser___ReduceAction336(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction184(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction336(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction185[52] = {
-  {(bigint) 1667 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction337[55] = {
+  {(bigint) 1819 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction185" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction185 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction185 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1667 /* 5: ReduceAction185 < ReduceAction185: superclass typecheck marker */},
+  {(bigint) "ReduceAction337" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction337 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction337 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1819 /* 5: ReduceAction337 < ReduceAction337: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -101869,7 +134139,7 @@ const classtable_elt_t VFT_parser___ReduceAction185[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction185 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction337 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -101885,6 +134155,8 @@ const classtable_elt_t VFT_parser___ReduceAction185[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -101898,45 +134170,49 @@ const classtable_elt_t VFT_parser___ReduceAction185[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction185 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction185___action},
+  {(bigint) 0 /* 50: ReduceAction337 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction337___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction185 < ReduceAction185: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction337 < ReduceAction337: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction185::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction185(val_t p0){
+/* 2: Attribute ReduceAction337::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction337[] = "init var of ReduceAction337";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction185;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction337;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction185(void)
+val_t NEW_parser___ReduceAction337(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction185;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction337;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction185(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction337[] = "check new ReduceAction337";
+void CHECKNEW_parser___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_parser___ReduceAction185;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction337;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -101946,34 +134222,37 @@ void CHECKNEW_parser___ReduceAction185(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction185_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction337_parser___ReduceAction___init[] = "new ReduceAction337 parser::ReduceAction::init";
+val_t NEW_ReduceAction337_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction185_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction337_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction185();
-  INIT_ATTRIBUTES__parser___ReduceAction185(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction337();
+  INIT_ATTRIBUTES__parser___ReduceAction337(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction185(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction337(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction186[52] = {
-  {(bigint) 1663 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction338[55] = {
+  {(bigint) 1815 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction186" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction186 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction186 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1663 /* 5: ReduceAction186 < ReduceAction186: superclass typecheck marker */},
+  {(bigint) "ReduceAction338" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction338 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction338 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1815 /* 5: ReduceAction338 < ReduceAction338: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -101986,7 +134265,7 @@ const classtable_elt_t VFT_parser___ReduceAction186[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction186 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction338 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -102002,6 +134281,8 @@ const classtable_elt_t VFT_parser___ReduceAction186[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -102015,45 +134296,49 @@ const classtable_elt_t VFT_parser___ReduceAction186[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction186 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction186___action},
+  {(bigint) 0 /* 50: ReduceAction338 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction338___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction186 < ReduceAction186: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction338 < ReduceAction338: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction186::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction186(val_t p0){
+/* 2: Attribute ReduceAction338::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction338[] = "init var of ReduceAction338";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction186;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction338;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction186(void)
+val_t NEW_parser___ReduceAction338(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction186;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction338;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction186(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction338[] = "check new ReduceAction338";
+void CHECKNEW_parser___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_parser___ReduceAction186;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction338;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -102063,34 +134348,37 @@ void CHECKNEW_parser___ReduceAction186(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction186_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction338_parser___ReduceAction___init[] = "new ReduceAction338 parser::ReduceAction::init";
+val_t NEW_ReduceAction338_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction186_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction338_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction186();
-  INIT_ATTRIBUTES__parser___ReduceAction186(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction338();
+  INIT_ATTRIBUTES__parser___ReduceAction338(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction186(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction338(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction187[52] = {
-  {(bigint) 1659 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction339[55] = {
+  {(bigint) 1811 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction187" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction187 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction187 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1659 /* 5: ReduceAction187 < ReduceAction187: superclass typecheck marker */},
+  {(bigint) "ReduceAction339" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction339 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction339 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1811 /* 5: ReduceAction339 < ReduceAction339: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -102103,7 +134391,7 @@ const classtable_elt_t VFT_parser___ReduceAction187[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction187 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction339 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -102119,6 +134407,8 @@ const classtable_elt_t VFT_parser___ReduceAction187[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -102132,45 +134422,49 @@ const classtable_elt_t VFT_parser___ReduceAction187[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction187 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction187___action},
+  {(bigint) 0 /* 50: ReduceAction339 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction339___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction187 < ReduceAction187: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction339 < ReduceAction339: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction187::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction187(val_t p0){
+/* 2: Attribute ReduceAction339::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction339[] = "init var of ReduceAction339";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction187;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction339;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction187(void)
+val_t NEW_parser___ReduceAction339(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction187;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction339;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction187(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction339[] = "check new ReduceAction339";
+void CHECKNEW_parser___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_parser___ReduceAction187;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction339;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -102180,34 +134474,37 @@ void CHECKNEW_parser___ReduceAction187(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction187_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction339_parser___ReduceAction___init[] = "new ReduceAction339 parser::ReduceAction::init";
+val_t NEW_ReduceAction339_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction187_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction339_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction187();
-  INIT_ATTRIBUTES__parser___ReduceAction187(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction339();
+  INIT_ATTRIBUTES__parser___ReduceAction339(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction187(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction339(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction188[52] = {
-  {(bigint) 1655 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction340[55] = {
+  {(bigint) 1803 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction188" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction188 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction188 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1655 /* 5: ReduceAction188 < ReduceAction188: superclass typecheck marker */},
+  {(bigint) "ReduceAction340" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction340 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction340 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1803 /* 5: ReduceAction340 < ReduceAction340: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -102220,7 +134517,7 @@ const classtable_elt_t VFT_parser___ReduceAction188[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction188 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction340 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -102236,6 +134533,8 @@ const classtable_elt_t VFT_parser___ReduceAction188[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -102249,45 +134548,49 @@ const classtable_elt_t VFT_parser___ReduceAction188[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction188 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction188___action},
+  {(bigint) 0 /* 50: ReduceAction340 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction340___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction188 < ReduceAction188: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction340 < ReduceAction340: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction188::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction188(val_t p0){
+/* 2: Attribute ReduceAction340::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction340[] = "init var of ReduceAction340";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction188;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction340;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction188(void)
+val_t NEW_parser___ReduceAction340(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction188;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction340;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction188(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction340[] = "check new ReduceAction340";
+void CHECKNEW_parser___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_parser___ReduceAction188;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction340;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -102297,34 +134600,37 @@ void CHECKNEW_parser___ReduceAction188(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction188_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction340_parser___ReduceAction___init[] = "new ReduceAction340 parser::ReduceAction::init";
+val_t NEW_ReduceAction340_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction188_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction340_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction188();
-  INIT_ATTRIBUTES__parser___ReduceAction188(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction340();
+  INIT_ATTRIBUTES__parser___ReduceAction340(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction188(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction340(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction189[52] = {
-  {(bigint) 1651 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction341[55] = {
+  {(bigint) 1799 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction189" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction189 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction189 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1651 /* 5: ReduceAction189 < ReduceAction189: superclass typecheck marker */},
+  {(bigint) "ReduceAction341" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction341 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction341 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1799 /* 5: ReduceAction341 < ReduceAction341: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -102337,7 +134643,7 @@ const classtable_elt_t VFT_parser___ReduceAction189[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction189 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction341 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -102353,6 +134659,8 @@ const classtable_elt_t VFT_parser___ReduceAction189[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -102366,45 +134674,49 @@ const classtable_elt_t VFT_parser___ReduceAction189[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction189 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction189___action},
+  {(bigint) 0 /* 50: ReduceAction341 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction341___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction189 < ReduceAction189: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction341 < ReduceAction341: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction189::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction189(val_t p0){
+/* 2: Attribute ReduceAction341::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction341[] = "init var of ReduceAction341";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction189;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction341;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction189(void)
+val_t NEW_parser___ReduceAction341(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction189;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction341;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction189(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction341[] = "check new ReduceAction341";
+void CHECKNEW_parser___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_parser___ReduceAction189;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction341;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -102414,34 +134726,37 @@ void CHECKNEW_parser___ReduceAction189(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction189_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction341_parser___ReduceAction___init[] = "new ReduceAction341 parser::ReduceAction::init";
+val_t NEW_ReduceAction341_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction189_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction341_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction189();
-  INIT_ATTRIBUTES__parser___ReduceAction189(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction341();
+  INIT_ATTRIBUTES__parser___ReduceAction341(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction189(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction341(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction190[52] = {
-  {(bigint) 1643 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction342[55] = {
+  {(bigint) 1795 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction190" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction190 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction190 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1643 /* 5: ReduceAction190 < ReduceAction190: superclass typecheck marker */},
+  {(bigint) "ReduceAction342" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction342 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction342 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1795 /* 5: ReduceAction342 < ReduceAction342: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -102454,7 +134769,7 @@ const classtable_elt_t VFT_parser___ReduceAction190[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction190 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction342 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -102470,6 +134785,8 @@ const classtable_elt_t VFT_parser___ReduceAction190[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -102483,45 +134800,49 @@ const classtable_elt_t VFT_parser___ReduceAction190[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction190 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction190___action},
+  {(bigint) 0 /* 50: ReduceAction342 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction342___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction190 < ReduceAction190: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction342 < ReduceAction342: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction190::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction190(val_t p0){
+/* 2: Attribute ReduceAction342::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction342[] = "init var of ReduceAction342";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction190;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction342;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction190(void)
+val_t NEW_parser___ReduceAction342(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction190;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction342;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction190(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction342[] = "check new ReduceAction342";
+void CHECKNEW_parser___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_parser___ReduceAction190;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction342;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -102531,34 +134852,37 @@ void CHECKNEW_parser___ReduceAction190(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction190_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction342_parser___ReduceAction___init[] = "new ReduceAction342 parser::ReduceAction::init";
+val_t NEW_ReduceAction342_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction190_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction342_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction190();
-  INIT_ATTRIBUTES__parser___ReduceAction190(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction342();
+  INIT_ATTRIBUTES__parser___ReduceAction342(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction190(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction342(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction191[52] = {
-  {(bigint) 1639 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction343[55] = {
+  {(bigint) 1791 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction191" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction191 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction191 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1639 /* 5: ReduceAction191 < ReduceAction191: superclass typecheck marker */},
+  {(bigint) "ReduceAction343" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction343 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction343 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1791 /* 5: ReduceAction343 < ReduceAction343: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -102571,7 +134895,7 @@ const classtable_elt_t VFT_parser___ReduceAction191[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction191 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction343 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -102587,6 +134911,8 @@ const classtable_elt_t VFT_parser___ReduceAction191[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -102600,45 +134926,49 @@ const classtable_elt_t VFT_parser___ReduceAction191[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction191 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction191___action},
+  {(bigint) 0 /* 50: ReduceAction343 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction343___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction191 < ReduceAction191: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction343 < ReduceAction343: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction191::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction191(val_t p0){
+/* 2: Attribute ReduceAction343::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction343[] = "init var of ReduceAction343";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction191;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction343;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction191(void)
+val_t NEW_parser___ReduceAction343(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction191;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction343;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction191(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction343[] = "check new ReduceAction343";
+void CHECKNEW_parser___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_parser___ReduceAction191;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction343;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -102648,34 +134978,37 @@ void CHECKNEW_parser___ReduceAction191(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction191_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction343_parser___ReduceAction___init[] = "new ReduceAction343 parser::ReduceAction::init";
+val_t NEW_ReduceAction343_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction191_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction343_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction191();
-  INIT_ATTRIBUTES__parser___ReduceAction191(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction343();
+  INIT_ATTRIBUTES__parser___ReduceAction343(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction191(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction343(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction192[52] = {
-  {(bigint) 1635 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction344[55] = {
+  {(bigint) 1787 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction192" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction192 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction192 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1635 /* 5: ReduceAction192 < ReduceAction192: superclass typecheck marker */},
+  {(bigint) "ReduceAction344" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction344 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction344 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1787 /* 5: ReduceAction344 < ReduceAction344: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -102688,7 +135021,7 @@ const classtable_elt_t VFT_parser___ReduceAction192[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction192 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction344 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -102704,6 +135037,8 @@ const classtable_elt_t VFT_parser___ReduceAction192[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -102717,45 +135052,49 @@ const classtable_elt_t VFT_parser___ReduceAction192[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction192 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction192___action},
+  {(bigint) 0 /* 50: ReduceAction344 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction344___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction192 < ReduceAction192: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction344 < ReduceAction344: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction192::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction192(val_t p0){
+/* 2: Attribute ReduceAction344::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction344[] = "init var of ReduceAction344";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction192;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction344;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction192(void)
+val_t NEW_parser___ReduceAction344(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction192;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction344;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction192(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction344[] = "check new ReduceAction344";
+void CHECKNEW_parser___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_parser___ReduceAction192;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction344;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -102765,34 +135104,37 @@ void CHECKNEW_parser___ReduceAction192(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction192_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction344_parser___ReduceAction___init[] = "new ReduceAction344 parser::ReduceAction::init";
+val_t NEW_ReduceAction344_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction192_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction344_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction192();
-  INIT_ATTRIBUTES__parser___ReduceAction192(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction344();
+  INIT_ATTRIBUTES__parser___ReduceAction344(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction192(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction344(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction193[52] = {
-  {(bigint) 1631 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction345[55] = {
+  {(bigint) 1783 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction193" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction193 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction193 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1631 /* 5: ReduceAction193 < ReduceAction193: superclass typecheck marker */},
+  {(bigint) "ReduceAction345" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction345 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction345 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1783 /* 5: ReduceAction345 < ReduceAction345: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -102805,7 +135147,7 @@ const classtable_elt_t VFT_parser___ReduceAction193[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction193 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction345 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -102821,6 +135163,8 @@ const classtable_elt_t VFT_parser___ReduceAction193[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -102834,45 +135178,49 @@ const classtable_elt_t VFT_parser___ReduceAction193[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction193 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction193___action},
+  {(bigint) 0 /* 50: ReduceAction345 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction345___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction193 < ReduceAction193: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction345 < ReduceAction345: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction193::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction193(val_t p0){
+/* 2: Attribute ReduceAction345::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction345[] = "init var of ReduceAction345";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction193;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction345;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction193(void)
+val_t NEW_parser___ReduceAction345(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction193;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction345;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction193(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction345[] = "check new ReduceAction345";
+void CHECKNEW_parser___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_parser___ReduceAction193;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction345;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -102882,34 +135230,37 @@ void CHECKNEW_parser___ReduceAction193(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction193_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction345_parser___ReduceAction___init[] = "new ReduceAction345 parser::ReduceAction::init";
+val_t NEW_ReduceAction345_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction193_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction345_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction193();
-  INIT_ATTRIBUTES__parser___ReduceAction193(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction345();
+  INIT_ATTRIBUTES__parser___ReduceAction345(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction193(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction345(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction194[52] = {
-  {(bigint) 1627 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction346[55] = {
+  {(bigint) 1779 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction194" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction194 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction194 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1627 /* 5: ReduceAction194 < ReduceAction194: superclass typecheck marker */},
+  {(bigint) "ReduceAction346" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction346 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction346 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1779 /* 5: ReduceAction346 < ReduceAction346: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -102922,7 +135273,7 @@ const classtable_elt_t VFT_parser___ReduceAction194[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction194 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction346 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -102938,6 +135289,8 @@ const classtable_elt_t VFT_parser___ReduceAction194[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -102951,45 +135304,49 @@ const classtable_elt_t VFT_parser___ReduceAction194[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction194 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction194___action},
+  {(bigint) 0 /* 50: ReduceAction346 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction346___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction194 < ReduceAction194: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction346 < ReduceAction346: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction194::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction194(val_t p0){
+/* 2: Attribute ReduceAction346::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction346[] = "init var of ReduceAction346";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction194;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction346;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction194(void)
+val_t NEW_parser___ReduceAction346(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction194;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction346;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction194(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction346[] = "check new ReduceAction346";
+void CHECKNEW_parser___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_parser___ReduceAction194;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction346;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -102999,34 +135356,37 @@ void CHECKNEW_parser___ReduceAction194(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction194_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction346_parser___ReduceAction___init[] = "new ReduceAction346 parser::ReduceAction::init";
+val_t NEW_ReduceAction346_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction194_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction346_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction194();
-  INIT_ATTRIBUTES__parser___ReduceAction194(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction346();
+  INIT_ATTRIBUTES__parser___ReduceAction346(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction194(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction346(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction195[52] = {
-  {(bigint) 1623 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction347[55] = {
+  {(bigint) 1775 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction195" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction195 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction195 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1623 /* 5: ReduceAction195 < ReduceAction195: superclass typecheck marker */},
+  {(bigint) "ReduceAction347" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction347 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction347 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1775 /* 5: ReduceAction347 < ReduceAction347: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -103039,7 +135399,7 @@ const classtable_elt_t VFT_parser___ReduceAction195[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction195 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction347 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -103055,6 +135415,8 @@ const classtable_elt_t VFT_parser___ReduceAction195[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -103068,45 +135430,49 @@ const classtable_elt_t VFT_parser___ReduceAction195[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction195 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction195___action},
+  {(bigint) 0 /* 50: ReduceAction347 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction347___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction195 < ReduceAction195: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction347 < ReduceAction347: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction195::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction195(val_t p0){
+/* 2: Attribute ReduceAction347::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction347[] = "init var of ReduceAction347";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction195;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction347;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction195(void)
+val_t NEW_parser___ReduceAction347(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction195;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction347;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction195(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction347[] = "check new ReduceAction347";
+void CHECKNEW_parser___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_parser___ReduceAction195;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction347;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -103116,34 +135482,37 @@ void CHECKNEW_parser___ReduceAction195(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction195_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction347_parser___ReduceAction___init[] = "new ReduceAction347 parser::ReduceAction::init";
+val_t NEW_ReduceAction347_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction195_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction347_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction195();
-  INIT_ATTRIBUTES__parser___ReduceAction195(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction347();
+  INIT_ATTRIBUTES__parser___ReduceAction347(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction195(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction347(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction196[52] = {
-  {(bigint) 1619 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction348[55] = {
+  {(bigint) 1771 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction196" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction196 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction196 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1619 /* 5: ReduceAction196 < ReduceAction196: superclass typecheck marker */},
+  {(bigint) "ReduceAction348" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction348 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction348 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1771 /* 5: ReduceAction348 < ReduceAction348: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -103156,7 +135525,7 @@ const classtable_elt_t VFT_parser___ReduceAction196[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction196 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction348 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -103172,6 +135541,8 @@ const classtable_elt_t VFT_parser___ReduceAction196[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -103185,45 +135556,49 @@ const classtable_elt_t VFT_parser___ReduceAction196[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction196 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction196___action},
+  {(bigint) 0 /* 50: ReduceAction348 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction348___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction196 < ReduceAction196: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction348 < ReduceAction348: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction196::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction196(val_t p0){
+/* 2: Attribute ReduceAction348::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction348[] = "init var of ReduceAction348";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction196;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction348;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction196(void)
+val_t NEW_parser___ReduceAction348(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction196;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction348;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction196(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction348[] = "check new ReduceAction348";
+void CHECKNEW_parser___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_parser___ReduceAction196;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction348;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -103233,34 +135608,37 @@ void CHECKNEW_parser___ReduceAction196(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction196_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction348_parser___ReduceAction___init[] = "new ReduceAction348 parser::ReduceAction::init";
+val_t NEW_ReduceAction348_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction196_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction348_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction196();
-  INIT_ATTRIBUTES__parser___ReduceAction196(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction348();
+  INIT_ATTRIBUTES__parser___ReduceAction348(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction196(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction348(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction197[52] = {
-  {(bigint) 1615 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction349[55] = {
+  {(bigint) 1767 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction197" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction197 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction197 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1615 /* 5: ReduceAction197 < ReduceAction197: superclass typecheck marker */},
+  {(bigint) "ReduceAction349" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction349 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction349 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1767 /* 5: ReduceAction349 < ReduceAction349: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -103273,7 +135651,7 @@ const classtable_elt_t VFT_parser___ReduceAction197[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction197 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction349 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -103289,6 +135667,8 @@ const classtable_elt_t VFT_parser___ReduceAction197[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -103302,45 +135682,49 @@ const classtable_elt_t VFT_parser___ReduceAction197[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction197 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction197___action},
+  {(bigint) 0 /* 50: ReduceAction349 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction349___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction197 < ReduceAction197: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction349 < ReduceAction349: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction197::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction197(val_t p0){
+/* 2: Attribute ReduceAction349::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction349[] = "init var of ReduceAction349";
+void INIT_ATTRIBUTES__parser___ReduceAction349(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction197;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction349;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction197(void)
+val_t NEW_parser___ReduceAction349(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction197;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction349;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction197(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction349[] = "check new ReduceAction349";
+void CHECKNEW_parser___ReduceAction349(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction197;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction349;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -103350,34 +135734,37 @@ void CHECKNEW_parser___ReduceAction197(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction197_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction349_parser___ReduceAction___init[] = "new ReduceAction349 parser::ReduceAction::init";
+val_t NEW_ReduceAction349_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction197_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction349_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction197();
-  INIT_ATTRIBUTES__parser___ReduceAction197(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction349();
+  INIT_ATTRIBUTES__parser___ReduceAction349(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction197(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction349(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction198[52] = {
-  {(bigint) 1611 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction350[55] = {
+  {(bigint) 1759 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction198" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction198 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction198 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1611 /* 5: ReduceAction198 < ReduceAction198: superclass typecheck marker */},
+  {(bigint) "ReduceAction350" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction350 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction350 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1759 /* 5: ReduceAction350 < ReduceAction350: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -103390,7 +135777,7 @@ const classtable_elt_t VFT_parser___ReduceAction198[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction198 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction350 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -103406,6 +135793,8 @@ const classtable_elt_t VFT_parser___ReduceAction198[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -103419,45 +135808,49 @@ const classtable_elt_t VFT_parser___ReduceAction198[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction198 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction198___action},
+  {(bigint) 0 /* 50: ReduceAction350 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction350___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction198 < ReduceAction198: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction350 < ReduceAction350: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction198::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction198(val_t p0){
+/* 2: Attribute ReduceAction350::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction350[] = "init var of ReduceAction350";
+void INIT_ATTRIBUTES__parser___ReduceAction350(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction198;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction350;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction198(void)
+val_t NEW_parser___ReduceAction350(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction198;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction350;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction198(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction350[] = "check new ReduceAction350";
+void CHECKNEW_parser___ReduceAction350(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction198;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction350;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -103467,34 +135860,37 @@ void CHECKNEW_parser___ReduceAction198(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction198_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction350_parser___ReduceAction___init[] = "new ReduceAction350 parser::ReduceAction::init";
+val_t NEW_ReduceAction350_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction198_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction350_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction198();
-  INIT_ATTRIBUTES__parser___ReduceAction198(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction350();
+  INIT_ATTRIBUTES__parser___ReduceAction350(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction198(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction350(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction199[52] = {
-  {(bigint) 1607 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction351[55] = {
+  {(bigint) 1755 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction199" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction199 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction199 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1607 /* 5: ReduceAction199 < ReduceAction199: superclass typecheck marker */},
+  {(bigint) "ReduceAction351" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction351 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction351 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1755 /* 5: ReduceAction351 < ReduceAction351: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -103507,7 +135903,7 @@ const classtable_elt_t VFT_parser___ReduceAction199[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction199 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction351 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -103523,6 +135919,8 @@ const classtable_elt_t VFT_parser___ReduceAction199[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -103536,45 +135934,49 @@ const classtable_elt_t VFT_parser___ReduceAction199[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction199 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction199___action},
+  {(bigint) 0 /* 50: ReduceAction351 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction351___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction199 < ReduceAction199: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction351 < ReduceAction351: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction199::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction199(val_t p0){
+/* 2: Attribute ReduceAction351::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction351[] = "init var of ReduceAction351";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction199;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction351;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction199(void)
+val_t NEW_parser___ReduceAction351(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction199;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction351;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction199(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction351[] = "check new ReduceAction351";
+void CHECKNEW_parser___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_parser___ReduceAction199;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction351;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -103584,34 +135986,37 @@ void CHECKNEW_parser___ReduceAction199(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction199_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction351_parser___ReduceAction___init[] = "new ReduceAction351 parser::ReduceAction::init";
+val_t NEW_ReduceAction351_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction199_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction351_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction199();
-  INIT_ATTRIBUTES__parser___ReduceAction199(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction351();
+  INIT_ATTRIBUTES__parser___ReduceAction351(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction199(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction351(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction200[52] = {
-  {(bigint) 1595 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction352[55] = {
+  {(bigint) 1751 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction200" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction200 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction200 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1595 /* 5: ReduceAction200 < ReduceAction200: superclass typecheck marker */},
+  {(bigint) "ReduceAction352" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction352 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction352 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1751 /* 5: ReduceAction352 < ReduceAction352: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -103624,7 +136029,7 @@ const classtable_elt_t VFT_parser___ReduceAction200[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction200 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction352 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -103640,6 +136045,8 @@ const classtable_elt_t VFT_parser___ReduceAction200[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -103653,45 +136060,49 @@ const classtable_elt_t VFT_parser___ReduceAction200[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction200 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction200___action},
+  {(bigint) 0 /* 50: ReduceAction352 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction352___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction200 < ReduceAction200: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction352 < ReduceAction352: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction200::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction200(val_t p0){
+/* 2: Attribute ReduceAction352::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction352[] = "init var of ReduceAction352";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction200;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction352;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction200(void)
+val_t NEW_parser___ReduceAction352(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction200;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction352;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction200(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction352[] = "check new ReduceAction352";
+void CHECKNEW_parser___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_parser___ReduceAction200;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction352;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -103701,34 +136112,37 @@ void CHECKNEW_parser___ReduceAction200(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction200_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction352_parser___ReduceAction___init[] = "new ReduceAction352 parser::ReduceAction::init";
+val_t NEW_ReduceAction352_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction200_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction352_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction200();
-  INIT_ATTRIBUTES__parser___ReduceAction200(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction352();
+  INIT_ATTRIBUTES__parser___ReduceAction352(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction200(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction352(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction201[52] = {
-  {(bigint) 1591 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction353[55] = {
+  {(bigint) 1747 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction201" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction201 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction201 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1591 /* 5: ReduceAction201 < ReduceAction201: superclass typecheck marker */},
+  {(bigint) "ReduceAction353" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction353 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction353 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1747 /* 5: ReduceAction353 < ReduceAction353: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -103741,7 +136155,7 @@ const classtable_elt_t VFT_parser___ReduceAction201[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction201 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction353 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -103757,6 +136171,8 @@ const classtable_elt_t VFT_parser___ReduceAction201[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -103770,45 +136186,49 @@ const classtable_elt_t VFT_parser___ReduceAction201[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction201 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction201___action},
+  {(bigint) 0 /* 50: ReduceAction353 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction353___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction201 < ReduceAction201: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction353 < ReduceAction353: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction201::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction201(val_t p0){
+/* 2: Attribute ReduceAction353::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction353[] = "init var of ReduceAction353";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction201;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction353;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction201(void)
+val_t NEW_parser___ReduceAction353(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction201;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction353;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction201(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction353[] = "check new ReduceAction353";
+void CHECKNEW_parser___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_parser___ReduceAction201;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction353;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -103818,34 +136238,37 @@ void CHECKNEW_parser___ReduceAction201(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction201_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction353_parser___ReduceAction___init[] = "new ReduceAction353 parser::ReduceAction::init";
+val_t NEW_ReduceAction353_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction201_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction353_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction201();
-  INIT_ATTRIBUTES__parser___ReduceAction201(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction353();
+  INIT_ATTRIBUTES__parser___ReduceAction353(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction201(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction353(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction202[52] = {
-  {(bigint) 1587 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction354[55] = {
+  {(bigint) 1743 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction202" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction202 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction202 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1587 /* 5: ReduceAction202 < ReduceAction202: superclass typecheck marker */},
+  {(bigint) "ReduceAction354" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction354 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction354 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1743 /* 5: ReduceAction354 < ReduceAction354: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -103858,7 +136281,7 @@ const classtable_elt_t VFT_parser___ReduceAction202[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction202 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction354 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -103874,6 +136297,8 @@ const classtable_elt_t VFT_parser___ReduceAction202[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -103887,45 +136312,49 @@ const classtable_elt_t VFT_parser___ReduceAction202[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction202 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction202___action},
+  {(bigint) 0 /* 50: ReduceAction354 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction354___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction202 < ReduceAction202: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction354 < ReduceAction354: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction202::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction202(val_t p0){
+/* 2: Attribute ReduceAction354::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction354[] = "init var of ReduceAction354";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction202;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction354;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction202(void)
+val_t NEW_parser___ReduceAction354(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction202;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction354;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction202(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction354[] = "check new ReduceAction354";
+void CHECKNEW_parser___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_parser___ReduceAction202;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction354;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -103935,34 +136364,37 @@ void CHECKNEW_parser___ReduceAction202(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction202_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction354_parser___ReduceAction___init[] = "new ReduceAction354 parser::ReduceAction::init";
+val_t NEW_ReduceAction354_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction202_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction354_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction202();
-  INIT_ATTRIBUTES__parser___ReduceAction202(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction354();
+  INIT_ATTRIBUTES__parser___ReduceAction354(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction202(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction354(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction203[52] = {
-  {(bigint) 1583 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction355[55] = {
+  {(bigint) 1739 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction203" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction203 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction203 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1583 /* 5: ReduceAction203 < ReduceAction203: superclass typecheck marker */},
+  {(bigint) "ReduceAction355" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction355 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction355 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1739 /* 5: ReduceAction355 < ReduceAction355: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -103975,7 +136407,7 @@ const classtable_elt_t VFT_parser___ReduceAction203[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction203 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction355 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -103991,6 +136423,8 @@ const classtable_elt_t VFT_parser___ReduceAction203[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -104004,45 +136438,49 @@ const classtable_elt_t VFT_parser___ReduceAction203[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction203 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction203___action},
+  {(bigint) 0 /* 50: ReduceAction355 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction355___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction203 < ReduceAction203: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction355 < ReduceAction355: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction203::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction203(val_t p0){
+/* 2: Attribute ReduceAction355::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction355[] = "init var of ReduceAction355";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction203;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction355;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction203(void)
+val_t NEW_parser___ReduceAction355(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction203;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction355;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction203(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction355[] = "check new ReduceAction355";
+void CHECKNEW_parser___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_parser___ReduceAction203;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction355;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -104052,34 +136490,37 @@ void CHECKNEW_parser___ReduceAction203(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction203_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction355_parser___ReduceAction___init[] = "new ReduceAction355 parser::ReduceAction::init";
+val_t NEW_ReduceAction355_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction203_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction355_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction203();
-  INIT_ATTRIBUTES__parser___ReduceAction203(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction355();
+  INIT_ATTRIBUTES__parser___ReduceAction355(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction203(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction355(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction204[52] = {
-  {(bigint) 1579 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction356[55] = {
+  {(bigint) 1735 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction204" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction204 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction204 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1579 /* 5: ReduceAction204 < ReduceAction204: superclass typecheck marker */},
+  {(bigint) "ReduceAction356" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction356 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction356 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1735 /* 5: ReduceAction356 < ReduceAction356: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -104092,7 +136533,7 @@ const classtable_elt_t VFT_parser___ReduceAction204[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction204 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction356 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -104108,6 +136549,8 @@ const classtable_elt_t VFT_parser___ReduceAction204[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -104121,45 +136564,49 @@ const classtable_elt_t VFT_parser___ReduceAction204[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction204 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction204___action},
+  {(bigint) 0 /* 50: ReduceAction356 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction356___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction204 < ReduceAction204: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction356 < ReduceAction356: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction204::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction204(val_t p0){
+/* 2: Attribute ReduceAction356::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction356[] = "init var of ReduceAction356";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction204;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction356;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction204(void)
+val_t NEW_parser___ReduceAction356(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction204;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction356;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction204(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction356[] = "check new ReduceAction356";
+void CHECKNEW_parser___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_parser___ReduceAction204;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction356;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -104169,34 +136616,37 @@ void CHECKNEW_parser___ReduceAction204(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction204_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction356_parser___ReduceAction___init[] = "new ReduceAction356 parser::ReduceAction::init";
+val_t NEW_ReduceAction356_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction204_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction356_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction204();
-  INIT_ATTRIBUTES__parser___ReduceAction204(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction356();
+  INIT_ATTRIBUTES__parser___ReduceAction356(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction204(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction356(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction205[52] = {
-  {(bigint) 1575 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction357[55] = {
+  {(bigint) 1731 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction205" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction205 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction205 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1575 /* 5: ReduceAction205 < ReduceAction205: superclass typecheck marker */},
+  {(bigint) "ReduceAction357" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction357 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction357 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1731 /* 5: ReduceAction357 < ReduceAction357: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -104209,7 +136659,7 @@ const classtable_elt_t VFT_parser___ReduceAction205[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction205 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction357 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -104225,6 +136675,8 @@ const classtable_elt_t VFT_parser___ReduceAction205[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -104238,45 +136690,49 @@ const classtable_elt_t VFT_parser___ReduceAction205[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction205 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction205___action},
+  {(bigint) 0 /* 50: ReduceAction357 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction357___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction205 < ReduceAction205: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction357 < ReduceAction357: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction205::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction205(val_t p0){
+/* 2: Attribute ReduceAction357::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction357[] = "init var of ReduceAction357";
+void INIT_ATTRIBUTES__parser___ReduceAction357(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction205;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction357;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction205(void)
+val_t NEW_parser___ReduceAction357(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction205;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction357;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction205(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction357[] = "check new ReduceAction357";
+void CHECKNEW_parser___ReduceAction357(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction205;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction357;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -104286,34 +136742,37 @@ void CHECKNEW_parser___ReduceAction205(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction205_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction357_parser___ReduceAction___init[] = "new ReduceAction357 parser::ReduceAction::init";
+val_t NEW_ReduceAction357_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction205_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction357_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction205();
-  INIT_ATTRIBUTES__parser___ReduceAction205(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction357();
+  INIT_ATTRIBUTES__parser___ReduceAction357(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction205(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction357(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction206[52] = {
-  {(bigint) 1571 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction358[55] = {
+  {(bigint) 1727 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction206" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction206 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction206 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1571 /* 5: ReduceAction206 < ReduceAction206: superclass typecheck marker */},
+  {(bigint) "ReduceAction358" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction358 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction358 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1727 /* 5: ReduceAction358 < ReduceAction358: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -104326,7 +136785,7 @@ const classtable_elt_t VFT_parser___ReduceAction206[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction206 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction358 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -104342,6 +136801,8 @@ const classtable_elt_t VFT_parser___ReduceAction206[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -104355,45 +136816,49 @@ const classtable_elt_t VFT_parser___ReduceAction206[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction206 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction206___action},
+  {(bigint) 0 /* 50: ReduceAction358 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction358___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction206 < ReduceAction206: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction358 < ReduceAction358: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction206::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction206(val_t p0){
+/* 2: Attribute ReduceAction358::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction358[] = "init var of ReduceAction358";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction206;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction358;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction206(void)
+val_t NEW_parser___ReduceAction358(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction206;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction358;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction206(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction358[] = "check new ReduceAction358";
+void CHECKNEW_parser___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_parser___ReduceAction206;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction358;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -104403,34 +136868,37 @@ void CHECKNEW_parser___ReduceAction206(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction206_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction358_parser___ReduceAction___init[] = "new ReduceAction358 parser::ReduceAction::init";
+val_t NEW_ReduceAction358_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction206_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction358_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction206();
-  INIT_ATTRIBUTES__parser___ReduceAction206(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction358();
+  INIT_ATTRIBUTES__parser___ReduceAction358(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction206(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction358(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction207[52] = {
-  {(bigint) 1567 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction359[55] = {
+  {(bigint) 1723 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction207" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction207 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction207 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1567 /* 5: ReduceAction207 < ReduceAction207: superclass typecheck marker */},
+  {(bigint) "ReduceAction359" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction359 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction359 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1723 /* 5: ReduceAction359 < ReduceAction359: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -104443,7 +136911,7 @@ const classtable_elt_t VFT_parser___ReduceAction207[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction207 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction359 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -104459,6 +136927,8 @@ const classtable_elt_t VFT_parser___ReduceAction207[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -104472,45 +136942,49 @@ const classtable_elt_t VFT_parser___ReduceAction207[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction207 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction207___action},
+  {(bigint) 0 /* 50: ReduceAction359 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction359___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction207 < ReduceAction207: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction359 < ReduceAction359: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction207::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction207(val_t p0){
+/* 2: Attribute ReduceAction359::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction359[] = "init var of ReduceAction359";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction207;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction359;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction207(void)
+val_t NEW_parser___ReduceAction359(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction207;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction359;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction207(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction359[] = "check new ReduceAction359";
+void CHECKNEW_parser___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_parser___ReduceAction207;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction359;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -104520,34 +136994,37 @@ void CHECKNEW_parser___ReduceAction207(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction207_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction359_parser___ReduceAction___init[] = "new ReduceAction359 parser::ReduceAction::init";
+val_t NEW_ReduceAction359_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction207_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction359_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction207();
-  INIT_ATTRIBUTES__parser___ReduceAction207(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction359();
+  INIT_ATTRIBUTES__parser___ReduceAction359(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction207(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction359(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction208[52] = {
-  {(bigint) 1563 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction360[55] = {
+  {(bigint) 1715 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction208" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction208 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction208 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1563 /* 5: ReduceAction208 < ReduceAction208: superclass typecheck marker */},
+  {(bigint) "ReduceAction360" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction360 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction360 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1715 /* 5: ReduceAction360 < ReduceAction360: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -104560,7 +137037,7 @@ const classtable_elt_t VFT_parser___ReduceAction208[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction208 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction360 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -104576,6 +137053,8 @@ const classtable_elt_t VFT_parser___ReduceAction208[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -104589,45 +137068,49 @@ const classtable_elt_t VFT_parser___ReduceAction208[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction208 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction208___action},
+  {(bigint) 0 /* 50: ReduceAction360 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction360___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction208 < ReduceAction208: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction360 < ReduceAction360: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction208::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction208(val_t p0){
+/* 2: Attribute ReduceAction360::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction360[] = "init var of ReduceAction360";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction208;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction360;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction208(void)
+val_t NEW_parser___ReduceAction360(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction208;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction360;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction208(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction360[] = "check new ReduceAction360";
+void CHECKNEW_parser___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_parser___ReduceAction208;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction360;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -104637,34 +137120,37 @@ void CHECKNEW_parser___ReduceAction208(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction208_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction360_parser___ReduceAction___init[] = "new ReduceAction360 parser::ReduceAction::init";
+val_t NEW_ReduceAction360_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction208_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction360_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction208();
-  INIT_ATTRIBUTES__parser___ReduceAction208(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction360();
+  INIT_ATTRIBUTES__parser___ReduceAction360(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction208(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction360(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction209[52] = {
-  {(bigint) 1559 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction361[55] = {
+  {(bigint) 1711 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction209" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction209 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction209 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1559 /* 5: ReduceAction209 < ReduceAction209: superclass typecheck marker */},
+  {(bigint) "ReduceAction361" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction361 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction361 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1711 /* 5: ReduceAction361 < ReduceAction361: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -104677,7 +137163,7 @@ const classtable_elt_t VFT_parser___ReduceAction209[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction209 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction361 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -104693,6 +137179,8 @@ const classtable_elt_t VFT_parser___ReduceAction209[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -104706,45 +137194,49 @@ const classtable_elt_t VFT_parser___ReduceAction209[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction209 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction209___action},
+  {(bigint) 0 /* 50: ReduceAction361 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction361___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction209 < ReduceAction209: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction361 < ReduceAction361: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction209::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction209(val_t p0){
+/* 2: Attribute ReduceAction361::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction361[] = "init var of ReduceAction361";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction209;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction361;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction209(void)
+val_t NEW_parser___ReduceAction361(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction209;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction361;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction209(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction361[] = "check new ReduceAction361";
+void CHECKNEW_parser___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_parser___ReduceAction209;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction361;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -104754,34 +137246,37 @@ void CHECKNEW_parser___ReduceAction209(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction209_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction361_parser___ReduceAction___init[] = "new ReduceAction361 parser::ReduceAction::init";
+val_t NEW_ReduceAction361_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction209_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction361_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction209();
-  INIT_ATTRIBUTES__parser___ReduceAction209(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction361();
+  INIT_ATTRIBUTES__parser___ReduceAction361(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction209(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction361(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction210[52] = {
-  {(bigint) 1551 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction362[55] = {
+  {(bigint) 1707 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction210" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction210 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction210 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1551 /* 5: ReduceAction210 < ReduceAction210: superclass typecheck marker */},
+  {(bigint) "ReduceAction362" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction362 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction362 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1707 /* 5: ReduceAction362 < ReduceAction362: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -104794,7 +137289,7 @@ const classtable_elt_t VFT_parser___ReduceAction210[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction210 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction362 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -104810,6 +137305,8 @@ const classtable_elt_t VFT_parser___ReduceAction210[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -104823,45 +137320,49 @@ const classtable_elt_t VFT_parser___ReduceAction210[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction210 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction210___action},
+  {(bigint) 0 /* 50: ReduceAction362 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction362___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction210 < ReduceAction210: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction362 < ReduceAction362: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction210::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction210(val_t p0){
+/* 2: Attribute ReduceAction362::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction362[] = "init var of ReduceAction362";
+void INIT_ATTRIBUTES__parser___ReduceAction362(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction210;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction362;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction210(void)
+val_t NEW_parser___ReduceAction362(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction210;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction362;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction210(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction362[] = "check new ReduceAction362";
+void CHECKNEW_parser___ReduceAction362(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction210;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction362;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -104871,34 +137372,37 @@ void CHECKNEW_parser___ReduceAction210(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction210_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction362_parser___ReduceAction___init[] = "new ReduceAction362 parser::ReduceAction::init";
+val_t NEW_ReduceAction362_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction210_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction362_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction210();
-  INIT_ATTRIBUTES__parser___ReduceAction210(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction362();
+  INIT_ATTRIBUTES__parser___ReduceAction362(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction210(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction362(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction211[52] = {
-  {(bigint) 1547 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction363[55] = {
+  {(bigint) 1703 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction211" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction211 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction211 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1547 /* 5: ReduceAction211 < ReduceAction211: superclass typecheck marker */},
+  {(bigint) "ReduceAction363" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction363 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction363 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1703 /* 5: ReduceAction363 < ReduceAction363: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -104911,7 +137415,7 @@ const classtable_elt_t VFT_parser___ReduceAction211[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction211 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction363 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -104927,6 +137431,8 @@ const classtable_elt_t VFT_parser___ReduceAction211[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -104940,45 +137446,49 @@ const classtable_elt_t VFT_parser___ReduceAction211[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction211 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction211___action},
+  {(bigint) 0 /* 50: ReduceAction363 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction363___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction211 < ReduceAction211: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction363 < ReduceAction363: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction211::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction211(val_t p0){
+/* 2: Attribute ReduceAction363::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction363[] = "init var of ReduceAction363";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction211;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction363;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction211(void)
+val_t NEW_parser___ReduceAction363(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction211;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction363;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction211(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction363[] = "check new ReduceAction363";
+void CHECKNEW_parser___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_parser___ReduceAction211;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction363;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -104988,34 +137498,37 @@ void CHECKNEW_parser___ReduceAction211(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction211_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction363_parser___ReduceAction___init[] = "new ReduceAction363 parser::ReduceAction::init";
+val_t NEW_ReduceAction363_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction211_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction363_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction211();
-  INIT_ATTRIBUTES__parser___ReduceAction211(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction363();
+  INIT_ATTRIBUTES__parser___ReduceAction363(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction211(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction363(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction212[52] = {
-  {(bigint) 1543 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction364[55] = {
+  {(bigint) 1699 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction212" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction212 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction212 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1543 /* 5: ReduceAction212 < ReduceAction212: superclass typecheck marker */},
+  {(bigint) "ReduceAction364" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction364 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction364 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1699 /* 5: ReduceAction364 < ReduceAction364: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -105028,7 +137541,7 @@ const classtable_elt_t VFT_parser___ReduceAction212[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction212 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction364 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -105044,6 +137557,8 @@ const classtable_elt_t VFT_parser___ReduceAction212[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -105057,45 +137572,49 @@ const classtable_elt_t VFT_parser___ReduceAction212[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction212 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction212___action},
+  {(bigint) 0 /* 50: ReduceAction364 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction364___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction212 < ReduceAction212: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction364 < ReduceAction364: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction212::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction212(val_t p0){
+/* 2: Attribute ReduceAction364::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction364[] = "init var of ReduceAction364";
+void INIT_ATTRIBUTES__parser___ReduceAction364(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction212;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction364;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction212(void)
+val_t NEW_parser___ReduceAction364(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction212;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction364;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction212(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction364[] = "check new ReduceAction364";
+void CHECKNEW_parser___ReduceAction364(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction212;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction364;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -105105,34 +137624,37 @@ void CHECKNEW_parser___ReduceAction212(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction212_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction364_parser___ReduceAction___init[] = "new ReduceAction364 parser::ReduceAction::init";
+val_t NEW_ReduceAction364_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction212_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction364_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction212();
-  INIT_ATTRIBUTES__parser___ReduceAction212(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction364();
+  INIT_ATTRIBUTES__parser___ReduceAction364(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction212(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction364(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction213[52] = {
-  {(bigint) 1539 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction365[55] = {
+  {(bigint) 1695 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction213" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction213 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction213 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1539 /* 5: ReduceAction213 < ReduceAction213: superclass typecheck marker */},
+  {(bigint) "ReduceAction365" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction365 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction365 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1695 /* 5: ReduceAction365 < ReduceAction365: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -105145,7 +137667,7 @@ const classtable_elt_t VFT_parser___ReduceAction213[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction213 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction365 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -105161,6 +137683,8 @@ const classtable_elt_t VFT_parser___ReduceAction213[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -105174,45 +137698,49 @@ const classtable_elt_t VFT_parser___ReduceAction213[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction213 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction213___action},
+  {(bigint) 0 /* 50: ReduceAction365 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction365___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction213 < ReduceAction213: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction365 < ReduceAction365: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction213::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction213(val_t p0){
+/* 2: Attribute ReduceAction365::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction365[] = "init var of ReduceAction365";
+void INIT_ATTRIBUTES__parser___ReduceAction365(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction213;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction365;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction213(void)
+val_t NEW_parser___ReduceAction365(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction213;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction365;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction213(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction365[] = "check new ReduceAction365";
+void CHECKNEW_parser___ReduceAction365(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction213;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction365;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -105222,34 +137750,37 @@ void CHECKNEW_parser___ReduceAction213(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction213_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction365_parser___ReduceAction___init[] = "new ReduceAction365 parser::ReduceAction::init";
+val_t NEW_ReduceAction365_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction213_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction365_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction213();
-  INIT_ATTRIBUTES__parser___ReduceAction213(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction365();
+  INIT_ATTRIBUTES__parser___ReduceAction365(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction213(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction365(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction214[52] = {
-  {(bigint) 1535 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction366[55] = {
+  {(bigint) 1691 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction214" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction214 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction214 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1535 /* 5: ReduceAction214 < ReduceAction214: superclass typecheck marker */},
+  {(bigint) "ReduceAction366" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction366 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction366 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1691 /* 5: ReduceAction366 < ReduceAction366: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -105262,7 +137793,7 @@ const classtable_elt_t VFT_parser___ReduceAction214[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction214 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction366 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -105278,6 +137809,8 @@ const classtable_elt_t VFT_parser___ReduceAction214[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -105291,45 +137824,49 @@ const classtable_elt_t VFT_parser___ReduceAction214[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction214 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction214___action},
+  {(bigint) 0 /* 50: ReduceAction366 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction366___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction214 < ReduceAction214: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction366 < ReduceAction366: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction214::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction214(val_t p0){
+/* 2: Attribute ReduceAction366::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction366[] = "init var of ReduceAction366";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction214;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction366;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction214(void)
+val_t NEW_parser___ReduceAction366(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction214;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction366;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction214(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction366[] = "check new ReduceAction366";
+void CHECKNEW_parser___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_parser___ReduceAction214;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction366;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -105339,34 +137876,37 @@ void CHECKNEW_parser___ReduceAction214(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction214_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction366_parser___ReduceAction___init[] = "new ReduceAction366 parser::ReduceAction::init";
+val_t NEW_ReduceAction366_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction214_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction366_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction214();
-  INIT_ATTRIBUTES__parser___ReduceAction214(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction366();
+  INIT_ATTRIBUTES__parser___ReduceAction366(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction214(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction366(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction215[52] = {
-  {(bigint) 1531 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction367[55] = {
+  {(bigint) 1687 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction215" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction215 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction215 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1531 /* 5: ReduceAction215 < ReduceAction215: superclass typecheck marker */},
+  {(bigint) "ReduceAction367" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction367 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction367 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1687 /* 5: ReduceAction367 < ReduceAction367: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -105379,7 +137919,7 @@ const classtable_elt_t VFT_parser___ReduceAction215[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction215 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction367 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -105395,6 +137935,8 @@ const classtable_elt_t VFT_parser___ReduceAction215[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -105408,45 +137950,49 @@ const classtable_elt_t VFT_parser___ReduceAction215[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction215 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction215___action},
+  {(bigint) 0 /* 50: ReduceAction367 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction367___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction215 < ReduceAction215: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction367 < ReduceAction367: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction215::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction215(val_t p0){
+/* 2: Attribute ReduceAction367::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction367[] = "init var of ReduceAction367";
+void INIT_ATTRIBUTES__parser___ReduceAction367(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction215;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction367;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction215(void)
+val_t NEW_parser___ReduceAction367(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction215;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction367;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction215(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction367[] = "check new ReduceAction367";
+void CHECKNEW_parser___ReduceAction367(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction215;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction367;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -105456,34 +138002,37 @@ void CHECKNEW_parser___ReduceAction215(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction215_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction367_parser___ReduceAction___init[] = "new ReduceAction367 parser::ReduceAction::init";
+val_t NEW_ReduceAction367_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction215_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction367_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction215();
-  INIT_ATTRIBUTES__parser___ReduceAction215(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction367();
+  INIT_ATTRIBUTES__parser___ReduceAction367(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction215(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction367(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction216[52] = {
-  {(bigint) 1527 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction368[55] = {
+  {(bigint) 1683 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction216" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction216 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction216 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1527 /* 5: ReduceAction216 < ReduceAction216: superclass typecheck marker */},
+  {(bigint) "ReduceAction368" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction368 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction368 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1683 /* 5: ReduceAction368 < ReduceAction368: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -105496,7 +138045,7 @@ const classtable_elt_t VFT_parser___ReduceAction216[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction216 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction368 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -105512,6 +138061,8 @@ const classtable_elt_t VFT_parser___ReduceAction216[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -105525,45 +138076,49 @@ const classtable_elt_t VFT_parser___ReduceAction216[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction216 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction216___action},
+  {(bigint) 0 /* 50: ReduceAction368 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction368___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction216 < ReduceAction216: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction368 < ReduceAction368: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction216::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction216(val_t p0){
+/* 2: Attribute ReduceAction368::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction368[] = "init var of ReduceAction368";
+void INIT_ATTRIBUTES__parser___ReduceAction368(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction216;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction368;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction216(void)
+val_t NEW_parser___ReduceAction368(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction216;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction368;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction216(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction368[] = "check new ReduceAction368";
+void CHECKNEW_parser___ReduceAction368(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction216;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction368;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -105573,34 +138128,37 @@ void CHECKNEW_parser___ReduceAction216(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction216_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction368_parser___ReduceAction___init[] = "new ReduceAction368 parser::ReduceAction::init";
+val_t NEW_ReduceAction368_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction216_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction368_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction216();
-  INIT_ATTRIBUTES__parser___ReduceAction216(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction368();
+  INIT_ATTRIBUTES__parser___ReduceAction368(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction216(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction368(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction217[52] = {
-  {(bigint) 1523 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction369[55] = {
+  {(bigint) 1679 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction217" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction217 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction217 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1523 /* 5: ReduceAction217 < ReduceAction217: superclass typecheck marker */},
+  {(bigint) "ReduceAction369" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction369 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction369 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1679 /* 5: ReduceAction369 < ReduceAction369: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -105613,7 +138171,7 @@ const classtable_elt_t VFT_parser___ReduceAction217[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction217 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction369 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -105629,6 +138187,8 @@ const classtable_elt_t VFT_parser___ReduceAction217[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -105642,45 +138202,49 @@ const classtable_elt_t VFT_parser___ReduceAction217[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction217 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction217___action},
+  {(bigint) 0 /* 50: ReduceAction369 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction369___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction217 < ReduceAction217: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction369 < ReduceAction369: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction217::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction217(val_t p0){
+/* 2: Attribute ReduceAction369::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction369[] = "init var of ReduceAction369";
+void INIT_ATTRIBUTES__parser___ReduceAction369(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction217;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction369;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction217(void)
+val_t NEW_parser___ReduceAction369(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction217;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction369;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction217(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction369[] = "check new ReduceAction369";
+void CHECKNEW_parser___ReduceAction369(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction217;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction369;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -105690,34 +138254,37 @@ void CHECKNEW_parser___ReduceAction217(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction217_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction369_parser___ReduceAction___init[] = "new ReduceAction369 parser::ReduceAction::init";
+val_t NEW_ReduceAction369_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction217_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction369_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction217();
-  INIT_ATTRIBUTES__parser___ReduceAction217(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction369();
+  INIT_ATTRIBUTES__parser___ReduceAction369(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction217(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction369(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction218[52] = {
-  {(bigint) 1519 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction370[55] = {
+  {(bigint) 1671 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction218" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction218 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction218 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1519 /* 5: ReduceAction218 < ReduceAction218: superclass typecheck marker */},
+  {(bigint) "ReduceAction370" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction370 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction370 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1671 /* 5: ReduceAction370 < ReduceAction370: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -105730,7 +138297,7 @@ const classtable_elt_t VFT_parser___ReduceAction218[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction218 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction370 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -105746,6 +138313,8 @@ const classtable_elt_t VFT_parser___ReduceAction218[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -105759,45 +138328,49 @@ const classtable_elt_t VFT_parser___ReduceAction218[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction218 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction218___action},
+  {(bigint) 0 /* 50: ReduceAction370 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction370___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction218 < ReduceAction218: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction370 < ReduceAction370: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction218::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction218(val_t p0){
+/* 2: Attribute ReduceAction370::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction370[] = "init var of ReduceAction370";
+void INIT_ATTRIBUTES__parser___ReduceAction370(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction218;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction370;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction218(void)
+val_t NEW_parser___ReduceAction370(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction218;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction370;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction218(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction370[] = "check new ReduceAction370";
+void CHECKNEW_parser___ReduceAction370(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction218;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction370;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -105807,34 +138380,37 @@ void CHECKNEW_parser___ReduceAction218(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction218_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction370_parser___ReduceAction___init[] = "new ReduceAction370 parser::ReduceAction::init";
+val_t NEW_ReduceAction370_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction218_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction370_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction218();
-  INIT_ATTRIBUTES__parser___ReduceAction218(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction370();
+  INIT_ATTRIBUTES__parser___ReduceAction370(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction218(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction370(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction220[52] = {
-  {(bigint) 1511 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction371[55] = {
+  {(bigint) 1667 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction220" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction220 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction220 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1511 /* 5: ReduceAction220 < ReduceAction220: superclass typecheck marker */},
+  {(bigint) "ReduceAction371" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction371 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction371 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1667 /* 5: ReduceAction371 < ReduceAction371: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -105847,7 +138423,7 @@ const classtable_elt_t VFT_parser___ReduceAction220[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction220 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction371 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -105863,6 +138439,8 @@ const classtable_elt_t VFT_parser___ReduceAction220[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -105876,45 +138454,49 @@ const classtable_elt_t VFT_parser___ReduceAction220[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction220 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction220___action},
+  {(bigint) 0 /* 50: ReduceAction371 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction371___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction220 < ReduceAction220: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction371 < ReduceAction371: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction220::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction220(val_t p0){
+/* 2: Attribute ReduceAction371::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction371[] = "init var of ReduceAction371";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction220;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction371;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction220(void)
+val_t NEW_parser___ReduceAction371(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction220;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction371;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction220(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction371[] = "check new ReduceAction371";
+void CHECKNEW_parser___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_parser___ReduceAction220;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction371;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -105924,34 +138506,37 @@ void CHECKNEW_parser___ReduceAction220(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction220_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction371_parser___ReduceAction___init[] = "new ReduceAction371 parser::ReduceAction::init";
+val_t NEW_ReduceAction371_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction220_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction371_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction220();
-  INIT_ATTRIBUTES__parser___ReduceAction220(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction371();
+  INIT_ATTRIBUTES__parser___ReduceAction371(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction220(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction371(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction221[52] = {
-  {(bigint) 1507 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction372[55] = {
+  {(bigint) 1663 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction221" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction221 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction221 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1507 /* 5: ReduceAction221 < ReduceAction221: superclass typecheck marker */},
+  {(bigint) "ReduceAction372" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction372 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction372 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1663 /* 5: ReduceAction372 < ReduceAction372: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -105964,7 +138549,7 @@ const classtable_elt_t VFT_parser___ReduceAction221[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction221 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction372 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -105980,6 +138565,8 @@ const classtable_elt_t VFT_parser___ReduceAction221[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -105993,45 +138580,49 @@ const classtable_elt_t VFT_parser___ReduceAction221[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction221 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction221___action},
+  {(bigint) 0 /* 50: ReduceAction372 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction372___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction221 < ReduceAction221: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction372 < ReduceAction372: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction221::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction221(val_t p0){
+/* 2: Attribute ReduceAction372::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction372[] = "init var of ReduceAction372";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction221;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction372;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction221(void)
+val_t NEW_parser___ReduceAction372(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction221;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction372;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction221(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction372[] = "check new ReduceAction372";
+void CHECKNEW_parser___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_parser___ReduceAction221;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction372;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -106041,34 +138632,37 @@ void CHECKNEW_parser___ReduceAction221(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction221_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction372_parser___ReduceAction___init[] = "new ReduceAction372 parser::ReduceAction::init";
+val_t NEW_ReduceAction372_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction221_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction372_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction221();
-  INIT_ATTRIBUTES__parser___ReduceAction221(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction372();
+  INIT_ATTRIBUTES__parser___ReduceAction372(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction221(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction372(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction222[52] = {
-  {(bigint) 1503 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction373[55] = {
+  {(bigint) 1659 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction222" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction222 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction222 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1503 /* 5: ReduceAction222 < ReduceAction222: superclass typecheck marker */},
+  {(bigint) "ReduceAction373" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction373 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction373 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1659 /* 5: ReduceAction373 < ReduceAction373: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -106081,7 +138675,7 @@ const classtable_elt_t VFT_parser___ReduceAction222[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction222 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction373 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -106097,6 +138691,8 @@ const classtable_elt_t VFT_parser___ReduceAction222[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -106110,45 +138706,49 @@ const classtable_elt_t VFT_parser___ReduceAction222[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction222 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction222___action},
+  {(bigint) 0 /* 50: ReduceAction373 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction373___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction222 < ReduceAction222: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction373 < ReduceAction373: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction222::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction222(val_t p0){
+/* 2: Attribute ReduceAction373::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction373[] = "init var of ReduceAction373";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction222;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction373;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction222(void)
+val_t NEW_parser___ReduceAction373(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction222;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction373;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction222(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction373[] = "check new ReduceAction373";
+void CHECKNEW_parser___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_parser___ReduceAction222;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction373;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -106158,34 +138758,37 @@ void CHECKNEW_parser___ReduceAction222(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction222_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction373_parser___ReduceAction___init[] = "new ReduceAction373 parser::ReduceAction::init";
+val_t NEW_ReduceAction373_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction222_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction373_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction222();
-  INIT_ATTRIBUTES__parser___ReduceAction222(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction373();
+  INIT_ATTRIBUTES__parser___ReduceAction373(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction222(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction373(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction223[52] = {
-  {(bigint) 1499 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction374[55] = {
+  {(bigint) 1655 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction223" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction223 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction223 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1499 /* 5: ReduceAction223 < ReduceAction223: superclass typecheck marker */},
+  {(bigint) "ReduceAction374" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction374 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction374 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1655 /* 5: ReduceAction374 < ReduceAction374: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -106198,7 +138801,7 @@ const classtable_elt_t VFT_parser___ReduceAction223[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction223 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction374 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -106214,6 +138817,8 @@ const classtable_elt_t VFT_parser___ReduceAction223[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -106227,45 +138832,49 @@ const classtable_elt_t VFT_parser___ReduceAction223[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction223 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction223___action},
+  {(bigint) 0 /* 50: ReduceAction374 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction374___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction223 < ReduceAction223: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction374 < ReduceAction374: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction223::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction223(val_t p0){
+/* 2: Attribute ReduceAction374::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction374[] = "init var of ReduceAction374";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction223;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction374;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction223(void)
+val_t NEW_parser___ReduceAction374(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction223;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction374;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction223(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction374[] = "check new ReduceAction374";
+void CHECKNEW_parser___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_parser___ReduceAction223;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction374;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -106275,34 +138884,37 @@ void CHECKNEW_parser___ReduceAction223(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction223_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction374_parser___ReduceAction___init[] = "new ReduceAction374 parser::ReduceAction::init";
+val_t NEW_ReduceAction374_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction223_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction374_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction223();
-  INIT_ATTRIBUTES__parser___ReduceAction223(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction374();
+  INIT_ATTRIBUTES__parser___ReduceAction374(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction223(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction374(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction224[52] = {
-  {(bigint) 1495 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction375[55] = {
+  {(bigint) 1651 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction224" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction224 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction224 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1495 /* 5: ReduceAction224 < ReduceAction224: superclass typecheck marker */},
+  {(bigint) "ReduceAction375" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction375 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction375 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1651 /* 5: ReduceAction375 < ReduceAction375: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -106315,7 +138927,7 @@ const classtable_elt_t VFT_parser___ReduceAction224[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction224 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction375 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -106331,6 +138943,8 @@ const classtable_elt_t VFT_parser___ReduceAction224[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -106344,45 +138958,49 @@ const classtable_elt_t VFT_parser___ReduceAction224[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction224 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction224___action},
+  {(bigint) 0 /* 50: ReduceAction375 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction375___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction224 < ReduceAction224: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction375 < ReduceAction375: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction224::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction224(val_t p0){
+/* 2: Attribute ReduceAction375::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction375[] = "init var of ReduceAction375";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction224;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction375;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction224(void)
+val_t NEW_parser___ReduceAction375(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction224;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction375;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction224(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction375[] = "check new ReduceAction375";
+void CHECKNEW_parser___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_parser___ReduceAction224;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction375;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -106392,34 +139010,37 @@ void CHECKNEW_parser___ReduceAction224(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction224_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction375_parser___ReduceAction___init[] = "new ReduceAction375 parser::ReduceAction::init";
+val_t NEW_ReduceAction375_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction224_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction375_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction224();
-  INIT_ATTRIBUTES__parser___ReduceAction224(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction375();
+  INIT_ATTRIBUTES__parser___ReduceAction375(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction224(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction375(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction225[52] = {
-  {(bigint) 1491 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction376[55] = {
+  {(bigint) 1647 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction225" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction225 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction225 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1491 /* 5: ReduceAction225 < ReduceAction225: superclass typecheck marker */},
+  {(bigint) "ReduceAction376" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction376 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction376 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1647 /* 5: ReduceAction376 < ReduceAction376: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -106432,7 +139053,7 @@ const classtable_elt_t VFT_parser___ReduceAction225[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction225 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction376 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -106448,6 +139069,8 @@ const classtable_elt_t VFT_parser___ReduceAction225[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -106461,45 +139084,49 @@ const classtable_elt_t VFT_parser___ReduceAction225[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction225 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction225___action},
+  {(bigint) 0 /* 50: ReduceAction376 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction376___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction225 < ReduceAction225: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction376 < ReduceAction376: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction225::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction225(val_t p0){
+/* 2: Attribute ReduceAction376::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction376[] = "init var of ReduceAction376";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction225;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction376;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction225(void)
+val_t NEW_parser___ReduceAction376(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction225;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction376;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction225(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction376[] = "check new ReduceAction376";
+void CHECKNEW_parser___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_parser___ReduceAction225;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction376;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -106509,34 +139136,37 @@ void CHECKNEW_parser___ReduceAction225(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction225_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction376_parser___ReduceAction___init[] = "new ReduceAction376 parser::ReduceAction::init";
+val_t NEW_ReduceAction376_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction225_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction376_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction225();
-  INIT_ATTRIBUTES__parser___ReduceAction225(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction376();
+  INIT_ATTRIBUTES__parser___ReduceAction376(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction225(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction376(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction226[52] = {
-  {(bigint) 1487 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction377[55] = {
+  {(bigint) 1643 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction226" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction226 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction226 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1487 /* 5: ReduceAction226 < ReduceAction226: superclass typecheck marker */},
+  {(bigint) "ReduceAction377" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction377 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction377 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1643 /* 5: ReduceAction377 < ReduceAction377: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -106549,7 +139179,7 @@ const classtable_elt_t VFT_parser___ReduceAction226[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction226 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction377 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -106565,6 +139195,8 @@ const classtable_elt_t VFT_parser___ReduceAction226[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -106578,45 +139210,49 @@ const classtable_elt_t VFT_parser___ReduceAction226[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction226 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction226___action},
+  {(bigint) 0 /* 50: ReduceAction377 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction377___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction226 < ReduceAction226: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction377 < ReduceAction377: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction226::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction226(val_t p0){
+/* 2: Attribute ReduceAction377::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction377[] = "init var of ReduceAction377";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction226;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction377;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction226(void)
+val_t NEW_parser___ReduceAction377(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction226;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction377;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction226(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction377[] = "check new ReduceAction377";
+void CHECKNEW_parser___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_parser___ReduceAction226;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction377;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -106626,34 +139262,37 @@ void CHECKNEW_parser___ReduceAction226(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction226_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction377_parser___ReduceAction___init[] = "new ReduceAction377 parser::ReduceAction::init";
+val_t NEW_ReduceAction377_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction226_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction377_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction226();
-  INIT_ATTRIBUTES__parser___ReduceAction226(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction377();
+  INIT_ATTRIBUTES__parser___ReduceAction377(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction226(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction377(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction227[52] = {
-  {(bigint) 1483 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction378[55] = {
+  {(bigint) 1639 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction227" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction227 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction227 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1483 /* 5: ReduceAction227 < ReduceAction227: superclass typecheck marker */},
+  {(bigint) "ReduceAction378" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction378 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction378 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1639 /* 5: ReduceAction378 < ReduceAction378: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -106666,7 +139305,7 @@ const classtable_elt_t VFT_parser___ReduceAction227[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction227 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction378 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -106682,6 +139321,8 @@ const classtable_elt_t VFT_parser___ReduceAction227[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -106695,45 +139336,49 @@ const classtable_elt_t VFT_parser___ReduceAction227[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction227 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction227___action},
+  {(bigint) 0 /* 50: ReduceAction378 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction378___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction227 < ReduceAction227: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction378 < ReduceAction378: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction227::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction227(val_t p0){
+/* 2: Attribute ReduceAction378::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction378[] = "init var of ReduceAction378";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction227;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction378;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction227(void)
+val_t NEW_parser___ReduceAction378(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction227;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction378;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction227(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction378[] = "check new ReduceAction378";
+void CHECKNEW_parser___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_parser___ReduceAction227;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction378;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -106743,34 +139388,37 @@ void CHECKNEW_parser___ReduceAction227(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction227_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction378_parser___ReduceAction___init[] = "new ReduceAction378 parser::ReduceAction::init";
+val_t NEW_ReduceAction378_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction227_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction378_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction227();
-  INIT_ATTRIBUTES__parser___ReduceAction227(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction378();
+  INIT_ATTRIBUTES__parser___ReduceAction378(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction227(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction378(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction228[52] = {
-  {(bigint) 1479 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction379[55] = {
+  {(bigint) 1635 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction228" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction228 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction228 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1479 /* 5: ReduceAction228 < ReduceAction228: superclass typecheck marker */},
+  {(bigint) "ReduceAction379" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction379 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction379 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1635 /* 5: ReduceAction379 < ReduceAction379: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -106783,7 +139431,7 @@ const classtable_elt_t VFT_parser___ReduceAction228[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction228 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction379 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -106799,6 +139447,8 @@ const classtable_elt_t VFT_parser___ReduceAction228[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -106812,45 +139462,49 @@ const classtable_elt_t VFT_parser___ReduceAction228[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction228 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction228___action},
+  {(bigint) 0 /* 50: ReduceAction379 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction379___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction228 < ReduceAction228: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction379 < ReduceAction379: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction228::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction228(val_t p0){
+/* 2: Attribute ReduceAction379::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction379[] = "init var of ReduceAction379";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction228;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction379;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction228(void)
+val_t NEW_parser___ReduceAction379(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction228;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction379;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction228(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction379[] = "check new ReduceAction379";
+void CHECKNEW_parser___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_parser___ReduceAction228;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction379;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -106860,34 +139514,37 @@ void CHECKNEW_parser___ReduceAction228(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction228_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction379_parser___ReduceAction___init[] = "new ReduceAction379 parser::ReduceAction::init";
+val_t NEW_ReduceAction379_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction228_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction379_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction228();
-  INIT_ATTRIBUTES__parser___ReduceAction228(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction379();
+  INIT_ATTRIBUTES__parser___ReduceAction379(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction228(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction379(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction229[52] = {
-  {(bigint) 1475 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction380[55] = {
+  {(bigint) 1627 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction229" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction229 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction229 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1475 /* 5: ReduceAction229 < ReduceAction229: superclass typecheck marker */},
+  {(bigint) "ReduceAction380" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction380 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction380 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1627 /* 5: ReduceAction380 < ReduceAction380: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -106900,7 +139557,7 @@ const classtable_elt_t VFT_parser___ReduceAction229[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction229 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction380 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -106916,6 +139573,8 @@ const classtable_elt_t VFT_parser___ReduceAction229[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -106929,45 +139588,49 @@ const classtable_elt_t VFT_parser___ReduceAction229[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction229 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction229___action},
+  {(bigint) 0 /* 50: ReduceAction380 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction380___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction229 < ReduceAction229: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction380 < ReduceAction380: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction229::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction229(val_t p0){
+/* 2: Attribute ReduceAction380::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction380[] = "init var of ReduceAction380";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction229;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction380;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction229(void)
+val_t NEW_parser___ReduceAction380(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction229;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction380;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction229(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction380[] = "check new ReduceAction380";
+void CHECKNEW_parser___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_parser___ReduceAction229;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction380;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -106977,34 +139640,37 @@ void CHECKNEW_parser___ReduceAction229(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction229_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction380_parser___ReduceAction___init[] = "new ReduceAction380 parser::ReduceAction::init";
+val_t NEW_ReduceAction380_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction229_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction380_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction229();
-  INIT_ATTRIBUTES__parser___ReduceAction229(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction380();
+  INIT_ATTRIBUTES__parser___ReduceAction380(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction229(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction380(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction230[52] = {
-  {(bigint) 1467 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction381[55] = {
+  {(bigint) 1623 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction230" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction230 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction230 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1467 /* 5: ReduceAction230 < ReduceAction230: superclass typecheck marker */},
+  {(bigint) "ReduceAction381" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction381 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction381 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1623 /* 5: ReduceAction381 < ReduceAction381: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -107017,7 +139683,7 @@ const classtable_elt_t VFT_parser___ReduceAction230[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction230 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction381 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -107033,6 +139699,8 @@ const classtable_elt_t VFT_parser___ReduceAction230[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -107046,45 +139714,49 @@ const classtable_elt_t VFT_parser___ReduceAction230[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction230 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction230___action},
+  {(bigint) 0 /* 50: ReduceAction381 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction381___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction230 < ReduceAction230: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction381 < ReduceAction381: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction230::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction230(val_t p0){
+/* 2: Attribute ReduceAction381::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction381[] = "init var of ReduceAction381";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction230;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction381;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction230(void)
+val_t NEW_parser___ReduceAction381(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction230;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction381;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction230(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction381[] = "check new ReduceAction381";
+void CHECKNEW_parser___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_parser___ReduceAction230;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction381;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -107094,34 +139766,37 @@ void CHECKNEW_parser___ReduceAction230(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction230_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction381_parser___ReduceAction___init[] = "new ReduceAction381 parser::ReduceAction::init";
+val_t NEW_ReduceAction381_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction230_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction381_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction230();
-  INIT_ATTRIBUTES__parser___ReduceAction230(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction381();
+  INIT_ATTRIBUTES__parser___ReduceAction381(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction230(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction381(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction231[52] = {
-  {(bigint) 1463 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction382[55] = {
+  {(bigint) 1619 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction231" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction231 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction231 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1463 /* 5: ReduceAction231 < ReduceAction231: superclass typecheck marker */},
+  {(bigint) "ReduceAction382" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction382 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction382 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1619 /* 5: ReduceAction382 < ReduceAction382: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -107134,7 +139809,7 @@ const classtable_elt_t VFT_parser___ReduceAction231[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction231 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction382 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -107150,6 +139825,8 @@ const classtable_elt_t VFT_parser___ReduceAction231[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -107163,45 +139840,49 @@ const classtable_elt_t VFT_parser___ReduceAction231[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction231 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction231___action},
+  {(bigint) 0 /* 50: ReduceAction382 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction382___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction231 < ReduceAction231: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction382 < ReduceAction382: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction231::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction231(val_t p0){
+/* 2: Attribute ReduceAction382::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction382[] = "init var of ReduceAction382";
+void INIT_ATTRIBUTES__parser___ReduceAction382(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction231;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction382;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction231(void)
+val_t NEW_parser___ReduceAction382(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction231;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction382;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction231(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction382[] = "check new ReduceAction382";
+void CHECKNEW_parser___ReduceAction382(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction231;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction382;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -107211,34 +139892,37 @@ void CHECKNEW_parser___ReduceAction231(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction231_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction382_parser___ReduceAction___init[] = "new ReduceAction382 parser::ReduceAction::init";
+val_t NEW_ReduceAction382_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction231_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction382_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction231();
-  INIT_ATTRIBUTES__parser___ReduceAction231(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction382();
+  INIT_ATTRIBUTES__parser___ReduceAction382(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction231(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction382(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction232[52] = {
-  {(bigint) 1459 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction383[55] = {
+  {(bigint) 1615 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction232" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction232 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction232 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1459 /* 5: ReduceAction232 < ReduceAction232: superclass typecheck marker */},
+  {(bigint) "ReduceAction383" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction383 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction383 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1615 /* 5: ReduceAction383 < ReduceAction383: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -107251,7 +139935,7 @@ const classtable_elt_t VFT_parser___ReduceAction232[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction232 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction383 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -107267,6 +139951,8 @@ const classtable_elt_t VFT_parser___ReduceAction232[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -107280,45 +139966,49 @@ const classtable_elt_t VFT_parser___ReduceAction232[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction232 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction232___action},
+  {(bigint) 0 /* 50: ReduceAction383 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction383___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction232 < ReduceAction232: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction383 < ReduceAction383: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction232::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction232(val_t p0){
+/* 2: Attribute ReduceAction383::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction383[] = "init var of ReduceAction383";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction232;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction383;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction232(void)
+val_t NEW_parser___ReduceAction383(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction232;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction383;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction232(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction383[] = "check new ReduceAction383";
+void CHECKNEW_parser___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_parser___ReduceAction232;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction383;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -107328,34 +140018,37 @@ void CHECKNEW_parser___ReduceAction232(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction232_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction383_parser___ReduceAction___init[] = "new ReduceAction383 parser::ReduceAction::init";
+val_t NEW_ReduceAction383_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction232_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction383_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction232();
-  INIT_ATTRIBUTES__parser___ReduceAction232(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction383();
+  INIT_ATTRIBUTES__parser___ReduceAction383(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction232(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction383(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction233[52] = {
-  {(bigint) 1455 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction384[55] = {
+  {(bigint) 1611 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction233" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction233 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction233 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1455 /* 5: ReduceAction233 < ReduceAction233: superclass typecheck marker */},
+  {(bigint) "ReduceAction384" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction384 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction384 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1611 /* 5: ReduceAction384 < ReduceAction384: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -107368,7 +140061,7 @@ const classtable_elt_t VFT_parser___ReduceAction233[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction233 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction384 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -107384,6 +140077,8 @@ const classtable_elt_t VFT_parser___ReduceAction233[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -107397,45 +140092,49 @@ const classtable_elt_t VFT_parser___ReduceAction233[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction233 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction233___action},
+  {(bigint) 0 /* 50: ReduceAction384 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction384___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction233 < ReduceAction233: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction384 < ReduceAction384: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction233::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction233(val_t p0){
+/* 2: Attribute ReduceAction384::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction384[] = "init var of ReduceAction384";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction233;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction384;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction233(void)
+val_t NEW_parser___ReduceAction384(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction233;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction384;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction233(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction384[] = "check new ReduceAction384";
+void CHECKNEW_parser___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_parser___ReduceAction233;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction384;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -107445,34 +140144,37 @@ void CHECKNEW_parser___ReduceAction233(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction233_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction384_parser___ReduceAction___init[] = "new ReduceAction384 parser::ReduceAction::init";
+val_t NEW_ReduceAction384_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction233_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction384_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction233();
-  INIT_ATTRIBUTES__parser___ReduceAction233(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction384();
+  INIT_ATTRIBUTES__parser___ReduceAction384(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction233(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction384(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction235[52] = {
-  {(bigint) 1451 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction385[55] = {
+  {(bigint) 1607 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction235" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction235 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction235 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1451 /* 5: ReduceAction235 < ReduceAction235: superclass typecheck marker */},
+  {(bigint) "ReduceAction385" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction385 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction385 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1607 /* 5: ReduceAction385 < ReduceAction385: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -107485,7 +140187,7 @@ const classtable_elt_t VFT_parser___ReduceAction235[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction235 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction385 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -107501,6 +140203,8 @@ const classtable_elt_t VFT_parser___ReduceAction235[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -107514,45 +140218,49 @@ const classtable_elt_t VFT_parser___ReduceAction235[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction235 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction235___action},
+  {(bigint) 0 /* 50: ReduceAction385 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction385___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction235 < ReduceAction235: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction385 < ReduceAction385: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction235::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction235(val_t p0){
+/* 2: Attribute ReduceAction385::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction385[] = "init var of ReduceAction385";
+void INIT_ATTRIBUTES__parser___ReduceAction385(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction235;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction385;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction235(void)
+val_t NEW_parser___ReduceAction385(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction235;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction385;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction235(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction385[] = "check new ReduceAction385";
+void CHECKNEW_parser___ReduceAction385(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction235;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction385;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -107562,34 +140270,37 @@ void CHECKNEW_parser___ReduceAction235(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction235_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction385_parser___ReduceAction___init[] = "new ReduceAction385 parser::ReduceAction::init";
+val_t NEW_ReduceAction385_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction235_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction385_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction235();
-  INIT_ATTRIBUTES__parser___ReduceAction235(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction385();
+  INIT_ATTRIBUTES__parser___ReduceAction385(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction235(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction385(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction236[52] = {
-  {(bigint) 1447 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction386[55] = {
+  {(bigint) 1603 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction236" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction236 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction236 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1447 /* 5: ReduceAction236 < ReduceAction236: superclass typecheck marker */},
+  {(bigint) "ReduceAction386" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction386 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction386 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1603 /* 5: ReduceAction386 < ReduceAction386: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -107602,7 +140313,7 @@ const classtable_elt_t VFT_parser___ReduceAction236[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction236 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction386 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -107618,6 +140329,8 @@ const classtable_elt_t VFT_parser___ReduceAction236[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -107631,45 +140344,49 @@ const classtable_elt_t VFT_parser___ReduceAction236[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction236 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction236___action},
+  {(bigint) 0 /* 50: ReduceAction386 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction386___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction236 < ReduceAction236: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction386 < ReduceAction386: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction236::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction236(val_t p0){
+/* 2: Attribute ReduceAction386::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction386[] = "init var of ReduceAction386";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction236;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction386;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction236(void)
+val_t NEW_parser___ReduceAction386(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction236;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction386;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction236(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction386[] = "check new ReduceAction386";
+void CHECKNEW_parser___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_parser___ReduceAction236;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction386;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -107679,34 +140396,37 @@ void CHECKNEW_parser___ReduceAction236(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction236_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction386_parser___ReduceAction___init[] = "new ReduceAction386 parser::ReduceAction::init";
+val_t NEW_ReduceAction386_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction236_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction386_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction236();
-  INIT_ATTRIBUTES__parser___ReduceAction236(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction386();
+  INIT_ATTRIBUTES__parser___ReduceAction386(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction236(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction386(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction237[52] = {
-  {(bigint) 1443 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction387[55] = {
+  {(bigint) 1599 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction237" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction237 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction237 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1443 /* 5: ReduceAction237 < ReduceAction237: superclass typecheck marker */},
+  {(bigint) "ReduceAction387" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction387 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction387 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1599 /* 5: ReduceAction387 < ReduceAction387: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -107719,7 +140439,7 @@ const classtable_elt_t VFT_parser___ReduceAction237[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction237 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction387 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -107735,6 +140455,8 @@ const classtable_elt_t VFT_parser___ReduceAction237[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -107748,45 +140470,49 @@ const classtable_elt_t VFT_parser___ReduceAction237[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction237 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction237___action},
+  {(bigint) 0 /* 50: ReduceAction387 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction387___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction237 < ReduceAction237: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction387 < ReduceAction387: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction237::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction237(val_t p0){
+/* 2: Attribute ReduceAction387::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction387[] = "init var of ReduceAction387";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction237;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction387;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction237(void)
+val_t NEW_parser___ReduceAction387(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction237;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction387;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction237(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction387[] = "check new ReduceAction387";
+void CHECKNEW_parser___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_parser___ReduceAction237;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction387;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -107796,34 +140522,37 @@ void CHECKNEW_parser___ReduceAction237(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction237_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction387_parser___ReduceAction___init[] = "new ReduceAction387 parser::ReduceAction::init";
+val_t NEW_ReduceAction387_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction237_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction387_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction237();
-  INIT_ATTRIBUTES__parser___ReduceAction237(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction387();
+  INIT_ATTRIBUTES__parser___ReduceAction387(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction237(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction387(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction238[52] = {
-  {(bigint) 1439 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction388[55] = {
+  {(bigint) 1595 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction238" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction238 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction238 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1439 /* 5: ReduceAction238 < ReduceAction238: superclass typecheck marker */},
+  {(bigint) "ReduceAction388" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction388 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction388 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1595 /* 5: ReduceAction388 < ReduceAction388: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -107836,7 +140565,7 @@ const classtable_elt_t VFT_parser___ReduceAction238[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction238 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction388 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -107852,6 +140581,8 @@ const classtable_elt_t VFT_parser___ReduceAction238[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -107865,45 +140596,49 @@ const classtable_elt_t VFT_parser___ReduceAction238[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction238 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction238___action},
+  {(bigint) 0 /* 50: ReduceAction388 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction388___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction238 < ReduceAction238: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction388 < ReduceAction388: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction238::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction238(val_t p0){
+/* 2: Attribute ReduceAction388::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction388[] = "init var of ReduceAction388";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction238;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction388;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction238(void)
+val_t NEW_parser___ReduceAction388(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction238;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction388;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction238(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction388[] = "check new ReduceAction388";
+void CHECKNEW_parser___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_parser___ReduceAction238;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction388;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -107913,34 +140648,37 @@ void CHECKNEW_parser___ReduceAction238(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction238_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction388_parser___ReduceAction___init[] = "new ReduceAction388 parser::ReduceAction::init";
+val_t NEW_ReduceAction388_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction238_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction388_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction238();
-  INIT_ATTRIBUTES__parser___ReduceAction238(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction388();
+  INIT_ATTRIBUTES__parser___ReduceAction388(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction238(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction388(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction239[52] = {
-  {(bigint) 1435 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction389[55] = {
+  {(bigint) 1591 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction239" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction239 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction239 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1435 /* 5: ReduceAction239 < ReduceAction239: superclass typecheck marker */},
+  {(bigint) "ReduceAction389" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction389 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction389 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1591 /* 5: ReduceAction389 < ReduceAction389: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -107953,7 +140691,7 @@ const classtable_elt_t VFT_parser___ReduceAction239[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction239 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction389 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -107969,6 +140707,8 @@ const classtable_elt_t VFT_parser___ReduceAction239[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -107982,45 +140722,49 @@ const classtable_elt_t VFT_parser___ReduceAction239[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction239 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction239___action},
+  {(bigint) 0 /* 50: ReduceAction389 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction389___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction239 < ReduceAction239: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction389 < ReduceAction389: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction239::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction239(val_t p0){
+/* 2: Attribute ReduceAction389::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction389[] = "init var of ReduceAction389";
+void INIT_ATTRIBUTES__parser___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__parser___ReduceAction239;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction389;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction239(void)
+val_t NEW_parser___ReduceAction389(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction239;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction389;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction239(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction389[] = "check new ReduceAction389";
+void CHECKNEW_parser___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_parser___ReduceAction239;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction389;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -108030,34 +140774,37 @@ void CHECKNEW_parser___ReduceAction239(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction239_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction389_parser___ReduceAction___init[] = "new ReduceAction389 parser::ReduceAction::init";
+val_t NEW_ReduceAction389_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction239_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction389_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction239();
-  INIT_ATTRIBUTES__parser___ReduceAction239(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction389();
+  INIT_ATTRIBUTES__parser___ReduceAction389(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction239(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction389(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction240[52] = {
-  {(bigint) 1427 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction390[55] = {
+  {(bigint) 1583 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction240" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction240 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction240 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1427 /* 5: ReduceAction240 < ReduceAction240: superclass typecheck marker */},
+  {(bigint) "ReduceAction390" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction390 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction390 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1583 /* 5: ReduceAction390 < ReduceAction390: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -108070,7 +140817,7 @@ const classtable_elt_t VFT_parser___ReduceAction240[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction240 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction390 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -108086,6 +140833,8 @@ const classtable_elt_t VFT_parser___ReduceAction240[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -108099,45 +140848,49 @@ const classtable_elt_t VFT_parser___ReduceAction240[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction240 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction240___action},
+  {(bigint) 0 /* 50: ReduceAction390 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction390___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction240 < ReduceAction240: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction390 < ReduceAction390: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction240::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction240(val_t p0){
+/* 2: Attribute ReduceAction390::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction390[] = "init var of ReduceAction390";
+void INIT_ATTRIBUTES__parser___ReduceAction390(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction240;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction390;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction240(void)
+val_t NEW_parser___ReduceAction390(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction240;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction390;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction240(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction390[] = "check new ReduceAction390";
+void CHECKNEW_parser___ReduceAction390(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction240;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction390;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -108147,34 +140900,37 @@ void CHECKNEW_parser___ReduceAction240(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction240_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction390_parser___ReduceAction___init[] = "new ReduceAction390 parser::ReduceAction::init";
+val_t NEW_ReduceAction390_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction240_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction390_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction240();
-  INIT_ATTRIBUTES__parser___ReduceAction240(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction390();
+  INIT_ATTRIBUTES__parser___ReduceAction390(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction240(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction390(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction241[52] = {
-  {(bigint) 1423 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction391[55] = {
+  {(bigint) 1579 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction241" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction241 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction241 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1423 /* 5: ReduceAction241 < ReduceAction241: superclass typecheck marker */},
+  {(bigint) "ReduceAction391" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction391 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction391 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1579 /* 5: ReduceAction391 < ReduceAction391: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -108187,7 +140943,7 @@ const classtable_elt_t VFT_parser___ReduceAction241[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction241 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction391 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -108203,6 +140959,8 @@ const classtable_elt_t VFT_parser___ReduceAction241[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -108216,45 +140974,49 @@ const classtable_elt_t VFT_parser___ReduceAction241[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction241 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction241___action},
+  {(bigint) 0 /* 50: ReduceAction391 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction391___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction241 < ReduceAction241: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction391 < ReduceAction391: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction241::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction241(val_t p0){
+/* 2: Attribute ReduceAction391::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction391[] = "init var of ReduceAction391";
+void INIT_ATTRIBUTES__parser___ReduceAction391(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction241;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction391;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction241(void)
+val_t NEW_parser___ReduceAction391(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction241;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction391;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction241(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction391[] = "check new ReduceAction391";
+void CHECKNEW_parser___ReduceAction391(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction241;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction391;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -108264,34 +141026,37 @@ void CHECKNEW_parser___ReduceAction241(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction241_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction391_parser___ReduceAction___init[] = "new ReduceAction391 parser::ReduceAction::init";
+val_t NEW_ReduceAction391_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction241_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction391_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction241();
-  INIT_ATTRIBUTES__parser___ReduceAction241(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction391();
+  INIT_ATTRIBUTES__parser___ReduceAction391(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction241(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction391(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction242[52] = {
-  {(bigint) 1419 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction393[55] = {
+  {(bigint) 1575 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction242" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction242 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction242 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1419 /* 5: ReduceAction242 < ReduceAction242: superclass typecheck marker */},
+  {(bigint) "ReduceAction393" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction393 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction393 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1575 /* 5: ReduceAction393 < ReduceAction393: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -108304,7 +141069,7 @@ const classtable_elt_t VFT_parser___ReduceAction242[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction242 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction393 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -108320,6 +141085,8 @@ const classtable_elt_t VFT_parser___ReduceAction242[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -108333,45 +141100,49 @@ const classtable_elt_t VFT_parser___ReduceAction242[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction242 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction242___action},
+  {(bigint) 0 /* 50: ReduceAction393 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction393___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction242 < ReduceAction242: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction393 < ReduceAction393: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction242::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction242(val_t p0){
+/* 2: Attribute ReduceAction393::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction393[] = "init var of ReduceAction393";
+void INIT_ATTRIBUTES__parser___ReduceAction393(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction242;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction393;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction242(void)
+val_t NEW_parser___ReduceAction393(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction242;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction393;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction242(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction393[] = "check new ReduceAction393";
+void CHECKNEW_parser___ReduceAction393(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction242;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction393;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -108381,34 +141152,37 @@ void CHECKNEW_parser___ReduceAction242(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction242_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction393_parser___ReduceAction___init[] = "new ReduceAction393 parser::ReduceAction::init";
+val_t NEW_ReduceAction393_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction242_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction393_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction242();
-  INIT_ATTRIBUTES__parser___ReduceAction242(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction393();
+  INIT_ATTRIBUTES__parser___ReduceAction393(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction242(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction393(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction243[52] = {
-  {(bigint) 1415 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction394[55] = {
+  {(bigint) 1571 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction243" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction243 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction243 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1415 /* 5: ReduceAction243 < ReduceAction243: superclass typecheck marker */},
+  {(bigint) "ReduceAction394" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction394 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction394 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1571 /* 5: ReduceAction394 < ReduceAction394: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -108421,7 +141195,7 @@ const classtable_elt_t VFT_parser___ReduceAction243[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction243 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction394 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -108437,6 +141211,8 @@ const classtable_elt_t VFT_parser___ReduceAction243[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -108450,45 +141226,49 @@ const classtable_elt_t VFT_parser___ReduceAction243[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction243 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction243___action},
+  {(bigint) 0 /* 50: ReduceAction394 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction394___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction243 < ReduceAction243: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction394 < ReduceAction394: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction243::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction243(val_t p0){
+/* 2: Attribute ReduceAction394::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction394[] = "init var of ReduceAction394";
+void INIT_ATTRIBUTES__parser___ReduceAction394(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction243;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction394;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction243(void)
+val_t NEW_parser___ReduceAction394(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction243;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction394;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction243(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction394[] = "check new ReduceAction394";
+void CHECKNEW_parser___ReduceAction394(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction243;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction394;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -108498,34 +141278,37 @@ void CHECKNEW_parser___ReduceAction243(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction243_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction394_parser___ReduceAction___init[] = "new ReduceAction394 parser::ReduceAction::init";
+val_t NEW_ReduceAction394_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction243_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction394_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction243();
-  INIT_ATTRIBUTES__parser___ReduceAction243(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction394();
+  INIT_ATTRIBUTES__parser___ReduceAction394(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction243(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction394(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction246[52] = {
-  {(bigint) 1411 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction395[55] = {
+  {(bigint) 1567 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction246" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction246 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction246 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1411 /* 5: ReduceAction246 < ReduceAction246: superclass typecheck marker */},
+  {(bigint) "ReduceAction395" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction395 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction395 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1567 /* 5: ReduceAction395 < ReduceAction395: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -108538,7 +141321,7 @@ const classtable_elt_t VFT_parser___ReduceAction246[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction246 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction395 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -108554,6 +141337,8 @@ const classtable_elt_t VFT_parser___ReduceAction246[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -108567,45 +141352,49 @@ const classtable_elt_t VFT_parser___ReduceAction246[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction246 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction246___action},
+  {(bigint) 0 /* 50: ReduceAction395 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction395___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction246 < ReduceAction246: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction395 < ReduceAction395: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction246::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction246(val_t p0){
+/* 2: Attribute ReduceAction395::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction395[] = "init var of ReduceAction395";
+void INIT_ATTRIBUTES__parser___ReduceAction395(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction246;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction395;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction246(void)
+val_t NEW_parser___ReduceAction395(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction246;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction395;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction246(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction395[] = "check new ReduceAction395";
+void CHECKNEW_parser___ReduceAction395(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction246;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction395;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -108615,34 +141404,37 @@ void CHECKNEW_parser___ReduceAction246(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction246_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction395_parser___ReduceAction___init[] = "new ReduceAction395 parser::ReduceAction::init";
+val_t NEW_ReduceAction395_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction246_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction395_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction246();
-  INIT_ATTRIBUTES__parser___ReduceAction246(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction395();
+  INIT_ATTRIBUTES__parser___ReduceAction395(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction246(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction395(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction247[52] = {
-  {(bigint) 1407 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction396[55] = {
+  {(bigint) 1563 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction247" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction247 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction247 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1407 /* 5: ReduceAction247 < ReduceAction247: superclass typecheck marker */},
+  {(bigint) "ReduceAction396" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction396 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction396 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1563 /* 5: ReduceAction396 < ReduceAction396: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -108655,7 +141447,7 @@ const classtable_elt_t VFT_parser___ReduceAction247[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction247 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction396 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -108671,6 +141463,8 @@ const classtable_elt_t VFT_parser___ReduceAction247[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -108684,45 +141478,49 @@ const classtable_elt_t VFT_parser___ReduceAction247[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction247 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction247___action},
+  {(bigint) 0 /* 50: ReduceAction396 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction396___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction247 < ReduceAction247: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction396 < ReduceAction396: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction247::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction247(val_t p0){
+/* 2: Attribute ReduceAction396::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction396[] = "init var of ReduceAction396";
+void INIT_ATTRIBUTES__parser___ReduceAction396(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction247;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction396;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction247(void)
+val_t NEW_parser___ReduceAction396(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction247;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction396;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction247(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction396[] = "check new ReduceAction396";
+void CHECKNEW_parser___ReduceAction396(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction247;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction396;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -108732,34 +141530,37 @@ void CHECKNEW_parser___ReduceAction247(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction247_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction396_parser___ReduceAction___init[] = "new ReduceAction396 parser::ReduceAction::init";
+val_t NEW_ReduceAction396_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction247_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction396_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction247();
-  INIT_ATTRIBUTES__parser___ReduceAction247(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction396();
+  INIT_ATTRIBUTES__parser___ReduceAction396(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction247(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction396(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction248[52] = {
-  {(bigint) 1403 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction397[55] = {
+  {(bigint) 1559 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction248" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction248 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction248 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1403 /* 5: ReduceAction248 < ReduceAction248: superclass typecheck marker */},
+  {(bigint) "ReduceAction397" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction397 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction397 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1559 /* 5: ReduceAction397 < ReduceAction397: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -108772,7 +141573,7 @@ const classtable_elt_t VFT_parser___ReduceAction248[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction248 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction397 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -108788,6 +141589,8 @@ const classtable_elt_t VFT_parser___ReduceAction248[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -108801,45 +141604,49 @@ const classtable_elt_t VFT_parser___ReduceAction248[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction248 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction248___action},
+  {(bigint) 0 /* 50: ReduceAction397 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction397___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction248 < ReduceAction248: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction397 < ReduceAction397: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction248::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction248(val_t p0){
+/* 2: Attribute ReduceAction397::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction397[] = "init var of ReduceAction397";
+void INIT_ATTRIBUTES__parser___ReduceAction397(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction248;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction397;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction248(void)
+val_t NEW_parser___ReduceAction397(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction248;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction397;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction248(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction397[] = "check new ReduceAction397";
+void CHECKNEW_parser___ReduceAction397(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction248;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction397;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -108849,34 +141656,37 @@ void CHECKNEW_parser___ReduceAction248(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction248_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction397_parser___ReduceAction___init[] = "new ReduceAction397 parser::ReduceAction::init";
+val_t NEW_ReduceAction397_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction248_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction397_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction248();
-  INIT_ATTRIBUTES__parser___ReduceAction248(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction397();
+  INIT_ATTRIBUTES__parser___ReduceAction397(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction248(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction397(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction249[52] = {
-  {(bigint) 1399 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction398[55] = {
+  {(bigint) 1555 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction249" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction249 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction249 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1399 /* 5: ReduceAction249 < ReduceAction249: superclass typecheck marker */},
+  {(bigint) "ReduceAction398" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction398 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction398 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1555 /* 5: ReduceAction398 < ReduceAction398: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -108889,7 +141699,7 @@ const classtable_elt_t VFT_parser___ReduceAction249[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction249 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction398 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -108905,6 +141715,8 @@ const classtable_elt_t VFT_parser___ReduceAction249[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -108918,45 +141730,49 @@ const classtable_elt_t VFT_parser___ReduceAction249[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction249 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction249___action},
+  {(bigint) 0 /* 50: ReduceAction398 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction398___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction249 < ReduceAction249: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction398 < ReduceAction398: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction249::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction249(val_t p0){
+/* 2: Attribute ReduceAction398::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction398[] = "init var of ReduceAction398";
+void INIT_ATTRIBUTES__parser___ReduceAction398(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction249;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction398;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction249(void)
+val_t NEW_parser___ReduceAction398(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction249;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction398;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction249(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction398[] = "check new ReduceAction398";
+void CHECKNEW_parser___ReduceAction398(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction249;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction398;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -108966,34 +141782,36 @@ void CHECKNEW_parser___ReduceAction249(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction249_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction398_parser___ReduceAction___init[] = "new ReduceAction398 parser::ReduceAction::init";
+val_t NEW_ReduceAction398_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction249_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction398_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction249();
-  INIT_ATTRIBUTES__parser___ReduceAction249(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction398();
+  INIT_ATTRIBUTES__parser___ReduceAction398(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction249(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction398(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction250[52] = {
-  {(bigint) 1391 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction399[55] = {
+  {(bigint) 1551 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction250" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction250 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction250 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1391 /* 5: ReduceAction250 < ReduceAction250: superclass typecheck marker */},
+  {(bigint) "ReduceAction399" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction399 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction399 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1551 /* 5: ReduceAction399 < ReduceAction399: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -109004,126 +141822,10 @@ const classtable_elt_t VFT_parser___ReduceAction250[52] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction250 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
-  {(bigint) standard___file___Object___printn},
-  {(bigint) standard___file___Object___print},
-  {(bigint) standard___file___Object___getc},
-  {(bigint) standard___file___Object___gets},
-  {(bigint) standard___file___Object___stdin},
-  {(bigint) standard___file___Object___stdout},
-  {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
-  {(bigint) standard___string___Object___native_class_name},
-  {(bigint) standard___string___Object___class_name},
-  {(bigint) standard___string___Object___inspect},
-  {(bigint) standard___string___Object___inspect_head},
-  {(bigint) standard___string___Object___args},
-  {(bigint) standard___hash___Object___hash},
-  {(bigint) standard___math___Object___atan2},
-  {(bigint) standard___math___Object___pi},
-  {(bigint) standard___math___Object___srand_from},
-  {(bigint) standard___math___Object___srand},
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction250 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction250___action},
-  {(bigint) parser___ReduceAction___concat},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction250 < ReduceAction250: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Object_id */
-/* 2: Attribute ReduceAction250::_goto */
-void INIT_ATTRIBUTES__parser___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__parser___ReduceAction250;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
-  stack_frame_head = fra.me.prev;
-}
-val_t NEW_parser___ReduceAction250(void)
-{
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction250;
-  obj[1].object_id = object_id_counter;
-  object_id_counter = object_id_counter + 1;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_parser___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_parser___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___ReduceAction____goto(fra.me.REG[0])!=NIT_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___ReduceAction___init(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  int init_table[3] = {0, 0, 0};
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction250_parser___ReduceAction___init;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction250();
-  INIT_ATTRIBUTES__parser___ReduceAction250(fra.me.REG[0]);
-  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction250(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-const classtable_elt_t VFT_parser___ReduceAction251[52] = {
-  {(bigint) 1387 /* 0: Identity */},
-  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction251" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction251 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction251 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1387 /* 5: ReduceAction251 < ReduceAction251: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* 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) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction251 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction399 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -109139,6 +141841,8 @@ const classtable_elt_t VFT_parser___ReduceAction251[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -109152,45 +141856,49 @@ const classtable_elt_t VFT_parser___ReduceAction251[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction251 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction251___action},
+  {(bigint) 0 /* 50: ReduceAction399 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction399___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction251 < ReduceAction251: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction399 < ReduceAction399: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction251::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction251(val_t p0){
+/* 2: Attribute ReduceAction399::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction399[] = "init var of ReduceAction399";
+void INIT_ATTRIBUTES__parser___ReduceAction399(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction251;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction399;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction251(void)
+val_t NEW_parser___ReduceAction399(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction251;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction399;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction251(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction399[] = "check new ReduceAction399";
+void CHECKNEW_parser___ReduceAction399(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction251;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction399;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -109200,34 +141908,37 @@ void CHECKNEW_parser___ReduceAction251(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction251_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction399_parser___ReduceAction___init[] = "new ReduceAction399 parser::ReduceAction::init";
+val_t NEW_ReduceAction399_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction251_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction399_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction251();
-  INIT_ATTRIBUTES__parser___ReduceAction251(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction399();
+  INIT_ATTRIBUTES__parser___ReduceAction399(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction251(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction399(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction252[52] = {
-  {(bigint) 1383 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction400[55] = {
+  {(bigint) 1539 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction252" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction252 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction252 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1383 /* 5: ReduceAction252 < ReduceAction252: superclass typecheck marker */},
+  {(bigint) "ReduceAction400" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction400 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction400 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1539 /* 5: ReduceAction400 < ReduceAction400: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -109240,7 +141951,7 @@ const classtable_elt_t VFT_parser___ReduceAction252[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction252 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction400 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -109256,6 +141967,8 @@ const classtable_elt_t VFT_parser___ReduceAction252[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -109269,45 +141982,49 @@ const classtable_elt_t VFT_parser___ReduceAction252[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction252 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction252___action},
+  {(bigint) 0 /* 50: ReduceAction400 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction400___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction252 < ReduceAction252: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction400 < ReduceAction400: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction252::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction252(val_t p0){
+/* 2: Attribute ReduceAction400::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction400[] = "init var of ReduceAction400";
+void INIT_ATTRIBUTES__parser___ReduceAction400(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction252;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction400;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction252(void)
+val_t NEW_parser___ReduceAction400(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction252;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction400;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction252(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction400[] = "check new ReduceAction400";
+void CHECKNEW_parser___ReduceAction400(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction252;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction400;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -109317,34 +142034,37 @@ void CHECKNEW_parser___ReduceAction252(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction252_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction400_parser___ReduceAction___init[] = "new ReduceAction400 parser::ReduceAction::init";
+val_t NEW_ReduceAction400_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction252_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction400_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction252();
-  INIT_ATTRIBUTES__parser___ReduceAction252(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction400();
+  INIT_ATTRIBUTES__parser___ReduceAction400(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction252(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction400(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction253[52] = {
-  {(bigint) 1379 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction401[55] = {
+  {(bigint) 1535 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction253" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction253 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction253 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1379 /* 5: ReduceAction253 < ReduceAction253: superclass typecheck marker */},
+  {(bigint) "ReduceAction401" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction401 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction401 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1535 /* 5: ReduceAction401 < ReduceAction401: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -109357,7 +142077,7 @@ const classtable_elt_t VFT_parser___ReduceAction253[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction253 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction401 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -109373,6 +142093,8 @@ const classtable_elt_t VFT_parser___ReduceAction253[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -109386,45 +142108,49 @@ const classtable_elt_t VFT_parser___ReduceAction253[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction253 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction253___action},
+  {(bigint) 0 /* 50: ReduceAction401 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction401___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction253 < ReduceAction253: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction401 < ReduceAction401: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction253::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction253(val_t p0){
+/* 2: Attribute ReduceAction401::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction401[] = "init var of ReduceAction401";
+void INIT_ATTRIBUTES__parser___ReduceAction401(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction253;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction401;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction253(void)
+val_t NEW_parser___ReduceAction401(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction253;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction401;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction253(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction401[] = "check new ReduceAction401";
+void CHECKNEW_parser___ReduceAction401(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction253;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction401;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -109434,34 +142160,37 @@ void CHECKNEW_parser___ReduceAction253(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction253_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction401_parser___ReduceAction___init[] = "new ReduceAction401 parser::ReduceAction::init";
+val_t NEW_ReduceAction401_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction253_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction401_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction253();
-  INIT_ATTRIBUTES__parser___ReduceAction253(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction401();
+  INIT_ATTRIBUTES__parser___ReduceAction401(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction253(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction401(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction254[52] = {
-  {(bigint) 1375 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction402[55] = {
+  {(bigint) 1531 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction254" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction254 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction254 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1375 /* 5: ReduceAction254 < ReduceAction254: superclass typecheck marker */},
+  {(bigint) "ReduceAction402" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction402 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction402 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1531 /* 5: ReduceAction402 < ReduceAction402: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -109474,7 +142203,7 @@ const classtable_elt_t VFT_parser___ReduceAction254[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction254 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction402 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -109490,6 +142219,8 @@ const classtable_elt_t VFT_parser___ReduceAction254[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -109503,45 +142234,49 @@ const classtable_elt_t VFT_parser___ReduceAction254[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction254 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction254___action},
+  {(bigint) 0 /* 50: ReduceAction402 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction402___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction254 < ReduceAction254: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction402 < ReduceAction402: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction254::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction254(val_t p0){
+/* 2: Attribute ReduceAction402::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction402[] = "init var of ReduceAction402";
+void INIT_ATTRIBUTES__parser___ReduceAction402(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction254;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction402;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction254(void)
+val_t NEW_parser___ReduceAction402(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction254;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction402;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction254(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction402[] = "check new ReduceAction402";
+void CHECKNEW_parser___ReduceAction402(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction254;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction402;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -109551,34 +142286,37 @@ void CHECKNEW_parser___ReduceAction254(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction254_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction402_parser___ReduceAction___init[] = "new ReduceAction402 parser::ReduceAction::init";
+val_t NEW_ReduceAction402_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction254_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction402_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction254();
-  INIT_ATTRIBUTES__parser___ReduceAction254(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction402();
+  INIT_ATTRIBUTES__parser___ReduceAction402(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction254(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction402(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction255[52] = {
-  {(bigint) 1371 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction403[55] = {
+  {(bigint) 1527 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction255" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction255 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction255 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1371 /* 5: ReduceAction255 < ReduceAction255: superclass typecheck marker */},
+  {(bigint) "ReduceAction403" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction403 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction403 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1527 /* 5: ReduceAction403 < ReduceAction403: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -109591,7 +142329,7 @@ const classtable_elt_t VFT_parser___ReduceAction255[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction255 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction403 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -109607,6 +142345,8 @@ const classtable_elt_t VFT_parser___ReduceAction255[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -109620,45 +142360,49 @@ const classtable_elt_t VFT_parser___ReduceAction255[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction255 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction255___action},
+  {(bigint) 0 /* 50: ReduceAction403 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction403___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction255 < ReduceAction255: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction403 < ReduceAction403: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction255::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction255(val_t p0){
+/* 2: Attribute ReduceAction403::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction403[] = "init var of ReduceAction403";
+void INIT_ATTRIBUTES__parser___ReduceAction403(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction255;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction403;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction255(void)
+val_t NEW_parser___ReduceAction403(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction255;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction403;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction255(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction403[] = "check new ReduceAction403";
+void CHECKNEW_parser___ReduceAction403(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction255;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction403;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -109668,37 +142412,36 @@ void CHECKNEW_parser___ReduceAction255(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction255_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction403_parser___ReduceAction___init[] = "new ReduceAction403 parser::ReduceAction::init";
+val_t NEW_ReduceAction403_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction255_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction403_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction255();
-  INIT_ATTRIBUTES__parser___ReduceAction255(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction403();
+  INIT_ATTRIBUTES__parser___ReduceAction403(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction255(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction403(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction256[52] = {
-  {(bigint) 1367 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction404[55] = {
+  {(bigint) 1523 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction256" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction256 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction256 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1367 /* 5: ReduceAction256 < ReduceAction256: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) "ReduceAction404" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction404 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction404 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1523 /* 5: ReduceAction404 < ReduceAction404: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -109706,126 +142449,13 @@ const classtable_elt_t VFT_parser___ReduceAction256[52] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction256 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
-  {(bigint) standard___file___Object___printn},
-  {(bigint) standard___file___Object___print},
-  {(bigint) standard___file___Object___getc},
-  {(bigint) standard___file___Object___gets},
-  {(bigint) standard___file___Object___stdin},
-  {(bigint) standard___file___Object___stdout},
-  {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
-  {(bigint) standard___string___Object___native_class_name},
-  {(bigint) standard___string___Object___class_name},
-  {(bigint) standard___string___Object___inspect},
-  {(bigint) standard___string___Object___inspect_head},
-  {(bigint) standard___string___Object___args},
-  {(bigint) standard___hash___Object___hash},
-  {(bigint) standard___math___Object___atan2},
-  {(bigint) standard___math___Object___pi},
-  {(bigint) standard___math___Object___srand_from},
-  {(bigint) standard___math___Object___srand},
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction256 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction256___action},
-  {(bigint) parser___ReduceAction___concat},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction256 < ReduceAction256: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Object_id */
-/* 2: Attribute ReduceAction256::_goto */
-void INIT_ATTRIBUTES__parser___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__parser___ReduceAction256;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
-  stack_frame_head = fra.me.prev;
-}
-val_t NEW_parser___ReduceAction256(void)
-{
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction256;
-  obj[1].object_id = object_id_counter;
-  object_id_counter = object_id_counter + 1;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_parser___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_parser___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___ReduceAction____goto(fra.me.REG[0])!=NIT_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___ReduceAction___init(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  int init_table[3] = {0, 0, 0};
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction256_parser___ReduceAction___init;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction256();
-  INIT_ATTRIBUTES__parser___ReduceAction256(fra.me.REG[0]);
-  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction256(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-const classtable_elt_t VFT_parser___ReduceAction263[52] = {
-  {(bigint) 1359 /* 0: Identity */},
-  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction263" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction263 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction263 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1359 /* 5: ReduceAction263 < ReduceAction263: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* 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) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction263 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction404 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -109841,6 +142471,8 @@ const classtable_elt_t VFT_parser___ReduceAction263[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -109854,45 +142486,49 @@ const classtable_elt_t VFT_parser___ReduceAction263[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction263 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction263___action},
+  {(bigint) 0 /* 50: ReduceAction404 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction404___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction263 < ReduceAction263: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction404 < ReduceAction404: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction263::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction263(val_t p0){
+/* 2: Attribute ReduceAction404::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction404[] = "init var of ReduceAction404";
+void INIT_ATTRIBUTES__parser___ReduceAction404(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction263;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction404;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction263(void)
+val_t NEW_parser___ReduceAction404(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction263;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction404;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction263(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction404[] = "check new ReduceAction404";
+void CHECKNEW_parser___ReduceAction404(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction263;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction404;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -109902,34 +142538,37 @@ void CHECKNEW_parser___ReduceAction263(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction263_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction404_parser___ReduceAction___init[] = "new ReduceAction404 parser::ReduceAction::init";
+val_t NEW_ReduceAction404_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction263_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction404_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction263();
-  INIT_ATTRIBUTES__parser___ReduceAction263(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction404();
+  INIT_ATTRIBUTES__parser___ReduceAction404(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction263(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction404(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction264[52] = {
-  {(bigint) 1355 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction405[55] = {
+  {(bigint) 1519 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction264" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction264 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction264 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1355 /* 5: ReduceAction264 < ReduceAction264: superclass typecheck marker */},
+  {(bigint) "ReduceAction405" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction405 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction405 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1519 /* 5: ReduceAction405 < ReduceAction405: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -109942,7 +142581,7 @@ const classtable_elt_t VFT_parser___ReduceAction264[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction264 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction405 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -109958,6 +142597,8 @@ const classtable_elt_t VFT_parser___ReduceAction264[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -109971,45 +142612,49 @@ const classtable_elt_t VFT_parser___ReduceAction264[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction264 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction264___action},
+  {(bigint) 0 /* 50: ReduceAction405 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction405___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction264 < ReduceAction264: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction405 < ReduceAction405: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction264::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction264(val_t p0){
+/* 2: Attribute ReduceAction405::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction405[] = "init var of ReduceAction405";
+void INIT_ATTRIBUTES__parser___ReduceAction405(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction264;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction405;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction264(void)
+val_t NEW_parser___ReduceAction405(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction264;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction405;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction264(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction405[] = "check new ReduceAction405";
+void CHECKNEW_parser___ReduceAction405(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction264;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction405;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -110019,34 +142664,37 @@ void CHECKNEW_parser___ReduceAction264(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction264_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction405_parser___ReduceAction___init[] = "new ReduceAction405 parser::ReduceAction::init";
+val_t NEW_ReduceAction405_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction264_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction405_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction264();
-  INIT_ATTRIBUTES__parser___ReduceAction264(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction405();
+  INIT_ATTRIBUTES__parser___ReduceAction405(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction264(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction405(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction265[52] = {
-  {(bigint) 1351 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction406[55] = {
+  {(bigint) 1515 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction265" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction265 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction265 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1351 /* 5: ReduceAction265 < ReduceAction265: superclass typecheck marker */},
+  {(bigint) "ReduceAction406" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction406 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction406 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1515 /* 5: ReduceAction406 < ReduceAction406: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -110059,7 +142707,7 @@ const classtable_elt_t VFT_parser___ReduceAction265[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction265 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction406 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -110075,6 +142723,8 @@ const classtable_elt_t VFT_parser___ReduceAction265[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -110088,45 +142738,49 @@ const classtable_elt_t VFT_parser___ReduceAction265[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction265 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction265___action},
+  {(bigint) 0 /* 50: ReduceAction406 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction406___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction265 < ReduceAction265: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction406 < ReduceAction406: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction265::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction265(val_t p0){
+/* 2: Attribute ReduceAction406::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction406[] = "init var of ReduceAction406";
+void INIT_ATTRIBUTES__parser___ReduceAction406(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction265;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction406;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction265(void)
+val_t NEW_parser___ReduceAction406(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction265;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction406;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction265(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction406[] = "check new ReduceAction406";
+void CHECKNEW_parser___ReduceAction406(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction265;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction406;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -110136,34 +142790,37 @@ void CHECKNEW_parser___ReduceAction265(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction265_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction406_parser___ReduceAction___init[] = "new ReduceAction406 parser::ReduceAction::init";
+val_t NEW_ReduceAction406_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction265_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction406_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction265();
-  INIT_ATTRIBUTES__parser___ReduceAction265(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction406();
+  INIT_ATTRIBUTES__parser___ReduceAction406(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction265(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction406(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction266[52] = {
-  {(bigint) 1347 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction407[55] = {
+  {(bigint) 1511 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction266" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction266 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction266 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1347 /* 5: ReduceAction266 < ReduceAction266: superclass typecheck marker */},
+  {(bigint) "ReduceAction407" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction407 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction407 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1511 /* 5: ReduceAction407 < ReduceAction407: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -110176,7 +142833,7 @@ const classtable_elt_t VFT_parser___ReduceAction266[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction266 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction407 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -110192,6 +142849,8 @@ const classtable_elt_t VFT_parser___ReduceAction266[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -110205,45 +142864,49 @@ const classtable_elt_t VFT_parser___ReduceAction266[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction266 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction266___action},
+  {(bigint) 0 /* 50: ReduceAction407 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction407___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction266 < ReduceAction266: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction407 < ReduceAction407: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction266::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction266(val_t p0){
+/* 2: Attribute ReduceAction407::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction407[] = "init var of ReduceAction407";
+void INIT_ATTRIBUTES__parser___ReduceAction407(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction266;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction407;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction266(void)
+val_t NEW_parser___ReduceAction407(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction266;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction407;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction266(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction407[] = "check new ReduceAction407";
+void CHECKNEW_parser___ReduceAction407(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction266;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction407;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -110253,34 +142916,37 @@ void CHECKNEW_parser___ReduceAction266(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction266_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction407_parser___ReduceAction___init[] = "new ReduceAction407 parser::ReduceAction::init";
+val_t NEW_ReduceAction407_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction266_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction407_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction266();
-  INIT_ATTRIBUTES__parser___ReduceAction266(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction407();
+  INIT_ATTRIBUTES__parser___ReduceAction407(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction266(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction407(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction267[52] = {
-  {(bigint) 1343 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction408[55] = {
+  {(bigint) 1507 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction267" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction267 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction267 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1343 /* 5: ReduceAction267 < ReduceAction267: superclass typecheck marker */},
+  {(bigint) "ReduceAction408" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction408 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction408 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1507 /* 5: ReduceAction408 < ReduceAction408: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -110293,7 +142959,7 @@ const classtable_elt_t VFT_parser___ReduceAction267[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction267 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction408 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -110309,6 +142975,8 @@ const classtable_elt_t VFT_parser___ReduceAction267[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -110322,45 +142990,49 @@ const classtable_elt_t VFT_parser___ReduceAction267[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction267 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction267___action},
+  {(bigint) 0 /* 50: ReduceAction408 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction408___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction267 < ReduceAction267: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction408 < ReduceAction408: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction267::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction267(val_t p0){
+/* 2: Attribute ReduceAction408::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction408[] = "init var of ReduceAction408";
+void INIT_ATTRIBUTES__parser___ReduceAction408(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction267;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction408;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction267(void)
+val_t NEW_parser___ReduceAction408(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction267;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction408;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction267(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction408[] = "check new ReduceAction408";
+void CHECKNEW_parser___ReduceAction408(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction267;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction408;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -110370,34 +143042,37 @@ void CHECKNEW_parser___ReduceAction267(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction267_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction408_parser___ReduceAction___init[] = "new ReduceAction408 parser::ReduceAction::init";
+val_t NEW_ReduceAction408_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction267_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction408_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction267();
-  INIT_ATTRIBUTES__parser___ReduceAction267(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction408();
+  INIT_ATTRIBUTES__parser___ReduceAction408(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction267(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction408(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction268[52] = {
-  {(bigint) 1339 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction409[55] = {
+  {(bigint) 1503 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction268" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction268 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction268 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1339 /* 5: ReduceAction268 < ReduceAction268: superclass typecheck marker */},
+  {(bigint) "ReduceAction409" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction409 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction409 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1503 /* 5: ReduceAction409 < ReduceAction409: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -110410,7 +143085,7 @@ const classtable_elt_t VFT_parser___ReduceAction268[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction268 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction409 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -110426,6 +143101,8 @@ const classtable_elt_t VFT_parser___ReduceAction268[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -110439,45 +143116,49 @@ const classtable_elt_t VFT_parser___ReduceAction268[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction268 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction268___action},
+  {(bigint) 0 /* 50: ReduceAction409 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction409___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction268 < ReduceAction268: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction409 < ReduceAction409: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction268::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction268(val_t p0){
+/* 2: Attribute ReduceAction409::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction409[] = "init var of ReduceAction409";
+void INIT_ATTRIBUTES__parser___ReduceAction409(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction268;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction409;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction268(void)
+val_t NEW_parser___ReduceAction409(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction268;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction409;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction268(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction409[] = "check new ReduceAction409";
+void CHECKNEW_parser___ReduceAction409(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction268;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction409;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -110487,34 +143168,37 @@ void CHECKNEW_parser___ReduceAction268(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction268_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction409_parser___ReduceAction___init[] = "new ReduceAction409 parser::ReduceAction::init";
+val_t NEW_ReduceAction409_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction268_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction409_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction268();
-  INIT_ATTRIBUTES__parser___ReduceAction268(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction409();
+  INIT_ATTRIBUTES__parser___ReduceAction409(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction268(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction409(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction269[52] = {
-  {(bigint) 1335 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction410[55] = {
+  {(bigint) 1495 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction269" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction269 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction269 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1335 /* 5: ReduceAction269 < ReduceAction269: superclass typecheck marker */},
+  {(bigint) "ReduceAction410" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction410 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction410 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1495 /* 5: ReduceAction410 < ReduceAction410: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -110527,7 +143211,7 @@ const classtable_elt_t VFT_parser___ReduceAction269[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction269 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction410 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -110543,6 +143227,8 @@ const classtable_elt_t VFT_parser___ReduceAction269[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -110556,45 +143242,49 @@ const classtable_elt_t VFT_parser___ReduceAction269[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction269 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction269___action},
+  {(bigint) 0 /* 50: ReduceAction410 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction410___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction269 < ReduceAction269: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction410 < ReduceAction410: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction269::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction269(val_t p0){
+/* 2: Attribute ReduceAction410::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction410[] = "init var of ReduceAction410";
+void INIT_ATTRIBUTES__parser___ReduceAction410(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction269;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction410;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction269(void)
+val_t NEW_parser___ReduceAction410(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction269;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction410;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction269(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction410[] = "check new ReduceAction410";
+void CHECKNEW_parser___ReduceAction410(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction269;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction410;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -110604,34 +143294,36 @@ void CHECKNEW_parser___ReduceAction269(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction269_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction410_parser___ReduceAction___init[] = "new ReduceAction410 parser::ReduceAction::init";
+val_t NEW_ReduceAction410_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction269_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction410_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction269();
-  INIT_ATTRIBUTES__parser___ReduceAction269(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction410();
+  INIT_ATTRIBUTES__parser___ReduceAction410(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction269(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction410(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction270[52] = {
-  {(bigint) 1327 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction411[55] = {
+  {(bigint) 1491 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction270" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction270 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction270 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1327 /* 5: ReduceAction270 < ReduceAction270: superclass typecheck marker */},
+  {(bigint) "ReduceAction411" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction411 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction411 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1491 /* 5: ReduceAction411 < ReduceAction411: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -110642,126 +143334,10 @@ const classtable_elt_t VFT_parser___ReduceAction270[52] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction270 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
-  {(bigint) standard___file___Object___printn},
-  {(bigint) standard___file___Object___print},
-  {(bigint) standard___file___Object___getc},
-  {(bigint) standard___file___Object___gets},
-  {(bigint) standard___file___Object___stdin},
-  {(bigint) standard___file___Object___stdout},
-  {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
-  {(bigint) standard___string___Object___native_class_name},
-  {(bigint) standard___string___Object___class_name},
-  {(bigint) standard___string___Object___inspect},
-  {(bigint) standard___string___Object___inspect_head},
-  {(bigint) standard___string___Object___args},
-  {(bigint) standard___hash___Object___hash},
-  {(bigint) standard___math___Object___atan2},
-  {(bigint) standard___math___Object___pi},
-  {(bigint) standard___math___Object___srand_from},
-  {(bigint) standard___math___Object___srand},
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction270 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction270___action},
-  {(bigint) parser___ReduceAction___concat},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction270 < ReduceAction270: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Object_id */
-/* 2: Attribute ReduceAction270::_goto */
-void INIT_ATTRIBUTES__parser___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__parser___ReduceAction270;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
-  stack_frame_head = fra.me.prev;
-}
-val_t NEW_parser___ReduceAction270(void)
-{
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction270;
-  obj[1].object_id = object_id_counter;
-  object_id_counter = object_id_counter + 1;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_parser___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_parser___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___ReduceAction____goto(fra.me.REG[0])!=NIT_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___ReduceAction___init(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  int init_table[3] = {0, 0, 0};
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction270_parser___ReduceAction___init;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction270();
-  INIT_ATTRIBUTES__parser___ReduceAction270(fra.me.REG[0]);
-  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction270(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-const classtable_elt_t VFT_parser___ReduceAction271[52] = {
-  {(bigint) 1323 /* 0: Identity */},
-  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction271" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction271 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction271 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1323 /* 5: ReduceAction271 < ReduceAction271: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* 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) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction271 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction411 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -110777,6 +143353,8 @@ const classtable_elt_t VFT_parser___ReduceAction271[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -110790,45 +143368,49 @@ const classtable_elt_t VFT_parser___ReduceAction271[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction271 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction271___action},
+  {(bigint) 0 /* 50: ReduceAction411 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction411___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction271 < ReduceAction271: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction411 < ReduceAction411: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction271::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction271(val_t p0){
+/* 2: Attribute ReduceAction411::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction411[] = "init var of ReduceAction411";
+void INIT_ATTRIBUTES__parser___ReduceAction411(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction271;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction411;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction271(void)
+val_t NEW_parser___ReduceAction411(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction271;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction411;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction271(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction411[] = "check new ReduceAction411";
+void CHECKNEW_parser___ReduceAction411(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction271;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction411;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -110838,34 +143420,37 @@ void CHECKNEW_parser___ReduceAction271(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction271_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction411_parser___ReduceAction___init[] = "new ReduceAction411 parser::ReduceAction::init";
+val_t NEW_ReduceAction411_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction271_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction411_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction271();
-  INIT_ATTRIBUTES__parser___ReduceAction271(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction411();
+  INIT_ATTRIBUTES__parser___ReduceAction411(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction271(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction411(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction272[52] = {
-  {(bigint) 1319 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction412[55] = {
+  {(bigint) 1487 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction272" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction272 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction272 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1319 /* 5: ReduceAction272 < ReduceAction272: superclass typecheck marker */},
+  {(bigint) "ReduceAction412" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction412 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction412 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1487 /* 5: ReduceAction412 < ReduceAction412: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -110878,7 +143463,7 @@ const classtable_elt_t VFT_parser___ReduceAction272[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction272 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction412 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -110894,6 +143479,8 @@ const classtable_elt_t VFT_parser___ReduceAction272[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -110907,45 +143494,49 @@ const classtable_elt_t VFT_parser___ReduceAction272[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction272 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction272___action},
+  {(bigint) 0 /* 50: ReduceAction412 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction412___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction272 < ReduceAction272: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction412 < ReduceAction412: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction272::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction272(val_t p0){
+/* 2: Attribute ReduceAction412::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction412[] = "init var of ReduceAction412";
+void INIT_ATTRIBUTES__parser___ReduceAction412(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction272;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction412;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction272(void)
+val_t NEW_parser___ReduceAction412(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction272;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction412;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction272(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction412[] = "check new ReduceAction412";
+void CHECKNEW_parser___ReduceAction412(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction272;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction412;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -110955,34 +143546,37 @@ void CHECKNEW_parser___ReduceAction272(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction272_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction412_parser___ReduceAction___init[] = "new ReduceAction412 parser::ReduceAction::init";
+val_t NEW_ReduceAction412_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction272_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction412_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction272();
-  INIT_ATTRIBUTES__parser___ReduceAction272(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction412();
+  INIT_ATTRIBUTES__parser___ReduceAction412(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction272(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction412(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction273[52] = {
-  {(bigint) 1315 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction413[55] = {
+  {(bigint) 1483 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction273" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction273 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction273 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1315 /* 5: ReduceAction273 < ReduceAction273: superclass typecheck marker */},
+  {(bigint) "ReduceAction413" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction413 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction413 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1483 /* 5: ReduceAction413 < ReduceAction413: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -110995,7 +143589,7 @@ const classtable_elt_t VFT_parser___ReduceAction273[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction273 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction413 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -111011,6 +143605,8 @@ const classtable_elt_t VFT_parser___ReduceAction273[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -111024,45 +143620,49 @@ const classtable_elt_t VFT_parser___ReduceAction273[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction273 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction273___action},
+  {(bigint) 0 /* 50: ReduceAction413 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction413___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction273 < ReduceAction273: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction413 < ReduceAction413: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction273::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction273(val_t p0){
+/* 2: Attribute ReduceAction413::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction413[] = "init var of ReduceAction413";
+void INIT_ATTRIBUTES__parser___ReduceAction413(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction273;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction413;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction273(void)
+val_t NEW_parser___ReduceAction413(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction273;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction413;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction273(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction413[] = "check new ReduceAction413";
+void CHECKNEW_parser___ReduceAction413(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction273;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction413;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -111072,34 +143672,37 @@ void CHECKNEW_parser___ReduceAction273(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction273_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction413_parser___ReduceAction___init[] = "new ReduceAction413 parser::ReduceAction::init";
+val_t NEW_ReduceAction413_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction273_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction413_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction273();
-  INIT_ATTRIBUTES__parser___ReduceAction273(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction413();
+  INIT_ATTRIBUTES__parser___ReduceAction413(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction273(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction413(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction274[52] = {
-  {(bigint) 1311 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction414[55] = {
+  {(bigint) 1479 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction274" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction274 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction274 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1311 /* 5: ReduceAction274 < ReduceAction274: superclass typecheck marker */},
+  {(bigint) "ReduceAction414" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction414 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction414 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1479 /* 5: ReduceAction414 < ReduceAction414: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -111112,7 +143715,7 @@ const classtable_elt_t VFT_parser___ReduceAction274[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction274 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction414 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -111128,6 +143731,8 @@ const classtable_elt_t VFT_parser___ReduceAction274[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -111141,45 +143746,49 @@ const classtable_elt_t VFT_parser___ReduceAction274[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction274 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction274___action},
+  {(bigint) 0 /* 50: ReduceAction414 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction414___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction274 < ReduceAction274: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction414 < ReduceAction414: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction274::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction274(val_t p0){
+/* 2: Attribute ReduceAction414::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction414[] = "init var of ReduceAction414";
+void INIT_ATTRIBUTES__parser___ReduceAction414(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction274;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction414;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction274(void)
+val_t NEW_parser___ReduceAction414(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction274;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction414;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction274(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction414[] = "check new ReduceAction414";
+void CHECKNEW_parser___ReduceAction414(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction274;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction414;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -111189,34 +143798,37 @@ void CHECKNEW_parser___ReduceAction274(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction274_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction414_parser___ReduceAction___init[] = "new ReduceAction414 parser::ReduceAction::init";
+val_t NEW_ReduceAction414_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction274_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction414_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction274();
-  INIT_ATTRIBUTES__parser___ReduceAction274(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction414();
+  INIT_ATTRIBUTES__parser___ReduceAction414(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction274(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction414(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction275[52] = {
-  {(bigint) 1307 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction416[55] = {
+  {(bigint) 1475 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction275" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction275 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction275 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1307 /* 5: ReduceAction275 < ReduceAction275: superclass typecheck marker */},
+  {(bigint) "ReduceAction416" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction416 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction416 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1475 /* 5: ReduceAction416 < ReduceAction416: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -111229,7 +143841,7 @@ const classtable_elt_t VFT_parser___ReduceAction275[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction275 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction416 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -111245,6 +143857,8 @@ const classtable_elt_t VFT_parser___ReduceAction275[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -111258,45 +143872,49 @@ const classtable_elt_t VFT_parser___ReduceAction275[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction275 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction275___action},
+  {(bigint) 0 /* 50: ReduceAction416 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction416___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction275 < ReduceAction275: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction416 < ReduceAction416: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction275::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction275(val_t p0){
+/* 2: Attribute ReduceAction416::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction416[] = "init var of ReduceAction416";
+void INIT_ATTRIBUTES__parser___ReduceAction416(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction275;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction416;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction275(void)
+val_t NEW_parser___ReduceAction416(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction275;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction416;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction275(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction416[] = "check new ReduceAction416";
+void CHECKNEW_parser___ReduceAction416(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction275;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction416;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -111306,34 +143924,37 @@ void CHECKNEW_parser___ReduceAction275(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction275_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction416_parser___ReduceAction___init[] = "new ReduceAction416 parser::ReduceAction::init";
+val_t NEW_ReduceAction416_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction275_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction416_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction275();
-  INIT_ATTRIBUTES__parser___ReduceAction275(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction416();
+  INIT_ATTRIBUTES__parser___ReduceAction416(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction275(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction416(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction276[52] = {
-  {(bigint) 1303 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction417[55] = {
+  {(bigint) 1471 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction276" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction276 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction276 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1303 /* 5: ReduceAction276 < ReduceAction276: superclass typecheck marker */},
+  {(bigint) "ReduceAction417" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction417 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction417 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1471 /* 5: ReduceAction417 < ReduceAction417: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -111346,7 +143967,7 @@ const classtable_elt_t VFT_parser___ReduceAction276[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction276 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction417 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -111362,6 +143983,8 @@ const classtable_elt_t VFT_parser___ReduceAction276[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -111375,45 +143998,49 @@ const classtable_elt_t VFT_parser___ReduceAction276[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction276 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction276___action},
+  {(bigint) 0 /* 50: ReduceAction417 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction417___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction276 < ReduceAction276: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction417 < ReduceAction417: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction276::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction276(val_t p0){
+/* 2: Attribute ReduceAction417::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction417[] = "init var of ReduceAction417";
+void INIT_ATTRIBUTES__parser___ReduceAction417(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction276;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction417;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction276(void)
+val_t NEW_parser___ReduceAction417(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction276;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction417;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction276(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction417[] = "check new ReduceAction417";
+void CHECKNEW_parser___ReduceAction417(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction276;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction417;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -111423,34 +144050,37 @@ void CHECKNEW_parser___ReduceAction276(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction276_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction417_parser___ReduceAction___init[] = "new ReduceAction417 parser::ReduceAction::init";
+val_t NEW_ReduceAction417_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction276_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction417_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction276();
-  INIT_ATTRIBUTES__parser___ReduceAction276(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction417();
+  INIT_ATTRIBUTES__parser___ReduceAction417(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction276(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction417(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction277[52] = {
-  {(bigint) 1299 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction418[55] = {
+  {(bigint) 1467 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction277" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction277 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction277 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1299 /* 5: ReduceAction277 < ReduceAction277: superclass typecheck marker */},
+  {(bigint) "ReduceAction418" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction418 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction418 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1467 /* 5: ReduceAction418 < ReduceAction418: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -111463,7 +144093,7 @@ const classtable_elt_t VFT_parser___ReduceAction277[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction277 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction418 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -111479,6 +144109,8 @@ const classtable_elt_t VFT_parser___ReduceAction277[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -111492,45 +144124,49 @@ const classtable_elt_t VFT_parser___ReduceAction277[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction277 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction277___action},
+  {(bigint) 0 /* 50: ReduceAction418 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction418___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction277 < ReduceAction277: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction418 < ReduceAction418: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction277::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction277(val_t p0){
+/* 2: Attribute ReduceAction418::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction418[] = "init var of ReduceAction418";
+void INIT_ATTRIBUTES__parser___ReduceAction418(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction277;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction418;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction277(void)
+val_t NEW_parser___ReduceAction418(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction277;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction418;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction277(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction418[] = "check new ReduceAction418";
+void CHECKNEW_parser___ReduceAction418(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction277;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction418;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -111540,34 +144176,37 @@ void CHECKNEW_parser___ReduceAction277(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction277_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction418_parser___ReduceAction___init[] = "new ReduceAction418 parser::ReduceAction::init";
+val_t NEW_ReduceAction418_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction277_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction418_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction277();
-  INIT_ATTRIBUTES__parser___ReduceAction277(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction418();
+  INIT_ATTRIBUTES__parser___ReduceAction418(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction277(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction418(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction278[52] = {
-  {(bigint) 1295 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction419[55] = {
+  {(bigint) 1463 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction278" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction278 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction278 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1295 /* 5: ReduceAction278 < ReduceAction278: superclass typecheck marker */},
+  {(bigint) "ReduceAction419" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction419 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction419 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1463 /* 5: ReduceAction419 < ReduceAction419: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -111580,7 +144219,7 @@ const classtable_elt_t VFT_parser___ReduceAction278[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction278 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction419 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -111596,6 +144235,8 @@ const classtable_elt_t VFT_parser___ReduceAction278[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -111609,45 +144250,49 @@ const classtable_elt_t VFT_parser___ReduceAction278[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction278 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction278___action},
+  {(bigint) 0 /* 50: ReduceAction419 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction419___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction278 < ReduceAction278: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction419 < ReduceAction419: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction278::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction278(val_t p0){
+/* 2: Attribute ReduceAction419::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction419[] = "init var of ReduceAction419";
+void INIT_ATTRIBUTES__parser___ReduceAction419(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction278;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction419;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction278(void)
+val_t NEW_parser___ReduceAction419(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction278;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction419;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction278(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction419[] = "check new ReduceAction419";
+void CHECKNEW_parser___ReduceAction419(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction278;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction419;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -111657,34 +144302,37 @@ void CHECKNEW_parser___ReduceAction278(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction278_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction419_parser___ReduceAction___init[] = "new ReduceAction419 parser::ReduceAction::init";
+val_t NEW_ReduceAction419_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction278_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction419_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction278();
-  INIT_ATTRIBUTES__parser___ReduceAction278(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction419();
+  INIT_ATTRIBUTES__parser___ReduceAction419(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction278(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction419(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction279[52] = {
-  {(bigint) 1291 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction420[55] = {
+  {(bigint) 1455 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction279" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction279 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction279 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1291 /* 5: ReduceAction279 < ReduceAction279: superclass typecheck marker */},
+  {(bigint) "ReduceAction420" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction420 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction420 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1455 /* 5: ReduceAction420 < ReduceAction420: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -111697,7 +144345,7 @@ const classtable_elt_t VFT_parser___ReduceAction279[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction279 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction420 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -111713,6 +144361,8 @@ const classtable_elt_t VFT_parser___ReduceAction279[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -111726,45 +144376,49 @@ const classtable_elt_t VFT_parser___ReduceAction279[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction279 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction279___action},
+  {(bigint) 0 /* 50: ReduceAction420 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction420___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction279 < ReduceAction279: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction420 < ReduceAction420: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction279::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction279(val_t p0){
+/* 2: Attribute ReduceAction420::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction420[] = "init var of ReduceAction420";
+void INIT_ATTRIBUTES__parser___ReduceAction420(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction279;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction420;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction279(void)
+val_t NEW_parser___ReduceAction420(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction279;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction420;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction279(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction420[] = "check new ReduceAction420";
+void CHECKNEW_parser___ReduceAction420(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction279;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction420;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -111774,34 +144428,37 @@ void CHECKNEW_parser___ReduceAction279(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction279_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction420_parser___ReduceAction___init[] = "new ReduceAction420 parser::ReduceAction::init";
+val_t NEW_ReduceAction420_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction279_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction420_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction279();
-  INIT_ATTRIBUTES__parser___ReduceAction279(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction420();
+  INIT_ATTRIBUTES__parser___ReduceAction420(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction279(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction420(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction280[52] = {
-  {(bigint) 1283 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction421[55] = {
+  {(bigint) 1451 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction280" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction280 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction280 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1283 /* 5: ReduceAction280 < ReduceAction280: superclass typecheck marker */},
+  {(bigint) "ReduceAction421" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction421 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction421 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1451 /* 5: ReduceAction421 < ReduceAction421: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -111814,7 +144471,7 @@ const classtable_elt_t VFT_parser___ReduceAction280[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction280 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction421 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -111830,6 +144487,8 @@ const classtable_elt_t VFT_parser___ReduceAction280[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -111843,45 +144502,49 @@ const classtable_elt_t VFT_parser___ReduceAction280[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction280 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction280___action},
+  {(bigint) 0 /* 50: ReduceAction421 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction421___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction280 < ReduceAction280: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction421 < ReduceAction421: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction280::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction280(val_t p0){
+/* 2: Attribute ReduceAction421::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction421[] = "init var of ReduceAction421";
+void INIT_ATTRIBUTES__parser___ReduceAction421(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction280;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction421;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction280(void)
+val_t NEW_parser___ReduceAction421(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction280;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction421;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction280(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction421[] = "check new ReduceAction421";
+void CHECKNEW_parser___ReduceAction421(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction280;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction421;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -111891,34 +144554,37 @@ void CHECKNEW_parser___ReduceAction280(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction280_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction421_parser___ReduceAction___init[] = "new ReduceAction421 parser::ReduceAction::init";
+val_t NEW_ReduceAction421_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction280_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction421_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction280();
-  INIT_ATTRIBUTES__parser___ReduceAction280(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction421();
+  INIT_ATTRIBUTES__parser___ReduceAction421(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction280(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction421(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction281[52] = {
-  {(bigint) 1279 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction422[55] = {
+  {(bigint) 1447 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction281" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction281 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction281 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1279 /* 5: ReduceAction281 < ReduceAction281: superclass typecheck marker */},
+  {(bigint) "ReduceAction422" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction422 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction422 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1447 /* 5: ReduceAction422 < ReduceAction422: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -111931,7 +144597,7 @@ const classtable_elt_t VFT_parser___ReduceAction281[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction281 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction422 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -111947,6 +144613,8 @@ const classtable_elt_t VFT_parser___ReduceAction281[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -111960,45 +144628,49 @@ const classtable_elt_t VFT_parser___ReduceAction281[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction281 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction281___action},
+  {(bigint) 0 /* 50: ReduceAction422 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction422___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction281 < ReduceAction281: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction422 < ReduceAction422: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction281::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction281(val_t p0){
+/* 2: Attribute ReduceAction422::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction422[] = "init var of ReduceAction422";
+void INIT_ATTRIBUTES__parser___ReduceAction422(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction281;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction422;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction281(void)
+val_t NEW_parser___ReduceAction422(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction281;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction422;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction281(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction422[] = "check new ReduceAction422";
+void CHECKNEW_parser___ReduceAction422(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction281;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction422;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -112008,34 +144680,37 @@ void CHECKNEW_parser___ReduceAction281(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction281_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction422_parser___ReduceAction___init[] = "new ReduceAction422 parser::ReduceAction::init";
+val_t NEW_ReduceAction422_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction281_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction422_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction281();
-  INIT_ATTRIBUTES__parser___ReduceAction281(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction422();
+  INIT_ATTRIBUTES__parser___ReduceAction422(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction281(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction422(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction282[52] = {
-  {(bigint) 1275 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction423[55] = {
+  {(bigint) 1443 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction282" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction282 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction282 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1275 /* 5: ReduceAction282 < ReduceAction282: superclass typecheck marker */},
+  {(bigint) "ReduceAction423" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction423 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction423 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1443 /* 5: ReduceAction423 < ReduceAction423: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -112048,7 +144723,7 @@ const classtable_elt_t VFT_parser___ReduceAction282[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction282 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction423 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -112064,6 +144739,8 @@ const classtable_elt_t VFT_parser___ReduceAction282[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -112077,45 +144754,49 @@ const classtable_elt_t VFT_parser___ReduceAction282[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction282 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction282___action},
+  {(bigint) 0 /* 50: ReduceAction423 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction423___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction282 < ReduceAction282: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction423 < ReduceAction423: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction282::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction282(val_t p0){
+/* 2: Attribute ReduceAction423::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction423[] = "init var of ReduceAction423";
+void INIT_ATTRIBUTES__parser___ReduceAction423(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction282;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction423;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction282(void)
+val_t NEW_parser___ReduceAction423(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction282;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction423;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction282(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction423[] = "check new ReduceAction423";
+void CHECKNEW_parser___ReduceAction423(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction282;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction423;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -112125,34 +144806,37 @@ void CHECKNEW_parser___ReduceAction282(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction282_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction423_parser___ReduceAction___init[] = "new ReduceAction423 parser::ReduceAction::init";
+val_t NEW_ReduceAction423_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction282_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction423_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction282();
-  INIT_ATTRIBUTES__parser___ReduceAction282(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction423();
+  INIT_ATTRIBUTES__parser___ReduceAction423(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction282(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction423(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction283[52] = {
-  {(bigint) 1271 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction424[55] = {
+  {(bigint) 1439 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction283" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction283 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction283 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1271 /* 5: ReduceAction283 < ReduceAction283: superclass typecheck marker */},
+  {(bigint) "ReduceAction424" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction424 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction424 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1439 /* 5: ReduceAction424 < ReduceAction424: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -112165,7 +144849,7 @@ const classtable_elt_t VFT_parser___ReduceAction283[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction283 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction424 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -112181,6 +144865,8 @@ const classtable_elt_t VFT_parser___ReduceAction283[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -112194,45 +144880,49 @@ const classtable_elt_t VFT_parser___ReduceAction283[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction283 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction283___action},
+  {(bigint) 0 /* 50: ReduceAction424 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction424___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction283 < ReduceAction283: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction424 < ReduceAction424: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction283::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction283(val_t p0){
+/* 2: Attribute ReduceAction424::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction424[] = "init var of ReduceAction424";
+void INIT_ATTRIBUTES__parser___ReduceAction424(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction283;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction424;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction283(void)
+val_t NEW_parser___ReduceAction424(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction283;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction424;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction283(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction424[] = "check new ReduceAction424";
+void CHECKNEW_parser___ReduceAction424(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction283;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction424;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -112242,34 +144932,37 @@ void CHECKNEW_parser___ReduceAction283(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction283_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction424_parser___ReduceAction___init[] = "new ReduceAction424 parser::ReduceAction::init";
+val_t NEW_ReduceAction424_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction283_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction424_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction283();
-  INIT_ATTRIBUTES__parser___ReduceAction283(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction424();
+  INIT_ATTRIBUTES__parser___ReduceAction424(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction283(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction424(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction284[52] = {
-  {(bigint) 1267 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction425[55] = {
+  {(bigint) 1435 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction284" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction284 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction284 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1267 /* 5: ReduceAction284 < ReduceAction284: superclass typecheck marker */},
+  {(bigint) "ReduceAction425" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction425 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction425 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1435 /* 5: ReduceAction425 < ReduceAction425: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -112282,7 +144975,7 @@ const classtable_elt_t VFT_parser___ReduceAction284[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction284 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction425 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -112298,6 +144991,8 @@ const classtable_elt_t VFT_parser___ReduceAction284[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -112311,45 +145006,49 @@ const classtable_elt_t VFT_parser___ReduceAction284[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction284 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction284___action},
+  {(bigint) 0 /* 50: ReduceAction425 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction425___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction284 < ReduceAction284: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction425 < ReduceAction425: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction284::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction284(val_t p0){
+/* 2: Attribute ReduceAction425::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction425[] = "init var of ReduceAction425";
+void INIT_ATTRIBUTES__parser___ReduceAction425(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction284;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction425;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction284(void)
+val_t NEW_parser___ReduceAction425(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction284;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction425;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction284(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction425[] = "check new ReduceAction425";
+void CHECKNEW_parser___ReduceAction425(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction284;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction425;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -112359,34 +145058,37 @@ void CHECKNEW_parser___ReduceAction284(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction284_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction425_parser___ReduceAction___init[] = "new ReduceAction425 parser::ReduceAction::init";
+val_t NEW_ReduceAction425_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction284_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction425_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction284();
-  INIT_ATTRIBUTES__parser___ReduceAction284(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction425();
+  INIT_ATTRIBUTES__parser___ReduceAction425(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction284(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction425(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction285[52] = {
-  {(bigint) 1263 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction429[55] = {
+  {(bigint) 1431 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction285" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction285 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction285 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1263 /* 5: ReduceAction285 < ReduceAction285: superclass typecheck marker */},
+  {(bigint) "ReduceAction429" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction429 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction429 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1431 /* 5: ReduceAction429 < ReduceAction429: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -112399,7 +145101,7 @@ const classtable_elt_t VFT_parser___ReduceAction285[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction285 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction429 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -112415,6 +145117,8 @@ const classtable_elt_t VFT_parser___ReduceAction285[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -112428,45 +145132,49 @@ const classtable_elt_t VFT_parser___ReduceAction285[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction285 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction285___action},
+  {(bigint) 0 /* 50: ReduceAction429 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction429___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction285 < ReduceAction285: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction429 < ReduceAction429: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction285::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction285(val_t p0){
+/* 2: Attribute ReduceAction429::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction429[] = "init var of ReduceAction429";
+void INIT_ATTRIBUTES__parser___ReduceAction429(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction285;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction429;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction285(void)
+val_t NEW_parser___ReduceAction429(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction285;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction429;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction285(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction429[] = "check new ReduceAction429";
+void CHECKNEW_parser___ReduceAction429(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction285;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction429;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -112476,34 +145184,37 @@ void CHECKNEW_parser___ReduceAction285(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction285_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction429_parser___ReduceAction___init[] = "new ReduceAction429 parser::ReduceAction::init";
+val_t NEW_ReduceAction429_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction285_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction429_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction285();
-  INIT_ATTRIBUTES__parser___ReduceAction285(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction429();
+  INIT_ATTRIBUTES__parser___ReduceAction429(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction285(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction429(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction286[52] = {
-  {(bigint) 1259 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction430[55] = {
+  {(bigint) 1423 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction286" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction286 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction286 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1259 /* 5: ReduceAction286 < ReduceAction286: superclass typecheck marker */},
+  {(bigint) "ReduceAction430" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction430 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction430 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1423 /* 5: ReduceAction430 < ReduceAction430: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -112516,7 +145227,7 @@ const classtable_elt_t VFT_parser___ReduceAction286[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction286 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction430 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -112532,6 +145243,8 @@ const classtable_elt_t VFT_parser___ReduceAction286[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -112545,45 +145258,49 @@ const classtable_elt_t VFT_parser___ReduceAction286[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction286 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction286___action},
+  {(bigint) 0 /* 50: ReduceAction430 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction430___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction286 < ReduceAction286: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction430 < ReduceAction430: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction286::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction286(val_t p0){
+/* 2: Attribute ReduceAction430::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction430[] = "init var of ReduceAction430";
+void INIT_ATTRIBUTES__parser___ReduceAction430(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction286;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction430;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction286(void)
+val_t NEW_parser___ReduceAction430(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction286;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction430;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction286(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction430[] = "check new ReduceAction430";
+void CHECKNEW_parser___ReduceAction430(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction286;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction430;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -112593,34 +145310,37 @@ void CHECKNEW_parser___ReduceAction286(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction286_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction430_parser___ReduceAction___init[] = "new ReduceAction430 parser::ReduceAction::init";
+val_t NEW_ReduceAction430_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction286_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction430_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction286();
-  INIT_ATTRIBUTES__parser___ReduceAction286(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction430();
+  INIT_ATTRIBUTES__parser___ReduceAction430(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction286(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction430(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction287[52] = {
-  {(bigint) 1255 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction431[55] = {
+  {(bigint) 1419 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction287" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction287 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction287 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1255 /* 5: ReduceAction287 < ReduceAction287: superclass typecheck marker */},
+  {(bigint) "ReduceAction431" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction431 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction431 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1419 /* 5: ReduceAction431 < ReduceAction431: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -112633,7 +145353,7 @@ const classtable_elt_t VFT_parser___ReduceAction287[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction287 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction431 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -112649,6 +145369,8 @@ const classtable_elt_t VFT_parser___ReduceAction287[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -112662,45 +145384,49 @@ const classtable_elt_t VFT_parser___ReduceAction287[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction287 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction287___action},
+  {(bigint) 0 /* 50: ReduceAction431 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction431___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction287 < ReduceAction287: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction431 < ReduceAction431: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction287::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction287(val_t p0){
+/* 2: Attribute ReduceAction431::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction431[] = "init var of ReduceAction431";
+void INIT_ATTRIBUTES__parser___ReduceAction431(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction287;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction431;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction287(void)
+val_t NEW_parser___ReduceAction431(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction287;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction431;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction287(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction431[] = "check new ReduceAction431";
+void CHECKNEW_parser___ReduceAction431(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction287;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction431;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -112710,34 +145436,37 @@ void CHECKNEW_parser___ReduceAction287(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction287_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction431_parser___ReduceAction___init[] = "new ReduceAction431 parser::ReduceAction::init";
+val_t NEW_ReduceAction431_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction287_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction431_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction287();
-  INIT_ATTRIBUTES__parser___ReduceAction287(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction431();
+  INIT_ATTRIBUTES__parser___ReduceAction431(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction287(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction431(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction288[52] = {
-  {(bigint) 1251 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction432[55] = {
+  {(bigint) 1415 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction288" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction288 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction288 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1251 /* 5: ReduceAction288 < ReduceAction288: superclass typecheck marker */},
+  {(bigint) "ReduceAction432" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction432 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction432 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1415 /* 5: ReduceAction432 < ReduceAction432: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -112750,7 +145479,7 @@ const classtable_elt_t VFT_parser___ReduceAction288[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction288 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction432 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -112766,6 +145495,8 @@ const classtable_elt_t VFT_parser___ReduceAction288[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -112779,45 +145510,49 @@ const classtable_elt_t VFT_parser___ReduceAction288[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction288 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction288___action},
+  {(bigint) 0 /* 50: ReduceAction432 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction432___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction288 < ReduceAction288: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction432 < ReduceAction432: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction288::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction288(val_t p0){
+/* 2: Attribute ReduceAction432::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction432[] = "init var of ReduceAction432";
+void INIT_ATTRIBUTES__parser___ReduceAction432(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction288;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction432;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction288(void)
+val_t NEW_parser___ReduceAction432(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction288;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction432;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction288(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction432[] = "check new ReduceAction432";
+void CHECKNEW_parser___ReduceAction432(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction288;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction432;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -112827,34 +145562,37 @@ void CHECKNEW_parser___ReduceAction288(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction288_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction432_parser___ReduceAction___init[] = "new ReduceAction432 parser::ReduceAction::init";
+val_t NEW_ReduceAction432_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction288_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction432_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction288();
-  INIT_ATTRIBUTES__parser___ReduceAction288(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction432();
+  INIT_ATTRIBUTES__parser___ReduceAction432(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction288(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction432(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction289[52] = {
-  {(bigint) 1247 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction433[55] = {
+  {(bigint) 1411 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction289" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction289 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction289 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1247 /* 5: ReduceAction289 < ReduceAction289: superclass typecheck marker */},
+  {(bigint) "ReduceAction433" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction433 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction433 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1411 /* 5: ReduceAction433 < ReduceAction433: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -112867,7 +145605,7 @@ const classtable_elt_t VFT_parser___ReduceAction289[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction289 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction433 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -112883,6 +145621,8 @@ const classtable_elt_t VFT_parser___ReduceAction289[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -112896,45 +145636,49 @@ const classtable_elt_t VFT_parser___ReduceAction289[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction289 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction289___action},
+  {(bigint) 0 /* 50: ReduceAction433 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction433___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction289 < ReduceAction289: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction433 < ReduceAction433: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction289::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction289(val_t p0){
+/* 2: Attribute ReduceAction433::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction433[] = "init var of ReduceAction433";
+void INIT_ATTRIBUTES__parser___ReduceAction433(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction289;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction433;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction289(void)
+val_t NEW_parser___ReduceAction433(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction289;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction433;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction289(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction433[] = "check new ReduceAction433";
+void CHECKNEW_parser___ReduceAction433(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction289;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction433;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -112944,34 +145688,37 @@ void CHECKNEW_parser___ReduceAction289(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction289_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction433_parser___ReduceAction___init[] = "new ReduceAction433 parser::ReduceAction::init";
+val_t NEW_ReduceAction433_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction289_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction433_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction289();
-  INIT_ATTRIBUTES__parser___ReduceAction289(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction433();
+  INIT_ATTRIBUTES__parser___ReduceAction433(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction289(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction433(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction290[52] = {
-  {(bigint) 1239 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction434[55] = {
+  {(bigint) 1407 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction290" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction290 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction290 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1239 /* 5: ReduceAction290 < ReduceAction290: superclass typecheck marker */},
+  {(bigint) "ReduceAction434" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction434 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction434 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1407 /* 5: ReduceAction434 < ReduceAction434: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -112984,7 +145731,7 @@ const classtable_elt_t VFT_parser___ReduceAction290[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction290 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction434 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -113000,6 +145747,8 @@ const classtable_elt_t VFT_parser___ReduceAction290[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -113013,45 +145762,49 @@ const classtable_elt_t VFT_parser___ReduceAction290[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction290 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction290___action},
+  {(bigint) 0 /* 50: ReduceAction434 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction434___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction290 < ReduceAction290: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction434 < ReduceAction434: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction290::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction290(val_t p0){
+/* 2: Attribute ReduceAction434::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction434[] = "init var of ReduceAction434";
+void INIT_ATTRIBUTES__parser___ReduceAction434(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction290;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction434;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction290(void)
+val_t NEW_parser___ReduceAction434(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction290;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction434;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction290(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction434[] = "check new ReduceAction434";
+void CHECKNEW_parser___ReduceAction434(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction290;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction434;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -113061,34 +145814,37 @@ void CHECKNEW_parser___ReduceAction290(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction290_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction434_parser___ReduceAction___init[] = "new ReduceAction434 parser::ReduceAction::init";
+val_t NEW_ReduceAction434_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction290_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction434_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction290();
-  INIT_ATTRIBUTES__parser___ReduceAction290(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction434();
+  INIT_ATTRIBUTES__parser___ReduceAction434(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction290(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction434(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction291[52] = {
-  {(bigint) 1235 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction435[55] = {
+  {(bigint) 1403 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction291" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction291 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction291 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1235 /* 5: ReduceAction291 < ReduceAction291: superclass typecheck marker */},
+  {(bigint) "ReduceAction435" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction435 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction435 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1403 /* 5: ReduceAction435 < ReduceAction435: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -113101,7 +145857,7 @@ const classtable_elt_t VFT_parser___ReduceAction291[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction291 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction435 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -113117,6 +145873,8 @@ const classtable_elt_t VFT_parser___ReduceAction291[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -113130,45 +145888,49 @@ const classtable_elt_t VFT_parser___ReduceAction291[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction291 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction291___action},
+  {(bigint) 0 /* 50: ReduceAction435 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction435___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction291 < ReduceAction291: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction435 < ReduceAction435: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction291::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction291(val_t p0){
+/* 2: Attribute ReduceAction435::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction435[] = "init var of ReduceAction435";
+void INIT_ATTRIBUTES__parser___ReduceAction435(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction291;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction435;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction291(void)
+val_t NEW_parser___ReduceAction435(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction291;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction435;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction291(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction435[] = "check new ReduceAction435";
+void CHECKNEW_parser___ReduceAction435(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction291;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction435;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -113178,34 +145940,37 @@ void CHECKNEW_parser___ReduceAction291(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction291_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction435_parser___ReduceAction___init[] = "new ReduceAction435 parser::ReduceAction::init";
+val_t NEW_ReduceAction435_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction291_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction435_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction291();
-  INIT_ATTRIBUTES__parser___ReduceAction291(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction435();
+  INIT_ATTRIBUTES__parser___ReduceAction435(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction291(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction435(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction292[52] = {
-  {(bigint) 1231 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction436[55] = {
+  {(bigint) 1399 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction292" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction292 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction292 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1231 /* 5: ReduceAction292 < ReduceAction292: superclass typecheck marker */},
+  {(bigint) "ReduceAction436" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction436 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction436 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1399 /* 5: ReduceAction436 < ReduceAction436: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -113218,7 +145983,7 @@ const classtable_elt_t VFT_parser___ReduceAction292[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction292 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction436 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -113234,6 +145999,8 @@ const classtable_elt_t VFT_parser___ReduceAction292[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -113247,45 +146014,49 @@ const classtable_elt_t VFT_parser___ReduceAction292[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction292 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction292___action},
+  {(bigint) 0 /* 50: ReduceAction436 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction436___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction292 < ReduceAction292: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction436 < ReduceAction436: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction292::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction292(val_t p0){
+/* 2: Attribute ReduceAction436::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction436[] = "init var of ReduceAction436";
+void INIT_ATTRIBUTES__parser___ReduceAction436(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction292;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction436;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction292(void)
+val_t NEW_parser___ReduceAction436(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction292;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction436;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction292(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction436[] = "check new ReduceAction436";
+void CHECKNEW_parser___ReduceAction436(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction292;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction436;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -113295,34 +146066,37 @@ void CHECKNEW_parser___ReduceAction292(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction292_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction436_parser___ReduceAction___init[] = "new ReduceAction436 parser::ReduceAction::init";
+val_t NEW_ReduceAction436_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction292_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction436_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction292();
-  INIT_ATTRIBUTES__parser___ReduceAction292(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction436();
+  INIT_ATTRIBUTES__parser___ReduceAction436(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction292(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction436(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction293[52] = {
-  {(bigint) 1227 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction437[55] = {
+  {(bigint) 1395 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction293" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction293 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction293 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1227 /* 5: ReduceAction293 < ReduceAction293: superclass typecheck marker */},
+  {(bigint) "ReduceAction437" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction437 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction437 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1395 /* 5: ReduceAction437 < ReduceAction437: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -113335,7 +146109,7 @@ const classtable_elt_t VFT_parser___ReduceAction293[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction293 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction437 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -113351,6 +146125,8 @@ const classtable_elt_t VFT_parser___ReduceAction293[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -113364,45 +146140,49 @@ const classtable_elt_t VFT_parser___ReduceAction293[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction293 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction293___action},
+  {(bigint) 0 /* 50: ReduceAction437 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction437___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction293 < ReduceAction293: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction437 < ReduceAction437: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction293::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction293(val_t p0){
+/* 2: Attribute ReduceAction437::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction437[] = "init var of ReduceAction437";
+void INIT_ATTRIBUTES__parser___ReduceAction437(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction293;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction437;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction293(void)
+val_t NEW_parser___ReduceAction437(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction293;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction437;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction293(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction437[] = "check new ReduceAction437";
+void CHECKNEW_parser___ReduceAction437(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction293;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction437;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -113412,34 +146192,37 @@ void CHECKNEW_parser___ReduceAction293(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction293_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction437_parser___ReduceAction___init[] = "new ReduceAction437 parser::ReduceAction::init";
+val_t NEW_ReduceAction437_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction293_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction437_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction293();
-  INIT_ATTRIBUTES__parser___ReduceAction293(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction437();
+  INIT_ATTRIBUTES__parser___ReduceAction437(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction293(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction437(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction294[52] = {
-  {(bigint) 1223 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction438[55] = {
+  {(bigint) 1391 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction294" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction294 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction294 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1223 /* 5: ReduceAction294 < ReduceAction294: superclass typecheck marker */},
+  {(bigint) "ReduceAction438" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction438 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction438 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1391 /* 5: ReduceAction438 < ReduceAction438: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -113452,7 +146235,7 @@ const classtable_elt_t VFT_parser___ReduceAction294[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction294 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction438 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -113468,6 +146251,8 @@ const classtable_elt_t VFT_parser___ReduceAction294[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -113481,45 +146266,49 @@ const classtable_elt_t VFT_parser___ReduceAction294[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction294 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction294___action},
+  {(bigint) 0 /* 50: ReduceAction438 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction438___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction294 < ReduceAction294: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction438 < ReduceAction438: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction294::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction294(val_t p0){
+/* 2: Attribute ReduceAction438::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction438[] = "init var of ReduceAction438";
+void INIT_ATTRIBUTES__parser___ReduceAction438(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction294;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction438;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction294(void)
+val_t NEW_parser___ReduceAction438(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction294;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction438;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction294(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction438[] = "check new ReduceAction438";
+void CHECKNEW_parser___ReduceAction438(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction294;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction438;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -113529,153 +146318,39 @@ void CHECKNEW_parser___ReduceAction294(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction294_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction438_parser___ReduceAction___init[] = "new ReduceAction438 parser::ReduceAction::init";
+val_t NEW_ReduceAction438_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction294_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction438_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction294();
-  INIT_ATTRIBUTES__parser___ReduceAction294(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction438();
+  INIT_ATTRIBUTES__parser___ReduceAction438(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction294(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction438(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction295[52] = {
-  {(bigint) 1219 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction439[55] = {
+  {(bigint) 1387 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction295" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction295 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction295 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1219 /* 5: ReduceAction295 < ReduceAction295: 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) "ReduceAction439" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction439 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction439 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1387 /* 5: ReduceAction439 < ReduceAction439: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction295 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
-  {(bigint) standard___file___Object___printn},
-  {(bigint) standard___file___Object___print},
-  {(bigint) standard___file___Object___getc},
-  {(bigint) standard___file___Object___gets},
-  {(bigint) standard___file___Object___stdin},
-  {(bigint) standard___file___Object___stdout},
-  {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
-  {(bigint) standard___string___Object___native_class_name},
-  {(bigint) standard___string___Object___class_name},
-  {(bigint) standard___string___Object___inspect},
-  {(bigint) standard___string___Object___inspect_head},
-  {(bigint) standard___string___Object___args},
-  {(bigint) standard___hash___Object___hash},
-  {(bigint) standard___math___Object___atan2},
-  {(bigint) standard___math___Object___pi},
-  {(bigint) standard___math___Object___srand_from},
-  {(bigint) standard___math___Object___srand},
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction295 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction295___action},
-  {(bigint) parser___ReduceAction___concat},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction295 < ReduceAction295: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Object_id */
-/* 2: Attribute ReduceAction295::_goto */
-void INIT_ATTRIBUTES__parser___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__parser___ReduceAction295;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
-  stack_frame_head = fra.me.prev;
-}
-val_t NEW_parser___ReduceAction295(void)
-{
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction295;
-  obj[1].object_id = object_id_counter;
-  object_id_counter = object_id_counter + 1;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_parser___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_parser___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___ReduceAction____goto(fra.me.REG[0])!=NIT_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___ReduceAction___init(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  int init_table[3] = {0, 0, 0};
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction295_parser___ReduceAction___init;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction295();
-  INIT_ATTRIBUTES__parser___ReduceAction295(fra.me.REG[0]);
-  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction295(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-const classtable_elt_t VFT_parser___ReduceAction296[52] = {
-  {(bigint) 1215 /* 0: Identity */},
-  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction296" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction296 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction296 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1215 /* 5: ReduceAction296 < ReduceAction296: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -113686,7 +146361,7 @@ const classtable_elt_t VFT_parser___ReduceAction296[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction296 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction439 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -113702,6 +146377,8 @@ const classtable_elt_t VFT_parser___ReduceAction296[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -113715,45 +146392,49 @@ const classtable_elt_t VFT_parser___ReduceAction296[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction296 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction296___action},
+  {(bigint) 0 /* 50: ReduceAction439 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction439___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction296 < ReduceAction296: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction439 < ReduceAction439: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction296::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction296(val_t p0){
+/* 2: Attribute ReduceAction439::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction439[] = "init var of ReduceAction439";
+void INIT_ATTRIBUTES__parser___ReduceAction439(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction296;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction439;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction296(void)
+val_t NEW_parser___ReduceAction439(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction296;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction439;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction296(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction439[] = "check new ReduceAction439";
+void CHECKNEW_parser___ReduceAction439(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction296;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction439;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -113763,34 +146444,37 @@ void CHECKNEW_parser___ReduceAction296(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction296_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction439_parser___ReduceAction___init[] = "new ReduceAction439 parser::ReduceAction::init";
+val_t NEW_ReduceAction439_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction296_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction439_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction296();
-  INIT_ATTRIBUTES__parser___ReduceAction296(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction439();
+  INIT_ATTRIBUTES__parser___ReduceAction439(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction296(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction439(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction297[52] = {
-  {(bigint) 1211 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction446[55] = {
+  {(bigint) 1379 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction297" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction297 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction297 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1211 /* 5: ReduceAction297 < ReduceAction297: superclass typecheck marker */},
+  {(bigint) "ReduceAction446" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction446 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction446 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1379 /* 5: ReduceAction446 < ReduceAction446: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -113803,7 +146487,7 @@ const classtable_elt_t VFT_parser___ReduceAction297[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction297 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction446 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -113819,6 +146503,8 @@ const classtable_elt_t VFT_parser___ReduceAction297[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -113832,45 +146518,49 @@ const classtable_elt_t VFT_parser___ReduceAction297[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction297 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction297___action},
+  {(bigint) 0 /* 50: ReduceAction446 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction446___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction297 < ReduceAction297: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction446 < ReduceAction446: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction297::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction297(val_t p0){
+/* 2: Attribute ReduceAction446::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction446[] = "init var of ReduceAction446";
+void INIT_ATTRIBUTES__parser___ReduceAction446(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction297;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction446;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction297(void)
+val_t NEW_parser___ReduceAction446(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction297;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction446;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction297(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction446[] = "check new ReduceAction446";
+void CHECKNEW_parser___ReduceAction446(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction297;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction446;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -113880,34 +146570,37 @@ void CHECKNEW_parser___ReduceAction297(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction297_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction446_parser___ReduceAction___init[] = "new ReduceAction446 parser::ReduceAction::init";
+val_t NEW_ReduceAction446_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction297_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction446_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction297();
-  INIT_ATTRIBUTES__parser___ReduceAction297(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction446();
+  INIT_ATTRIBUTES__parser___ReduceAction446(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction297(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction446(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction298[52] = {
-  {(bigint) 1207 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction447[55] = {
+  {(bigint) 1375 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction298" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction298 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction298 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1207 /* 5: ReduceAction298 < ReduceAction298: superclass typecheck marker */},
+  {(bigint) "ReduceAction447" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction447 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction447 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1375 /* 5: ReduceAction447 < ReduceAction447: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -113920,7 +146613,7 @@ const classtable_elt_t VFT_parser___ReduceAction298[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction298 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction447 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -113936,6 +146629,8 @@ const classtable_elt_t VFT_parser___ReduceAction298[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -113949,45 +146644,49 @@ const classtable_elt_t VFT_parser___ReduceAction298[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction298 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction298___action},
+  {(bigint) 0 /* 50: ReduceAction447 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction447___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction298 < ReduceAction298: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction447 < ReduceAction447: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction298::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction298(val_t p0){
+/* 2: Attribute ReduceAction447::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction447[] = "init var of ReduceAction447";
+void INIT_ATTRIBUTES__parser___ReduceAction447(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction298;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction447;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction298(void)
+val_t NEW_parser___ReduceAction447(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction298;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction447;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction298(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction447[] = "check new ReduceAction447";
+void CHECKNEW_parser___ReduceAction447(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction298;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction447;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -113997,34 +146696,37 @@ void CHECKNEW_parser___ReduceAction298(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction298_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction447_parser___ReduceAction___init[] = "new ReduceAction447 parser::ReduceAction::init";
+val_t NEW_ReduceAction447_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction298_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction447_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction298();
-  INIT_ATTRIBUTES__parser___ReduceAction298(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction447();
+  INIT_ATTRIBUTES__parser___ReduceAction447(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction298(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction447(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction299[52] = {
-  {(bigint) 1203 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction448[55] = {
+  {(bigint) 1371 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction299" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction299 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction299 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1203 /* 5: ReduceAction299 < ReduceAction299: superclass typecheck marker */},
+  {(bigint) "ReduceAction448" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction448 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction448 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1371 /* 5: ReduceAction448 < ReduceAction448: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -114037,7 +146739,7 @@ const classtable_elt_t VFT_parser___ReduceAction299[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction299 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction448 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -114053,6 +146755,8 @@ const classtable_elt_t VFT_parser___ReduceAction299[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -114066,45 +146770,49 @@ const classtable_elt_t VFT_parser___ReduceAction299[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction299 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction299___action},
+  {(bigint) 0 /* 50: ReduceAction448 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction448___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction299 < ReduceAction299: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction448 < ReduceAction448: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction299::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction299(val_t p0){
+/* 2: Attribute ReduceAction448::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction448[] = "init var of ReduceAction448";
+void INIT_ATTRIBUTES__parser___ReduceAction448(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction299;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction448;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction299(void)
+val_t NEW_parser___ReduceAction448(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction299;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction448;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction299(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction448[] = "check new ReduceAction448";
+void CHECKNEW_parser___ReduceAction448(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction299;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction448;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -114114,34 +146822,37 @@ void CHECKNEW_parser___ReduceAction299(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction299_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction448_parser___ReduceAction___init[] = "new ReduceAction448 parser::ReduceAction::init";
+val_t NEW_ReduceAction448_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction299_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction448_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction299();
-  INIT_ATTRIBUTES__parser___ReduceAction299(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction448();
+  INIT_ATTRIBUTES__parser___ReduceAction448(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction299(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction448(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction300[52] = {
-  {(bigint) 1191 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction449[55] = {
+  {(bigint) 1367 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction300" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction300 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction300 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1191 /* 5: ReduceAction300 < ReduceAction300: superclass typecheck marker */},
+  {(bigint) "ReduceAction449" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction449 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction449 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1367 /* 5: ReduceAction449 < ReduceAction449: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -114154,7 +146865,7 @@ const classtable_elt_t VFT_parser___ReduceAction300[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction300 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction449 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -114170,6 +146881,8 @@ const classtable_elt_t VFT_parser___ReduceAction300[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -114183,45 +146896,49 @@ const classtable_elt_t VFT_parser___ReduceAction300[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction300 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction300___action},
+  {(bigint) 0 /* 50: ReduceAction449 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction449___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction300 < ReduceAction300: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction449 < ReduceAction449: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction300::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction300(val_t p0){
+/* 2: Attribute ReduceAction449::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction449[] = "init var of ReduceAction449";
+void INIT_ATTRIBUTES__parser___ReduceAction449(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction300;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction449;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction300(void)
+val_t NEW_parser___ReduceAction449(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction300;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction449;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction300(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction449[] = "check new ReduceAction449";
+void CHECKNEW_parser___ReduceAction449(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction300;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction449;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -114231,34 +146948,37 @@ void CHECKNEW_parser___ReduceAction300(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction300_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction449_parser___ReduceAction___init[] = "new ReduceAction449 parser::ReduceAction::init";
+val_t NEW_ReduceAction449_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction300_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction449_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction300();
-  INIT_ATTRIBUTES__parser___ReduceAction300(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction449();
+  INIT_ATTRIBUTES__parser___ReduceAction449(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction300(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction449(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction301[52] = {
-  {(bigint) 1187 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction450[55] = {
+  {(bigint) 1359 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction301" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction301 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction301 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1187 /* 5: ReduceAction301 < ReduceAction301: superclass typecheck marker */},
+  {(bigint) "ReduceAction450" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction450 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction450 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1359 /* 5: ReduceAction450 < ReduceAction450: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -114271,7 +146991,7 @@ const classtable_elt_t VFT_parser___ReduceAction301[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction301 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction450 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -114287,6 +147007,8 @@ const classtable_elt_t VFT_parser___ReduceAction301[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -114300,45 +147022,49 @@ const classtable_elt_t VFT_parser___ReduceAction301[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction301 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction301___action},
+  {(bigint) 0 /* 50: ReduceAction450 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction450___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction301 < ReduceAction301: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction450 < ReduceAction450: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction301::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction301(val_t p0){
+/* 2: Attribute ReduceAction450::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction450[] = "init var of ReduceAction450";
+void INIT_ATTRIBUTES__parser___ReduceAction450(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction301;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction450;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction301(void)
+val_t NEW_parser___ReduceAction450(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction301;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction450;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction301(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction450[] = "check new ReduceAction450";
+void CHECKNEW_parser___ReduceAction450(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction301;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction450;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -114348,34 +147074,37 @@ void CHECKNEW_parser___ReduceAction301(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction301_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction450_parser___ReduceAction___init[] = "new ReduceAction450 parser::ReduceAction::init";
+val_t NEW_ReduceAction450_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction301_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction450_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction301();
-  INIT_ATTRIBUTES__parser___ReduceAction301(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction450();
+  INIT_ATTRIBUTES__parser___ReduceAction450(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction301(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction450(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction302[52] = {
-  {(bigint) 1183 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction451[55] = {
+  {(bigint) 1355 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction302" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction302 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction302 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1183 /* 5: ReduceAction302 < ReduceAction302: superclass typecheck marker */},
+  {(bigint) "ReduceAction451" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction451 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction451 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1355 /* 5: ReduceAction451 < ReduceAction451: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -114388,7 +147117,7 @@ const classtable_elt_t VFT_parser___ReduceAction302[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction302 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction451 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -114404,6 +147133,8 @@ const classtable_elt_t VFT_parser___ReduceAction302[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -114417,45 +147148,49 @@ const classtable_elt_t VFT_parser___ReduceAction302[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction302 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction302___action},
+  {(bigint) 0 /* 50: ReduceAction451 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction451___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction302 < ReduceAction302: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction451 < ReduceAction451: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction302::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction302(val_t p0){
+/* 2: Attribute ReduceAction451::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction451[] = "init var of ReduceAction451";
+void INIT_ATTRIBUTES__parser___ReduceAction451(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction302;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction451;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction302(void)
+val_t NEW_parser___ReduceAction451(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction302;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction451;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction302(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction451[] = "check new ReduceAction451";
+void CHECKNEW_parser___ReduceAction451(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction302;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction451;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -114465,34 +147200,37 @@ void CHECKNEW_parser___ReduceAction302(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction302_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction451_parser___ReduceAction___init[] = "new ReduceAction451 parser::ReduceAction::init";
+val_t NEW_ReduceAction451_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction302_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction451_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction302();
-  INIT_ATTRIBUTES__parser___ReduceAction302(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction451();
+  INIT_ATTRIBUTES__parser___ReduceAction451(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction302(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction451(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction303[52] = {
-  {(bigint) 1179 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction452[55] = {
+  {(bigint) 1351 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction303" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction303 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction303 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1179 /* 5: ReduceAction303 < ReduceAction303: superclass typecheck marker */},
+  {(bigint) "ReduceAction452" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction452 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction452 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1351 /* 5: ReduceAction452 < ReduceAction452: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -114505,7 +147243,7 @@ const classtable_elt_t VFT_parser___ReduceAction303[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction303 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction452 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -114521,6 +147259,8 @@ const classtable_elt_t VFT_parser___ReduceAction303[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -114534,45 +147274,49 @@ const classtable_elt_t VFT_parser___ReduceAction303[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction303 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction303___action},
+  {(bigint) 0 /* 50: ReduceAction452 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction452___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction303 < ReduceAction303: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction452 < ReduceAction452: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction303::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction303(val_t p0){
+/* 2: Attribute ReduceAction452::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction452[] = "init var of ReduceAction452";
+void INIT_ATTRIBUTES__parser___ReduceAction452(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction303;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction452;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction303(void)
+val_t NEW_parser___ReduceAction452(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction303;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction452;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction303(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction452[] = "check new ReduceAction452";
+void CHECKNEW_parser___ReduceAction452(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction303;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction452;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -114582,153 +147326,39 @@ void CHECKNEW_parser___ReduceAction303(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction303_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction452_parser___ReduceAction___init[] = "new ReduceAction452 parser::ReduceAction::init";
+val_t NEW_ReduceAction452_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction303_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction452_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction303();
-  INIT_ATTRIBUTES__parser___ReduceAction303(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction452();
+  INIT_ATTRIBUTES__parser___ReduceAction452(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction303(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction452(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction304[52] = {
-  {(bigint) 1175 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction453[55] = {
+  {(bigint) 1347 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction304" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction304 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction304 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1175 /* 5: ReduceAction304 < ReduceAction304: 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) "ReduceAction453" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction453 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction453 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1347 /* 5: ReduceAction453 < ReduceAction453: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction304 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
-  {(bigint) standard___file___Object___printn},
-  {(bigint) standard___file___Object___print},
-  {(bigint) standard___file___Object___getc},
-  {(bigint) standard___file___Object___gets},
-  {(bigint) standard___file___Object___stdin},
-  {(bigint) standard___file___Object___stdout},
-  {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
-  {(bigint) standard___string___Object___native_class_name},
-  {(bigint) standard___string___Object___class_name},
-  {(bigint) standard___string___Object___inspect},
-  {(bigint) standard___string___Object___inspect_head},
-  {(bigint) standard___string___Object___args},
-  {(bigint) standard___hash___Object___hash},
-  {(bigint) standard___math___Object___atan2},
-  {(bigint) standard___math___Object___pi},
-  {(bigint) standard___math___Object___srand_from},
-  {(bigint) standard___math___Object___srand},
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction304 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction304___action},
-  {(bigint) parser___ReduceAction___concat},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction304 < ReduceAction304: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Object_id */
-/* 2: Attribute ReduceAction304::_goto */
-void INIT_ATTRIBUTES__parser___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__parser___ReduceAction304;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
-  stack_frame_head = fra.me.prev;
-}
-val_t NEW_parser___ReduceAction304(void)
-{
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction304;
-  obj[1].object_id = object_id_counter;
-  object_id_counter = object_id_counter + 1;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_parser___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_parser___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___ReduceAction____goto(fra.me.REG[0])!=NIT_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___ReduceAction___init(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  int init_table[3] = {0, 0, 0};
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction304_parser___ReduceAction___init;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction304();
-  INIT_ATTRIBUTES__parser___ReduceAction304(fra.me.REG[0]);
-  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction304(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-const classtable_elt_t VFT_parser___ReduceAction305[52] = {
-  {(bigint) 1171 /* 0: Identity */},
-  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction305" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction305 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction305 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1171 /* 5: ReduceAction305 < ReduceAction305: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -114739,7 +147369,7 @@ const classtable_elt_t VFT_parser___ReduceAction305[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction305 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction453 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -114755,6 +147385,8 @@ const classtable_elt_t VFT_parser___ReduceAction305[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -114768,45 +147400,49 @@ const classtable_elt_t VFT_parser___ReduceAction305[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction305 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction305___action},
+  {(bigint) 0 /* 50: ReduceAction453 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction453___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction305 < ReduceAction305: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction453 < ReduceAction453: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction305::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction305(val_t p0){
+/* 2: Attribute ReduceAction453::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction453[] = "init var of ReduceAction453";
+void INIT_ATTRIBUTES__parser___ReduceAction453(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction305;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction453;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction305(void)
+val_t NEW_parser___ReduceAction453(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction305;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction453;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction305(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction453[] = "check new ReduceAction453";
+void CHECKNEW_parser___ReduceAction453(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction305;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction453;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -114816,34 +147452,37 @@ void CHECKNEW_parser___ReduceAction305(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction305_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction453_parser___ReduceAction___init[] = "new ReduceAction453 parser::ReduceAction::init";
+val_t NEW_ReduceAction453_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction305_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction453_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction305();
-  INIT_ATTRIBUTES__parser___ReduceAction305(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction453();
+  INIT_ATTRIBUTES__parser___ReduceAction453(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction305(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction453(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction306[52] = {
-  {(bigint) 1167 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction454[55] = {
+  {(bigint) 1343 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction306" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction306 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction306 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1167 /* 5: ReduceAction306 < ReduceAction306: superclass typecheck marker */},
+  {(bigint) "ReduceAction454" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction454 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction454 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1343 /* 5: ReduceAction454 < ReduceAction454: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -114856,7 +147495,7 @@ const classtable_elt_t VFT_parser___ReduceAction306[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction306 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction454 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -114872,6 +147511,8 @@ const classtable_elt_t VFT_parser___ReduceAction306[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -114885,45 +147526,49 @@ const classtable_elt_t VFT_parser___ReduceAction306[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction306 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction306___action},
+  {(bigint) 0 /* 50: ReduceAction454 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction454___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction306 < ReduceAction306: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction454 < ReduceAction454: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction306::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction306(val_t p0){
+/* 2: Attribute ReduceAction454::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction454[] = "init var of ReduceAction454";
+void INIT_ATTRIBUTES__parser___ReduceAction454(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction306;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction454;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction306(void)
+val_t NEW_parser___ReduceAction454(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction306;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction454;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction306(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction454[] = "check new ReduceAction454";
+void CHECKNEW_parser___ReduceAction454(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction306;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction454;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -114933,34 +147578,37 @@ void CHECKNEW_parser___ReduceAction306(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction306_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction454_parser___ReduceAction___init[] = "new ReduceAction454 parser::ReduceAction::init";
+val_t NEW_ReduceAction454_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction306_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction454_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction306();
-  INIT_ATTRIBUTES__parser___ReduceAction306(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction454();
+  INIT_ATTRIBUTES__parser___ReduceAction454(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction306(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction454(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction307[52] = {
-  {(bigint) 1163 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction455[55] = {
+  {(bigint) 1339 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction307" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction307 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction307 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1163 /* 5: ReduceAction307 < ReduceAction307: superclass typecheck marker */},
+  {(bigint) "ReduceAction455" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction455 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction455 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1339 /* 5: ReduceAction455 < ReduceAction455: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -114973,7 +147621,7 @@ const classtable_elt_t VFT_parser___ReduceAction307[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction307 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction455 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -114989,6 +147637,8 @@ const classtable_elt_t VFT_parser___ReduceAction307[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -115002,45 +147652,49 @@ const classtable_elt_t VFT_parser___ReduceAction307[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction307 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction307___action},
+  {(bigint) 0 /* 50: ReduceAction455 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction455___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction307 < ReduceAction307: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction455 < ReduceAction455: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction307::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction307(val_t p0){
+/* 2: Attribute ReduceAction455::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction455[] = "init var of ReduceAction455";
+void INIT_ATTRIBUTES__parser___ReduceAction455(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction307;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction455;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction307(void)
+val_t NEW_parser___ReduceAction455(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction307;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction455;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction307(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction455[] = "check new ReduceAction455";
+void CHECKNEW_parser___ReduceAction455(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction307;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction455;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -115050,34 +147704,37 @@ void CHECKNEW_parser___ReduceAction307(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction307_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction455_parser___ReduceAction___init[] = "new ReduceAction455 parser::ReduceAction::init";
+val_t NEW_ReduceAction455_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction307_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction455_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction307();
-  INIT_ATTRIBUTES__parser___ReduceAction307(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction455();
+  INIT_ATTRIBUTES__parser___ReduceAction455(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction307(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction455(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction308[52] = {
-  {(bigint) 1159 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction456[55] = {
+  {(bigint) 1335 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction308" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction308 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction308 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1159 /* 5: ReduceAction308 < ReduceAction308: superclass typecheck marker */},
+  {(bigint) "ReduceAction456" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction456 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction456 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1335 /* 5: ReduceAction456 < ReduceAction456: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -115090,7 +147747,7 @@ const classtable_elt_t VFT_parser___ReduceAction308[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction308 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction456 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -115106,6 +147763,8 @@ const classtable_elt_t VFT_parser___ReduceAction308[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -115119,45 +147778,49 @@ const classtable_elt_t VFT_parser___ReduceAction308[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction308 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction308___action},
+  {(bigint) 0 /* 50: ReduceAction456 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction456___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction308 < ReduceAction308: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction456 < ReduceAction456: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction308::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction308(val_t p0){
+/* 2: Attribute ReduceAction456::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction456[] = "init var of ReduceAction456";
+void INIT_ATTRIBUTES__parser___ReduceAction456(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction308;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction456;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction308(void)
+val_t NEW_parser___ReduceAction456(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction308;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction456;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction308(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction456[] = "check new ReduceAction456";
+void CHECKNEW_parser___ReduceAction456(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction308;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction456;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -115167,34 +147830,37 @@ void CHECKNEW_parser___ReduceAction308(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction308_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction456_parser___ReduceAction___init[] = "new ReduceAction456 parser::ReduceAction::init";
+val_t NEW_ReduceAction456_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction308_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction456_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction308();
-  INIT_ATTRIBUTES__parser___ReduceAction308(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction456();
+  INIT_ATTRIBUTES__parser___ReduceAction456(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction308(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction456(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction309[52] = {
-  {(bigint) 1155 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction457[55] = {
+  {(bigint) 1331 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction309" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction309 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction309 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1155 /* 5: ReduceAction309 < ReduceAction309: superclass typecheck marker */},
+  {(bigint) "ReduceAction457" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction457 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction457 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1331 /* 5: ReduceAction457 < ReduceAction457: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -115207,7 +147873,7 @@ const classtable_elt_t VFT_parser___ReduceAction309[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction309 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction457 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -115223,6 +147889,8 @@ const classtable_elt_t VFT_parser___ReduceAction309[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -115236,45 +147904,49 @@ const classtable_elt_t VFT_parser___ReduceAction309[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction309 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction309___action},
+  {(bigint) 0 /* 50: ReduceAction457 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction457___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction309 < ReduceAction309: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction457 < ReduceAction457: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction309::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction309(val_t p0){
+/* 2: Attribute ReduceAction457::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction457[] = "init var of ReduceAction457";
+void INIT_ATTRIBUTES__parser___ReduceAction457(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction309;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction457;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction309(void)
+val_t NEW_parser___ReduceAction457(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction309;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction457;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction309(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction457[] = "check new ReduceAction457";
+void CHECKNEW_parser___ReduceAction457(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction309;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction457;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -115284,34 +147956,37 @@ void CHECKNEW_parser___ReduceAction309(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction309_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction457_parser___ReduceAction___init[] = "new ReduceAction457 parser::ReduceAction::init";
+val_t NEW_ReduceAction457_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction309_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction457_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction309();
-  INIT_ATTRIBUTES__parser___ReduceAction309(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction457();
+  INIT_ATTRIBUTES__parser___ReduceAction457(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction309(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction457(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction310[52] = {
-  {(bigint) 1147 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction458[55] = {
+  {(bigint) 1327 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction310" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction310 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction310 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1147 /* 5: ReduceAction310 < ReduceAction310: superclass typecheck marker */},
+  {(bigint) "ReduceAction458" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction458 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction458 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1327 /* 5: ReduceAction458 < ReduceAction458: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -115324,7 +147999,7 @@ const classtable_elt_t VFT_parser___ReduceAction310[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction310 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction458 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -115340,6 +148015,8 @@ const classtable_elt_t VFT_parser___ReduceAction310[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -115353,45 +148030,49 @@ const classtable_elt_t VFT_parser___ReduceAction310[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction310 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction310___action},
+  {(bigint) 0 /* 50: ReduceAction458 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction458___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction310 < ReduceAction310: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction458 < ReduceAction458: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction310::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction310(val_t p0){
+/* 2: Attribute ReduceAction458::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction458[] = "init var of ReduceAction458";
+void INIT_ATTRIBUTES__parser___ReduceAction458(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction310;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction458;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction310(void)
+val_t NEW_parser___ReduceAction458(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction310;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction458;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction310(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction458[] = "check new ReduceAction458";
+void CHECKNEW_parser___ReduceAction458(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction310;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction458;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -115401,34 +148082,37 @@ void CHECKNEW_parser___ReduceAction310(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction310_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction458_parser___ReduceAction___init[] = "new ReduceAction458 parser::ReduceAction::init";
+val_t NEW_ReduceAction458_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction310_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction458_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction310();
-  INIT_ATTRIBUTES__parser___ReduceAction310(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction458();
+  INIT_ATTRIBUTES__parser___ReduceAction458(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction310(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction458(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction311[52] = {
-  {(bigint) 1143 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction459[55] = {
+  {(bigint) 1323 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction311" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction311 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction311 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1143 /* 5: ReduceAction311 < ReduceAction311: superclass typecheck marker */},
+  {(bigint) "ReduceAction459" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction459 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction459 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1323 /* 5: ReduceAction459 < ReduceAction459: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -115441,7 +148125,7 @@ const classtable_elt_t VFT_parser___ReduceAction311[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction311 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction459 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -115457,6 +148141,8 @@ const classtable_elt_t VFT_parser___ReduceAction311[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -115470,45 +148156,49 @@ const classtable_elt_t VFT_parser___ReduceAction311[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction311 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction311___action},
+  {(bigint) 0 /* 50: ReduceAction459 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction459___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction311 < ReduceAction311: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction459 < ReduceAction459: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction311::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction311(val_t p0){
+/* 2: Attribute ReduceAction459::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction459[] = "init var of ReduceAction459";
+void INIT_ATTRIBUTES__parser___ReduceAction459(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction311;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction459;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction311(void)
+val_t NEW_parser___ReduceAction459(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction311;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction459;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction311(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction459[] = "check new ReduceAction459";
+void CHECKNEW_parser___ReduceAction459(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction311;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction459;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -115518,34 +148208,37 @@ void CHECKNEW_parser___ReduceAction311(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction311_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction459_parser___ReduceAction___init[] = "new ReduceAction459 parser::ReduceAction::init";
+val_t NEW_ReduceAction459_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction311_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction459_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction311();
-  INIT_ATTRIBUTES__parser___ReduceAction311(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction459();
+  INIT_ATTRIBUTES__parser___ReduceAction459(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction311(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction459(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction312[52] = {
-  {(bigint) 1139 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction460[55] = {
+  {(bigint) 1315 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction312" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction312 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction312 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1139 /* 5: ReduceAction312 < ReduceAction312: superclass typecheck marker */},
+  {(bigint) "ReduceAction460" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction460 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction460 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1315 /* 5: ReduceAction460 < ReduceAction460: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -115558,7 +148251,7 @@ const classtable_elt_t VFT_parser___ReduceAction312[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction312 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction460 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -115574,6 +148267,8 @@ const classtable_elt_t VFT_parser___ReduceAction312[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -115587,45 +148282,49 @@ const classtable_elt_t VFT_parser___ReduceAction312[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction312 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction312___action},
+  {(bigint) 0 /* 50: ReduceAction460 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction460___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction312 < ReduceAction312: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction460 < ReduceAction460: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction312::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction312(val_t p0){
+/* 2: Attribute ReduceAction460::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction460[] = "init var of ReduceAction460";
+void INIT_ATTRIBUTES__parser___ReduceAction460(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction312;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction460;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction312(void)
+val_t NEW_parser___ReduceAction460(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction312;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction460;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction312(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction460[] = "check new ReduceAction460";
+void CHECKNEW_parser___ReduceAction460(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction312;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction460;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -115635,153 +148334,39 @@ void CHECKNEW_parser___ReduceAction312(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction312_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction460_parser___ReduceAction___init[] = "new ReduceAction460 parser::ReduceAction::init";
+val_t NEW_ReduceAction460_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction312_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction460_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction312();
-  INIT_ATTRIBUTES__parser___ReduceAction312(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction460();
+  INIT_ATTRIBUTES__parser___ReduceAction460(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction312(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction460(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction313[52] = {
-  {(bigint) 1135 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction461[55] = {
+  {(bigint) 1311 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction313" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction313 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction313 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1135 /* 5: ReduceAction313 < ReduceAction313: 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) "ReduceAction461" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction461 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction461 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1311 /* 5: ReduceAction461 < ReduceAction461: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction313 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
-  {(bigint) standard___file___Object___printn},
-  {(bigint) standard___file___Object___print},
-  {(bigint) standard___file___Object___getc},
-  {(bigint) standard___file___Object___gets},
-  {(bigint) standard___file___Object___stdin},
-  {(bigint) standard___file___Object___stdout},
-  {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
-  {(bigint) standard___string___Object___native_class_name},
-  {(bigint) standard___string___Object___class_name},
-  {(bigint) standard___string___Object___inspect},
-  {(bigint) standard___string___Object___inspect_head},
-  {(bigint) standard___string___Object___args},
-  {(bigint) standard___hash___Object___hash},
-  {(bigint) standard___math___Object___atan2},
-  {(bigint) standard___math___Object___pi},
-  {(bigint) standard___math___Object___srand_from},
-  {(bigint) standard___math___Object___srand},
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction313 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction313___action},
-  {(bigint) parser___ReduceAction___concat},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction313 < ReduceAction313: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Object_id */
-/* 2: Attribute ReduceAction313::_goto */
-void INIT_ATTRIBUTES__parser___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__parser___ReduceAction313;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
-  stack_frame_head = fra.me.prev;
-}
-val_t NEW_parser___ReduceAction313(void)
-{
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction313;
-  obj[1].object_id = object_id_counter;
-  object_id_counter = object_id_counter + 1;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_parser___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_parser___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___ReduceAction____goto(fra.me.REG[0])!=NIT_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___ReduceAction___init(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  int init_table[3] = {0, 0, 0};
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction313_parser___ReduceAction___init;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction313();
-  INIT_ATTRIBUTES__parser___ReduceAction313(fra.me.REG[0]);
-  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction313(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-const classtable_elt_t VFT_parser___ReduceAction314[52] = {
-  {(bigint) 1131 /* 0: Identity */},
-  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction314" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction314 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction314 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1131 /* 5: ReduceAction314 < ReduceAction314: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -115792,7 +148377,7 @@ const classtable_elt_t VFT_parser___ReduceAction314[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction314 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction461 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -115808,6 +148393,8 @@ const classtable_elt_t VFT_parser___ReduceAction314[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -115821,45 +148408,49 @@ const classtable_elt_t VFT_parser___ReduceAction314[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction314 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction314___action},
+  {(bigint) 0 /* 50: ReduceAction461 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction461___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction314 < ReduceAction314: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction461 < ReduceAction461: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction314::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction314(val_t p0){
+/* 2: Attribute ReduceAction461::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction461[] = "init var of ReduceAction461";
+void INIT_ATTRIBUTES__parser___ReduceAction461(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction314;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction461;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction314(void)
+val_t NEW_parser___ReduceAction461(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction314;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction461;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction314(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction461[] = "check new ReduceAction461";
+void CHECKNEW_parser___ReduceAction461(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction314;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction461;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -115869,34 +148460,37 @@ void CHECKNEW_parser___ReduceAction314(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction314_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction461_parser___ReduceAction___init[] = "new ReduceAction461 parser::ReduceAction::init";
+val_t NEW_ReduceAction461_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction314_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction461_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction314();
-  INIT_ATTRIBUTES__parser___ReduceAction314(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction461();
+  INIT_ATTRIBUTES__parser___ReduceAction461(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction314(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction461(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction317[52] = {
-  {(bigint) 1127 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction462[55] = {
+  {(bigint) 1307 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction317" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction317 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction317 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1127 /* 5: ReduceAction317 < ReduceAction317: superclass typecheck marker */},
+  {(bigint) "ReduceAction462" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction462 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction462 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1307 /* 5: ReduceAction462 < ReduceAction462: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -115909,7 +148503,7 @@ const classtable_elt_t VFT_parser___ReduceAction317[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction317 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction462 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -115925,6 +148519,8 @@ const classtable_elt_t VFT_parser___ReduceAction317[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -115938,45 +148534,49 @@ const classtable_elt_t VFT_parser___ReduceAction317[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction317 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction317___action},
+  {(bigint) 0 /* 50: ReduceAction462 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction462___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction317 < ReduceAction317: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction462 < ReduceAction462: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction317::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction317(val_t p0){
+/* 2: Attribute ReduceAction462::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction462[] = "init var of ReduceAction462";
+void INIT_ATTRIBUTES__parser___ReduceAction462(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction317;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction462;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction317(void)
+val_t NEW_parser___ReduceAction462(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction317;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction462;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction317(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction462[] = "check new ReduceAction462";
+void CHECKNEW_parser___ReduceAction462(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction317;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction462;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -115986,34 +148586,37 @@ void CHECKNEW_parser___ReduceAction317(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction317_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction462_parser___ReduceAction___init[] = "new ReduceAction462 parser::ReduceAction::init";
+val_t NEW_ReduceAction462_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction317_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction462_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction317();
-  INIT_ATTRIBUTES__parser___ReduceAction317(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction462();
+  INIT_ATTRIBUTES__parser___ReduceAction462(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction317(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction462(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction318[52] = {
-  {(bigint) 1123 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction463[55] = {
+  {(bigint) 1303 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction318" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction318 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction318 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1123 /* 5: ReduceAction318 < ReduceAction318: superclass typecheck marker */},
+  {(bigint) "ReduceAction463" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction463 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction463 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1303 /* 5: ReduceAction463 < ReduceAction463: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -116026,7 +148629,7 @@ const classtable_elt_t VFT_parser___ReduceAction318[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction318 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction463 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -116042,6 +148645,8 @@ const classtable_elt_t VFT_parser___ReduceAction318[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -116055,45 +148660,49 @@ const classtable_elt_t VFT_parser___ReduceAction318[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction318 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction318___action},
+  {(bigint) 0 /* 50: ReduceAction463 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction463___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction318 < ReduceAction318: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction463 < ReduceAction463: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction318::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction318(val_t p0){
+/* 2: Attribute ReduceAction463::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction463[] = "init var of ReduceAction463";
+void INIT_ATTRIBUTES__parser___ReduceAction463(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction318;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction463;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction318(void)
+val_t NEW_parser___ReduceAction463(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction318;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction463;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction318(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction463[] = "check new ReduceAction463";
+void CHECKNEW_parser___ReduceAction463(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction318;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction463;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -116103,34 +148712,37 @@ void CHECKNEW_parser___ReduceAction318(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction318_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction463_parser___ReduceAction___init[] = "new ReduceAction463 parser::ReduceAction::init";
+val_t NEW_ReduceAction463_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction318_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction463_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction318();
-  INIT_ATTRIBUTES__parser___ReduceAction318(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction463();
+  INIT_ATTRIBUTES__parser___ReduceAction463(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction318(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction463(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction319[52] = {
-  {(bigint) 1119 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction464[55] = {
+  {(bigint) 1299 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction319" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction319 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction319 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1119 /* 5: ReduceAction319 < ReduceAction319: superclass typecheck marker */},
+  {(bigint) "ReduceAction464" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction464 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction464 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1299 /* 5: ReduceAction464 < ReduceAction464: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -116143,7 +148755,7 @@ const classtable_elt_t VFT_parser___ReduceAction319[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction319 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction464 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -116159,6 +148771,8 @@ const classtable_elt_t VFT_parser___ReduceAction319[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -116172,45 +148786,49 @@ const classtable_elt_t VFT_parser___ReduceAction319[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction319 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction319___action},
+  {(bigint) 0 /* 50: ReduceAction464 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction464___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction319 < ReduceAction319: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction464 < ReduceAction464: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction319::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction319(val_t p0){
+/* 2: Attribute ReduceAction464::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction464[] = "init var of ReduceAction464";
+void INIT_ATTRIBUTES__parser___ReduceAction464(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction319;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction464;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction319(void)
+val_t NEW_parser___ReduceAction464(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction319;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction464;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction319(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction464[] = "check new ReduceAction464";
+void CHECKNEW_parser___ReduceAction464(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction319;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction464;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -116220,34 +148838,37 @@ void CHECKNEW_parser___ReduceAction319(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction319_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction464_parser___ReduceAction___init[] = "new ReduceAction464 parser::ReduceAction::init";
+val_t NEW_ReduceAction464_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction319_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction464_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction319();
-  INIT_ATTRIBUTES__parser___ReduceAction319(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction464();
+  INIT_ATTRIBUTES__parser___ReduceAction464(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction319(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction464(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction320[52] = {
-  {(bigint) 1111 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction465[55] = {
+  {(bigint) 1295 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction320" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction320 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction320 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1111 /* 5: ReduceAction320 < ReduceAction320: superclass typecheck marker */},
+  {(bigint) "ReduceAction465" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction465 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction465 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1295 /* 5: ReduceAction465 < ReduceAction465: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -116260,7 +148881,7 @@ const classtable_elt_t VFT_parser___ReduceAction320[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction320 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction465 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -116276,6 +148897,8 @@ const classtable_elt_t VFT_parser___ReduceAction320[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -116289,45 +148912,49 @@ const classtable_elt_t VFT_parser___ReduceAction320[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction320 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction320___action},
+  {(bigint) 0 /* 50: ReduceAction465 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction465___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction320 < ReduceAction320: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction465 < ReduceAction465: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction320::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction320(val_t p0){
+/* 2: Attribute ReduceAction465::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction465[] = "init var of ReduceAction465";
+void INIT_ATTRIBUTES__parser___ReduceAction465(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction320;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction465;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction320(void)
+val_t NEW_parser___ReduceAction465(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction320;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction465;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction320(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction465[] = "check new ReduceAction465";
+void CHECKNEW_parser___ReduceAction465(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction320;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction465;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -116337,34 +148964,37 @@ void CHECKNEW_parser___ReduceAction320(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction320_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction465_parser___ReduceAction___init[] = "new ReduceAction465 parser::ReduceAction::init";
+val_t NEW_ReduceAction465_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction320_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction465_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction320();
-  INIT_ATTRIBUTES__parser___ReduceAction320(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction465();
+  INIT_ATTRIBUTES__parser___ReduceAction465(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction320(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction465(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction321[52] = {
-  {(bigint) 1107 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction466[55] = {
+  {(bigint) 1291 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction321" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction321 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction321 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1107 /* 5: ReduceAction321 < ReduceAction321: superclass typecheck marker */},
+  {(bigint) "ReduceAction466" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction466 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction466 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1291 /* 5: ReduceAction466 < ReduceAction466: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -116377,7 +149007,7 @@ const classtable_elt_t VFT_parser___ReduceAction321[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction321 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction466 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -116393,6 +149023,8 @@ const classtable_elt_t VFT_parser___ReduceAction321[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -116406,45 +149038,49 @@ const classtable_elt_t VFT_parser___ReduceAction321[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction321 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction321___action},
+  {(bigint) 0 /* 50: ReduceAction466 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction466___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction321 < ReduceAction321: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction466 < ReduceAction466: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction321::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction321(val_t p0){
+/* 2: Attribute ReduceAction466::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction466[] = "init var of ReduceAction466";
+void INIT_ATTRIBUTES__parser___ReduceAction466(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction321;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction466;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction321(void)
+val_t NEW_parser___ReduceAction466(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction321;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction466;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction321(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction466[] = "check new ReduceAction466";
+void CHECKNEW_parser___ReduceAction466(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction321;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction466;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -116454,34 +149090,37 @@ void CHECKNEW_parser___ReduceAction321(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction321_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction466_parser___ReduceAction___init[] = "new ReduceAction466 parser::ReduceAction::init";
+val_t NEW_ReduceAction466_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction321_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction466_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction321();
-  INIT_ATTRIBUTES__parser___ReduceAction321(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction466();
+  INIT_ATTRIBUTES__parser___ReduceAction466(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction321(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction466(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction322[52] = {
-  {(bigint) 1103 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction467[55] = {
+  {(bigint) 1287 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction322" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction322 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction322 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1103 /* 5: ReduceAction322 < ReduceAction322: superclass typecheck marker */},
+  {(bigint) "ReduceAction467" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction467 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction467 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1287 /* 5: ReduceAction467 < ReduceAction467: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -116494,7 +149133,7 @@ const classtable_elt_t VFT_parser___ReduceAction322[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction322 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction467 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -116510,6 +149149,8 @@ const classtable_elt_t VFT_parser___ReduceAction322[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -116523,45 +149164,49 @@ const classtable_elt_t VFT_parser___ReduceAction322[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction322 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction322___action},
+  {(bigint) 0 /* 50: ReduceAction467 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction467___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction322 < ReduceAction322: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction467 < ReduceAction467: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction322::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction322(val_t p0){
+/* 2: Attribute ReduceAction467::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction467[] = "init var of ReduceAction467";
+void INIT_ATTRIBUTES__parser___ReduceAction467(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction322;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction467;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction322(void)
+val_t NEW_parser___ReduceAction467(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction322;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction467;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction322(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction467[] = "check new ReduceAction467";
+void CHECKNEW_parser___ReduceAction467(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction322;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction467;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -116571,34 +149216,37 @@ void CHECKNEW_parser___ReduceAction322(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction322_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction467_parser___ReduceAction___init[] = "new ReduceAction467 parser::ReduceAction::init";
+val_t NEW_ReduceAction467_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction322_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction467_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction322();
-  INIT_ATTRIBUTES__parser___ReduceAction322(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction467();
+  INIT_ATTRIBUTES__parser___ReduceAction467(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction322(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction467(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction323[52] = {
-  {(bigint) 1099 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction468[55] = {
+  {(bigint) 1283 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction323" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction323 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction323 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1099 /* 5: ReduceAction323 < ReduceAction323: superclass typecheck marker */},
+  {(bigint) "ReduceAction468" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction468 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction468 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1283 /* 5: ReduceAction468 < ReduceAction468: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -116611,7 +149259,7 @@ const classtable_elt_t VFT_parser___ReduceAction323[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction323 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction468 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -116627,6 +149275,8 @@ const classtable_elt_t VFT_parser___ReduceAction323[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -116640,45 +149290,49 @@ const classtable_elt_t VFT_parser___ReduceAction323[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction323 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction323___action},
+  {(bigint) 0 /* 50: ReduceAction468 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction468___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction323 < ReduceAction323: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction468 < ReduceAction468: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction323::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction323(val_t p0){
+/* 2: Attribute ReduceAction468::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction468[] = "init var of ReduceAction468";
+void INIT_ATTRIBUTES__parser___ReduceAction468(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction323;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction468;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction323(void)
+val_t NEW_parser___ReduceAction468(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction323;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction468;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction323(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction468[] = "check new ReduceAction468";
+void CHECKNEW_parser___ReduceAction468(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction323;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction468;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -116688,34 +149342,37 @@ void CHECKNEW_parser___ReduceAction323(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction323_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction468_parser___ReduceAction___init[] = "new ReduceAction468 parser::ReduceAction::init";
+val_t NEW_ReduceAction468_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction323_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction468_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction323();
-  INIT_ATTRIBUTES__parser___ReduceAction323(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction468();
+  INIT_ATTRIBUTES__parser___ReduceAction468(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction323(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction468(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction324[52] = {
-  {(bigint) 1095 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction469[55] = {
+  {(bigint) 1279 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction324" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction324 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction324 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1095 /* 5: ReduceAction324 < ReduceAction324: superclass typecheck marker */},
+  {(bigint) "ReduceAction469" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction469 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction469 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1279 /* 5: ReduceAction469 < ReduceAction469: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -116728,7 +149385,7 @@ const classtable_elt_t VFT_parser___ReduceAction324[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction324 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction469 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -116744,6 +149401,8 @@ const classtable_elt_t VFT_parser___ReduceAction324[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -116757,45 +149416,49 @@ const classtable_elt_t VFT_parser___ReduceAction324[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction324 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction324___action},
+  {(bigint) 0 /* 50: ReduceAction469 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction469___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction324 < ReduceAction324: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction469 < ReduceAction469: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction324::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction324(val_t p0){
+/* 2: Attribute ReduceAction469::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction469[] = "init var of ReduceAction469";
+void INIT_ATTRIBUTES__parser___ReduceAction469(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction324;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction469;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction324(void)
+val_t NEW_parser___ReduceAction469(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction324;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction469;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction324(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction469[] = "check new ReduceAction469";
+void CHECKNEW_parser___ReduceAction469(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction324;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction469;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -116805,153 +149468,39 @@ void CHECKNEW_parser___ReduceAction324(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction324_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction469_parser___ReduceAction___init[] = "new ReduceAction469 parser::ReduceAction::init";
+val_t NEW_ReduceAction469_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction324_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction469_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction324();
-  INIT_ATTRIBUTES__parser___ReduceAction324(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction469();
+  INIT_ATTRIBUTES__parser___ReduceAction469(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction324(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction469(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction325[52] = {
-  {(bigint) 1091 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction470[55] = {
+  {(bigint) 1271 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction325" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction325 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction325 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1091 /* 5: ReduceAction325 < ReduceAction325: 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) "ReduceAction470" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction470 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction470 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1271 /* 5: ReduceAction470 < ReduceAction470: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction325 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
-  {(bigint) standard___file___Object___printn},
-  {(bigint) standard___file___Object___print},
-  {(bigint) standard___file___Object___getc},
-  {(bigint) standard___file___Object___gets},
-  {(bigint) standard___file___Object___stdin},
-  {(bigint) standard___file___Object___stdout},
-  {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
-  {(bigint) standard___string___Object___native_class_name},
-  {(bigint) standard___string___Object___class_name},
-  {(bigint) standard___string___Object___inspect},
-  {(bigint) standard___string___Object___inspect_head},
-  {(bigint) standard___string___Object___args},
-  {(bigint) standard___hash___Object___hash},
-  {(bigint) standard___math___Object___atan2},
-  {(bigint) standard___math___Object___pi},
-  {(bigint) standard___math___Object___srand_from},
-  {(bigint) standard___math___Object___srand},
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction325 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction325___action},
-  {(bigint) parser___ReduceAction___concat},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction325 < ReduceAction325: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Object_id */
-/* 2: Attribute ReduceAction325::_goto */
-void INIT_ATTRIBUTES__parser___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__parser___ReduceAction325;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
-  stack_frame_head = fra.me.prev;
-}
-val_t NEW_parser___ReduceAction325(void)
-{
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction325;
-  obj[1].object_id = object_id_counter;
-  object_id_counter = object_id_counter + 1;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_parser___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_parser___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___ReduceAction____goto(fra.me.REG[0])!=NIT_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___ReduceAction___init(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  int init_table[3] = {0, 0, 0};
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction325_parser___ReduceAction___init;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction325();
-  INIT_ATTRIBUTES__parser___ReduceAction325(fra.me.REG[0]);
-  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction325(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-const classtable_elt_t VFT_parser___ReduceAction326[52] = {
-  {(bigint) 1087 /* 0: Identity */},
-  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction326" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction326 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction326 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1087 /* 5: ReduceAction326 < ReduceAction326: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -116962,7 +149511,7 @@ const classtable_elt_t VFT_parser___ReduceAction326[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction326 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction470 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -116978,6 +149527,8 @@ const classtable_elt_t VFT_parser___ReduceAction326[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -116991,45 +149542,49 @@ const classtable_elt_t VFT_parser___ReduceAction326[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction326 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction326___action},
+  {(bigint) 0 /* 50: ReduceAction470 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction470___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction326 < ReduceAction326: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction470 < ReduceAction470: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction326::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction326(val_t p0){
+/* 2: Attribute ReduceAction470::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction470[] = "init var of ReduceAction470";
+void INIT_ATTRIBUTES__parser___ReduceAction470(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction326;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction470;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction326(void)
+val_t NEW_parser___ReduceAction470(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction326;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction470;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction326(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction470[] = "check new ReduceAction470";
+void CHECKNEW_parser___ReduceAction470(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction326;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction470;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -117039,34 +149594,37 @@ void CHECKNEW_parser___ReduceAction326(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction326_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction470_parser___ReduceAction___init[] = "new ReduceAction470 parser::ReduceAction::init";
+val_t NEW_ReduceAction470_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction326_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction470_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction326();
-  INIT_ATTRIBUTES__parser___ReduceAction326(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction470();
+  INIT_ATTRIBUTES__parser___ReduceAction470(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction326(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction470(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction327[52] = {
-  {(bigint) 1083 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction471[55] = {
+  {(bigint) 1267 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction327" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction327 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction327 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1083 /* 5: ReduceAction327 < ReduceAction327: superclass typecheck marker */},
+  {(bigint) "ReduceAction471" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction471 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction471 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1267 /* 5: ReduceAction471 < ReduceAction471: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -117079,7 +149637,7 @@ const classtable_elt_t VFT_parser___ReduceAction327[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction327 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction471 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -117095,6 +149653,8 @@ const classtable_elt_t VFT_parser___ReduceAction327[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -117108,45 +149668,49 @@ const classtable_elt_t VFT_parser___ReduceAction327[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction327 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction327___action},
+  {(bigint) 0 /* 50: ReduceAction471 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction471___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction327 < ReduceAction327: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction471 < ReduceAction471: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction327::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction327(val_t p0){
+/* 2: Attribute ReduceAction471::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction471[] = "init var of ReduceAction471";
+void INIT_ATTRIBUTES__parser___ReduceAction471(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction327;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction471;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction327(void)
+val_t NEW_parser___ReduceAction471(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction327;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction471;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction327(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction471[] = "check new ReduceAction471";
+void CHECKNEW_parser___ReduceAction471(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction327;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction471;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -117156,34 +149720,37 @@ void CHECKNEW_parser___ReduceAction327(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction327_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction471_parser___ReduceAction___init[] = "new ReduceAction471 parser::ReduceAction::init";
+val_t NEW_ReduceAction471_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction327_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction471_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction327();
-  INIT_ATTRIBUTES__parser___ReduceAction327(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction471();
+  INIT_ATTRIBUTES__parser___ReduceAction471(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction327(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction471(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction328[52] = {
-  {(bigint) 1079 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction472[55] = {
+  {(bigint) 1263 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction328" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction328 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction328 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1079 /* 5: ReduceAction328 < ReduceAction328: superclass typecheck marker */},
+  {(bigint) "ReduceAction472" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction472 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction472 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1263 /* 5: ReduceAction472 < ReduceAction472: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -117196,7 +149763,7 @@ const classtable_elt_t VFT_parser___ReduceAction328[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction328 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction472 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -117212,6 +149779,8 @@ const classtable_elt_t VFT_parser___ReduceAction328[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -117225,45 +149794,49 @@ const classtable_elt_t VFT_parser___ReduceAction328[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction328 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction328___action},
+  {(bigint) 0 /* 50: ReduceAction472 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction472___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction328 < ReduceAction328: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction472 < ReduceAction472: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction328::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction328(val_t p0){
+/* 2: Attribute ReduceAction472::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction472[] = "init var of ReduceAction472";
+void INIT_ATTRIBUTES__parser___ReduceAction472(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction328;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction472;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction328(void)
+val_t NEW_parser___ReduceAction472(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction328;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction472;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction328(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction472[] = "check new ReduceAction472";
+void CHECKNEW_parser___ReduceAction472(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction328;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction472;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -117273,34 +149846,37 @@ void CHECKNEW_parser___ReduceAction328(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction328_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction472_parser___ReduceAction___init[] = "new ReduceAction472 parser::ReduceAction::init";
+val_t NEW_ReduceAction472_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction328_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction472_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction328();
-  INIT_ATTRIBUTES__parser___ReduceAction328(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction472();
+  INIT_ATTRIBUTES__parser___ReduceAction472(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction328(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction472(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction329[52] = {
-  {(bigint) 1075 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction473[55] = {
+  {(bigint) 1259 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction329" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction329 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction329 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1075 /* 5: ReduceAction329 < ReduceAction329: superclass typecheck marker */},
+  {(bigint) "ReduceAction473" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction473 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction473 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1259 /* 5: ReduceAction473 < ReduceAction473: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -117313,7 +149889,7 @@ const classtable_elt_t VFT_parser___ReduceAction329[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction329 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction473 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -117329,6 +149905,8 @@ const classtable_elt_t VFT_parser___ReduceAction329[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -117342,45 +149920,49 @@ const classtable_elt_t VFT_parser___ReduceAction329[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction329 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction329___action},
+  {(bigint) 0 /* 50: ReduceAction473 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction473___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction329 < ReduceAction329: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction473 < ReduceAction473: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction329::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction329(val_t p0){
+/* 2: Attribute ReduceAction473::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction473[] = "init var of ReduceAction473";
+void INIT_ATTRIBUTES__parser___ReduceAction473(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction329;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction473;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction329(void)
+val_t NEW_parser___ReduceAction473(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction329;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction473;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction329(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction473[] = "check new ReduceAction473";
+void CHECKNEW_parser___ReduceAction473(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction329;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction473;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -117390,34 +149972,37 @@ void CHECKNEW_parser___ReduceAction329(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction329_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction473_parser___ReduceAction___init[] = "new ReduceAction473 parser::ReduceAction::init";
+val_t NEW_ReduceAction473_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction329_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction473_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction329();
-  INIT_ATTRIBUTES__parser___ReduceAction329(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction473();
+  INIT_ATTRIBUTES__parser___ReduceAction473(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction329(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction473(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction333[52] = {
-  {(bigint) 1067 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction474[55] = {
+  {(bigint) 1255 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction333" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction333 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction333 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1067 /* 5: ReduceAction333 < ReduceAction333: superclass typecheck marker */},
+  {(bigint) "ReduceAction474" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction474 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction474 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1255 /* 5: ReduceAction474 < ReduceAction474: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -117430,7 +150015,7 @@ const classtable_elt_t VFT_parser___ReduceAction333[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction333 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction474 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -117446,6 +150031,8 @@ const classtable_elt_t VFT_parser___ReduceAction333[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -117459,45 +150046,49 @@ const classtable_elt_t VFT_parser___ReduceAction333[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction333 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction333___action},
+  {(bigint) 0 /* 50: ReduceAction474 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction474___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction333 < ReduceAction333: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction474 < ReduceAction474: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction333::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction333(val_t p0){
+/* 2: Attribute ReduceAction474::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction474[] = "init var of ReduceAction474";
+void INIT_ATTRIBUTES__parser___ReduceAction474(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction333;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction474;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction333(void)
+val_t NEW_parser___ReduceAction474(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction333;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction474;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction333(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction474[] = "check new ReduceAction474";
+void CHECKNEW_parser___ReduceAction474(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction333;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction474;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -117507,34 +150098,37 @@ void CHECKNEW_parser___ReduceAction333(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction333_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction474_parser___ReduceAction___init[] = "new ReduceAction474 parser::ReduceAction::init";
+val_t NEW_ReduceAction474_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction333_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction474_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction333();
-  INIT_ATTRIBUTES__parser___ReduceAction333(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction474();
+  INIT_ATTRIBUTES__parser___ReduceAction474(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction333(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction474(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction335[52] = {
-  {(bigint) 1063 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction475[55] = {
+  {(bigint) 1251 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction335" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction335 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction335 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1063 /* 5: ReduceAction335 < ReduceAction335: superclass typecheck marker */},
+  {(bigint) "ReduceAction475" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction475 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction475 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1251 /* 5: ReduceAction475 < ReduceAction475: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -117547,7 +150141,7 @@ const classtable_elt_t VFT_parser___ReduceAction335[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction335 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction475 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -117563,6 +150157,8 @@ const classtable_elt_t VFT_parser___ReduceAction335[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -117576,45 +150172,49 @@ const classtable_elt_t VFT_parser___ReduceAction335[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction335 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction335___action},
+  {(bigint) 0 /* 50: ReduceAction475 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction475___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction335 < ReduceAction335: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction475 < ReduceAction475: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction335::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction335(val_t p0){
+/* 2: Attribute ReduceAction475::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction475[] = "init var of ReduceAction475";
+void INIT_ATTRIBUTES__parser___ReduceAction475(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction335;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction475;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction335(void)
+val_t NEW_parser___ReduceAction475(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction335;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction475;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction335(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction475[] = "check new ReduceAction475";
+void CHECKNEW_parser___ReduceAction475(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction335;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction475;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -117624,34 +150224,37 @@ void CHECKNEW_parser___ReduceAction335(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction335_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction475_parser___ReduceAction___init[] = "new ReduceAction475 parser::ReduceAction::init";
+val_t NEW_ReduceAction475_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction335_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction475_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction335();
-  INIT_ATTRIBUTES__parser___ReduceAction335(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction475();
+  INIT_ATTRIBUTES__parser___ReduceAction475(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction335(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction475(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction337[52] = {
-  {(bigint) 1059 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction476[55] = {
+  {(bigint) 1247 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction337" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction337 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction337 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1059 /* 5: ReduceAction337 < ReduceAction337: superclass typecheck marker */},
+  {(bigint) "ReduceAction476" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction476 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction476 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1247 /* 5: ReduceAction476 < ReduceAction476: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -117664,7 +150267,7 @@ const classtable_elt_t VFT_parser___ReduceAction337[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction337 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction476 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -117680,6 +150283,8 @@ const classtable_elt_t VFT_parser___ReduceAction337[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -117693,45 +150298,49 @@ const classtable_elt_t VFT_parser___ReduceAction337[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction337 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction337___action},
+  {(bigint) 0 /* 50: ReduceAction476 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction476___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction337 < ReduceAction337: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction476 < ReduceAction476: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction337::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction337(val_t p0){
+/* 2: Attribute ReduceAction476::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction476[] = "init var of ReduceAction476";
+void INIT_ATTRIBUTES__parser___ReduceAction476(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction337;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction476;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction337(void)
+val_t NEW_parser___ReduceAction476(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction337;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction476;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction337(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction476[] = "check new ReduceAction476";
+void CHECKNEW_parser___ReduceAction476(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction337;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction476;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -117741,34 +150350,37 @@ void CHECKNEW_parser___ReduceAction337(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction337_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction476_parser___ReduceAction___init[] = "new ReduceAction476 parser::ReduceAction::init";
+val_t NEW_ReduceAction476_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction337_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction476_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction337();
-  INIT_ATTRIBUTES__parser___ReduceAction337(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction476();
+  INIT_ATTRIBUTES__parser___ReduceAction476(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction337(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction476(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction338[52] = {
-  {(bigint) 1055 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction477[55] = {
+  {(bigint) 1243 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction338" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction338 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction338 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1055 /* 5: ReduceAction338 < ReduceAction338: superclass typecheck marker */},
+  {(bigint) "ReduceAction477" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction477 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction477 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1243 /* 5: ReduceAction477 < ReduceAction477: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -117781,7 +150393,7 @@ const classtable_elt_t VFT_parser___ReduceAction338[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction338 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction477 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -117797,6 +150409,8 @@ const classtable_elt_t VFT_parser___ReduceAction338[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -117810,45 +150424,49 @@ const classtable_elt_t VFT_parser___ReduceAction338[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction338 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction338___action},
+  {(bigint) 0 /* 50: ReduceAction477 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction477___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction338 < ReduceAction338: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction477 < ReduceAction477: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction338::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction338(val_t p0){
+/* 2: Attribute ReduceAction477::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction477[] = "init var of ReduceAction477";
+void INIT_ATTRIBUTES__parser___ReduceAction477(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction338;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction477;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction338(void)
+val_t NEW_parser___ReduceAction477(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction338;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction477;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction338(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction477[] = "check new ReduceAction477";
+void CHECKNEW_parser___ReduceAction477(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction338;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction477;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -117858,153 +150476,39 @@ void CHECKNEW_parser___ReduceAction338(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction338_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction477_parser___ReduceAction___init[] = "new ReduceAction477 parser::ReduceAction::init";
+val_t NEW_ReduceAction477_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction338_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction477_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction338();
-  INIT_ATTRIBUTES__parser___ReduceAction338(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction477();
+  INIT_ATTRIBUTES__parser___ReduceAction477(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction338(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction477(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction339[52] = {
-  {(bigint) 1051 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction478[55] = {
+  {(bigint) 1239 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction339" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction339 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction339 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1051 /* 5: ReduceAction339 < ReduceAction339: 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) "ReduceAction478" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction478 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction478 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1239 /* 5: ReduceAction478 < ReduceAction478: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction339 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
-  {(bigint) standard___file___Object___printn},
-  {(bigint) standard___file___Object___print},
-  {(bigint) standard___file___Object___getc},
-  {(bigint) standard___file___Object___gets},
-  {(bigint) standard___file___Object___stdin},
-  {(bigint) standard___file___Object___stdout},
-  {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
-  {(bigint) standard___string___Object___native_class_name},
-  {(bigint) standard___string___Object___class_name},
-  {(bigint) standard___string___Object___inspect},
-  {(bigint) standard___string___Object___inspect_head},
-  {(bigint) standard___string___Object___args},
-  {(bigint) standard___hash___Object___hash},
-  {(bigint) standard___math___Object___atan2},
-  {(bigint) standard___math___Object___pi},
-  {(bigint) standard___math___Object___srand_from},
-  {(bigint) standard___math___Object___srand},
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction339 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction339___action},
-  {(bigint) parser___ReduceAction___concat},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction339 < ReduceAction339: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Object_id */
-/* 2: Attribute ReduceAction339::_goto */
-void INIT_ATTRIBUTES__parser___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__parser___ReduceAction339;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
-  stack_frame_head = fra.me.prev;
-}
-val_t NEW_parser___ReduceAction339(void)
-{
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction339;
-  obj[1].object_id = object_id_counter;
-  object_id_counter = object_id_counter + 1;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_parser___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_parser___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___ReduceAction____goto(fra.me.REG[0])!=NIT_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___ReduceAction___init(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  int init_table[3] = {0, 0, 0};
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction339_parser___ReduceAction___init;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction339();
-  INIT_ATTRIBUTES__parser___ReduceAction339(fra.me.REG[0]);
-  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction339(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-const classtable_elt_t VFT_parser___ReduceAction341[52] = {
-  {(bigint) 1043 /* 0: Identity */},
-  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction341" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction341 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction341 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1043 /* 5: ReduceAction341 < ReduceAction341: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -118015,7 +150519,7 @@ const classtable_elt_t VFT_parser___ReduceAction341[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction341 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction478 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -118031,6 +150535,8 @@ const classtable_elt_t VFT_parser___ReduceAction341[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -118044,45 +150550,49 @@ const classtable_elt_t VFT_parser___ReduceAction341[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction341 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction341___action},
+  {(bigint) 0 /* 50: ReduceAction478 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction478___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction341 < ReduceAction341: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction478 < ReduceAction478: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction341::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction341(val_t p0){
+/* 2: Attribute ReduceAction478::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction478[] = "init var of ReduceAction478";
+void INIT_ATTRIBUTES__parser___ReduceAction478(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction341;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction478;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction341(void)
+val_t NEW_parser___ReduceAction478(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction341;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction478;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction341(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction478[] = "check new ReduceAction478";
+void CHECKNEW_parser___ReduceAction478(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction341;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction478;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -118092,34 +150602,37 @@ void CHECKNEW_parser___ReduceAction341(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction341_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction478_parser___ReduceAction___init[] = "new ReduceAction478 parser::ReduceAction::init";
+val_t NEW_ReduceAction478_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction341_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction478_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction341();
-  INIT_ATTRIBUTES__parser___ReduceAction341(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction478();
+  INIT_ATTRIBUTES__parser___ReduceAction478(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction341(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction478(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction343[52] = {
-  {(bigint) 1039 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction479[55] = {
+  {(bigint) 1235 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction343" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction343 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction343 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1039 /* 5: ReduceAction343 < ReduceAction343: superclass typecheck marker */},
+  {(bigint) "ReduceAction479" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction479 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction479 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1235 /* 5: ReduceAction479 < ReduceAction479: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -118132,7 +150645,7 @@ const classtable_elt_t VFT_parser___ReduceAction343[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction343 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction479 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -118148,6 +150661,8 @@ const classtable_elt_t VFT_parser___ReduceAction343[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -118161,45 +150676,49 @@ const classtable_elt_t VFT_parser___ReduceAction343[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction343 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction343___action},
+  {(bigint) 0 /* 50: ReduceAction479 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction479___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction343 < ReduceAction343: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction479 < ReduceAction479: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction343::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction343(val_t p0){
+/* 2: Attribute ReduceAction479::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction479[] = "init var of ReduceAction479";
+void INIT_ATTRIBUTES__parser___ReduceAction479(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction343;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction479;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction343(void)
+val_t NEW_parser___ReduceAction479(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction343;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction479;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction343(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction479[] = "check new ReduceAction479";
+void CHECKNEW_parser___ReduceAction479(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction343;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction479;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -118209,34 +150728,37 @@ void CHECKNEW_parser___ReduceAction343(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction343_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction479_parser___ReduceAction___init[] = "new ReduceAction479 parser::ReduceAction::init";
+val_t NEW_ReduceAction479_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction343_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction479_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction343();
-  INIT_ATTRIBUTES__parser___ReduceAction343(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction479();
+  INIT_ATTRIBUTES__parser___ReduceAction479(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction343(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction479(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction344[52] = {
-  {(bigint) 1035 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction480[55] = {
+  {(bigint) 1227 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction344" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction344 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction344 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1035 /* 5: ReduceAction344 < ReduceAction344: superclass typecheck marker */},
+  {(bigint) "ReduceAction480" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction480 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction480 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1227 /* 5: ReduceAction480 < ReduceAction480: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -118249,7 +150771,7 @@ const classtable_elt_t VFT_parser___ReduceAction344[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction344 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction480 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -118265,6 +150787,8 @@ const classtable_elt_t VFT_parser___ReduceAction344[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -118278,45 +150802,49 @@ const classtable_elt_t VFT_parser___ReduceAction344[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction344 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction344___action},
+  {(bigint) 0 /* 50: ReduceAction480 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction480___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction344 < ReduceAction344: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction480 < ReduceAction480: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction344::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction344(val_t p0){
+/* 2: Attribute ReduceAction480::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction480[] = "init var of ReduceAction480";
+void INIT_ATTRIBUTES__parser___ReduceAction480(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction344;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction480;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction344(void)
+val_t NEW_parser___ReduceAction480(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction344;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction480;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction344(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction480[] = "check new ReduceAction480";
+void CHECKNEW_parser___ReduceAction480(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction344;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction480;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -118326,34 +150854,37 @@ void CHECKNEW_parser___ReduceAction344(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction344_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction480_parser___ReduceAction___init[] = "new ReduceAction480 parser::ReduceAction::init";
+val_t NEW_ReduceAction480_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction344_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction480_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction344();
-  INIT_ATTRIBUTES__parser___ReduceAction344(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction480();
+  INIT_ATTRIBUTES__parser___ReduceAction480(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction344(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction480(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction345[52] = {
-  {(bigint) 1031 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction481[55] = {
+  {(bigint) 1223 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction345" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction345 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction345 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1031 /* 5: ReduceAction345 < ReduceAction345: superclass typecheck marker */},
+  {(bigint) "ReduceAction481" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction481 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction481 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1223 /* 5: ReduceAction481 < ReduceAction481: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -118366,7 +150897,7 @@ const classtable_elt_t VFT_parser___ReduceAction345[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction345 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction481 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -118382,6 +150913,8 @@ const classtable_elt_t VFT_parser___ReduceAction345[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -118395,45 +150928,49 @@ const classtable_elt_t VFT_parser___ReduceAction345[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction345 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction345___action},
+  {(bigint) 0 /* 50: ReduceAction481 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction481___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction345 < ReduceAction345: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction481 < ReduceAction481: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction345::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction345(val_t p0){
+/* 2: Attribute ReduceAction481::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction481[] = "init var of ReduceAction481";
+void INIT_ATTRIBUTES__parser___ReduceAction481(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction345;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction481;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction345(void)
+val_t NEW_parser___ReduceAction481(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction345;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction481;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction345(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction481[] = "check new ReduceAction481";
+void CHECKNEW_parser___ReduceAction481(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction345;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction481;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -118443,34 +150980,37 @@ void CHECKNEW_parser___ReduceAction345(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction345_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction481_parser___ReduceAction___init[] = "new ReduceAction481 parser::ReduceAction::init";
+val_t NEW_ReduceAction481_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction345_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction481_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction345();
-  INIT_ATTRIBUTES__parser___ReduceAction345(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction481();
+  INIT_ATTRIBUTES__parser___ReduceAction481(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction345(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction481(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction346[52] = {
-  {(bigint) 1027 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction482[55] = {
+  {(bigint) 1219 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction346" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction346 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction346 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1027 /* 5: ReduceAction346 < ReduceAction346: superclass typecheck marker */},
+  {(bigint) "ReduceAction482" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction482 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction482 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1219 /* 5: ReduceAction482 < ReduceAction482: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -118483,7 +151023,7 @@ const classtable_elt_t VFT_parser___ReduceAction346[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction346 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction482 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -118499,6 +151039,8 @@ const classtable_elt_t VFT_parser___ReduceAction346[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -118512,45 +151054,49 @@ const classtable_elt_t VFT_parser___ReduceAction346[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction346 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction346___action},
+  {(bigint) 0 /* 50: ReduceAction482 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction482___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction346 < ReduceAction346: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction482 < ReduceAction482: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction346::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction346(val_t p0){
+/* 2: Attribute ReduceAction482::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction482[] = "init var of ReduceAction482";
+void INIT_ATTRIBUTES__parser___ReduceAction482(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction346;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction482;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction346(void)
+val_t NEW_parser___ReduceAction482(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction346;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction482;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction346(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction482[] = "check new ReduceAction482";
+void CHECKNEW_parser___ReduceAction482(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction346;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction482;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -118560,34 +151106,37 @@ void CHECKNEW_parser___ReduceAction346(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction346_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction482_parser___ReduceAction___init[] = "new ReduceAction482 parser::ReduceAction::init";
+val_t NEW_ReduceAction482_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction346_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction482_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction346();
-  INIT_ATTRIBUTES__parser___ReduceAction346(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction482();
+  INIT_ATTRIBUTES__parser___ReduceAction482(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction346(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction482(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction347[52] = {
-  {(bigint) 1023 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction483[55] = {
+  {(bigint) 1215 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction347" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction347 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction347 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1023 /* 5: ReduceAction347 < ReduceAction347: superclass typecheck marker */},
+  {(bigint) "ReduceAction483" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction483 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction483 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1215 /* 5: ReduceAction483 < ReduceAction483: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -118600,7 +151149,7 @@ const classtable_elt_t VFT_parser___ReduceAction347[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction347 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction483 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -118616,6 +151165,8 @@ const classtable_elt_t VFT_parser___ReduceAction347[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -118629,45 +151180,49 @@ const classtable_elt_t VFT_parser___ReduceAction347[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction347 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction347___action},
+  {(bigint) 0 /* 50: ReduceAction483 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction483___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction347 < ReduceAction347: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction483 < ReduceAction483: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction347::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction347(val_t p0){
+/* 2: Attribute ReduceAction483::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction483[] = "init var of ReduceAction483";
+void INIT_ATTRIBUTES__parser___ReduceAction483(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction347;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction483;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction347(void)
+val_t NEW_parser___ReduceAction483(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction347;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction483;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction347(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction483[] = "check new ReduceAction483";
+void CHECKNEW_parser___ReduceAction483(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction347;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction483;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -118677,34 +151232,37 @@ void CHECKNEW_parser___ReduceAction347(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction347_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction483_parser___ReduceAction___init[] = "new ReduceAction483 parser::ReduceAction::init";
+val_t NEW_ReduceAction483_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction347_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction483_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction347();
-  INIT_ATTRIBUTES__parser___ReduceAction347(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction483();
+  INIT_ATTRIBUTES__parser___ReduceAction483(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction347(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction483(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction348[52] = {
-  {(bigint) 1019 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction484[55] = {
+  {(bigint) 1211 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction348" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction348 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction348 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1019 /* 5: ReduceAction348 < ReduceAction348: superclass typecheck marker */},
+  {(bigint) "ReduceAction484" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction484 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction484 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1211 /* 5: ReduceAction484 < ReduceAction484: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -118717,7 +151275,7 @@ const classtable_elt_t VFT_parser___ReduceAction348[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction348 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction484 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -118733,6 +151291,8 @@ const classtable_elt_t VFT_parser___ReduceAction348[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -118746,45 +151306,49 @@ const classtable_elt_t VFT_parser___ReduceAction348[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction348 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction348___action},
+  {(bigint) 0 /* 50: ReduceAction484 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction484___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction348 < ReduceAction348: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction484 < ReduceAction484: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction348::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction348(val_t p0){
+/* 2: Attribute ReduceAction484::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction484[] = "init var of ReduceAction484";
+void INIT_ATTRIBUTES__parser___ReduceAction484(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction348;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction484;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction348(void)
+val_t NEW_parser___ReduceAction484(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction348;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction484;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction348(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction484[] = "check new ReduceAction484";
+void CHECKNEW_parser___ReduceAction484(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction348;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction484;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -118794,34 +151358,37 @@ void CHECKNEW_parser___ReduceAction348(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction348_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction484_parser___ReduceAction___init[] = "new ReduceAction484 parser::ReduceAction::init";
+val_t NEW_ReduceAction484_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction348_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction484_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction348();
-  INIT_ATTRIBUTES__parser___ReduceAction348(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction484();
+  INIT_ATTRIBUTES__parser___ReduceAction484(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction348(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction484(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction349[52] = {
-  {(bigint) 1015 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction485[55] = {
+  {(bigint) 1207 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction349" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction349 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction349 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1015 /* 5: ReduceAction349 < ReduceAction349: superclass typecheck marker */},
+  {(bigint) "ReduceAction485" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction485 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction485 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1207 /* 5: ReduceAction485 < ReduceAction485: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -118834,7 +151401,7 @@ const classtable_elt_t VFT_parser___ReduceAction349[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction349 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction485 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -118850,6 +151417,8 @@ const classtable_elt_t VFT_parser___ReduceAction349[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -118863,45 +151432,49 @@ const classtable_elt_t VFT_parser___ReduceAction349[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction349 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction349___action},
+  {(bigint) 0 /* 50: ReduceAction485 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction485___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction349 < ReduceAction349: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction485 < ReduceAction485: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction349::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction349(val_t p0){
+/* 2: Attribute ReduceAction485::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction485[] = "init var of ReduceAction485";
+void INIT_ATTRIBUTES__parser___ReduceAction485(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction349;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction485;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction349(void)
+val_t NEW_parser___ReduceAction485(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction349;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction485;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction349(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction485[] = "check new ReduceAction485";
+void CHECKNEW_parser___ReduceAction485(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction349;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction485;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -118911,153 +151484,39 @@ void CHECKNEW_parser___ReduceAction349(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction349_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction485_parser___ReduceAction___init[] = "new ReduceAction485 parser::ReduceAction::init";
+val_t NEW_ReduceAction485_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction349_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction485_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction349();
-  INIT_ATTRIBUTES__parser___ReduceAction349(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction485();
+  INIT_ATTRIBUTES__parser___ReduceAction485(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction349(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction485(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction350[52] = {
-  {(bigint) 1007 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction486[55] = {
+  {(bigint) 1203 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction350" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction350 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction350 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1007 /* 5: ReduceAction350 < ReduceAction350: 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) "ReduceAction486" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction486 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction486 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1203 /* 5: ReduceAction486 < ReduceAction486: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction350 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
-  {(bigint) standard___file___Object___printn},
-  {(bigint) standard___file___Object___print},
-  {(bigint) standard___file___Object___getc},
-  {(bigint) standard___file___Object___gets},
-  {(bigint) standard___file___Object___stdin},
-  {(bigint) standard___file___Object___stdout},
-  {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
-  {(bigint) standard___string___Object___native_class_name},
-  {(bigint) standard___string___Object___class_name},
-  {(bigint) standard___string___Object___inspect},
-  {(bigint) standard___string___Object___inspect_head},
-  {(bigint) standard___string___Object___args},
-  {(bigint) standard___hash___Object___hash},
-  {(bigint) standard___math___Object___atan2},
-  {(bigint) standard___math___Object___pi},
-  {(bigint) standard___math___Object___srand_from},
-  {(bigint) standard___math___Object___srand},
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction350 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction350___action},
-  {(bigint) parser___ReduceAction___concat},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction350 < ReduceAction350: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Object_id */
-/* 2: Attribute ReduceAction350::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction350(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t tmp;
-  fra.me.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___ReduceAction350;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
-  stack_frame_head = fra.me.prev;
-}
-val_t NEW_parser___ReduceAction350(void)
-{
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction350;
-  obj[1].object_id = object_id_counter;
-  object_id_counter = object_id_counter + 1;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_parser___ReduceAction350(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.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___ReduceAction350;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
-  }
-  stack_frame_head = fra.me.prev;
-}
-val_t NEW_ReduceAction350_parser___ReduceAction___init(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  int init_table[3] = {0, 0, 0};
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction350_parser___ReduceAction___init;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction350();
-  INIT_ATTRIBUTES__parser___ReduceAction350(fra.me.REG[0]);
-  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction350(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-const classtable_elt_t VFT_parser___ReduceAction351[52] = {
-  {(bigint) 1003 /* 0: Identity */},
-  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction351" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction351 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction351 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1003 /* 5: ReduceAction351 < ReduceAction351: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -119068,7 +151527,7 @@ const classtable_elt_t VFT_parser___ReduceAction351[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction351 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction486 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -119084,6 +151543,8 @@ const classtable_elt_t VFT_parser___ReduceAction351[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -119097,45 +151558,49 @@ const classtable_elt_t VFT_parser___ReduceAction351[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction351 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction351___action},
+  {(bigint) 0 /* 50: ReduceAction486 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction486___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction351 < ReduceAction351: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction486 < ReduceAction486: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction351::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction351(val_t p0){
+/* 2: Attribute ReduceAction486::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction486[] = "init var of ReduceAction486";
+void INIT_ATTRIBUTES__parser___ReduceAction486(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction351;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction486;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction351(void)
+val_t NEW_parser___ReduceAction486(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction351;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction486;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction351(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction486[] = "check new ReduceAction486";
+void CHECKNEW_parser___ReduceAction486(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction351;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction486;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -119145,34 +151610,37 @@ void CHECKNEW_parser___ReduceAction351(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction351_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction486_parser___ReduceAction___init[] = "new ReduceAction486 parser::ReduceAction::init";
+val_t NEW_ReduceAction486_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction351_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction486_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction351();
-  INIT_ATTRIBUTES__parser___ReduceAction351(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction486();
+  INIT_ATTRIBUTES__parser___ReduceAction486(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction351(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction486(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction352[52] = {
-  {(bigint) 999 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction487[55] = {
+  {(bigint) 1199 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction352" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction352 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction352 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 999 /* 5: ReduceAction352 < ReduceAction352: superclass typecheck marker */},
+  {(bigint) "ReduceAction487" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction487 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction487 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1199 /* 5: ReduceAction487 < ReduceAction487: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -119185,7 +151653,7 @@ const classtable_elt_t VFT_parser___ReduceAction352[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction352 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction487 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -119201,6 +151669,8 @@ const classtable_elt_t VFT_parser___ReduceAction352[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -119214,45 +151684,49 @@ const classtable_elt_t VFT_parser___ReduceAction352[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction352 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction352___action},
+  {(bigint) 0 /* 50: ReduceAction487 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction487___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction352 < ReduceAction352: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction487 < ReduceAction487: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction352::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction352(val_t p0){
+/* 2: Attribute ReduceAction487::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction487[] = "init var of ReduceAction487";
+void INIT_ATTRIBUTES__parser___ReduceAction487(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction352;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction487;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction352(void)
+val_t NEW_parser___ReduceAction487(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction352;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction487;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction352(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction487[] = "check new ReduceAction487";
+void CHECKNEW_parser___ReduceAction487(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction352;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction487;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -119262,34 +151736,37 @@ void CHECKNEW_parser___ReduceAction352(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction352_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction487_parser___ReduceAction___init[] = "new ReduceAction487 parser::ReduceAction::init";
+val_t NEW_ReduceAction487_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction352_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction487_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction352();
-  INIT_ATTRIBUTES__parser___ReduceAction352(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction487();
+  INIT_ATTRIBUTES__parser___ReduceAction487(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction352(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction487(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction353[52] = {
-  {(bigint) 995 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction488[55] = {
+  {(bigint) 1195 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction353" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction353 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction353 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 995 /* 5: ReduceAction353 < ReduceAction353: superclass typecheck marker */},
+  {(bigint) "ReduceAction488" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction488 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction488 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1195 /* 5: ReduceAction488 < ReduceAction488: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -119302,7 +151779,7 @@ const classtable_elt_t VFT_parser___ReduceAction353[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction353 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction488 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -119318,6 +151795,8 @@ const classtable_elt_t VFT_parser___ReduceAction353[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -119331,45 +151810,49 @@ const classtable_elt_t VFT_parser___ReduceAction353[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction353 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction353___action},
+  {(bigint) 0 /* 50: ReduceAction488 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction488___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction353 < ReduceAction353: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction488 < ReduceAction488: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction353::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction353(val_t p0){
+/* 2: Attribute ReduceAction488::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction488[] = "init var of ReduceAction488";
+void INIT_ATTRIBUTES__parser___ReduceAction488(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction353;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction488;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction353(void)
+val_t NEW_parser___ReduceAction488(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction353;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction488;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction353(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction488[] = "check new ReduceAction488";
+void CHECKNEW_parser___ReduceAction488(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction353;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction488;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -119379,34 +151862,37 @@ void CHECKNEW_parser___ReduceAction353(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction353_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction488_parser___ReduceAction___init[] = "new ReduceAction488 parser::ReduceAction::init";
+val_t NEW_ReduceAction488_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction353_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction488_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction353();
-  INIT_ATTRIBUTES__parser___ReduceAction353(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction488();
+  INIT_ATTRIBUTES__parser___ReduceAction488(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction353(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction488(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction355[52] = {
-  {(bigint) 991 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction489[55] = {
+  {(bigint) 1191 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction355" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction355 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction355 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 991 /* 5: ReduceAction355 < ReduceAction355: superclass typecheck marker */},
+  {(bigint) "ReduceAction489" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction489 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction489 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1191 /* 5: ReduceAction489 < ReduceAction489: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -119419,7 +151905,7 @@ const classtable_elt_t VFT_parser___ReduceAction355[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction355 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction489 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -119435,6 +151921,8 @@ const classtable_elt_t VFT_parser___ReduceAction355[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -119448,45 +151936,49 @@ const classtable_elt_t VFT_parser___ReduceAction355[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction355 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction355___action},
+  {(bigint) 0 /* 50: ReduceAction489 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction489___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction355 < ReduceAction355: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction489 < ReduceAction489: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction355::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction355(val_t p0){
+/* 2: Attribute ReduceAction489::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction489[] = "init var of ReduceAction489";
+void INIT_ATTRIBUTES__parser___ReduceAction489(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction355;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction489;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction355(void)
+val_t NEW_parser___ReduceAction489(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction355;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction489;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction355(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction489[] = "check new ReduceAction489";
+void CHECKNEW_parser___ReduceAction489(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction355;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction489;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -119496,34 +151988,37 @@ void CHECKNEW_parser___ReduceAction355(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction355_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction489_parser___ReduceAction___init[] = "new ReduceAction489 parser::ReduceAction::init";
+val_t NEW_ReduceAction489_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction355_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction489_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction355();
-  INIT_ATTRIBUTES__parser___ReduceAction355(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction489();
+  INIT_ATTRIBUTES__parser___ReduceAction489(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction355(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction489(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction356[52] = {
-  {(bigint) 987 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction490[55] = {
+  {(bigint) 1183 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction356" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction356 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction356 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 987 /* 5: ReduceAction356 < ReduceAction356: superclass typecheck marker */},
+  {(bigint) "ReduceAction490" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction490 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction490 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1183 /* 5: ReduceAction490 < ReduceAction490: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -119536,7 +152031,7 @@ const classtable_elt_t VFT_parser___ReduceAction356[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction356 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction490 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -119552,6 +152047,8 @@ const classtable_elt_t VFT_parser___ReduceAction356[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -119565,45 +152062,49 @@ const classtable_elt_t VFT_parser___ReduceAction356[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction356 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction356___action},
+  {(bigint) 0 /* 50: ReduceAction490 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction490___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction356 < ReduceAction356: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction490 < ReduceAction490: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction356::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction356(val_t p0){
+/* 2: Attribute ReduceAction490::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction490[] = "init var of ReduceAction490";
+void INIT_ATTRIBUTES__parser___ReduceAction490(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction356;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction490;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction356(void)
+val_t NEW_parser___ReduceAction490(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction356;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction490;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction356(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction490[] = "check new ReduceAction490";
+void CHECKNEW_parser___ReduceAction490(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction356;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction490;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -119613,34 +152114,37 @@ void CHECKNEW_parser___ReduceAction356(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction356_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction490_parser___ReduceAction___init[] = "new ReduceAction490 parser::ReduceAction::init";
+val_t NEW_ReduceAction490_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction356_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction490_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction356();
-  INIT_ATTRIBUTES__parser___ReduceAction356(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction490();
+  INIT_ATTRIBUTES__parser___ReduceAction490(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction356(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction490(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction358[52] = {
-  {(bigint) 983 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction491[55] = {
+  {(bigint) 1179 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction358" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction358 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction358 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 983 /* 5: ReduceAction358 < ReduceAction358: superclass typecheck marker */},
+  {(bigint) "ReduceAction491" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction491 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction491 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1179 /* 5: ReduceAction491 < ReduceAction491: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -119653,7 +152157,7 @@ const classtable_elt_t VFT_parser___ReduceAction358[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction358 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction491 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -119669,6 +152173,8 @@ const classtable_elt_t VFT_parser___ReduceAction358[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -119682,45 +152188,49 @@ const classtable_elt_t VFT_parser___ReduceAction358[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction358 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction358___action},
+  {(bigint) 0 /* 50: ReduceAction491 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction491___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction358 < ReduceAction358: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction491 < ReduceAction491: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction358::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction358(val_t p0){
+/* 2: Attribute ReduceAction491::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction491[] = "init var of ReduceAction491";
+void INIT_ATTRIBUTES__parser___ReduceAction491(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction358;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction491;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction358(void)
+val_t NEW_parser___ReduceAction491(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction358;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction491;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction358(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction491[] = "check new ReduceAction491";
+void CHECKNEW_parser___ReduceAction491(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction358;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction491;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -119730,34 +152240,37 @@ void CHECKNEW_parser___ReduceAction358(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction358_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction491_parser___ReduceAction___init[] = "new ReduceAction491 parser::ReduceAction::init";
+val_t NEW_ReduceAction491_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction358_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction491_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction358();
-  INIT_ATTRIBUTES__parser___ReduceAction358(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction491();
+  INIT_ATTRIBUTES__parser___ReduceAction491(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction358(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction491(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction359[52] = {
-  {(bigint) 979 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction492[55] = {
+  {(bigint) 1175 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction359" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction359 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction359 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 979 /* 5: ReduceAction359 < ReduceAction359: superclass typecheck marker */},
+  {(bigint) "ReduceAction492" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction492 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction492 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1175 /* 5: ReduceAction492 < ReduceAction492: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -119770,7 +152283,7 @@ const classtable_elt_t VFT_parser___ReduceAction359[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction359 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction492 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -119786,6 +152299,8 @@ const classtable_elt_t VFT_parser___ReduceAction359[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -119799,45 +152314,49 @@ const classtable_elt_t VFT_parser___ReduceAction359[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction359 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction359___action},
+  {(bigint) 0 /* 50: ReduceAction492 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction492___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction359 < ReduceAction359: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction492 < ReduceAction492: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction359::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction359(val_t p0){
+/* 2: Attribute ReduceAction492::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction492[] = "init var of ReduceAction492";
+void INIT_ATTRIBUTES__parser___ReduceAction492(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction359;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction492;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction359(void)
+val_t NEW_parser___ReduceAction492(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction359;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction492;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction359(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction492[] = "check new ReduceAction492";
+void CHECKNEW_parser___ReduceAction492(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction359;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction492;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -119847,34 +152366,37 @@ void CHECKNEW_parser___ReduceAction359(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction359_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction492_parser___ReduceAction___init[] = "new ReduceAction492 parser::ReduceAction::init";
+val_t NEW_ReduceAction492_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction359_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction492_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction359();
-  INIT_ATTRIBUTES__parser___ReduceAction359(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction492();
+  INIT_ATTRIBUTES__parser___ReduceAction492(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction359(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction492(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction360[52] = {
-  {(bigint) 971 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction493[55] = {
+  {(bigint) 1171 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction360" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction360 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction360 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 971 /* 5: ReduceAction360 < ReduceAction360: superclass typecheck marker */},
+  {(bigint) "ReduceAction493" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction493 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction493 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1171 /* 5: ReduceAction493 < ReduceAction493: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -119887,7 +152409,7 @@ const classtable_elt_t VFT_parser___ReduceAction360[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction360 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction493 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -119903,6 +152425,8 @@ const classtable_elt_t VFT_parser___ReduceAction360[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -119916,45 +152440,49 @@ const classtable_elt_t VFT_parser___ReduceAction360[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction360 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction360___action},
+  {(bigint) 0 /* 50: ReduceAction493 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction493___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction360 < ReduceAction360: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction493 < ReduceAction493: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction360::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction360(val_t p0){
+/* 2: Attribute ReduceAction493::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction493[] = "init var of ReduceAction493";
+void INIT_ATTRIBUTES__parser___ReduceAction493(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction360;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction493;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction360(void)
+val_t NEW_parser___ReduceAction493(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction360;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction493;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction360(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction493[] = "check new ReduceAction493";
+void CHECKNEW_parser___ReduceAction493(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction360;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction493;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -119964,153 +152492,39 @@ void CHECKNEW_parser___ReduceAction360(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction360_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction493_parser___ReduceAction___init[] = "new ReduceAction493 parser::ReduceAction::init";
+val_t NEW_ReduceAction493_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction360_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction493_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction360();
-  INIT_ATTRIBUTES__parser___ReduceAction360(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction493();
+  INIT_ATTRIBUTES__parser___ReduceAction493(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction360(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction493(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction362[52] = {
-  {(bigint) 967 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction494[55] = {
+  {(bigint) 1167 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction362" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction362 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction362 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 967 /* 5: ReduceAction362 < ReduceAction362: 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) "ReduceAction494" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction494 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction494 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1167 /* 5: ReduceAction494 < ReduceAction494: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction362 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
-  {(bigint) standard___file___Object___printn},
-  {(bigint) standard___file___Object___print},
-  {(bigint) standard___file___Object___getc},
-  {(bigint) standard___file___Object___gets},
-  {(bigint) standard___file___Object___stdin},
-  {(bigint) standard___file___Object___stdout},
-  {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
-  {(bigint) standard___string___Object___native_class_name},
-  {(bigint) standard___string___Object___class_name},
-  {(bigint) standard___string___Object___inspect},
-  {(bigint) standard___string___Object___inspect_head},
-  {(bigint) standard___string___Object___args},
-  {(bigint) standard___hash___Object___hash},
-  {(bigint) standard___math___Object___atan2},
-  {(bigint) standard___math___Object___pi},
-  {(bigint) standard___math___Object___srand_from},
-  {(bigint) standard___math___Object___srand},
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction362 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction362___action},
-  {(bigint) parser___ReduceAction___concat},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction362 < ReduceAction362: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Object_id */
-/* 2: Attribute ReduceAction362::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction362(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t tmp;
-  fra.me.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___ReduceAction362;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
-  stack_frame_head = fra.me.prev;
-}
-val_t NEW_parser___ReduceAction362(void)
-{
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction362;
-  obj[1].object_id = object_id_counter;
-  object_id_counter = object_id_counter + 1;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_parser___ReduceAction362(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.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___ReduceAction362;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
-  }
-  stack_frame_head = fra.me.prev;
-}
-val_t NEW_ReduceAction362_parser___ReduceAction___init(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  int init_table[3] = {0, 0, 0};
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction362_parser___ReduceAction___init;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction362();
-  INIT_ATTRIBUTES__parser___ReduceAction362(fra.me.REG[0]);
-  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction362(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-const classtable_elt_t VFT_parser___ReduceAction363[52] = {
-  {(bigint) 963 /* 0: Identity */},
-  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction363" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction363 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction363 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 963 /* 5: ReduceAction363 < ReduceAction363: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -120121,7 +152535,7 @@ const classtable_elt_t VFT_parser___ReduceAction363[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction363 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction494 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -120137,6 +152551,8 @@ const classtable_elt_t VFT_parser___ReduceAction363[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -120150,45 +152566,49 @@ const classtable_elt_t VFT_parser___ReduceAction363[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction363 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction363___action},
+  {(bigint) 0 /* 50: ReduceAction494 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction494___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction363 < ReduceAction363: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction494 < ReduceAction494: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction363::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction363(val_t p0){
+/* 2: Attribute ReduceAction494::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction494[] = "init var of ReduceAction494";
+void INIT_ATTRIBUTES__parser___ReduceAction494(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction363;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction494;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction363(void)
+val_t NEW_parser___ReduceAction494(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction363;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction494;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction363(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction494[] = "check new ReduceAction494";
+void CHECKNEW_parser___ReduceAction494(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction363;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction494;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -120198,34 +152618,37 @@ void CHECKNEW_parser___ReduceAction363(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction363_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction494_parser___ReduceAction___init[] = "new ReduceAction494 parser::ReduceAction::init";
+val_t NEW_ReduceAction494_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction363_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction494_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction363();
-  INIT_ATTRIBUTES__parser___ReduceAction363(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction494();
+  INIT_ATTRIBUTES__parser___ReduceAction494(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction363(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction494(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction365[52] = {
-  {(bigint) 959 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction495[55] = {
+  {(bigint) 1163 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction365" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction365 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction365 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 959 /* 5: ReduceAction365 < ReduceAction365: superclass typecheck marker */},
+  {(bigint) "ReduceAction495" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction495 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction495 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1163 /* 5: ReduceAction495 < ReduceAction495: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -120238,7 +152661,7 @@ const classtable_elt_t VFT_parser___ReduceAction365[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction365 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction495 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -120254,6 +152677,8 @@ const classtable_elt_t VFT_parser___ReduceAction365[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -120267,45 +152692,49 @@ const classtable_elt_t VFT_parser___ReduceAction365[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction365 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction365___action},
+  {(bigint) 0 /* 50: ReduceAction495 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction495___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction365 < ReduceAction365: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction495 < ReduceAction495: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction365::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction365(val_t p0){
+/* 2: Attribute ReduceAction495::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction495[] = "init var of ReduceAction495";
+void INIT_ATTRIBUTES__parser___ReduceAction495(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction365;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction495;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction365(void)
+val_t NEW_parser___ReduceAction495(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction365;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction495;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction365(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction495[] = "check new ReduceAction495";
+void CHECKNEW_parser___ReduceAction495(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction365;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction495;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -120315,34 +152744,37 @@ void CHECKNEW_parser___ReduceAction365(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction365_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction495_parser___ReduceAction___init[] = "new ReduceAction495 parser::ReduceAction::init";
+val_t NEW_ReduceAction495_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction365_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction495_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction365();
-  INIT_ATTRIBUTES__parser___ReduceAction365(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction495();
+  INIT_ATTRIBUTES__parser___ReduceAction495(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction365(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction495(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction366[52] = {
-  {(bigint) 955 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction496[55] = {
+  {(bigint) 1159 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction366" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction366 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction366 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 955 /* 5: ReduceAction366 < ReduceAction366: superclass typecheck marker */},
+  {(bigint) "ReduceAction496" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction496 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction496 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1159 /* 5: ReduceAction496 < ReduceAction496: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -120355,7 +152787,7 @@ const classtable_elt_t VFT_parser___ReduceAction366[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction366 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction496 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -120371,6 +152803,8 @@ const classtable_elt_t VFT_parser___ReduceAction366[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -120384,45 +152818,49 @@ const classtable_elt_t VFT_parser___ReduceAction366[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction366 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction366___action},
+  {(bigint) 0 /* 50: ReduceAction496 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction496___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction366 < ReduceAction366: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction496 < ReduceAction496: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction366::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction366(val_t p0){
+/* 2: Attribute ReduceAction496::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction496[] = "init var of ReduceAction496";
+void INIT_ATTRIBUTES__parser___ReduceAction496(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction366;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction496;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction366(void)
+val_t NEW_parser___ReduceAction496(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction366;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction496;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction366(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction496[] = "check new ReduceAction496";
+void CHECKNEW_parser___ReduceAction496(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction366;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction496;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -120432,34 +152870,37 @@ void CHECKNEW_parser___ReduceAction366(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction366_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction496_parser___ReduceAction___init[] = "new ReduceAction496 parser::ReduceAction::init";
+val_t NEW_ReduceAction496_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction366_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction496_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction366();
-  INIT_ATTRIBUTES__parser___ReduceAction366(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction496();
+  INIT_ATTRIBUTES__parser___ReduceAction496(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction366(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction496(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction367[52] = {
-  {(bigint) 951 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction497[55] = {
+  {(bigint) 1155 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction367" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction367 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction367 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 951 /* 5: ReduceAction367 < ReduceAction367: superclass typecheck marker */},
+  {(bigint) "ReduceAction497" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction497 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction497 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1155 /* 5: ReduceAction497 < ReduceAction497: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -120472,7 +152913,7 @@ const classtable_elt_t VFT_parser___ReduceAction367[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction367 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction497 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -120488,6 +152929,8 @@ const classtable_elt_t VFT_parser___ReduceAction367[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -120501,45 +152944,49 @@ const classtable_elt_t VFT_parser___ReduceAction367[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction367 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction367___action},
+  {(bigint) 0 /* 50: ReduceAction497 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction497___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction367 < ReduceAction367: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction497 < ReduceAction497: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction367::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction367(val_t p0){
+/* 2: Attribute ReduceAction497::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction497[] = "init var of ReduceAction497";
+void INIT_ATTRIBUTES__parser___ReduceAction497(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction367;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction497;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction367(void)
+val_t NEW_parser___ReduceAction497(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction367;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction497;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction367(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction497[] = "check new ReduceAction497";
+void CHECKNEW_parser___ReduceAction497(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction367;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction497;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -120549,34 +152996,37 @@ void CHECKNEW_parser___ReduceAction367(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction367_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction497_parser___ReduceAction___init[] = "new ReduceAction497 parser::ReduceAction::init";
+val_t NEW_ReduceAction497_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction367_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction497_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction367();
-  INIT_ATTRIBUTES__parser___ReduceAction367(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction497();
+  INIT_ATTRIBUTES__parser___ReduceAction497(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction367(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction497(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction368[52] = {
-  {(bigint) 947 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction498[55] = {
+  {(bigint) 1151 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction368" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction368 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction368 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 947 /* 5: ReduceAction368 < ReduceAction368: superclass typecheck marker */},
+  {(bigint) "ReduceAction498" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction498 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction498 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1151 /* 5: ReduceAction498 < ReduceAction498: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -120589,7 +153039,7 @@ const classtable_elt_t VFT_parser___ReduceAction368[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction368 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction498 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -120605,6 +153055,8 @@ const classtable_elt_t VFT_parser___ReduceAction368[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -120618,45 +153070,49 @@ const classtable_elt_t VFT_parser___ReduceAction368[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction368 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction368___action},
+  {(bigint) 0 /* 50: ReduceAction498 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction498___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction368 < ReduceAction368: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction498 < ReduceAction498: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction368::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction368(val_t p0){
+/* 2: Attribute ReduceAction498::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction498[] = "init var of ReduceAction498";
+void INIT_ATTRIBUTES__parser___ReduceAction498(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction368;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction498;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction368(void)
+val_t NEW_parser___ReduceAction498(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction368;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction498;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction368(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction498[] = "check new ReduceAction498";
+void CHECKNEW_parser___ReduceAction498(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction368;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction498;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -120666,34 +153122,37 @@ void CHECKNEW_parser___ReduceAction368(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction368_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction498_parser___ReduceAction___init[] = "new ReduceAction498 parser::ReduceAction::init";
+val_t NEW_ReduceAction498_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction368_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction498_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction368();
-  INIT_ATTRIBUTES__parser___ReduceAction368(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction498();
+  INIT_ATTRIBUTES__parser___ReduceAction498(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction368(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction498(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction369[52] = {
-  {(bigint) 943 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction499[55] = {
+  {(bigint) 1147 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction369" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction369 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction369 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 943 /* 5: ReduceAction369 < ReduceAction369: superclass typecheck marker */},
+  {(bigint) "ReduceAction499" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction499 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction499 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1147 /* 5: ReduceAction499 < ReduceAction499: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -120706,7 +153165,7 @@ const classtable_elt_t VFT_parser___ReduceAction369[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction369 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction499 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -120722,6 +153181,8 @@ const classtable_elt_t VFT_parser___ReduceAction369[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -120735,45 +153196,49 @@ const classtable_elt_t VFT_parser___ReduceAction369[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction369 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction369___action},
+  {(bigint) 0 /* 50: ReduceAction499 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction499___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction369 < ReduceAction369: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction499 < ReduceAction499: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction369::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction369(val_t p0){
+/* 2: Attribute ReduceAction499::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction499[] = "init var of ReduceAction499";
+void INIT_ATTRIBUTES__parser___ReduceAction499(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction369;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction499;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction369(void)
+val_t NEW_parser___ReduceAction499(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction369;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction499;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction369(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction499[] = "check new ReduceAction499";
+void CHECKNEW_parser___ReduceAction499(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction369;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction499;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -120783,34 +153248,37 @@ void CHECKNEW_parser___ReduceAction369(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction369_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction499_parser___ReduceAction___init[] = "new ReduceAction499 parser::ReduceAction::init";
+val_t NEW_ReduceAction499_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction369_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction499_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction369();
-  INIT_ATTRIBUTES__parser___ReduceAction369(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction499();
+  INIT_ATTRIBUTES__parser___ReduceAction499(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction369(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction499(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction376[52] = {
-  {(bigint) 935 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction500[55] = {
+  {(bigint) 1135 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction376" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction376 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction376 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 935 /* 5: ReduceAction376 < ReduceAction376: superclass typecheck marker */},
+  {(bigint) "ReduceAction500" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction500 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction500 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1135 /* 5: ReduceAction500 < ReduceAction500: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -120823,7 +153291,7 @@ const classtable_elt_t VFT_parser___ReduceAction376[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction376 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction500 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -120839,6 +153307,8 @@ const classtable_elt_t VFT_parser___ReduceAction376[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -120852,45 +153322,49 @@ const classtable_elt_t VFT_parser___ReduceAction376[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction376 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction376___action},
+  {(bigint) 0 /* 50: ReduceAction500 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction500___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction376 < ReduceAction376: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction500 < ReduceAction500: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction376::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction376(val_t p0){
+/* 2: Attribute ReduceAction500::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction500[] = "init var of ReduceAction500";
+void INIT_ATTRIBUTES__parser___ReduceAction500(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction376;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction500;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction376(void)
+val_t NEW_parser___ReduceAction500(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction376;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction500;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction376(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction500[] = "check new ReduceAction500";
+void CHECKNEW_parser___ReduceAction500(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction376;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction500;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -120900,34 +153374,37 @@ void CHECKNEW_parser___ReduceAction376(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction376_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction500_parser___ReduceAction___init[] = "new ReduceAction500 parser::ReduceAction::init";
+val_t NEW_ReduceAction500_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction376_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction500_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction376();
-  INIT_ATTRIBUTES__parser___ReduceAction376(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction500();
+  INIT_ATTRIBUTES__parser___ReduceAction500(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction376(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction500(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction377[52] = {
-  {(bigint) 931 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction501[55] = {
+  {(bigint) 1131 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction377" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction377 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction377 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 931 /* 5: ReduceAction377 < ReduceAction377: superclass typecheck marker */},
+  {(bigint) "ReduceAction501" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction501 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction501 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1131 /* 5: ReduceAction501 < ReduceAction501: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -120940,7 +153417,7 @@ const classtable_elt_t VFT_parser___ReduceAction377[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction377 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction501 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -120956,6 +153433,8 @@ const classtable_elt_t VFT_parser___ReduceAction377[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -120969,45 +153448,49 @@ const classtable_elt_t VFT_parser___ReduceAction377[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction377 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction377___action},
+  {(bigint) 0 /* 50: ReduceAction501 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction501___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction377 < ReduceAction377: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction501 < ReduceAction501: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction377::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction377(val_t p0){
+/* 2: Attribute ReduceAction501::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction501[] = "init var of ReduceAction501";
+void INIT_ATTRIBUTES__parser___ReduceAction501(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction377;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction501;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction377(void)
+val_t NEW_parser___ReduceAction501(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction377;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction501;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction377(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction501[] = "check new ReduceAction501";
+void CHECKNEW_parser___ReduceAction501(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction377;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction501;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -121017,153 +153500,39 @@ void CHECKNEW_parser___ReduceAction377(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction377_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction501_parser___ReduceAction___init[] = "new ReduceAction501 parser::ReduceAction::init";
+val_t NEW_ReduceAction501_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction377_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction501_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction377();
-  INIT_ATTRIBUTES__parser___ReduceAction377(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction501();
+  INIT_ATTRIBUTES__parser___ReduceAction501(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction377(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction501(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction378[52] = {
-  {(bigint) 927 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction502[55] = {
+  {(bigint) 1127 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction378" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction378 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction378 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 927 /* 5: ReduceAction378 < ReduceAction378: 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) "ReduceAction502" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction502 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction502 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1127 /* 5: ReduceAction502 < ReduceAction502: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction378 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
-  {(bigint) standard___file___Object___printn},
-  {(bigint) standard___file___Object___print},
-  {(bigint) standard___file___Object___getc},
-  {(bigint) standard___file___Object___gets},
-  {(bigint) standard___file___Object___stdin},
-  {(bigint) standard___file___Object___stdout},
-  {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
-  {(bigint) standard___string___Object___native_class_name},
-  {(bigint) standard___string___Object___class_name},
-  {(bigint) standard___string___Object___inspect},
-  {(bigint) standard___string___Object___inspect_head},
-  {(bigint) standard___string___Object___args},
-  {(bigint) standard___hash___Object___hash},
-  {(bigint) standard___math___Object___atan2},
-  {(bigint) standard___math___Object___pi},
-  {(bigint) standard___math___Object___srand_from},
-  {(bigint) standard___math___Object___srand},
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction378 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction378___action},
-  {(bigint) parser___ReduceAction___concat},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction378 < ReduceAction378: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Object_id */
-/* 2: Attribute ReduceAction378::_goto */
-void INIT_ATTRIBUTES__parser___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__parser___ReduceAction378;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
-  stack_frame_head = fra.me.prev;
-}
-val_t NEW_parser___ReduceAction378(void)
-{
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction378;
-  obj[1].object_id = object_id_counter;
-  object_id_counter = object_id_counter + 1;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_parser___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_parser___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___ReduceAction____goto(fra.me.REG[0])!=NIT_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___ReduceAction___init(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  int init_table[3] = {0, 0, 0};
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction378_parser___ReduceAction___init;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction378();
-  INIT_ATTRIBUTES__parser___ReduceAction378(fra.me.REG[0]);
-  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction378(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-const classtable_elt_t VFT_parser___ReduceAction379[52] = {
-  {(bigint) 923 /* 0: Identity */},
-  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction379" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction379 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction379 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 923 /* 5: ReduceAction379 < ReduceAction379: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -121174,7 +153543,7 @@ const classtable_elt_t VFT_parser___ReduceAction379[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction379 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction502 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -121190,6 +153559,8 @@ const classtable_elt_t VFT_parser___ReduceAction379[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -121203,45 +153574,49 @@ const classtable_elt_t VFT_parser___ReduceAction379[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction379 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction379___action},
+  {(bigint) 0 /* 50: ReduceAction502 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction502___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction379 < ReduceAction379: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction502 < ReduceAction502: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction379::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction379(val_t p0){
+/* 2: Attribute ReduceAction502::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction502[] = "init var of ReduceAction502";
+void INIT_ATTRIBUTES__parser___ReduceAction502(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction379;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction502;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction379(void)
+val_t NEW_parser___ReduceAction502(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction379;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction502;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction379(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction502[] = "check new ReduceAction502";
+void CHECKNEW_parser___ReduceAction502(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction379;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction502;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -121251,34 +153626,37 @@ void CHECKNEW_parser___ReduceAction379(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction379_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction502_parser___ReduceAction___init[] = "new ReduceAction502 parser::ReduceAction::init";
+val_t NEW_ReduceAction502_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction379_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction502_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction379();
-  INIT_ATTRIBUTES__parser___ReduceAction379(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction502();
+  INIT_ATTRIBUTES__parser___ReduceAction502(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction379(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction502(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction380[52] = {
-  {(bigint) 919 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction505[55] = {
+  {(bigint) 1123 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction380" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction380 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction380 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 919 /* 5: ReduceAction380 < ReduceAction380: superclass typecheck marker */},
+  {(bigint) "ReduceAction505" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction505 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction505 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1123 /* 5: ReduceAction505 < ReduceAction505: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -121291,7 +153669,7 @@ const classtable_elt_t VFT_parser___ReduceAction380[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction380 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction505 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -121307,6 +153685,8 @@ const classtable_elt_t VFT_parser___ReduceAction380[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -121320,45 +153700,49 @@ const classtable_elt_t VFT_parser___ReduceAction380[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction380 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction380___action},
+  {(bigint) 0 /* 50: ReduceAction505 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction505___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction380 < ReduceAction380: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction505 < ReduceAction505: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction380::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction380(val_t p0){
+/* 2: Attribute ReduceAction505::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction505[] = "init var of ReduceAction505";
+void INIT_ATTRIBUTES__parser___ReduceAction505(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction380;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction505;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction380(void)
+val_t NEW_parser___ReduceAction505(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction380;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction505;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction380(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction505[] = "check new ReduceAction505";
+void CHECKNEW_parser___ReduceAction505(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction380;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction505;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -121368,34 +153752,37 @@ void CHECKNEW_parser___ReduceAction380(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction380_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction505_parser___ReduceAction___init[] = "new ReduceAction505 parser::ReduceAction::init";
+val_t NEW_ReduceAction505_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction380_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction505_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction380();
-  INIT_ATTRIBUTES__parser___ReduceAction380(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction505();
+  INIT_ATTRIBUTES__parser___ReduceAction505(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction380(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction505(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction381[52] = {
-  {(bigint) 915 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction506[55] = {
+  {(bigint) 1119 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction381" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction381 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction381 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 915 /* 5: ReduceAction381 < ReduceAction381: superclass typecheck marker */},
+  {(bigint) "ReduceAction506" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction506 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction506 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1119 /* 5: ReduceAction506 < ReduceAction506: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -121408,7 +153795,7 @@ const classtable_elt_t VFT_parser___ReduceAction381[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction381 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction506 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -121424,6 +153811,8 @@ const classtable_elt_t VFT_parser___ReduceAction381[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -121437,45 +153826,49 @@ const classtable_elt_t VFT_parser___ReduceAction381[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction381 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction381___action},
+  {(bigint) 0 /* 50: ReduceAction506 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction506___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction381 < ReduceAction381: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction506 < ReduceAction506: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction381::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction381(val_t p0){
+/* 2: Attribute ReduceAction506::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction506[] = "init var of ReduceAction506";
+void INIT_ATTRIBUTES__parser___ReduceAction506(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction381;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction506;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction381(void)
+val_t NEW_parser___ReduceAction506(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction381;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction506;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction381(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction506[] = "check new ReduceAction506";
+void CHECKNEW_parser___ReduceAction506(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction381;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction506;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -121485,34 +153878,37 @@ void CHECKNEW_parser___ReduceAction381(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction381_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction506_parser___ReduceAction___init[] = "new ReduceAction506 parser::ReduceAction::init";
+val_t NEW_ReduceAction506_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction381_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction506_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction381();
-  INIT_ATTRIBUTES__parser___ReduceAction381(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction506();
+  INIT_ATTRIBUTES__parser___ReduceAction506(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction381(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction506(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction382[52] = {
-  {(bigint) 911 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction507[55] = {
+  {(bigint) 1115 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction382" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction382 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction382 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 911 /* 5: ReduceAction382 < ReduceAction382: superclass typecheck marker */},
+  {(bigint) "ReduceAction507" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction507 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction507 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1115 /* 5: ReduceAction507 < ReduceAction507: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -121525,7 +153921,7 @@ const classtable_elt_t VFT_parser___ReduceAction382[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction382 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction507 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -121541,6 +153937,8 @@ const classtable_elt_t VFT_parser___ReduceAction382[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -121554,45 +153952,49 @@ const classtable_elt_t VFT_parser___ReduceAction382[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction382 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction382___action},
+  {(bigint) 0 /* 50: ReduceAction507 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction507___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction382 < ReduceAction382: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction507 < ReduceAction507: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction382::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction382(val_t p0){
+/* 2: Attribute ReduceAction507::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction507[] = "init var of ReduceAction507";
+void INIT_ATTRIBUTES__parser___ReduceAction507(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction382;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction507;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction382(void)
+val_t NEW_parser___ReduceAction507(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction382;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction507;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction382(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction507[] = "check new ReduceAction507";
+void CHECKNEW_parser___ReduceAction507(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction382;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction507;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -121602,34 +154004,37 @@ void CHECKNEW_parser___ReduceAction382(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction382_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction507_parser___ReduceAction___init[] = "new ReduceAction507 parser::ReduceAction::init";
+val_t NEW_ReduceAction507_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction382_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction507_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction382();
-  INIT_ATTRIBUTES__parser___ReduceAction382(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction507();
+  INIT_ATTRIBUTES__parser___ReduceAction507(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction382(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction507(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction383[52] = {
-  {(bigint) 907 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction508[55] = {
+  {(bigint) 1111 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction383" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction383 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction383 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 907 /* 5: ReduceAction383 < ReduceAction383: superclass typecheck marker */},
+  {(bigint) "ReduceAction508" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction508 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction508 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1111 /* 5: ReduceAction508 < ReduceAction508: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -121642,7 +154047,7 @@ const classtable_elt_t VFT_parser___ReduceAction383[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction383 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction508 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -121658,6 +154063,8 @@ const classtable_elt_t VFT_parser___ReduceAction383[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -121671,45 +154078,49 @@ const classtable_elt_t VFT_parser___ReduceAction383[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction383 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction383___action},
+  {(bigint) 0 /* 50: ReduceAction508 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction508___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction383 < ReduceAction383: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction508 < ReduceAction508: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction383::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction383(val_t p0){
+/* 2: Attribute ReduceAction508::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction508[] = "init var of ReduceAction508";
+void INIT_ATTRIBUTES__parser___ReduceAction508(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction383;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction508;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction383(void)
+val_t NEW_parser___ReduceAction508(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction383;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction508;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction383(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction508[] = "check new ReduceAction508";
+void CHECKNEW_parser___ReduceAction508(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction383;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction508;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -121719,34 +154130,37 @@ void CHECKNEW_parser___ReduceAction383(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction383_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction508_parser___ReduceAction___init[] = "new ReduceAction508 parser::ReduceAction::init";
+val_t NEW_ReduceAction508_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction383_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction508_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction383();
-  INIT_ATTRIBUTES__parser___ReduceAction383(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction508();
+  INIT_ATTRIBUTES__parser___ReduceAction508(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction383(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction508(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction384[52] = {
-  {(bigint) 903 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction509[55] = {
+  {(bigint) 1107 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction384" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction384 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction384 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 903 /* 5: ReduceAction384 < ReduceAction384: superclass typecheck marker */},
+  {(bigint) "ReduceAction509" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction509 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction509 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1107 /* 5: ReduceAction509 < ReduceAction509: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -121759,7 +154173,7 @@ const classtable_elt_t VFT_parser___ReduceAction384[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction384 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction509 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -121775,6 +154189,8 @@ const classtable_elt_t VFT_parser___ReduceAction384[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -121788,45 +154204,49 @@ const classtable_elt_t VFT_parser___ReduceAction384[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction384 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction384___action},
+  {(bigint) 0 /* 50: ReduceAction509 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction509___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction384 < ReduceAction384: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction509 < ReduceAction509: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction384::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction384(val_t p0){
+/* 2: Attribute ReduceAction509::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction509[] = "init var of ReduceAction509";
+void INIT_ATTRIBUTES__parser___ReduceAction509(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction384;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction509;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction384(void)
+val_t NEW_parser___ReduceAction509(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction384;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction509;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction384(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction509[] = "check new ReduceAction509";
+void CHECKNEW_parser___ReduceAction509(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction384;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction509;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -121836,34 +154256,37 @@ void CHECKNEW_parser___ReduceAction384(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction384_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction509_parser___ReduceAction___init[] = "new ReduceAction509 parser::ReduceAction::init";
+val_t NEW_ReduceAction509_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction384_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction509_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction384();
-  INIT_ATTRIBUTES__parser___ReduceAction384(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction509();
+  INIT_ATTRIBUTES__parser___ReduceAction509(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction384(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction509(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction385[52] = {
-  {(bigint) 899 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction510[55] = {
+  {(bigint) 1099 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction385" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction385 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction385 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 899 /* 5: ReduceAction385 < ReduceAction385: superclass typecheck marker */},
+  {(bigint) "ReduceAction510" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction510 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction510 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1099 /* 5: ReduceAction510 < ReduceAction510: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -121876,7 +154299,7 @@ const classtable_elt_t VFT_parser___ReduceAction385[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction385 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction510 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -121892,6 +154315,8 @@ const classtable_elt_t VFT_parser___ReduceAction385[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -121905,45 +154330,49 @@ const classtable_elt_t VFT_parser___ReduceAction385[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction385 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction385___action},
+  {(bigint) 0 /* 50: ReduceAction510 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction510___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction385 < ReduceAction385: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction510 < ReduceAction510: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction385::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction385(val_t p0){
+/* 2: Attribute ReduceAction510::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction510[] = "init var of ReduceAction510";
+void INIT_ATTRIBUTES__parser___ReduceAction510(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction385;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction510;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction385(void)
+val_t NEW_parser___ReduceAction510(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction385;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction510;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction385(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction510[] = "check new ReduceAction510";
+void CHECKNEW_parser___ReduceAction510(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction385;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction510;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -121953,34 +154382,37 @@ void CHECKNEW_parser___ReduceAction385(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction385_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction510_parser___ReduceAction___init[] = "new ReduceAction510 parser::ReduceAction::init";
+val_t NEW_ReduceAction510_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction385_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction510_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction385();
-  INIT_ATTRIBUTES__parser___ReduceAction385(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction510();
+  INIT_ATTRIBUTES__parser___ReduceAction510(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction385(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction510(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction386[52] = {
-  {(bigint) 895 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction511[55] = {
+  {(bigint) 1095 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction386" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction386 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction386 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 895 /* 5: ReduceAction386 < ReduceAction386: superclass typecheck marker */},
+  {(bigint) "ReduceAction511" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction511 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction511 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1095 /* 5: ReduceAction511 < ReduceAction511: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -121993,7 +154425,7 @@ const classtable_elt_t VFT_parser___ReduceAction386[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction386 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction511 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -122009,6 +154441,8 @@ const classtable_elt_t VFT_parser___ReduceAction386[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -122022,45 +154456,49 @@ const classtable_elt_t VFT_parser___ReduceAction386[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction386 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction386___action},
+  {(bigint) 0 /* 50: ReduceAction511 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction511___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction386 < ReduceAction386: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction511 < ReduceAction511: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction386::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction386(val_t p0){
+/* 2: Attribute ReduceAction511::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction511[] = "init var of ReduceAction511";
+void INIT_ATTRIBUTES__parser___ReduceAction511(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction386;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction511;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction386(void)
+val_t NEW_parser___ReduceAction511(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction386;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction511;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction386(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction511[] = "check new ReduceAction511";
+void CHECKNEW_parser___ReduceAction511(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction386;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction511;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -122070,153 +154508,39 @@ void CHECKNEW_parser___ReduceAction386(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction386_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction511_parser___ReduceAction___init[] = "new ReduceAction511 parser::ReduceAction::init";
+val_t NEW_ReduceAction511_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction386_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction511_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction386();
-  INIT_ATTRIBUTES__parser___ReduceAction386(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction511();
+  INIT_ATTRIBUTES__parser___ReduceAction511(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction386(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction511(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction387[52] = {
-  {(bigint) 891 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction512[55] = {
+  {(bigint) 1091 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction387" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction387 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction387 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 891 /* 5: ReduceAction387 < ReduceAction387: 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) "ReduceAction512" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction512 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction512 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1091 /* 5: ReduceAction512 < ReduceAction512: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction387 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
-  {(bigint) standard___file___Object___printn},
-  {(bigint) standard___file___Object___print},
-  {(bigint) standard___file___Object___getc},
-  {(bigint) standard___file___Object___gets},
-  {(bigint) standard___file___Object___stdin},
-  {(bigint) standard___file___Object___stdout},
-  {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
-  {(bigint) standard___string___Object___native_class_name},
-  {(bigint) standard___string___Object___class_name},
-  {(bigint) standard___string___Object___inspect},
-  {(bigint) standard___string___Object___inspect_head},
-  {(bigint) standard___string___Object___args},
-  {(bigint) standard___hash___Object___hash},
-  {(bigint) standard___math___Object___atan2},
-  {(bigint) standard___math___Object___pi},
-  {(bigint) standard___math___Object___srand_from},
-  {(bigint) standard___math___Object___srand},
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction387 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction387___action},
-  {(bigint) parser___ReduceAction___concat},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction387 < ReduceAction387: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Object_id */
-/* 2: Attribute ReduceAction387::_goto */
-void INIT_ATTRIBUTES__parser___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__parser___ReduceAction387;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
-  stack_frame_head = fra.me.prev;
-}
-val_t NEW_parser___ReduceAction387(void)
-{
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction387;
-  obj[1].object_id = object_id_counter;
-  object_id_counter = object_id_counter + 1;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_parser___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_parser___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___ReduceAction____goto(fra.me.REG[0])!=NIT_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___ReduceAction___init(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  int init_table[3] = {0, 0, 0};
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction387_parser___ReduceAction___init;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction387();
-  INIT_ATTRIBUTES__parser___ReduceAction387(fra.me.REG[0]);
-  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction387(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-const classtable_elt_t VFT_parser___ReduceAction388[52] = {
-  {(bigint) 887 /* 0: Identity */},
-  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction388" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction388 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction388 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 887 /* 5: ReduceAction388 < ReduceAction388: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -122227,7 +154551,7 @@ const classtable_elt_t VFT_parser___ReduceAction388[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction388 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction512 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -122243,6 +154567,8 @@ const classtable_elt_t VFT_parser___ReduceAction388[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -122256,45 +154582,49 @@ const classtable_elt_t VFT_parser___ReduceAction388[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction388 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction388___action},
+  {(bigint) 0 /* 50: ReduceAction512 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction512___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction388 < ReduceAction388: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction512 < ReduceAction512: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction388::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction388(val_t p0){
+/* 2: Attribute ReduceAction512::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction512[] = "init var of ReduceAction512";
+void INIT_ATTRIBUTES__parser___ReduceAction512(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction388;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction512;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction388(void)
+val_t NEW_parser___ReduceAction512(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction388;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction512;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction388(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction512[] = "check new ReduceAction512";
+void CHECKNEW_parser___ReduceAction512(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction388;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction512;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -122304,34 +154634,37 @@ void CHECKNEW_parser___ReduceAction388(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction388_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction512_parser___ReduceAction___init[] = "new ReduceAction512 parser::ReduceAction::init";
+val_t NEW_ReduceAction512_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction388_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction512_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction388();
-  INIT_ATTRIBUTES__parser___ReduceAction388(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction512();
+  INIT_ATTRIBUTES__parser___ReduceAction512(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction388(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction512(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction391[52] = {
-  {(bigint) 879 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction513[55] = {
+  {(bigint) 1087 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction391" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction391 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction391 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 879 /* 5: ReduceAction391 < ReduceAction391: superclass typecheck marker */},
+  {(bigint) "ReduceAction513" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction513 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction513 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1087 /* 5: ReduceAction513 < ReduceAction513: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -122344,7 +154677,7 @@ const classtable_elt_t VFT_parser___ReduceAction391[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction391 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction513 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -122360,6 +154693,8 @@ const classtable_elt_t VFT_parser___ReduceAction391[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -122373,45 +154708,49 @@ const classtable_elt_t VFT_parser___ReduceAction391[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction391 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction391___action},
+  {(bigint) 0 /* 50: ReduceAction513 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction513___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction391 < ReduceAction391: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction513 < ReduceAction513: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction391::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction391(val_t p0){
+/* 2: Attribute ReduceAction513::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction513[] = "init var of ReduceAction513";
+void INIT_ATTRIBUTES__parser___ReduceAction513(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction391;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction513;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction391(void)
+val_t NEW_parser___ReduceAction513(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction391;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction513;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction391(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction513[] = "check new ReduceAction513";
+void CHECKNEW_parser___ReduceAction513(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction391;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction513;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -122421,34 +154760,37 @@ void CHECKNEW_parser___ReduceAction391(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction391_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction513_parser___ReduceAction___init[] = "new ReduceAction513 parser::ReduceAction::init";
+val_t NEW_ReduceAction513_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction391_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction513_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction391();
-  INIT_ATTRIBUTES__parser___ReduceAction391(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction513();
+  INIT_ATTRIBUTES__parser___ReduceAction513(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction391(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction513(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction392[52] = {
-  {(bigint) 875 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction514[55] = {
+  {(bigint) 1083 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction392" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction392 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction392 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 875 /* 5: ReduceAction392 < ReduceAction392: superclass typecheck marker */},
+  {(bigint) "ReduceAction514" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction514 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction514 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1083 /* 5: ReduceAction514 < ReduceAction514: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -122461,7 +154803,7 @@ const classtable_elt_t VFT_parser___ReduceAction392[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction392 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction514 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -122477,6 +154819,8 @@ const classtable_elt_t VFT_parser___ReduceAction392[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -122490,45 +154834,49 @@ const classtable_elt_t VFT_parser___ReduceAction392[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction392 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction392___action},
+  {(bigint) 0 /* 50: ReduceAction514 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction514___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction392 < ReduceAction392: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction514 < ReduceAction514: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction392::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction392(val_t p0){
+/* 2: Attribute ReduceAction514::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction514[] = "init var of ReduceAction514";
+void INIT_ATTRIBUTES__parser___ReduceAction514(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction392;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction514;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction392(void)
+val_t NEW_parser___ReduceAction514(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction392;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction514;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction392(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction514[] = "check new ReduceAction514";
+void CHECKNEW_parser___ReduceAction514(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction392;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction514;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -122538,34 +154886,37 @@ void CHECKNEW_parser___ReduceAction392(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction392_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction514_parser___ReduceAction___init[] = "new ReduceAction514 parser::ReduceAction::init";
+val_t NEW_ReduceAction514_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction392_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction514_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction392();
-  INIT_ATTRIBUTES__parser___ReduceAction392(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction514();
+  INIT_ATTRIBUTES__parser___ReduceAction514(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction392(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction514(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction393[52] = {
-  {(bigint) 871 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction515[55] = {
+  {(bigint) 1079 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction393" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction393 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction393 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 871 /* 5: ReduceAction393 < ReduceAction393: superclass typecheck marker */},
+  {(bigint) "ReduceAction515" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction515 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction515 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1079 /* 5: ReduceAction515 < ReduceAction515: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -122578,7 +154929,7 @@ const classtable_elt_t VFT_parser___ReduceAction393[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction393 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction515 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -122594,6 +154945,8 @@ const classtable_elt_t VFT_parser___ReduceAction393[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -122607,45 +154960,49 @@ const classtable_elt_t VFT_parser___ReduceAction393[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction393 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction393___action},
+  {(bigint) 0 /* 50: ReduceAction515 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction515___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction393 < ReduceAction393: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction515 < ReduceAction515: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction393::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction393(val_t p0){
+/* 2: Attribute ReduceAction515::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction515[] = "init var of ReduceAction515";
+void INIT_ATTRIBUTES__parser___ReduceAction515(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction393;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction515;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction393(void)
+val_t NEW_parser___ReduceAction515(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction393;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction515;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction393(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction515[] = "check new ReduceAction515";
+void CHECKNEW_parser___ReduceAction515(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction393;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction515;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -122655,34 +155012,37 @@ void CHECKNEW_parser___ReduceAction393(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction393_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction515_parser___ReduceAction___init[] = "new ReduceAction515 parser::ReduceAction::init";
+val_t NEW_ReduceAction515_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction393_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction515_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction393();
-  INIT_ATTRIBUTES__parser___ReduceAction393(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction515();
+  INIT_ATTRIBUTES__parser___ReduceAction515(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction393(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction515(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction394[52] = {
-  {(bigint) 867 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction516[55] = {
+  {(bigint) 1075 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction394" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction394 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction394 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 867 /* 5: ReduceAction394 < ReduceAction394: superclass typecheck marker */},
+  {(bigint) "ReduceAction516" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction516 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction516 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1075 /* 5: ReduceAction516 < ReduceAction516: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -122695,7 +155055,7 @@ const classtable_elt_t VFT_parser___ReduceAction394[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction394 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction516 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -122711,6 +155071,8 @@ const classtable_elt_t VFT_parser___ReduceAction394[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -122724,45 +155086,49 @@ const classtable_elt_t VFT_parser___ReduceAction394[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction394 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction394___action},
+  {(bigint) 0 /* 50: ReduceAction516 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction516___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction394 < ReduceAction394: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction516 < ReduceAction516: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction394::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction394(val_t p0){
+/* 2: Attribute ReduceAction516::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction516[] = "init var of ReduceAction516";
+void INIT_ATTRIBUTES__parser___ReduceAction516(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction394;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction516;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction394(void)
+val_t NEW_parser___ReduceAction516(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction394;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction516;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction394(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction516[] = "check new ReduceAction516";
+void CHECKNEW_parser___ReduceAction516(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction394;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction516;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -122772,34 +155138,37 @@ void CHECKNEW_parser___ReduceAction394(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction394_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction516_parser___ReduceAction___init[] = "new ReduceAction516 parser::ReduceAction::init";
+val_t NEW_ReduceAction516_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction394_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction516_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction394();
-  INIT_ATTRIBUTES__parser___ReduceAction394(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction516();
+  INIT_ATTRIBUTES__parser___ReduceAction516(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction394(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction516(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction395[52] = {
-  {(bigint) 863 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction517[55] = {
+  {(bigint) 1071 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction395" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction395 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction395 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 863 /* 5: ReduceAction395 < ReduceAction395: superclass typecheck marker */},
+  {(bigint) "ReduceAction517" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction517 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction517 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1071 /* 5: ReduceAction517 < ReduceAction517: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -122812,7 +155181,7 @@ const classtable_elt_t VFT_parser___ReduceAction395[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction395 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction517 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -122828,6 +155197,8 @@ const classtable_elt_t VFT_parser___ReduceAction395[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -122841,45 +155212,49 @@ const classtable_elt_t VFT_parser___ReduceAction395[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction395 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction395___action},
+  {(bigint) 0 /* 50: ReduceAction517 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction517___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction395 < ReduceAction395: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction517 < ReduceAction517: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction395::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction395(val_t p0){
+/* 2: Attribute ReduceAction517::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction517[] = "init var of ReduceAction517";
+void INIT_ATTRIBUTES__parser___ReduceAction517(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction395;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction517;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction395(void)
+val_t NEW_parser___ReduceAction517(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction395;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction517;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction395(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction517[] = "check new ReduceAction517";
+void CHECKNEW_parser___ReduceAction517(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction395;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction517;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -122889,34 +155264,37 @@ void CHECKNEW_parser___ReduceAction395(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction395_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction517_parser___ReduceAction___init[] = "new ReduceAction517 parser::ReduceAction::init";
+val_t NEW_ReduceAction517_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction395_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction517_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction395();
-  INIT_ATTRIBUTES__parser___ReduceAction395(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction517();
+  INIT_ATTRIBUTES__parser___ReduceAction517(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction395(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction517(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction396[52] = {
-  {(bigint) 859 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction521[55] = {
+  {(bigint) 1063 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction396" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction396 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction396 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 859 /* 5: ReduceAction396 < ReduceAction396: superclass typecheck marker */},
+  {(bigint) "ReduceAction521" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction521 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction521 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1063 /* 5: ReduceAction521 < ReduceAction521: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -122929,7 +155307,7 @@ const classtable_elt_t VFT_parser___ReduceAction396[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction396 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction521 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -122945,6 +155323,8 @@ const classtable_elt_t VFT_parser___ReduceAction396[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -122958,45 +155338,49 @@ const classtable_elt_t VFT_parser___ReduceAction396[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction396 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction396___action},
+  {(bigint) 0 /* 50: ReduceAction521 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction521___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction396 < ReduceAction396: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction521 < ReduceAction521: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction396::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction396(val_t p0){
+/* 2: Attribute ReduceAction521::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction521[] = "init var of ReduceAction521";
+void INIT_ATTRIBUTES__parser___ReduceAction521(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction396;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction521;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction396(void)
+val_t NEW_parser___ReduceAction521(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction396;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction521;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction396(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction521[] = "check new ReduceAction521";
+void CHECKNEW_parser___ReduceAction521(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction396;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction521;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -123006,34 +155390,37 @@ void CHECKNEW_parser___ReduceAction396(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction396_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction521_parser___ReduceAction___init[] = "new ReduceAction521 parser::ReduceAction::init";
+val_t NEW_ReduceAction521_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction396_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction521_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction396();
-  INIT_ATTRIBUTES__parser___ReduceAction396(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction521();
+  INIT_ATTRIBUTES__parser___ReduceAction521(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction396(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction521(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction398[52] = {
-  {(bigint) 855 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction523[55] = {
+  {(bigint) 1059 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction398" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction398 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction398 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 855 /* 5: ReduceAction398 < ReduceAction398: superclass typecheck marker */},
+  {(bigint) "ReduceAction523" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction523 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction523 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1059 /* 5: ReduceAction523 < ReduceAction523: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -123046,7 +155433,7 @@ const classtable_elt_t VFT_parser___ReduceAction398[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction398 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction523 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -123062,6 +155449,8 @@ const classtable_elt_t VFT_parser___ReduceAction398[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -123075,45 +155464,49 @@ const classtable_elt_t VFT_parser___ReduceAction398[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction398 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction398___action},
+  {(bigint) 0 /* 50: ReduceAction523 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction523___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction398 < ReduceAction398: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction523 < ReduceAction523: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction398::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction398(val_t p0){
+/* 2: Attribute ReduceAction523::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction523[] = "init var of ReduceAction523";
+void INIT_ATTRIBUTES__parser___ReduceAction523(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction398;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction523;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction398(void)
+val_t NEW_parser___ReduceAction523(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction398;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction523;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction398(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction523[] = "check new ReduceAction523";
+void CHECKNEW_parser___ReduceAction523(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction398;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction523;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -123123,34 +155516,37 @@ void CHECKNEW_parser___ReduceAction398(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction398_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction523_parser___ReduceAction___init[] = "new ReduceAction523 parser::ReduceAction::init";
+val_t NEW_ReduceAction523_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction398_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction523_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction398();
-  INIT_ATTRIBUTES__parser___ReduceAction398(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction523();
+  INIT_ATTRIBUTES__parser___ReduceAction523(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction398(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction523(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction399[52] = {
-  {(bigint) 851 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction525[55] = {
+  {(bigint) 1055 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction399" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction399 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction399 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 851 /* 5: ReduceAction399 < ReduceAction399: superclass typecheck marker */},
+  {(bigint) "ReduceAction525" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction525 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction525 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1055 /* 5: ReduceAction525 < ReduceAction525: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -123163,7 +155559,7 @@ const classtable_elt_t VFT_parser___ReduceAction399[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction399 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction525 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -123179,6 +155575,8 @@ const classtable_elt_t VFT_parser___ReduceAction399[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -123192,45 +155590,49 @@ const classtable_elt_t VFT_parser___ReduceAction399[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction399 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction399___action},
+  {(bigint) 0 /* 50: ReduceAction525 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction525___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction399 < ReduceAction399: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction525 < ReduceAction525: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction399::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction399(val_t p0){
+/* 2: Attribute ReduceAction525::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction525[] = "init var of ReduceAction525";
+void INIT_ATTRIBUTES__parser___ReduceAction525(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction399;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction525;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction399(void)
+val_t NEW_parser___ReduceAction525(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction399;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction525;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction399(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction525[] = "check new ReduceAction525";
+void CHECKNEW_parser___ReduceAction525(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction399;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction525;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -123240,153 +155642,39 @@ void CHECKNEW_parser___ReduceAction399(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction399_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction525_parser___ReduceAction___init[] = "new ReduceAction525 parser::ReduceAction::init";
+val_t NEW_ReduceAction525_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction399_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction525_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction399();
-  INIT_ATTRIBUTES__parser___ReduceAction399(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction525();
+  INIT_ATTRIBUTES__parser___ReduceAction525(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction399(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction525(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction400[52] = {
-  {(bigint) 839 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction526[55] = {
+  {(bigint) 1051 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction400" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction400 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction400 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 839 /* 5: ReduceAction400 < ReduceAction400: 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) "ReduceAction526" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction526 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction526 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1051 /* 5: ReduceAction526 < ReduceAction526: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction400 < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
-  {(bigint) standard___file___Object___printn},
-  {(bigint) standard___file___Object___print},
-  {(bigint) standard___file___Object___getc},
-  {(bigint) standard___file___Object___gets},
-  {(bigint) standard___file___Object___stdin},
-  {(bigint) standard___file___Object___stdout},
-  {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
-  {(bigint) standard___string___Object___native_class_name},
-  {(bigint) standard___string___Object___class_name},
-  {(bigint) standard___string___Object___inspect},
-  {(bigint) standard___string___Object___inspect_head},
-  {(bigint) standard___string___Object___args},
-  {(bigint) standard___hash___Object___hash},
-  {(bigint) standard___math___Object___atan2},
-  {(bigint) standard___math___Object___pi},
-  {(bigint) standard___math___Object___srand_from},
-  {(bigint) standard___math___Object___srand},
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction400 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction400___action},
-  {(bigint) parser___ReduceAction___concat},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction400 < ReduceAction400: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Object_id */
-/* 2: Attribute ReduceAction400::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction400(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t tmp;
-  fra.me.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___ReduceAction400;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
-  stack_frame_head = fra.me.prev;
-}
-val_t NEW_parser___ReduceAction400(void)
-{
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction400;
-  obj[1].object_id = object_id_counter;
-  object_id_counter = object_id_counter + 1;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_parser___ReduceAction400(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.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___ReduceAction400;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
-  }
-  stack_frame_head = fra.me.prev;
-}
-val_t NEW_ReduceAction400_parser___ReduceAction___init(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  int init_table[3] = {0, 0, 0};
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction400_parser___ReduceAction___init;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction400();
-  INIT_ATTRIBUTES__parser___ReduceAction400(fra.me.REG[0]);
-  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction400(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-const classtable_elt_t VFT_parser___ReduceAction401[52] = {
-  {(bigint) 835 /* 0: Identity */},
-  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction401" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction401 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction401 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 835 /* 5: ReduceAction401 < ReduceAction401: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -123397,7 +155685,7 @@ const classtable_elt_t VFT_parser___ReduceAction401[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction401 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction526 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -123413,6 +155701,8 @@ const classtable_elt_t VFT_parser___ReduceAction401[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -123426,45 +155716,49 @@ const classtable_elt_t VFT_parser___ReduceAction401[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction401 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction401___action},
+  {(bigint) 0 /* 50: ReduceAction526 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction526___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction401 < ReduceAction401: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction526 < ReduceAction526: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction401::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction401(val_t p0){
+/* 2: Attribute ReduceAction526::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction526[] = "init var of ReduceAction526";
+void INIT_ATTRIBUTES__parser___ReduceAction526(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction401;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction526;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction401(void)
+val_t NEW_parser___ReduceAction526(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction401;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction526;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction401(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction526[] = "check new ReduceAction526";
+void CHECKNEW_parser___ReduceAction526(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction401;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction526;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -123474,34 +155768,37 @@ void CHECKNEW_parser___ReduceAction401(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction401_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction526_parser___ReduceAction___init[] = "new ReduceAction526 parser::ReduceAction::init";
+val_t NEW_ReduceAction526_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction401_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction526_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction401();
-  INIT_ATTRIBUTES__parser___ReduceAction401(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction526();
+  INIT_ATTRIBUTES__parser___ReduceAction526(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction401(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction526(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction403[52] = {
-  {(bigint) 831 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction527[55] = {
+  {(bigint) 1047 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction403" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction403 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction403 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 831 /* 5: ReduceAction403 < ReduceAction403: superclass typecheck marker */},
+  {(bigint) "ReduceAction527" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction527 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction527 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1047 /* 5: ReduceAction527 < ReduceAction527: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -123514,7 +155811,7 @@ const classtable_elt_t VFT_parser___ReduceAction403[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction403 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction527 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -123530,6 +155827,8 @@ const classtable_elt_t VFT_parser___ReduceAction403[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -123543,45 +155842,49 @@ const classtable_elt_t VFT_parser___ReduceAction403[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction403 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction403___action},
+  {(bigint) 0 /* 50: ReduceAction527 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction527___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction403 < ReduceAction403: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction527 < ReduceAction527: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction403::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction403(val_t p0){
+/* 2: Attribute ReduceAction527::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction527[] = "init var of ReduceAction527";
+void INIT_ATTRIBUTES__parser___ReduceAction527(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction403;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction527;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction403(void)
+val_t NEW_parser___ReduceAction527(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction403;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction527;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction403(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction527[] = "check new ReduceAction527";
+void CHECKNEW_parser___ReduceAction527(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction403;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction527;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -123591,34 +155894,37 @@ void CHECKNEW_parser___ReduceAction403(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction403_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction527_parser___ReduceAction___init[] = "new ReduceAction527 parser::ReduceAction::init";
+val_t NEW_ReduceAction527_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction403_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction527_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction403();
-  INIT_ATTRIBUTES__parser___ReduceAction403(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction527();
+  INIT_ATTRIBUTES__parser___ReduceAction527(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction403(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction527(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction406[52] = {
-  {(bigint) 827 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction529[55] = {
+  {(bigint) 1043 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction406" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction406 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction406 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 827 /* 5: ReduceAction406 < ReduceAction406: superclass typecheck marker */},
+  {(bigint) "ReduceAction529" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction529 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction529 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1043 /* 5: ReduceAction529 < ReduceAction529: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -123631,7 +155937,7 @@ const classtable_elt_t VFT_parser___ReduceAction406[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction406 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction529 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -123647,6 +155953,8 @@ const classtable_elt_t VFT_parser___ReduceAction406[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -123660,45 +155968,49 @@ const classtable_elt_t VFT_parser___ReduceAction406[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction406 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction406___action},
+  {(bigint) 0 /* 50: ReduceAction529 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction529___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction406 < ReduceAction406: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction529 < ReduceAction529: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction406::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction406(val_t p0){
+/* 2: Attribute ReduceAction529::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction529[] = "init var of ReduceAction529";
+void INIT_ATTRIBUTES__parser___ReduceAction529(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction406;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction529;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction406(void)
+val_t NEW_parser___ReduceAction529(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction406;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction529;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction406(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction529[] = "check new ReduceAction529";
+void CHECKNEW_parser___ReduceAction529(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction406;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction529;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -123708,34 +156020,37 @@ void CHECKNEW_parser___ReduceAction406(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction406_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction529_parser___ReduceAction___init[] = "new ReduceAction529 parser::ReduceAction::init";
+val_t NEW_ReduceAction529_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction406_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction529_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction406();
-  INIT_ATTRIBUTES__parser___ReduceAction406(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction529();
+  INIT_ATTRIBUTES__parser___ReduceAction529(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction406(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction529(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction411[52] = {
-  {(bigint) 819 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction531[55] = {
+  {(bigint) 1035 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction411" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction411 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction411 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 819 /* 5: ReduceAction411 < ReduceAction411: superclass typecheck marker */},
+  {(bigint) "ReduceAction531" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction531 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction531 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1035 /* 5: ReduceAction531 < ReduceAction531: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -123748,7 +156063,7 @@ const classtable_elt_t VFT_parser___ReduceAction411[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction411 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction531 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -123764,6 +156079,8 @@ const classtable_elt_t VFT_parser___ReduceAction411[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -123777,45 +156094,49 @@ const classtable_elt_t VFT_parser___ReduceAction411[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction411 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction411___action},
+  {(bigint) 0 /* 50: ReduceAction531 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction531___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction411 < ReduceAction411: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction531 < ReduceAction531: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction411::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction411(val_t p0){
+/* 2: Attribute ReduceAction531::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction531[] = "init var of ReduceAction531";
+void INIT_ATTRIBUTES__parser___ReduceAction531(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction411;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction531;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction411(void)
+val_t NEW_parser___ReduceAction531(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction411;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction531;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction411(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction531[] = "check new ReduceAction531";
+void CHECKNEW_parser___ReduceAction531(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction411;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction531;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -123825,34 +156146,37 @@ void CHECKNEW_parser___ReduceAction411(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction411_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction531_parser___ReduceAction___init[] = "new ReduceAction531 parser::ReduceAction::init";
+val_t NEW_ReduceAction531_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction411_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction531_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction411();
-  INIT_ATTRIBUTES__parser___ReduceAction411(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction531();
+  INIT_ATTRIBUTES__parser___ReduceAction531(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction411(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction531(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction412[52] = {
-  {(bigint) 815 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction532[55] = {
+  {(bigint) 1031 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction412" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction412 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction412 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 815 /* 5: ReduceAction412 < ReduceAction412: superclass typecheck marker */},
+  {(bigint) "ReduceAction532" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction532 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction532 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1031 /* 5: ReduceAction532 < ReduceAction532: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -123865,7 +156189,7 @@ const classtable_elt_t VFT_parser___ReduceAction412[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction412 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction532 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -123881,6 +156205,8 @@ const classtable_elt_t VFT_parser___ReduceAction412[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -123894,45 +156220,49 @@ const classtable_elt_t VFT_parser___ReduceAction412[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction412 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction412___action},
+  {(bigint) 0 /* 50: ReduceAction532 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction532___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction412 < ReduceAction412: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction532 < ReduceAction532: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction412::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction412(val_t p0){
+/* 2: Attribute ReduceAction532::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction532[] = "init var of ReduceAction532";
+void INIT_ATTRIBUTES__parser___ReduceAction532(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction412;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction532;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction412(void)
+val_t NEW_parser___ReduceAction532(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction412;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction532;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction412(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction532[] = "check new ReduceAction532";
+void CHECKNEW_parser___ReduceAction532(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction412;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction532;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -123942,34 +156272,37 @@ void CHECKNEW_parser___ReduceAction412(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction412_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction532_parser___ReduceAction___init[] = "new ReduceAction532 parser::ReduceAction::init";
+val_t NEW_ReduceAction532_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction412_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction532_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction412();
-  INIT_ATTRIBUTES__parser___ReduceAction412(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction532();
+  INIT_ATTRIBUTES__parser___ReduceAction532(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction412(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction532(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction413[52] = {
-  {(bigint) 811 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction533[55] = {
+  {(bigint) 1027 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction413" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction413 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction413 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 811 /* 5: ReduceAction413 < ReduceAction413: superclass typecheck marker */},
+  {(bigint) "ReduceAction533" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction533 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction533 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1027 /* 5: ReduceAction533 < ReduceAction533: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -123982,7 +156315,7 @@ const classtable_elt_t VFT_parser___ReduceAction413[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction413 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction533 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -123998,6 +156331,8 @@ const classtable_elt_t VFT_parser___ReduceAction413[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -124011,45 +156346,49 @@ const classtable_elt_t VFT_parser___ReduceAction413[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction413 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction413___action},
+  {(bigint) 0 /* 50: ReduceAction533 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction533___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction413 < ReduceAction413: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction533 < ReduceAction533: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction413::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction413(val_t p0){
+/* 2: Attribute ReduceAction533::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction533[] = "init var of ReduceAction533";
+void INIT_ATTRIBUTES__parser___ReduceAction533(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction413;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction533;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction413(void)
+val_t NEW_parser___ReduceAction533(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction413;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction533;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction413(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction533[] = "check new ReduceAction533";
+void CHECKNEW_parser___ReduceAction533(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction413;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction533;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -124059,34 +156398,37 @@ void CHECKNEW_parser___ReduceAction413(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction413_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction533_parser___ReduceAction___init[] = "new ReduceAction533 parser::ReduceAction::init";
+val_t NEW_ReduceAction533_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction413_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction533_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction413();
-  INIT_ATTRIBUTES__parser___ReduceAction413(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction533();
+  INIT_ATTRIBUTES__parser___ReduceAction533(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction413(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction533(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction414[52] = {
-  {(bigint) 807 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction534[55] = {
+  {(bigint) 1023 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction414" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction414 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction414 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 807 /* 5: ReduceAction414 < ReduceAction414: superclass typecheck marker */},
+  {(bigint) "ReduceAction534" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction534 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction534 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1023 /* 5: ReduceAction534 < ReduceAction534: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -124099,7 +156441,7 @@ const classtable_elt_t VFT_parser___ReduceAction414[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction414 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction534 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -124115,6 +156457,8 @@ const classtable_elt_t VFT_parser___ReduceAction414[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -124128,45 +156472,49 @@ const classtable_elt_t VFT_parser___ReduceAction414[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction414 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction414___action},
+  {(bigint) 0 /* 50: ReduceAction534 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction534___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction414 < ReduceAction414: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction534 < ReduceAction534: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction414::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction414(val_t p0){
+/* 2: Attribute ReduceAction534::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction534[] = "init var of ReduceAction534";
+void INIT_ATTRIBUTES__parser___ReduceAction534(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction414;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction534;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction414(void)
+val_t NEW_parser___ReduceAction534(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction414;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction534;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction414(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction534[] = "check new ReduceAction534";
+void CHECKNEW_parser___ReduceAction534(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction414;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction534;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -124176,34 +156524,37 @@ void CHECKNEW_parser___ReduceAction414(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction414_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction534_parser___ReduceAction___init[] = "new ReduceAction534 parser::ReduceAction::init";
+val_t NEW_ReduceAction534_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction414_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction534_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction414();
-  INIT_ATTRIBUTES__parser___ReduceAction414(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction534();
+  INIT_ATTRIBUTES__parser___ReduceAction534(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction414(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction534(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction415[52] = {
-  {(bigint) 803 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction535[55] = {
+  {(bigint) 1019 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction415" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction415 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction415 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 803 /* 5: ReduceAction415 < ReduceAction415: superclass typecheck marker */},
+  {(bigint) "ReduceAction535" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction535 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction535 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1019 /* 5: ReduceAction535 < ReduceAction535: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -124216,7 +156567,7 @@ const classtable_elt_t VFT_parser___ReduceAction415[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction415 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction535 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -124232,6 +156583,8 @@ const classtable_elt_t VFT_parser___ReduceAction415[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -124245,45 +156598,49 @@ const classtable_elt_t VFT_parser___ReduceAction415[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction415 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction415___action},
+  {(bigint) 0 /* 50: ReduceAction535 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction535___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction415 < ReduceAction415: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction535 < ReduceAction535: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction415::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction415(val_t p0){
+/* 2: Attribute ReduceAction535::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction535[] = "init var of ReduceAction535";
+void INIT_ATTRIBUTES__parser___ReduceAction535(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction415;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction535;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction415(void)
+val_t NEW_parser___ReduceAction535(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction415;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction535;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction415(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction535[] = "check new ReduceAction535";
+void CHECKNEW_parser___ReduceAction535(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction415;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction535;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -124293,34 +156650,37 @@ void CHECKNEW_parser___ReduceAction415(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction415_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction535_parser___ReduceAction___init[] = "new ReduceAction535 parser::ReduceAction::init";
+val_t NEW_ReduceAction535_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction415_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction535_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction415();
-  INIT_ATTRIBUTES__parser___ReduceAction415(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction535();
+  INIT_ATTRIBUTES__parser___ReduceAction535(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction415(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction535(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction416[52] = {
-  {(bigint) 799 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction536[55] = {
+  {(bigint) 1015 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction416" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction416 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction416 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 799 /* 5: ReduceAction416 < ReduceAction416: superclass typecheck marker */},
+  {(bigint) "ReduceAction536" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction536 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction536 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1015 /* 5: ReduceAction536 < ReduceAction536: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -124333,7 +156693,7 @@ const classtable_elt_t VFT_parser___ReduceAction416[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction416 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction536 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -124349,6 +156709,8 @@ const classtable_elt_t VFT_parser___ReduceAction416[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -124362,45 +156724,49 @@ const classtable_elt_t VFT_parser___ReduceAction416[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction416 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction416___action},
+  {(bigint) 0 /* 50: ReduceAction536 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction536___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction416 < ReduceAction416: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction536 < ReduceAction536: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction416::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction416(val_t p0){
+/* 2: Attribute ReduceAction536::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction536[] = "init var of ReduceAction536";
+void INIT_ATTRIBUTES__parser___ReduceAction536(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction416;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction536;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction416(void)
+val_t NEW_parser___ReduceAction536(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction416;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction536;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction416(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction536[] = "check new ReduceAction536";
+void CHECKNEW_parser___ReduceAction536(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction416;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction536;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -124410,34 +156776,37 @@ void CHECKNEW_parser___ReduceAction416(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction416_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction536_parser___ReduceAction___init[] = "new ReduceAction536 parser::ReduceAction::init";
+val_t NEW_ReduceAction536_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction416_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction536_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction416();
-  INIT_ATTRIBUTES__parser___ReduceAction416(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction536();
+  INIT_ATTRIBUTES__parser___ReduceAction536(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction416(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction536(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction417[52] = {
-  {(bigint) 795 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction537[55] = {
+  {(bigint) 1011 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction417" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction417 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction417 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 795 /* 5: ReduceAction417 < ReduceAction417: superclass typecheck marker */},
+  {(bigint) "ReduceAction537" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction537 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction537 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1011 /* 5: ReduceAction537 < ReduceAction537: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -124450,7 +156819,7 @@ const classtable_elt_t VFT_parser___ReduceAction417[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction417 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction537 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -124466,6 +156835,8 @@ const classtable_elt_t VFT_parser___ReduceAction417[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -124479,45 +156850,49 @@ const classtable_elt_t VFT_parser___ReduceAction417[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction417 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction417___action},
+  {(bigint) 0 /* 50: ReduceAction537 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction537___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction417 < ReduceAction417: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction537 < ReduceAction537: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction417::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction417(val_t p0){
+/* 2: Attribute ReduceAction537::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction537[] = "init var of ReduceAction537";
+void INIT_ATTRIBUTES__parser___ReduceAction537(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction417;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction537;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction417(void)
+val_t NEW_parser___ReduceAction537(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction417;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction537;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction417(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction537[] = "check new ReduceAction537";
+void CHECKNEW_parser___ReduceAction537(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction417;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction537;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -124527,34 +156902,37 @@ void CHECKNEW_parser___ReduceAction417(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction417_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction537_parser___ReduceAction___init[] = "new ReduceAction537 parser::ReduceAction::init";
+val_t NEW_ReduceAction537_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction417_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction537_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction417();
-  INIT_ATTRIBUTES__parser___ReduceAction417(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction537();
+  INIT_ATTRIBUTES__parser___ReduceAction537(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction417(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction537(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction418[52] = {
-  {(bigint) 791 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction538[55] = {
+  {(bigint) 1007 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction418" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction418 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction418 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 791 /* 5: ReduceAction418 < ReduceAction418: superclass typecheck marker */},
+  {(bigint) "ReduceAction538" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction538 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction538 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1007 /* 5: ReduceAction538 < ReduceAction538: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -124567,7 +156945,7 @@ const classtable_elt_t VFT_parser___ReduceAction418[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction418 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction538 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -124583,6 +156961,8 @@ const classtable_elt_t VFT_parser___ReduceAction418[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -124596,45 +156976,49 @@ const classtable_elt_t VFT_parser___ReduceAction418[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction418 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction418___action},
+  {(bigint) 0 /* 50: ReduceAction538 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction538___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction418 < ReduceAction418: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction538 < ReduceAction538: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction418::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction418(val_t p0){
+/* 2: Attribute ReduceAction538::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction538[] = "init var of ReduceAction538";
+void INIT_ATTRIBUTES__parser___ReduceAction538(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction418;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction538;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction418(void)
+val_t NEW_parser___ReduceAction538(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction418;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction538;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction418(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction538[] = "check new ReduceAction538";
+void CHECKNEW_parser___ReduceAction538(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction418;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction538;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -124644,34 +157028,37 @@ void CHECKNEW_parser___ReduceAction418(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction418_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction538_parser___ReduceAction___init[] = "new ReduceAction538 parser::ReduceAction::init";
+val_t NEW_ReduceAction538_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction418_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction538_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction418();
-  INIT_ATTRIBUTES__parser___ReduceAction418(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction538();
+  INIT_ATTRIBUTES__parser___ReduceAction538(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction418(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction538(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction419[52] = {
-  {(bigint) 787 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction539[55] = {
+  {(bigint) 1003 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction419" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction419 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction419 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 787 /* 5: ReduceAction419 < ReduceAction419: superclass typecheck marker */},
+  {(bigint) "ReduceAction539" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction539 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction539 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1003 /* 5: ReduceAction539 < ReduceAction539: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -124684,7 +157071,7 @@ const classtable_elt_t VFT_parser___ReduceAction419[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction419 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction539 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -124700,6 +157087,8 @@ const classtable_elt_t VFT_parser___ReduceAction419[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -124713,45 +157102,49 @@ const classtable_elt_t VFT_parser___ReduceAction419[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction419 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction419___action},
+  {(bigint) 0 /* 50: ReduceAction539 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction539___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction419 < ReduceAction419: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction539 < ReduceAction539: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction419::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction419(val_t p0){
+/* 2: Attribute ReduceAction539::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction539[] = "init var of ReduceAction539";
+void INIT_ATTRIBUTES__parser___ReduceAction539(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction419;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction539;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction419(void)
+val_t NEW_parser___ReduceAction539(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction419;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction539;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction419(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction539[] = "check new ReduceAction539";
+void CHECKNEW_parser___ReduceAction539(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction419;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction539;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -124761,34 +157154,37 @@ void CHECKNEW_parser___ReduceAction419(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction419_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction539_parser___ReduceAction___init[] = "new ReduceAction539 parser::ReduceAction::init";
+val_t NEW_ReduceAction539_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction419_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction539_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction419();
-  INIT_ATTRIBUTES__parser___ReduceAction419(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction539();
+  INIT_ATTRIBUTES__parser___ReduceAction539(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction419(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction539(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction420[52] = {
-  {(bigint) 779 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction540[55] = {
+  {(bigint) 995 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction420" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction420 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction420 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 779 /* 5: ReduceAction420 < ReduceAction420: superclass typecheck marker */},
+  {(bigint) "ReduceAction540" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction540 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction540 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 995 /* 5: ReduceAction540 < ReduceAction540: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -124801,7 +157197,7 @@ const classtable_elt_t VFT_parser___ReduceAction420[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction420 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction540 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -124817,6 +157213,8 @@ const classtable_elt_t VFT_parser___ReduceAction420[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -124830,45 +157228,49 @@ const classtable_elt_t VFT_parser___ReduceAction420[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction420 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction420___action},
+  {(bigint) 0 /* 50: ReduceAction540 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction540___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction420 < ReduceAction420: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction540 < ReduceAction540: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction420::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction420(val_t p0){
+/* 2: Attribute ReduceAction540::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction540[] = "init var of ReduceAction540";
+void INIT_ATTRIBUTES__parser___ReduceAction540(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction420;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction540;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction420(void)
+val_t NEW_parser___ReduceAction540(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction420;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction540;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction420(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction540[] = "check new ReduceAction540";
+void CHECKNEW_parser___ReduceAction540(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction420;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction540;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -124878,34 +157280,37 @@ void CHECKNEW_parser___ReduceAction420(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction420_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction540_parser___ReduceAction___init[] = "new ReduceAction540 parser::ReduceAction::init";
+val_t NEW_ReduceAction540_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction420_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction540_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction420();
-  INIT_ATTRIBUTES__parser___ReduceAction420(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction540();
+  INIT_ATTRIBUTES__parser___ReduceAction540(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction420(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction540(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction421[52] = {
-  {(bigint) 775 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction541[55] = {
+  {(bigint) 991 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction421" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction421 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction421 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 775 /* 5: ReduceAction421 < ReduceAction421: superclass typecheck marker */},
+  {(bigint) "ReduceAction541" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction541 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction541 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 991 /* 5: ReduceAction541 < ReduceAction541: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -124918,7 +157323,7 @@ const classtable_elt_t VFT_parser___ReduceAction421[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction421 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction541 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -124934,6 +157339,8 @@ const classtable_elt_t VFT_parser___ReduceAction421[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -124947,45 +157354,49 @@ const classtable_elt_t VFT_parser___ReduceAction421[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction421 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction421___action},
+  {(bigint) 0 /* 50: ReduceAction541 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction541___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction421 < ReduceAction421: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction541 < ReduceAction541: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction421::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction421(val_t p0){
+/* 2: Attribute ReduceAction541::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction541[] = "init var of ReduceAction541";
+void INIT_ATTRIBUTES__parser___ReduceAction541(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction421;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction541;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction421(void)
+val_t NEW_parser___ReduceAction541(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction421;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction541;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction421(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction541[] = "check new ReduceAction541";
+void CHECKNEW_parser___ReduceAction541(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction421;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction541;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -124995,34 +157406,37 @@ void CHECKNEW_parser___ReduceAction421(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction421_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction541_parser___ReduceAction___init[] = "new ReduceAction541 parser::ReduceAction::init";
+val_t NEW_ReduceAction541_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction421_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction541_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction421();
-  INIT_ATTRIBUTES__parser___ReduceAction421(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction541();
+  INIT_ATTRIBUTES__parser___ReduceAction541(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction421(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction541(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction422[52] = {
-  {(bigint) 771 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction543[55] = {
+  {(bigint) 987 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction422" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction422 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction422 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 771 /* 5: ReduceAction422 < ReduceAction422: superclass typecheck marker */},
+  {(bigint) "ReduceAction543" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction543 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction543 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 987 /* 5: ReduceAction543 < ReduceAction543: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -125035,7 +157449,7 @@ const classtable_elt_t VFT_parser___ReduceAction422[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction422 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction543 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -125051,6 +157465,8 @@ const classtable_elt_t VFT_parser___ReduceAction422[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -125064,45 +157480,49 @@ const classtable_elt_t VFT_parser___ReduceAction422[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction422 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction422___action},
+  {(bigint) 0 /* 50: ReduceAction543 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction543___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction422 < ReduceAction422: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction543 < ReduceAction543: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction422::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction422(val_t p0){
+/* 2: Attribute ReduceAction543::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction543[] = "init var of ReduceAction543";
+void INIT_ATTRIBUTES__parser___ReduceAction543(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction422;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction543;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction422(void)
+val_t NEW_parser___ReduceAction543(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction422;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction543;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction422(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction543[] = "check new ReduceAction543";
+void CHECKNEW_parser___ReduceAction543(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction422;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction543;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -125112,34 +157532,37 @@ void CHECKNEW_parser___ReduceAction422(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction422_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction543_parser___ReduceAction___init[] = "new ReduceAction543 parser::ReduceAction::init";
+val_t NEW_ReduceAction543_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction422_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction543_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction422();
-  INIT_ATTRIBUTES__parser___ReduceAction422(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction543();
+  INIT_ATTRIBUTES__parser___ReduceAction543(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction422(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction543(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction423[52] = {
-  {(bigint) 767 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction544[55] = {
+  {(bigint) 983 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction423" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction423 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction423 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 767 /* 5: ReduceAction423 < ReduceAction423: superclass typecheck marker */},
+  {(bigint) "ReduceAction544" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction544 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction544 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 983 /* 5: ReduceAction544 < ReduceAction544: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -125152,7 +157575,7 @@ const classtable_elt_t VFT_parser___ReduceAction423[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction423 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction544 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -125168,6 +157591,8 @@ const classtable_elt_t VFT_parser___ReduceAction423[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -125181,45 +157606,49 @@ const classtable_elt_t VFT_parser___ReduceAction423[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction423 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction423___action},
+  {(bigint) 0 /* 50: ReduceAction544 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction544___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction423 < ReduceAction423: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction544 < ReduceAction544: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction423::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction423(val_t p0){
+/* 2: Attribute ReduceAction544::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction544[] = "init var of ReduceAction544";
+void INIT_ATTRIBUTES__parser___ReduceAction544(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction423;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction544;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction423(void)
+val_t NEW_parser___ReduceAction544(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction423;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction544;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction423(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction544[] = "check new ReduceAction544";
+void CHECKNEW_parser___ReduceAction544(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction423;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction544;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -125229,34 +157658,37 @@ void CHECKNEW_parser___ReduceAction423(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction423_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction544_parser___ReduceAction___init[] = "new ReduceAction544 parser::ReduceAction::init";
+val_t NEW_ReduceAction544_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction423_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction544_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction423();
-  INIT_ATTRIBUTES__parser___ReduceAction423(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction544();
+  INIT_ATTRIBUTES__parser___ReduceAction544(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction423(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction544(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction425[52] = {
-  {(bigint) 763 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction546[55] = {
+  {(bigint) 979 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction425" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction425 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction425 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 763 /* 5: ReduceAction425 < ReduceAction425: superclass typecheck marker */},
+  {(bigint) "ReduceAction546" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction546 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction546 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 979 /* 5: ReduceAction546 < ReduceAction546: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -125269,7 +157701,7 @@ const classtable_elt_t VFT_parser___ReduceAction425[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction425 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction546 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -125285,6 +157717,8 @@ const classtable_elt_t VFT_parser___ReduceAction425[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -125298,45 +157732,49 @@ const classtable_elt_t VFT_parser___ReduceAction425[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction425 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction425___action},
+  {(bigint) 0 /* 50: ReduceAction546 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction546___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction425 < ReduceAction425: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction546 < ReduceAction546: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction425::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction425(val_t p0){
+/* 2: Attribute ReduceAction546::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction546[] = "init var of ReduceAction546";
+void INIT_ATTRIBUTES__parser___ReduceAction546(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction425;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction546;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction425(void)
+val_t NEW_parser___ReduceAction546(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction425;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction546;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction425(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction546[] = "check new ReduceAction546";
+void CHECKNEW_parser___ReduceAction546(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction425;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction546;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -125346,34 +157784,37 @@ void CHECKNEW_parser___ReduceAction425(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction425_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction546_parser___ReduceAction___init[] = "new ReduceAction546 parser::ReduceAction::init";
+val_t NEW_ReduceAction546_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction425_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction546_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction425();
-  INIT_ATTRIBUTES__parser___ReduceAction425(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction546();
+  INIT_ATTRIBUTES__parser___ReduceAction546(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction425(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction546(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction426[52] = {
-  {(bigint) 759 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction547[55] = {
+  {(bigint) 975 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction426" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction426 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction426 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 759 /* 5: ReduceAction426 < ReduceAction426: superclass typecheck marker */},
+  {(bigint) "ReduceAction547" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction547 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction547 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 975 /* 5: ReduceAction547 < ReduceAction547: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -125386,7 +157827,7 @@ const classtable_elt_t VFT_parser___ReduceAction426[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction426 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction547 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -125402,6 +157843,8 @@ const classtable_elt_t VFT_parser___ReduceAction426[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -125415,45 +157858,49 @@ const classtable_elt_t VFT_parser___ReduceAction426[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction426 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction426___action},
+  {(bigint) 0 /* 50: ReduceAction547 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction547___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction426 < ReduceAction426: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction547 < ReduceAction547: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction426::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction426(val_t p0){
+/* 2: Attribute ReduceAction547::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction547[] = "init var of ReduceAction547";
+void INIT_ATTRIBUTES__parser___ReduceAction547(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction426;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction547;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction426(void)
+val_t NEW_parser___ReduceAction547(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction426;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction547;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction426(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction547[] = "check new ReduceAction547";
+void CHECKNEW_parser___ReduceAction547(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction426;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction547;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -125463,34 +157910,37 @@ void CHECKNEW_parser___ReduceAction426(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction426_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction547_parser___ReduceAction___init[] = "new ReduceAction547 parser::ReduceAction::init";
+val_t NEW_ReduceAction547_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction426_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction547_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction426();
-  INIT_ATTRIBUTES__parser___ReduceAction426(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction547();
+  INIT_ATTRIBUTES__parser___ReduceAction547(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction426(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction547(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction428[52] = {
-  {(bigint) 755 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction548[55] = {
+  {(bigint) 971 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction428" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction428 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction428 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 755 /* 5: ReduceAction428 < ReduceAction428: superclass typecheck marker */},
+  {(bigint) "ReduceAction548" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction548 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction548 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 971 /* 5: ReduceAction548 < ReduceAction548: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -125503,7 +157953,7 @@ const classtable_elt_t VFT_parser___ReduceAction428[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction428 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction548 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -125519,6 +157969,8 @@ const classtable_elt_t VFT_parser___ReduceAction428[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -125532,45 +157984,49 @@ const classtable_elt_t VFT_parser___ReduceAction428[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction428 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction428___action},
+  {(bigint) 0 /* 50: ReduceAction548 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction548___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction428 < ReduceAction428: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction548 < ReduceAction548: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction428::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction428(val_t p0){
+/* 2: Attribute ReduceAction548::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction548[] = "init var of ReduceAction548";
+void INIT_ATTRIBUTES__parser___ReduceAction548(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction428;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction548;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction428(void)
+val_t NEW_parser___ReduceAction548(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction428;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction548;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction428(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction548[] = "check new ReduceAction548";
+void CHECKNEW_parser___ReduceAction548(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction428;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction548;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -125580,34 +158036,37 @@ void CHECKNEW_parser___ReduceAction428(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction428_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction548_parser___ReduceAction___init[] = "new ReduceAction548 parser::ReduceAction::init";
+val_t NEW_ReduceAction548_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction428_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction548_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction428();
-  INIT_ATTRIBUTES__parser___ReduceAction428(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction548();
+  INIT_ATTRIBUTES__parser___ReduceAction548(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction428(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction548(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction429[52] = {
-  {(bigint) 751 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction550[55] = {
+  {(bigint) 963 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction429" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction429 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction429 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 751 /* 5: ReduceAction429 < ReduceAction429: superclass typecheck marker */},
+  {(bigint) "ReduceAction550" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction550 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction550 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 963 /* 5: ReduceAction550 < ReduceAction550: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -125620,7 +158079,7 @@ const classtable_elt_t VFT_parser___ReduceAction429[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction429 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction550 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -125636,6 +158095,8 @@ const classtable_elt_t VFT_parser___ReduceAction429[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -125649,45 +158110,49 @@ const classtable_elt_t VFT_parser___ReduceAction429[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction429 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction429___action},
+  {(bigint) 0 /* 50: ReduceAction550 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction550___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction429 < ReduceAction429: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction550 < ReduceAction550: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction429::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction429(val_t p0){
+/* 2: Attribute ReduceAction550::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction550[] = "init var of ReduceAction550";
+void INIT_ATTRIBUTES__parser___ReduceAction550(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction429;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction550;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction429(void)
+val_t NEW_parser___ReduceAction550(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction429;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction550;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction429(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction550[] = "check new ReduceAction550";
+void CHECKNEW_parser___ReduceAction550(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction429;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction550;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -125697,34 +158162,37 @@ void CHECKNEW_parser___ReduceAction429(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction429_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction550_parser___ReduceAction___init[] = "new ReduceAction550 parser::ReduceAction::init";
+val_t NEW_ReduceAction550_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction429_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction550_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction429();
-  INIT_ATTRIBUTES__parser___ReduceAction429(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction550();
+  INIT_ATTRIBUTES__parser___ReduceAction550(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction429(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction550(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction430[52] = {
-  {(bigint) 743 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction551[55] = {
+  {(bigint) 959 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction430" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction430 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction430 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 743 /* 5: ReduceAction430 < ReduceAction430: superclass typecheck marker */},
+  {(bigint) "ReduceAction551" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction551 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction551 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 959 /* 5: ReduceAction551 < ReduceAction551: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -125737,7 +158205,7 @@ const classtable_elt_t VFT_parser___ReduceAction430[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction430 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction551 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -125753,6 +158221,8 @@ const classtable_elt_t VFT_parser___ReduceAction430[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -125766,45 +158236,49 @@ const classtable_elt_t VFT_parser___ReduceAction430[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction430 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction430___action},
+  {(bigint) 0 /* 50: ReduceAction551 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction551___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction430 < ReduceAction430: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction551 < ReduceAction551: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction430::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction430(val_t p0){
+/* 2: Attribute ReduceAction551::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction551[] = "init var of ReduceAction551";
+void INIT_ATTRIBUTES__parser___ReduceAction551(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction430;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction551;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction430(void)
+val_t NEW_parser___ReduceAction551(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction430;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction551;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction430(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction551[] = "check new ReduceAction551";
+void CHECKNEW_parser___ReduceAction551(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction430;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction551;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -125814,34 +158288,37 @@ void CHECKNEW_parser___ReduceAction430(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction430_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction551_parser___ReduceAction___init[] = "new ReduceAction551 parser::ReduceAction::init";
+val_t NEW_ReduceAction551_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction430_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction551_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction430();
-  INIT_ATTRIBUTES__parser___ReduceAction430(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction551();
+  INIT_ATTRIBUTES__parser___ReduceAction551(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction430(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction551(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction431[52] = {
-  {(bigint) 739 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction553[55] = {
+  {(bigint) 955 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction431" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction431 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction431 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 739 /* 5: ReduceAction431 < ReduceAction431: superclass typecheck marker */},
+  {(bigint) "ReduceAction553" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction553 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction553 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 955 /* 5: ReduceAction553 < ReduceAction553: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -125854,7 +158331,7 @@ const classtable_elt_t VFT_parser___ReduceAction431[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction431 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction553 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -125870,6 +158347,8 @@ const classtable_elt_t VFT_parser___ReduceAction431[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -125883,45 +158362,49 @@ const classtable_elt_t VFT_parser___ReduceAction431[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction431 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction431___action},
+  {(bigint) 0 /* 50: ReduceAction553 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction553___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction431 < ReduceAction431: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction553 < ReduceAction553: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction431::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction431(val_t p0){
+/* 2: Attribute ReduceAction553::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction553[] = "init var of ReduceAction553";
+void INIT_ATTRIBUTES__parser___ReduceAction553(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction431;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction553;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction431(void)
+val_t NEW_parser___ReduceAction553(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction431;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction553;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction431(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction553[] = "check new ReduceAction553";
+void CHECKNEW_parser___ReduceAction553(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction431;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction553;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -125931,34 +158414,37 @@ void CHECKNEW_parser___ReduceAction431(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction431_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction553_parser___ReduceAction___init[] = "new ReduceAction553 parser::ReduceAction::init";
+val_t NEW_ReduceAction553_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction431_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction553_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction431();
-  INIT_ATTRIBUTES__parser___ReduceAction431(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction553();
+  INIT_ATTRIBUTES__parser___ReduceAction553(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction431(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction553(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction688[52] = {
-  {(bigint) 627 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction554[55] = {
+  {(bigint) 951 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction688" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction688 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction688 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 627 /* 5: ReduceAction688 < ReduceAction688: superclass typecheck marker */},
+  {(bigint) "ReduceAction554" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction554 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction554 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 951 /* 5: ReduceAction554 < ReduceAction554: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -125971,7 +158457,7 @@ const classtable_elt_t VFT_parser___ReduceAction688[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction688 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction554 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -125987,6 +158473,8 @@ const classtable_elt_t VFT_parser___ReduceAction688[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -126000,45 +158488,49 @@ const classtable_elt_t VFT_parser___ReduceAction688[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction688 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction688___action},
+  {(bigint) 0 /* 50: ReduceAction554 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction554___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction688 < ReduceAction688: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction554 < ReduceAction554: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction688::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction688(val_t p0){
+/* 2: Attribute ReduceAction554::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction554[] = "init var of ReduceAction554";
+void INIT_ATTRIBUTES__parser___ReduceAction554(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction688;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction554;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction688(void)
+val_t NEW_parser___ReduceAction554(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction688;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction554;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction688(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction554[] = "check new ReduceAction554";
+void CHECKNEW_parser___ReduceAction554(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction688;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction554;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -126048,34 +158540,37 @@ void CHECKNEW_parser___ReduceAction688(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction688_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction554_parser___ReduceAction___init[] = "new ReduceAction554 parser::ReduceAction::init";
+val_t NEW_ReduceAction554_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction688_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction554_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction688();
-  INIT_ATTRIBUTES__parser___ReduceAction688(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction554();
+  INIT_ATTRIBUTES__parser___ReduceAction554(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction688(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction554(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction689[52] = {
-  {(bigint) 623 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction555[55] = {
+  {(bigint) 947 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction689" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction689 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction689 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 623 /* 5: ReduceAction689 < ReduceAction689: superclass typecheck marker */},
+  {(bigint) "ReduceAction555" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction555 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction555 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 947 /* 5: ReduceAction555 < ReduceAction555: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -126088,7 +158583,7 @@ const classtable_elt_t VFT_parser___ReduceAction689[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction689 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction555 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -126104,6 +158599,8 @@ const classtable_elt_t VFT_parser___ReduceAction689[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -126117,45 +158614,49 @@ const classtable_elt_t VFT_parser___ReduceAction689[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction689 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction689___action},
+  {(bigint) 0 /* 50: ReduceAction555 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction555___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction689 < ReduceAction689: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction555 < ReduceAction555: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction689::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction689(val_t p0){
+/* 2: Attribute ReduceAction555::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction555[] = "init var of ReduceAction555";
+void INIT_ATTRIBUTES__parser___ReduceAction555(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction689;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction555;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction689(void)
+val_t NEW_parser___ReduceAction555(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction689;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction555;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction689(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction555[] = "check new ReduceAction555";
+void CHECKNEW_parser___ReduceAction555(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction689;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction555;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -126165,34 +158666,37 @@ void CHECKNEW_parser___ReduceAction689(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction689_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction555_parser___ReduceAction___init[] = "new ReduceAction555 parser::ReduceAction::init";
+val_t NEW_ReduceAction555_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction689_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction555_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction689();
-  INIT_ATTRIBUTES__parser___ReduceAction689(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction555();
+  INIT_ATTRIBUTES__parser___ReduceAction555(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction689(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction555(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction690[52] = {
-  {(bigint) 615 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction556[55] = {
+  {(bigint) 943 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction690" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction690 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction690 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 615 /* 5: ReduceAction690 < ReduceAction690: superclass typecheck marker */},
+  {(bigint) "ReduceAction556" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction556 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction556 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 943 /* 5: ReduceAction556 < ReduceAction556: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -126205,7 +158709,7 @@ const classtable_elt_t VFT_parser___ReduceAction690[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction690 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction556 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -126221,6 +158725,8 @@ const classtable_elt_t VFT_parser___ReduceAction690[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -126234,45 +158740,49 @@ const classtable_elt_t VFT_parser___ReduceAction690[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction690 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction690___action},
+  {(bigint) 0 /* 50: ReduceAction556 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction556___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction690 < ReduceAction690: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction556 < ReduceAction556: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction690::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction690(val_t p0){
+/* 2: Attribute ReduceAction556::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction556[] = "init var of ReduceAction556";
+void INIT_ATTRIBUTES__parser___ReduceAction556(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction690;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction556;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction690(void)
+val_t NEW_parser___ReduceAction556(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction690;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction556;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction690(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction556[] = "check new ReduceAction556";
+void CHECKNEW_parser___ReduceAction556(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction690;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction556;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -126282,34 +158792,37 @@ void CHECKNEW_parser___ReduceAction690(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction690_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction556_parser___ReduceAction___init[] = "new ReduceAction556 parser::ReduceAction::init";
+val_t NEW_ReduceAction556_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction690_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction556_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction690();
-  INIT_ATTRIBUTES__parser___ReduceAction690(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction556();
+  INIT_ATTRIBUTES__parser___ReduceAction556(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction690(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction556(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction693[52] = {
-  {(bigint) 611 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction557[55] = {
+  {(bigint) 939 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction693" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction693 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction693 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 611 /* 5: ReduceAction693 < ReduceAction693: superclass typecheck marker */},
+  {(bigint) "ReduceAction557" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction557 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction557 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 939 /* 5: ReduceAction557 < ReduceAction557: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -126322,7 +158835,7 @@ const classtable_elt_t VFT_parser___ReduceAction693[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction693 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction557 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -126338,6 +158851,8 @@ const classtable_elt_t VFT_parser___ReduceAction693[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -126351,45 +158866,49 @@ const classtable_elt_t VFT_parser___ReduceAction693[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction693 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction693___action},
+  {(bigint) 0 /* 50: ReduceAction557 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction557___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction693 < ReduceAction693: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction557 < ReduceAction557: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction693::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction693(val_t p0){
+/* 2: Attribute ReduceAction557::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction557[] = "init var of ReduceAction557";
+void INIT_ATTRIBUTES__parser___ReduceAction557(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction693;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction557;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction693(void)
+val_t NEW_parser___ReduceAction557(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction693;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction557;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction693(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction557[] = "check new ReduceAction557";
+void CHECKNEW_parser___ReduceAction557(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction693;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction557;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -126399,34 +158918,37 @@ void CHECKNEW_parser___ReduceAction693(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction693_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction557_parser___ReduceAction___init[] = "new ReduceAction557 parser::ReduceAction::init";
+val_t NEW_ReduceAction557_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction693_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction557_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction693();
-  INIT_ATTRIBUTES__parser___ReduceAction693(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction557();
+  INIT_ATTRIBUTES__parser___ReduceAction557(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction693(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction557(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction706[52] = {
-  {(bigint) 599 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction564[55] = {
+  {(bigint) 931 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction706" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction706 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction706 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 599 /* 5: ReduceAction706 < ReduceAction706: superclass typecheck marker */},
+  {(bigint) "ReduceAction564" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction564 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction564 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 931 /* 5: ReduceAction564 < ReduceAction564: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -126439,7 +158961,7 @@ const classtable_elt_t VFT_parser___ReduceAction706[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction706 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction564 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -126455,6 +158977,8 @@ const classtable_elt_t VFT_parser___ReduceAction706[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -126468,45 +158992,49 @@ const classtable_elt_t VFT_parser___ReduceAction706[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction706 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction706___action},
+  {(bigint) 0 /* 50: ReduceAction564 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction564___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction706 < ReduceAction706: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction564 < ReduceAction564: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction706::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction706(val_t p0){
+/* 2: Attribute ReduceAction564::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction564[] = "init var of ReduceAction564";
+void INIT_ATTRIBUTES__parser___ReduceAction564(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction706;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction564;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction706(void)
+val_t NEW_parser___ReduceAction564(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction706;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction564;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction706(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction564[] = "check new ReduceAction564";
+void CHECKNEW_parser___ReduceAction564(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction706;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction564;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -126516,34 +159044,37 @@ void CHECKNEW_parser___ReduceAction706(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction706_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction564_parser___ReduceAction___init[] = "new ReduceAction564 parser::ReduceAction::init";
+val_t NEW_ReduceAction564_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction706_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction564_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction706();
-  INIT_ATTRIBUTES__parser___ReduceAction706(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction564();
+  INIT_ATTRIBUTES__parser___ReduceAction564(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction706(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction564(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction707[52] = {
-  {(bigint) 595 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction565[55] = {
+  {(bigint) 927 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction707" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction707 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction707 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 595 /* 5: ReduceAction707 < ReduceAction707: superclass typecheck marker */},
+  {(bigint) "ReduceAction565" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction565 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction565 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 927 /* 5: ReduceAction565 < ReduceAction565: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -126556,7 +159087,7 @@ const classtable_elt_t VFT_parser___ReduceAction707[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction707 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction565 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -126572,6 +159103,8 @@ const classtable_elt_t VFT_parser___ReduceAction707[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -126585,45 +159118,49 @@ const classtable_elt_t VFT_parser___ReduceAction707[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction707 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction707___action},
+  {(bigint) 0 /* 50: ReduceAction565 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction565___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction707 < ReduceAction707: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction565 < ReduceAction565: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction707::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction707(val_t p0){
+/* 2: Attribute ReduceAction565::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction565[] = "init var of ReduceAction565";
+void INIT_ATTRIBUTES__parser___ReduceAction565(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction707;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction565;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction707(void)
+val_t NEW_parser___ReduceAction565(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction707;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction565;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction707(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction565[] = "check new ReduceAction565";
+void CHECKNEW_parser___ReduceAction565(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction707;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction565;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -126633,34 +159170,37 @@ void CHECKNEW_parser___ReduceAction707(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction707_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction565_parser___ReduceAction___init[] = "new ReduceAction565 parser::ReduceAction::init";
+val_t NEW_ReduceAction565_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction707_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction565_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction707();
-  INIT_ATTRIBUTES__parser___ReduceAction707(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction565();
+  INIT_ATTRIBUTES__parser___ReduceAction565(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction707(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction565(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction714[52] = {
-  {(bigint) 587 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction566[55] = {
+  {(bigint) 923 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction714" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction714 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction714 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 587 /* 5: ReduceAction714 < ReduceAction714: superclass typecheck marker */},
+  {(bigint) "ReduceAction566" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction566 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction566 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 923 /* 5: ReduceAction566 < ReduceAction566: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -126673,7 +159213,7 @@ const classtable_elt_t VFT_parser___ReduceAction714[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction714 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction566 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -126689,6 +159229,8 @@ const classtable_elt_t VFT_parser___ReduceAction714[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -126702,45 +159244,49 @@ const classtable_elt_t VFT_parser___ReduceAction714[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction714 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction714___action},
+  {(bigint) 0 /* 50: ReduceAction566 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction566___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction714 < ReduceAction714: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction566 < ReduceAction566: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction714::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction714(val_t p0){
+/* 2: Attribute ReduceAction566::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction566[] = "init var of ReduceAction566";
+void INIT_ATTRIBUTES__parser___ReduceAction566(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction714;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction566;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction714(void)
+val_t NEW_parser___ReduceAction566(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction714;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction566;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction714(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction566[] = "check new ReduceAction566";
+void CHECKNEW_parser___ReduceAction566(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction714;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction566;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -126750,34 +159296,37 @@ void CHECKNEW_parser___ReduceAction714(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction714_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction566_parser___ReduceAction___init[] = "new ReduceAction566 parser::ReduceAction::init";
+val_t NEW_ReduceAction566_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction714_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction566_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction714();
-  INIT_ATTRIBUTES__parser___ReduceAction714(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction566();
+  INIT_ATTRIBUTES__parser___ReduceAction566(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction714(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction566(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction715[52] = {
-  {(bigint) 583 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction567[55] = {
+  {(bigint) 919 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction715" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction715 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction715 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 583 /* 5: ReduceAction715 < ReduceAction715: superclass typecheck marker */},
+  {(bigint) "ReduceAction567" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction567 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction567 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 919 /* 5: ReduceAction567 < ReduceAction567: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -126790,7 +159339,7 @@ const classtable_elt_t VFT_parser___ReduceAction715[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction715 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction567 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -126806,6 +159355,8 @@ const classtable_elt_t VFT_parser___ReduceAction715[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -126819,45 +159370,49 @@ const classtable_elt_t VFT_parser___ReduceAction715[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction715 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction715___action},
+  {(bigint) 0 /* 50: ReduceAction567 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction567___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction715 < ReduceAction715: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction567 < ReduceAction567: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction715::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction715(val_t p0){
+/* 2: Attribute ReduceAction567::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction567[] = "init var of ReduceAction567";
+void INIT_ATTRIBUTES__parser___ReduceAction567(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction715;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction567;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction715(void)
+val_t NEW_parser___ReduceAction567(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction715;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction567;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction715(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction567[] = "check new ReduceAction567";
+void CHECKNEW_parser___ReduceAction567(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction715;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction567;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -126867,34 +159422,37 @@ void CHECKNEW_parser___ReduceAction715(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction715_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction567_parser___ReduceAction___init[] = "new ReduceAction567 parser::ReduceAction::init";
+val_t NEW_ReduceAction567_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction715_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction567_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction715();
-  INIT_ATTRIBUTES__parser___ReduceAction715(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction567();
+  INIT_ATTRIBUTES__parser___ReduceAction567(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction715(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction567(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction716[52] = {
-  {(bigint) 579 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction568[55] = {
+  {(bigint) 915 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction716" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction716 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction716 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 579 /* 5: ReduceAction716 < ReduceAction716: superclass typecheck marker */},
+  {(bigint) "ReduceAction568" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction568 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction568 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 915 /* 5: ReduceAction568 < ReduceAction568: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -126907,7 +159465,7 @@ const classtable_elt_t VFT_parser___ReduceAction716[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction716 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction568 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -126923,6 +159481,8 @@ const classtable_elt_t VFT_parser___ReduceAction716[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -126936,45 +159496,49 @@ const classtable_elt_t VFT_parser___ReduceAction716[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction716 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction716___action},
+  {(bigint) 0 /* 50: ReduceAction568 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction568___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction716 < ReduceAction716: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction568 < ReduceAction568: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction716::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction716(val_t p0){
+/* 2: Attribute ReduceAction568::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction568[] = "init var of ReduceAction568";
+void INIT_ATTRIBUTES__parser___ReduceAction568(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction716;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction568;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction716(void)
+val_t NEW_parser___ReduceAction568(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction716;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction568;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction716(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction568[] = "check new ReduceAction568";
+void CHECKNEW_parser___ReduceAction568(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction716;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction568;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -126984,34 +159548,37 @@ void CHECKNEW_parser___ReduceAction716(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction716_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction568_parser___ReduceAction___init[] = "new ReduceAction568 parser::ReduceAction::init";
+val_t NEW_ReduceAction568_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction716_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction568_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction716();
-  INIT_ATTRIBUTES__parser___ReduceAction716(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction568();
+  INIT_ATTRIBUTES__parser___ReduceAction568(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction716(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction568(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction717[52] = {
-  {(bigint) 575 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction569[55] = {
+  {(bigint) 911 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction717" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction717 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction717 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 575 /* 5: ReduceAction717 < ReduceAction717: superclass typecheck marker */},
+  {(bigint) "ReduceAction569" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction569 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction569 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 911 /* 5: ReduceAction569 < ReduceAction569: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -127024,7 +159591,7 @@ const classtable_elt_t VFT_parser___ReduceAction717[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction717 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction569 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -127040,6 +159607,8 @@ const classtable_elt_t VFT_parser___ReduceAction717[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -127053,45 +159622,49 @@ const classtable_elt_t VFT_parser___ReduceAction717[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction717 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction717___action},
+  {(bigint) 0 /* 50: ReduceAction569 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction569___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction717 < ReduceAction717: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction569 < ReduceAction569: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction717::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction717(val_t p0){
+/* 2: Attribute ReduceAction569::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction569[] = "init var of ReduceAction569";
+void INIT_ATTRIBUTES__parser___ReduceAction569(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction717;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction569;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction717(void)
+val_t NEW_parser___ReduceAction569(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction717;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction569;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction717(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction569[] = "check new ReduceAction569";
+void CHECKNEW_parser___ReduceAction569(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction717;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction569;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -127101,34 +159674,37 @@ void CHECKNEW_parser___ReduceAction717(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction717_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction569_parser___ReduceAction___init[] = "new ReduceAction569 parser::ReduceAction::init";
+val_t NEW_ReduceAction569_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction717_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction569_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction717();
-  INIT_ATTRIBUTES__parser___ReduceAction717(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction569();
+  INIT_ATTRIBUTES__parser___ReduceAction569(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction717(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction569(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction718[52] = {
-  {(bigint) 571 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction570[55] = {
+  {(bigint) 903 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction718" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction718 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction718 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 571 /* 5: ReduceAction718 < ReduceAction718: superclass typecheck marker */},
+  {(bigint) "ReduceAction570" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction570 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction570 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 903 /* 5: ReduceAction570 < ReduceAction570: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -127141,7 +159717,7 @@ const classtable_elt_t VFT_parser___ReduceAction718[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction718 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction570 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -127157,6 +159733,8 @@ const classtable_elt_t VFT_parser___ReduceAction718[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -127170,45 +159748,49 @@ const classtable_elt_t VFT_parser___ReduceAction718[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction718 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction718___action},
+  {(bigint) 0 /* 50: ReduceAction570 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction570___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction718 < ReduceAction718: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction570 < ReduceAction570: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction718::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction718(val_t p0){
+/* 2: Attribute ReduceAction570::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction570[] = "init var of ReduceAction570";
+void INIT_ATTRIBUTES__parser___ReduceAction570(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction718;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction570;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction718(void)
+val_t NEW_parser___ReduceAction570(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction718;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction570;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction718(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction570[] = "check new ReduceAction570";
+void CHECKNEW_parser___ReduceAction570(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction718;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction570;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -127218,34 +159800,37 @@ void CHECKNEW_parser___ReduceAction718(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction718_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction570_parser___ReduceAction___init[] = "new ReduceAction570 parser::ReduceAction::init";
+val_t NEW_ReduceAction570_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction718_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction570_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction718();
-  INIT_ATTRIBUTES__parser___ReduceAction718(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction570();
+  INIT_ATTRIBUTES__parser___ReduceAction570(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction718(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction570(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction719[52] = {
-  {(bigint) 567 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction571[55] = {
+  {(bigint) 899 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction719" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction719 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction719 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 567 /* 5: ReduceAction719 < ReduceAction719: superclass typecheck marker */},
+  {(bigint) "ReduceAction571" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction571 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction571 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 899 /* 5: ReduceAction571 < ReduceAction571: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -127258,7 +159843,7 @@ const classtable_elt_t VFT_parser___ReduceAction719[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction719 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction571 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -127274,6 +159859,8 @@ const classtable_elt_t VFT_parser___ReduceAction719[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -127287,45 +159874,49 @@ const classtable_elt_t VFT_parser___ReduceAction719[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction719 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction719___action},
+  {(bigint) 0 /* 50: ReduceAction571 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction571___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction719 < ReduceAction719: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction571 < ReduceAction571: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction719::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction719(val_t p0){
+/* 2: Attribute ReduceAction571::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction571[] = "init var of ReduceAction571";
+void INIT_ATTRIBUTES__parser___ReduceAction571(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction719;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction571;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction719(void)
+val_t NEW_parser___ReduceAction571(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction719;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction571;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction719(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction571[] = "check new ReduceAction571";
+void CHECKNEW_parser___ReduceAction571(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction719;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction571;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -127335,34 +159926,37 @@ void CHECKNEW_parser___ReduceAction719(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction719_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction571_parser___ReduceAction___init[] = "new ReduceAction571 parser::ReduceAction::init";
+val_t NEW_ReduceAction571_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction719_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction571_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction719();
-  INIT_ATTRIBUTES__parser___ReduceAction719(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction571();
+  INIT_ATTRIBUTES__parser___ReduceAction571(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction719(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction571(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction720[52] = {
-  {(bigint) 559 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction572[55] = {
+  {(bigint) 895 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction720" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction720 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction720 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 559 /* 5: ReduceAction720 < ReduceAction720: superclass typecheck marker */},
+  {(bigint) "ReduceAction572" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction572 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction572 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 895 /* 5: ReduceAction572 < ReduceAction572: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -127375,7 +159969,7 @@ const classtable_elt_t VFT_parser___ReduceAction720[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction720 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction572 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -127391,6 +159985,8 @@ const classtable_elt_t VFT_parser___ReduceAction720[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -127404,45 +160000,49 @@ const classtable_elt_t VFT_parser___ReduceAction720[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction720 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction720___action},
+  {(bigint) 0 /* 50: ReduceAction572 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction572___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction720 < ReduceAction720: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction572 < ReduceAction572: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction720::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction720(val_t p0){
+/* 2: Attribute ReduceAction572::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction572[] = "init var of ReduceAction572";
+void INIT_ATTRIBUTES__parser___ReduceAction572(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction720;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction572;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction720(void)
+val_t NEW_parser___ReduceAction572(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction720;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction572;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction720(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction572[] = "check new ReduceAction572";
+void CHECKNEW_parser___ReduceAction572(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction720;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction572;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -127452,34 +160052,37 @@ void CHECKNEW_parser___ReduceAction720(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction720_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction572_parser___ReduceAction___init[] = "new ReduceAction572 parser::ReduceAction::init";
+val_t NEW_ReduceAction572_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction720_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction572_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction720();
-  INIT_ATTRIBUTES__parser___ReduceAction720(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction572();
+  INIT_ATTRIBUTES__parser___ReduceAction572(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction720(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction572(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction721[52] = {
-  {(bigint) 555 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction573[55] = {
+  {(bigint) 891 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction721" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction721 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction721 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 555 /* 5: ReduceAction721 < ReduceAction721: superclass typecheck marker */},
+  {(bigint) "ReduceAction573" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction573 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction573 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 891 /* 5: ReduceAction573 < ReduceAction573: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -127492,7 +160095,7 @@ const classtable_elt_t VFT_parser___ReduceAction721[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction721 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction573 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -127508,6 +160111,8 @@ const classtable_elt_t VFT_parser___ReduceAction721[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -127521,45 +160126,49 @@ const classtable_elt_t VFT_parser___ReduceAction721[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction721 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction721___action},
+  {(bigint) 0 /* 50: ReduceAction573 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction573___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction721 < ReduceAction721: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction573 < ReduceAction573: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction721::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction721(val_t p0){
+/* 2: Attribute ReduceAction573::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction573[] = "init var of ReduceAction573";
+void INIT_ATTRIBUTES__parser___ReduceAction573(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction721;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction573;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction721(void)
+val_t NEW_parser___ReduceAction573(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction721;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction573;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction721(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction573[] = "check new ReduceAction573";
+void CHECKNEW_parser___ReduceAction573(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction721;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction573;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -127569,34 +160178,37 @@ void CHECKNEW_parser___ReduceAction721(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction721_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction573_parser___ReduceAction___init[] = "new ReduceAction573 parser::ReduceAction::init";
+val_t NEW_ReduceAction573_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction721_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction573_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction721();
-  INIT_ATTRIBUTES__parser___ReduceAction721(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction573();
+  INIT_ATTRIBUTES__parser___ReduceAction573(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction721(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction573(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction724[52] = {
-  {(bigint) 551 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction574[55] = {
+  {(bigint) 887 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction724" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction724 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction724 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 551 /* 5: ReduceAction724 < ReduceAction724: superclass typecheck marker */},
+  {(bigint) "ReduceAction574" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction574 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction574 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 887 /* 5: ReduceAction574 < ReduceAction574: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -127609,7 +160221,7 @@ const classtable_elt_t VFT_parser___ReduceAction724[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction724 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction574 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -127625,6 +160237,8 @@ const classtable_elt_t VFT_parser___ReduceAction724[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -127638,45 +160252,49 @@ const classtable_elt_t VFT_parser___ReduceAction724[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction724 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction724___action},
+  {(bigint) 0 /* 50: ReduceAction574 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction574___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction724 < ReduceAction724: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction574 < ReduceAction574: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction724::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction724(val_t p0){
+/* 2: Attribute ReduceAction574::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction574[] = "init var of ReduceAction574";
+void INIT_ATTRIBUTES__parser___ReduceAction574(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction724;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction574;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction724(void)
+val_t NEW_parser___ReduceAction574(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction724;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction574;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction724(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction574[] = "check new ReduceAction574";
+void CHECKNEW_parser___ReduceAction574(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction724;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction574;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -127686,34 +160304,37 @@ void CHECKNEW_parser___ReduceAction724(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction724_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction574_parser___ReduceAction___init[] = "new ReduceAction574 parser::ReduceAction::init";
+val_t NEW_ReduceAction574_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction724_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction574_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction724();
-  INIT_ATTRIBUTES__parser___ReduceAction724(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction574();
+  INIT_ATTRIBUTES__parser___ReduceAction574(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction724(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction574(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction725[52] = {
-  {(bigint) 547 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction575[55] = {
+  {(bigint) 883 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction725" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction725 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction725 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 547 /* 5: ReduceAction725 < ReduceAction725: superclass typecheck marker */},
+  {(bigint) "ReduceAction575" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction575 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction575 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 883 /* 5: ReduceAction575 < ReduceAction575: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -127726,7 +160347,7 @@ const classtable_elt_t VFT_parser___ReduceAction725[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction725 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction575 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -127742,6 +160363,8 @@ const classtable_elt_t VFT_parser___ReduceAction725[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -127755,45 +160378,49 @@ const classtable_elt_t VFT_parser___ReduceAction725[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction725 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction725___action},
+  {(bigint) 0 /* 50: ReduceAction575 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction575___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction725 < ReduceAction725: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction575 < ReduceAction575: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction725::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction725(val_t p0){
+/* 2: Attribute ReduceAction575::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction575[] = "init var of ReduceAction575";
+void INIT_ATTRIBUTES__parser___ReduceAction575(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction725;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction575;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction725(void)
+val_t NEW_parser___ReduceAction575(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction725;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction575;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction725(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction575[] = "check new ReduceAction575";
+void CHECKNEW_parser___ReduceAction575(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction725;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction575;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -127803,34 +160430,37 @@ void CHECKNEW_parser___ReduceAction725(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction725_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction575_parser___ReduceAction___init[] = "new ReduceAction575 parser::ReduceAction::init";
+val_t NEW_ReduceAction575_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction725_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction575_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction725();
-  INIT_ATTRIBUTES__parser___ReduceAction725(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction575();
+  INIT_ATTRIBUTES__parser___ReduceAction575(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction725(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction575(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction726[52] = {
-  {(bigint) 543 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction576[55] = {
+  {(bigint) 879 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction726" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction726 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction726 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 543 /* 5: ReduceAction726 < ReduceAction726: superclass typecheck marker */},
+  {(bigint) "ReduceAction576" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction576 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction576 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 879 /* 5: ReduceAction576 < ReduceAction576: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -127843,7 +160473,7 @@ const classtable_elt_t VFT_parser___ReduceAction726[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction726 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction576 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -127859,6 +160489,8 @@ const classtable_elt_t VFT_parser___ReduceAction726[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -127872,45 +160504,49 @@ const classtable_elt_t VFT_parser___ReduceAction726[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction726 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction726___action},
+  {(bigint) 0 /* 50: ReduceAction576 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction576___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction726 < ReduceAction726: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction576 < ReduceAction576: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction726::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction726(val_t p0){
+/* 2: Attribute ReduceAction576::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction576[] = "init var of ReduceAction576";
+void INIT_ATTRIBUTES__parser___ReduceAction576(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction726;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction576;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction726(void)
+val_t NEW_parser___ReduceAction576(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction726;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction576;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction726(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction576[] = "check new ReduceAction576";
+void CHECKNEW_parser___ReduceAction576(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction726;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction576;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -127920,34 +160556,37 @@ void CHECKNEW_parser___ReduceAction726(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction726_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction576_parser___ReduceAction___init[] = "new ReduceAction576 parser::ReduceAction::init";
+val_t NEW_ReduceAction576_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction726_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction576_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction726();
-  INIT_ATTRIBUTES__parser___ReduceAction726(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction576();
+  INIT_ATTRIBUTES__parser___ReduceAction576(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction726(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction576(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction727[52] = {
-  {(bigint) 539 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction577[55] = {
+  {(bigint) 875 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction727" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction727 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction727 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 539 /* 5: ReduceAction727 < ReduceAction727: superclass typecheck marker */},
+  {(bigint) "ReduceAction577" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction577 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction577 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 875 /* 5: ReduceAction577 < ReduceAction577: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -127960,7 +160599,7 @@ const classtable_elt_t VFT_parser___ReduceAction727[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction727 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction577 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -127976,6 +160615,8 @@ const classtable_elt_t VFT_parser___ReduceAction727[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -127989,45 +160630,49 @@ const classtable_elt_t VFT_parser___ReduceAction727[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction727 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction727___action},
+  {(bigint) 0 /* 50: ReduceAction577 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction577___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction727 < ReduceAction727: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction577 < ReduceAction577: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction727::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction727(val_t p0){
+/* 2: Attribute ReduceAction577::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction577[] = "init var of ReduceAction577";
+void INIT_ATTRIBUTES__parser___ReduceAction577(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction727;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction577;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction727(void)
+val_t NEW_parser___ReduceAction577(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction727;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction577;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction727(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction577[] = "check new ReduceAction577";
+void CHECKNEW_parser___ReduceAction577(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction727;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction577;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -128037,34 +160682,37 @@ void CHECKNEW_parser___ReduceAction727(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction727_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction577_parser___ReduceAction___init[] = "new ReduceAction577 parser::ReduceAction::init";
+val_t NEW_ReduceAction577_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction727_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction577_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction727();
-  INIT_ATTRIBUTES__parser___ReduceAction727(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction577();
+  INIT_ATTRIBUTES__parser___ReduceAction577(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction727(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction577(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction728[52] = {
-  {(bigint) 535 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction578[55] = {
+  {(bigint) 871 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction728" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction728 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction728 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 535 /* 5: ReduceAction728 < ReduceAction728: superclass typecheck marker */},
+  {(bigint) "ReduceAction578" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction578 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction578 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 871 /* 5: ReduceAction578 < ReduceAction578: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -128077,7 +160725,7 @@ const classtable_elt_t VFT_parser___ReduceAction728[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction728 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction578 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -128093,6 +160741,8 @@ const classtable_elt_t VFT_parser___ReduceAction728[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -128106,45 +160756,49 @@ const classtable_elt_t VFT_parser___ReduceAction728[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction728 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction728___action},
+  {(bigint) 0 /* 50: ReduceAction578 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction578___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction728 < ReduceAction728: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction578 < ReduceAction578: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction728::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction728(val_t p0){
+/* 2: Attribute ReduceAction578::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction578[] = "init var of ReduceAction578";
+void INIT_ATTRIBUTES__parser___ReduceAction578(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction728;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction578;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction728(void)
+val_t NEW_parser___ReduceAction578(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction728;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction578;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction728(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction578[] = "check new ReduceAction578";
+void CHECKNEW_parser___ReduceAction578(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction728;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction578;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -128154,34 +160808,37 @@ void CHECKNEW_parser___ReduceAction728(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction728_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction578_parser___ReduceAction___init[] = "new ReduceAction578 parser::ReduceAction::init";
+val_t NEW_ReduceAction578_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction728_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction578_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction728();
-  INIT_ATTRIBUTES__parser___ReduceAction728(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction578();
+  INIT_ATTRIBUTES__parser___ReduceAction578(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction728(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction578(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction729[52] = {
-  {(bigint) 531 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction579[55] = {
+  {(bigint) 867 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction729" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction729 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction729 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 531 /* 5: ReduceAction729 < ReduceAction729: superclass typecheck marker */},
+  {(bigint) "ReduceAction579" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction579 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction579 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 867 /* 5: ReduceAction579 < ReduceAction579: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -128194,7 +160851,7 @@ const classtable_elt_t VFT_parser___ReduceAction729[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction729 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction579 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -128210,6 +160867,8 @@ const classtable_elt_t VFT_parser___ReduceAction729[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -128223,45 +160882,49 @@ const classtable_elt_t VFT_parser___ReduceAction729[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction729 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction729___action},
+  {(bigint) 0 /* 50: ReduceAction579 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction579___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction729 < ReduceAction729: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction579 < ReduceAction579: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction729::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction729(val_t p0){
+/* 2: Attribute ReduceAction579::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction579[] = "init var of ReduceAction579";
+void INIT_ATTRIBUTES__parser___ReduceAction579(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction729;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction579;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction729(void)
+val_t NEW_parser___ReduceAction579(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction729;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction579;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction729(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction579[] = "check new ReduceAction579";
+void CHECKNEW_parser___ReduceAction579(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction729;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction579;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -128271,34 +160934,37 @@ void CHECKNEW_parser___ReduceAction729(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction729_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction579_parser___ReduceAction___init[] = "new ReduceAction579 parser::ReduceAction::init";
+val_t NEW_ReduceAction579_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction729_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction579_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction729();
-  INIT_ATTRIBUTES__parser___ReduceAction729(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction579();
+  INIT_ATTRIBUTES__parser___ReduceAction579(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction729(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction579(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction730[52] = {
-  {(bigint) 523 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction580[55] = {
+  {(bigint) 859 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction730" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction730 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction730 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 523 /* 5: ReduceAction730 < ReduceAction730: superclass typecheck marker */},
+  {(bigint) "ReduceAction580" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction580 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction580 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 859 /* 5: ReduceAction580 < ReduceAction580: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -128311,7 +160977,7 @@ const classtable_elt_t VFT_parser___ReduceAction730[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction730 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction580 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -128327,6 +160993,8 @@ const classtable_elt_t VFT_parser___ReduceAction730[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -128340,45 +161008,49 @@ const classtable_elt_t VFT_parser___ReduceAction730[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction730 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction730___action},
+  {(bigint) 0 /* 50: ReduceAction580 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction580___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction730 < ReduceAction730: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction580 < ReduceAction580: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction730::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction730(val_t p0){
+/* 2: Attribute ReduceAction580::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction580[] = "init var of ReduceAction580";
+void INIT_ATTRIBUTES__parser___ReduceAction580(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction730;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction580;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction730(void)
+val_t NEW_parser___ReduceAction580(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction730;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction580;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction730(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction580[] = "check new ReduceAction580";
+void CHECKNEW_parser___ReduceAction580(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction730;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction580;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -128388,34 +161060,37 @@ void CHECKNEW_parser___ReduceAction730(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction730_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction580_parser___ReduceAction___init[] = "new ReduceAction580 parser::ReduceAction::init";
+val_t NEW_ReduceAction580_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction730_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction580_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction730();
-  INIT_ATTRIBUTES__parser___ReduceAction730(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction580();
+  INIT_ATTRIBUTES__parser___ReduceAction580(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction730(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction580(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction731[52] = {
-  {(bigint) 519 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction581[55] = {
+  {(bigint) 855 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction731" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction731 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction731 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 519 /* 5: ReduceAction731 < ReduceAction731: superclass typecheck marker */},
+  {(bigint) "ReduceAction581" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction581 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction581 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 855 /* 5: ReduceAction581 < ReduceAction581: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -128428,7 +161103,7 @@ const classtable_elt_t VFT_parser___ReduceAction731[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction731 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction581 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -128444,6 +161119,8 @@ const classtable_elt_t VFT_parser___ReduceAction731[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -128457,45 +161134,49 @@ const classtable_elt_t VFT_parser___ReduceAction731[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction731 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction731___action},
+  {(bigint) 0 /* 50: ReduceAction581 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction581___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction731 < ReduceAction731: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction581 < ReduceAction581: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction731::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction731(val_t p0){
+/* 2: Attribute ReduceAction581::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction581[] = "init var of ReduceAction581";
+void INIT_ATTRIBUTES__parser___ReduceAction581(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction731;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction581;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction731(void)
+val_t NEW_parser___ReduceAction581(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction731;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction581;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction731(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction581[] = "check new ReduceAction581";
+void CHECKNEW_parser___ReduceAction581(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction731;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction581;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -128505,34 +161186,37 @@ void CHECKNEW_parser___ReduceAction731(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction731_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction581_parser___ReduceAction___init[] = "new ReduceAction581 parser::ReduceAction::init";
+val_t NEW_ReduceAction581_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction731_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction581_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction731();
-  INIT_ATTRIBUTES__parser___ReduceAction731(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction581();
+  INIT_ATTRIBUTES__parser___ReduceAction581(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction731(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction581(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction733[52] = {
-  {(bigint) 515 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction582[55] = {
+  {(bigint) 851 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction733" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction733 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction733 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 515 /* 5: ReduceAction733 < ReduceAction733: superclass typecheck marker */},
+  {(bigint) "ReduceAction582" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction582 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction582 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 851 /* 5: ReduceAction582 < ReduceAction582: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -128545,7 +161229,7 @@ const classtable_elt_t VFT_parser___ReduceAction733[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction733 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction582 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -128561,6 +161245,8 @@ const classtable_elt_t VFT_parser___ReduceAction733[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -128574,45 +161260,49 @@ const classtable_elt_t VFT_parser___ReduceAction733[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction733 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction733___action},
+  {(bigint) 0 /* 50: ReduceAction582 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction582___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction733 < ReduceAction733: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction582 < ReduceAction582: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction733::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction733(val_t p0){
+/* 2: Attribute ReduceAction582::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction582[] = "init var of ReduceAction582";
+void INIT_ATTRIBUTES__parser___ReduceAction582(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction733;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction582;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction733(void)
+val_t NEW_parser___ReduceAction582(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction733;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction582;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction733(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction582[] = "check new ReduceAction582";
+void CHECKNEW_parser___ReduceAction582(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction733;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction582;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -128622,34 +161312,37 @@ void CHECKNEW_parser___ReduceAction733(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction733_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction582_parser___ReduceAction___init[] = "new ReduceAction582 parser::ReduceAction::init";
+val_t NEW_ReduceAction582_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction733_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction582_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction733();
-  INIT_ATTRIBUTES__parser___ReduceAction733(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction582();
+  INIT_ATTRIBUTES__parser___ReduceAction582(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction733(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction582(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction735[52] = {
-  {(bigint) 511 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction583[55] = {
+  {(bigint) 847 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction735" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction735 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction735 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 511 /* 5: ReduceAction735 < ReduceAction735: superclass typecheck marker */},
+  {(bigint) "ReduceAction583" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction583 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction583 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 847 /* 5: ReduceAction583 < ReduceAction583: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -128662,7 +161355,7 @@ const classtable_elt_t VFT_parser___ReduceAction735[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction735 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction583 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -128678,6 +161371,8 @@ const classtable_elt_t VFT_parser___ReduceAction735[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -128691,45 +161386,49 @@ const classtable_elt_t VFT_parser___ReduceAction735[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction735 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction735___action},
+  {(bigint) 0 /* 50: ReduceAction583 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction583___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction735 < ReduceAction735: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction583 < ReduceAction583: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction735::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction735(val_t p0){
+/* 2: Attribute ReduceAction583::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction583[] = "init var of ReduceAction583";
+void INIT_ATTRIBUTES__parser___ReduceAction583(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction735;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction583;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction735(void)
+val_t NEW_parser___ReduceAction583(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction735;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction583;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction735(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction583[] = "check new ReduceAction583";
+void CHECKNEW_parser___ReduceAction583(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction735;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction583;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -128739,34 +161438,37 @@ void CHECKNEW_parser___ReduceAction735(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction735_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction583_parser___ReduceAction___init[] = "new ReduceAction583 parser::ReduceAction::init";
+val_t NEW_ReduceAction583_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction735_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction583_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction735();
-  INIT_ATTRIBUTES__parser___ReduceAction735(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction583();
+  INIT_ATTRIBUTES__parser___ReduceAction583(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction735(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction583(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction736[52] = {
-  {(bigint) 507 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction584[55] = {
+  {(bigint) 843 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction736" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction736 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction736 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 507 /* 5: ReduceAction736 < ReduceAction736: superclass typecheck marker */},
+  {(bigint) "ReduceAction584" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction584 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction584 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 843 /* 5: ReduceAction584 < ReduceAction584: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -128779,7 +161481,7 @@ const classtable_elt_t VFT_parser___ReduceAction736[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction736 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction584 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -128795,6 +161497,8 @@ const classtable_elt_t VFT_parser___ReduceAction736[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -128808,45 +161512,49 @@ const classtable_elt_t VFT_parser___ReduceAction736[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction736 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction736___action},
+  {(bigint) 0 /* 50: ReduceAction584 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction584___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction736 < ReduceAction736: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction584 < ReduceAction584: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction736::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction736(val_t p0){
+/* 2: Attribute ReduceAction584::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction584[] = "init var of ReduceAction584";
+void INIT_ATTRIBUTES__parser___ReduceAction584(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction736;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction584;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction736(void)
+val_t NEW_parser___ReduceAction584(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction736;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction584;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction736(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction584[] = "check new ReduceAction584";
+void CHECKNEW_parser___ReduceAction584(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction736;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction584;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -128856,34 +161564,37 @@ void CHECKNEW_parser___ReduceAction736(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction736_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction584_parser___ReduceAction___init[] = "new ReduceAction584 parser::ReduceAction::init";
+val_t NEW_ReduceAction584_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction736_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction584_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction736();
-  INIT_ATTRIBUTES__parser___ReduceAction736(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction584();
+  INIT_ATTRIBUTES__parser___ReduceAction584(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction736(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction584(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction737[52] = {
-  {(bigint) 503 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction585[55] = {
+  {(bigint) 839 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction737" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction737 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction737 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 503 /* 5: ReduceAction737 < ReduceAction737: superclass typecheck marker */},
+  {(bigint) "ReduceAction585" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction585 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction585 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 839 /* 5: ReduceAction585 < ReduceAction585: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -128896,7 +161607,7 @@ const classtable_elt_t VFT_parser___ReduceAction737[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction737 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction585 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -128912,6 +161623,8 @@ const classtable_elt_t VFT_parser___ReduceAction737[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -128925,45 +161638,49 @@ const classtable_elt_t VFT_parser___ReduceAction737[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction737 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction737___action},
+  {(bigint) 0 /* 50: ReduceAction585 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction585___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction737 < ReduceAction737: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction585 < ReduceAction585: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction737::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction737(val_t p0){
+/* 2: Attribute ReduceAction585::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction585[] = "init var of ReduceAction585";
+void INIT_ATTRIBUTES__parser___ReduceAction585(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction737;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction585;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction737(void)
+val_t NEW_parser___ReduceAction585(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction737;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction585;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction737(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction585[] = "check new ReduceAction585";
+void CHECKNEW_parser___ReduceAction585(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction737;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction585;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -128973,34 +161690,37 @@ void CHECKNEW_parser___ReduceAction737(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction737_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction585_parser___ReduceAction___init[] = "new ReduceAction585 parser::ReduceAction::init";
+val_t NEW_ReduceAction585_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction737_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction585_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction737();
-  INIT_ATTRIBUTES__parser___ReduceAction737(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction585();
+  INIT_ATTRIBUTES__parser___ReduceAction585(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction737(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction585(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction741[52] = {
-  {(bigint) 495 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction586[55] = {
+  {(bigint) 835 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction741" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction741 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction741 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 495 /* 5: ReduceAction741 < ReduceAction741: superclass typecheck marker */},
+  {(bigint) "ReduceAction586" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction586 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction586 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 835 /* 5: ReduceAction586 < ReduceAction586: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -129013,7 +161733,7 @@ const classtable_elt_t VFT_parser___ReduceAction741[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction741 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction586 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -129029,6 +161749,8 @@ const classtable_elt_t VFT_parser___ReduceAction741[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -129042,45 +161764,49 @@ const classtable_elt_t VFT_parser___ReduceAction741[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction741 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction741___action},
+  {(bigint) 0 /* 50: ReduceAction586 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction586___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction741 < ReduceAction741: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction586 < ReduceAction586: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction741::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction741(val_t p0){
+/* 2: Attribute ReduceAction586::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction586[] = "init var of ReduceAction586";
+void INIT_ATTRIBUTES__parser___ReduceAction586(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction741;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction586;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction741(void)
+val_t NEW_parser___ReduceAction586(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction741;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction586;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction741(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction586[] = "check new ReduceAction586";
+void CHECKNEW_parser___ReduceAction586(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction741;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction586;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -129090,34 +161816,37 @@ void CHECKNEW_parser___ReduceAction741(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction741_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction586_parser___ReduceAction___init[] = "new ReduceAction586 parser::ReduceAction::init";
+val_t NEW_ReduceAction586_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction741_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction586_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction741();
-  INIT_ATTRIBUTES__parser___ReduceAction741(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction586();
+  INIT_ATTRIBUTES__parser___ReduceAction586(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction741(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction586(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction742[52] = {
-  {(bigint) 491 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction587[55] = {
+  {(bigint) 831 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction742" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction742 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction742 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 491 /* 5: ReduceAction742 < ReduceAction742: superclass typecheck marker */},
+  {(bigint) "ReduceAction587" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction587 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction587 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 831 /* 5: ReduceAction587 < ReduceAction587: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -129130,7 +161859,7 @@ const classtable_elt_t VFT_parser___ReduceAction742[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction742 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction587 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -129146,6 +161875,8 @@ const classtable_elt_t VFT_parser___ReduceAction742[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -129159,45 +161890,49 @@ const classtable_elt_t VFT_parser___ReduceAction742[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction742 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction742___action},
+  {(bigint) 0 /* 50: ReduceAction587 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction587___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction742 < ReduceAction742: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction587 < ReduceAction587: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction742::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction742(val_t p0){
+/* 2: Attribute ReduceAction587::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction587[] = "init var of ReduceAction587";
+void INIT_ATTRIBUTES__parser___ReduceAction587(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction742;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction587;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction742(void)
+val_t NEW_parser___ReduceAction587(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction742;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction587;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction742(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction587[] = "check new ReduceAction587";
+void CHECKNEW_parser___ReduceAction587(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction742;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction587;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -129207,34 +161942,37 @@ void CHECKNEW_parser___ReduceAction742(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction742_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction587_parser___ReduceAction___init[] = "new ReduceAction587 parser::ReduceAction::init";
+val_t NEW_ReduceAction587_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction742_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction587_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction742();
-  INIT_ATTRIBUTES__parser___ReduceAction742(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction587();
+  INIT_ATTRIBUTES__parser___ReduceAction587(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction742(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction587(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction743[52] = {
-  {(bigint) 487 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction589[55] = {
+  {(bigint) 827 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction743" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction743 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction743 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 487 /* 5: ReduceAction743 < ReduceAction743: superclass typecheck marker */},
+  {(bigint) "ReduceAction589" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction589 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction589 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 827 /* 5: ReduceAction589 < ReduceAction589: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -129247,7 +161985,7 @@ const classtable_elt_t VFT_parser___ReduceAction743[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction743 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction589 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -129263,6 +162001,8 @@ const classtable_elt_t VFT_parser___ReduceAction743[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -129276,45 +162016,49 @@ const classtable_elt_t VFT_parser___ReduceAction743[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction743 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction743___action},
+  {(bigint) 0 /* 50: ReduceAction589 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction589___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction743 < ReduceAction743: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction589 < ReduceAction589: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction743::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction743(val_t p0){
+/* 2: Attribute ReduceAction589::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction589[] = "init var of ReduceAction589";
+void INIT_ATTRIBUTES__parser___ReduceAction589(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction743;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction589;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction743(void)
+val_t NEW_parser___ReduceAction589(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction743;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction589;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction743(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction589[] = "check new ReduceAction589";
+void CHECKNEW_parser___ReduceAction589(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction743;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction589;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -129324,34 +162068,37 @@ void CHECKNEW_parser___ReduceAction743(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction743_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction589_parser___ReduceAction___init[] = "new ReduceAction589 parser::ReduceAction::init";
+val_t NEW_ReduceAction589_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction743_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction589_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction743();
-  INIT_ATTRIBUTES__parser___ReduceAction743(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction589();
+  INIT_ATTRIBUTES__parser___ReduceAction589(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction743(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction589(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction744[52] = {
-  {(bigint) 483 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction590[55] = {
+  {(bigint) 819 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction744" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction744 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction744 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 483 /* 5: ReduceAction744 < ReduceAction744: superclass typecheck marker */},
+  {(bigint) "ReduceAction590" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction590 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction590 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 819 /* 5: ReduceAction590 < ReduceAction590: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -129364,7 +162111,7 @@ const classtable_elt_t VFT_parser___ReduceAction744[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction744 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction590 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -129380,6 +162127,8 @@ const classtable_elt_t VFT_parser___ReduceAction744[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -129393,45 +162142,49 @@ const classtable_elt_t VFT_parser___ReduceAction744[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction744 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction744___action},
+  {(bigint) 0 /* 50: ReduceAction590 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction590___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction744 < ReduceAction744: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction590 < ReduceAction590: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction744::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction744(val_t p0){
+/* 2: Attribute ReduceAction590::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction590[] = "init var of ReduceAction590";
+void INIT_ATTRIBUTES__parser___ReduceAction590(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction744;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction590;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction744(void)
+val_t NEW_parser___ReduceAction590(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction744;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction590;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction744(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction590[] = "check new ReduceAction590";
+void CHECKNEW_parser___ReduceAction590(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction744;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction590;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -129441,34 +162194,37 @@ void CHECKNEW_parser___ReduceAction744(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction744_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction590_parser___ReduceAction___init[] = "new ReduceAction590 parser::ReduceAction::init";
+val_t NEW_ReduceAction590_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction744_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction590_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction744();
-  INIT_ATTRIBUTES__parser___ReduceAction744(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction590();
+  INIT_ATTRIBUTES__parser___ReduceAction590(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction744(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction590(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction745[52] = {
-  {(bigint) 479 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction591[55] = {
+  {(bigint) 815 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReduceAction745" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReduceAction745 < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 4: ReduceAction745 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 479 /* 5: ReduceAction745 < ReduceAction745: superclass typecheck marker */},
+  {(bigint) "ReduceAction591" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction591 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction591 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 815 /* 5: ReduceAction591 < ReduceAction591: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -129481,7 +162237,7 @@ const classtable_elt_t VFT_parser___ReduceAction745[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ReduceAction745 < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction591 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -129497,6 +162253,8 @@ const classtable_elt_t VFT_parser___ReduceAction745[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -129510,45 +162268,49 @@ const classtable_elt_t VFT_parser___ReduceAction745[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: ReduceAction745 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction745___action},
+  {(bigint) 0 /* 50: ReduceAction591 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction591___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 51: ReduceAction745 < ReduceAction745: superclass init_table position */},
+  {(bigint) 2 /* 54: ReduceAction591 < ReduceAction591: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReduceAction745::_goto */
-void INIT_ATTRIBUTES__parser___ReduceAction745(val_t p0){
+/* 2: Attribute ReduceAction591::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction591[] = "init var of ReduceAction591";
+void INIT_ATTRIBUTES__parser___ReduceAction591(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.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___ReduceAction745;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction591;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_parser___ReduceAction745(void)
+val_t NEW_parser___ReduceAction591(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction745;
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction591;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_parser___ReduceAction745(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction591[] = "check new ReduceAction591";
+void CHECKNEW_parser___ReduceAction591(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.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___ReduceAction745;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction591;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
@@ -129558,36 +162320,39 @@ void CHECKNEW_parser___ReduceAction745(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction745_parser___ReduceAction___init(val_t p0){
+static const char LOCATE_NEW_ReduceAction591_parser___ReduceAction___init[] = "new ReduceAction591 parser::ReduceAction::init";
+val_t NEW_ReduceAction591_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1010;
-  fra.me.meth = LOCATE_NEW_ReduceAction745_parser___ReduceAction___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction591_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1010 */
-  fra.me.REG[0] = NEW_parser___ReduceAction745();
-  INIT_ATTRIBUTES__parser___ReduceAction745(fra.me.REG[0]);
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction591();
+  INIT_ATTRIBUTES__parser___ReduceAction591(fra.me.REG[0]);
   parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_parser___ReduceAction745(fra.me.REG[0]);
+  CHECKNEW_parser___ReduceAction591(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_metamodel___partial_order___PartialOrder[89] = {
-  {(bigint) 2079 /* 0: Identity */},
-  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "PartialOrder" /* 2: Class Name */},
-  {(bigint) 3 /* 3: PartialOrder < Object: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction592[55] = {
+  {(bigint) 811 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction592" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction592 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction592 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 811 /* 5: ReduceAction592 < ReduceAction592: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 283 /* 6: PartialOrder < Collection: superclass typecheck marker */},
-  {(bigint) 2079 /* 7: PartialOrder < PartialOrder: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -129598,7 +162363,7 @@ const classtable_elt_t VFT_metamodel___partial_order___PartialOrder[89] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: PartialOrder < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction592 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -129614,7 +162379,9 @@ const classtable_elt_t VFT_metamodel___partial_order___PartialOrder[89] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Collection___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -129627,6 +162394,88 @@ const classtable_elt_t VFT_metamodel___partial_order___PartialOrder[89] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 50: ReduceAction592 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction592___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction592 < ReduceAction592: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ReduceAction592::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction592[] = "init var of ReduceAction592";
+void INIT_ATTRIBUTES__parser___ReduceAction592(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.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___ReduceAction592;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___ReduceAction592(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction592;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___ReduceAction592[] = "check new ReduceAction592";
+void CHECKNEW_parser___ReduceAction592(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.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___ReduceAction592;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_ReduceAction592_parser___ReduceAction___init[] = "new ReduceAction592 parser::ReduceAction::init";
+val_t NEW_ReduceAction592_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction592_parser___ReduceAction___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction592();
+  INIT_ATTRIBUTES__parser___ReduceAction592(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction592(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___ReduceAction593[55] = {
+  {(bigint) 807 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction593" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction593 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction593 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 807 /* 5: ReduceAction593 < ReduceAction593: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -129638,117 +162487,121 @@ const classtable_elt_t VFT_metamodel___partial_order___PartialOrder[89] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) standard___string___Collection___join},
-  {(bigint) standard___collection___array___Collection___to_a},
-  {(bigint) 0 /* 65: PartialOrder < Collection: superclass init_table position */},
-  {(bigint) metamodel___partial_order___PartialOrder___iterator},
-  {(bigint) standard___collection___abstract_collection___Collection___iterate},
-  {(bigint) metamodel___partial_order___PartialOrder___is_empty},
-  {(bigint) metamodel___partial_order___PartialOrder___length},
-  {(bigint) metamodel___partial_order___PartialOrder___has},
-  {(bigint) metamodel___partial_order___PartialOrder___has_only},
-  {(bigint) metamodel___partial_order___PartialOrder___count},
-  {(bigint) metamodel___partial_order___PartialOrder___first},
-  {(bigint) standard___math___Collection___rand},
-  {(bigint) 2 /* 75: PartialOrder < PartialOrder: superclass init_table position */},
-  {(bigint) metamodel___partial_order___PartialOrder___roots},
-  {(bigint) metamodel___partial_order___PartialOrder_____bra},
-  {(bigint) metamodel___partial_order___PartialOrder___to_dot},
-  {(bigint) metamodel___partial_order___PartialOrder___to_dot_header},
-  {(bigint) metamodel___partial_order___PartialOrder___to_dot_node},
-  {(bigint) metamodel___partial_order___PartialOrder___to_dot_edge},
-  {(bigint) metamodel___partial_order___PartialOrder___select_smallests},
-  {(bigint) metamodel___partial_order___PartialOrder___add},
-  {(bigint) metamodel___partial_order___PartialOrder___has_all},
-  {(bigint) metamodel___partial_order___PartialOrder___new_poe},
-  {(bigint) metamodel___partial_order___PartialOrder___add_to_smallests},
-  {(bigint) metamodel___partial_order___PartialOrder___compute_smallers_for},
-  {(bigint) metamodel___partial_order___PartialOrder___init},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction593 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 50: ReduceAction593 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction593___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction593 < ReduceAction593: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute PartialOrder::_elements */
-/* 3: Attribute PartialOrder::_elements_list */
-/* 4: Attribute PartialOrder::_roots */
-void INIT_ATTRIBUTES__metamodel___partial_order___PartialOrder(val_t p0){
+/* 2: Attribute ReduceAction593::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction593[] = "init var of ReduceAction593";
+void INIT_ATTRIBUTES__parser___ReduceAction593(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__metamodel___partial_order___PartialOrder;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction593;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_metamodel___partial_order___PartialOrder(void)
+val_t NEW_parser___ReduceAction593(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_metamodel___partial_order___PartialOrder;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction593;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_metamodel___partial_order___PartialOrder(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction593[] = "check new ReduceAction593";
+void CHECKNEW_parser___ReduceAction593(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_metamodel___partial_order___PartialOrder;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction593;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_metamodel___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_metamodel___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_metamodel___partial_order___PartialOrder____roots(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_roots", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_PartialOrder_metamodel___partial_order___PartialOrder___init(void){
+static const char LOCATE_NEW_ReduceAction593_parser___ReduceAction___init[] = "new ReduceAction593 parser::ReduceAction::init";
+val_t NEW_ReduceAction593_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
   int init_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_metamodel___partial_order___PartialOrder___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction593_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./metamodel//partial_order.nit:181 */
-  fra.me.REG[0] = NEW_metamodel___partial_order___PartialOrder();
-  INIT_ATTRIBUTES__metamodel___partial_order___PartialOrder(fra.me.REG[0]);
-  metamodel___partial_order___PartialOrder___init(fra.me.REG[0], init_table);
-  CHECKNEW_metamodel___partial_order___PartialOrder(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction593();
+  INIT_ATTRIBUTES__parser___ReduceAction593(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction593(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_metamodel___partial_order___PartialOrderElement[64] = {
-  {(bigint) 107 /* 0: Identity */},
-  {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "PartialOrderElement" /* 2: Class Name */},
-  {(bigint) 3 /* 3: PartialOrderElement < Object: superclass typecheck marker */},
-  {(bigint) 107 /* 4: PartialOrderElement < PartialOrderElement: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction594[55] = {
+  {(bigint) 803 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction594" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction594 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction594 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 803 /* 5: ReduceAction594 < ReduceAction594: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -129762,7 +162615,7 @@ const classtable_elt_t VFT_metamodel___partial_order___PartialOrderElement[64] =
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: PartialOrderElement < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction594 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -129778,6 +162631,8 @@ const classtable_elt_t VFT_metamodel___partial_order___PartialOrderElement[64] =
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -129791,148 +162646,88 @@ const classtable_elt_t VFT_metamodel___partial_order___PartialOrderElement[64] =
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: PartialOrderElement < PartialOrderElement: superclass init_table position */},
-  {(bigint) metamodel___partial_order___PartialOrderElement___order},
-  {(bigint) metamodel___partial_order___PartialOrderElement___value},
-  {(bigint) metamodel___partial_order___PartialOrderElement___rank},
-  {(bigint) metamodel___partial_order___PartialOrderElement___direct_greaters},
-  {(bigint) metamodel___partial_order___PartialOrderElement___direct_smallers},
-  {(bigint) metamodel___partial_order___PartialOrderElement___greaters},
-  {(bigint) metamodel___partial_order___PartialOrderElement___greaters_and_self},
-  {(bigint) metamodel___partial_order___PartialOrderElement___smallers},
-  {(bigint) metamodel___partial_order___PartialOrderElement___linear_extension},
-  {(bigint) metamodel___partial_order___PartialOrderElement___reverse_linear_extension},
-  {(bigint) metamodel___partial_order___PartialOrderElement_____l},
-  {(bigint) metamodel___partial_order___PartialOrderElement_____leq},
-  {(bigint) metamodel___partial_order___PartialOrderElement_____g},
-  {(bigint) metamodel___partial_order___PartialOrderElement_____geq},
-  {(bigint) metamodel___partial_order___PartialOrderElement___register_direct_smallers},
-  {(bigint) metamodel___partial_order___PartialOrderElement___init},
-};
-/* 0: Pointer to the classtable */
-/* 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__metamodel___partial_order___PartialOrderElement(val_t p0){
+  {(bigint) 0 /* 50: ReduceAction594 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction594___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction594 < ReduceAction594: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ReduceAction594::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction594[] = "init var of ReduceAction594";
+void INIT_ATTRIBUTES__parser___ReduceAction594(val_t p0){
   struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__metamodel___partial_order___PartialOrderElement;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction594;
   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_metamodel___partial_order___PartialOrderElement____smallers_last_length(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_metamodel___partial_order___PartialOrderElement(void)
+val_t NEW_parser___ReduceAction594(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 13);
-  obj->vft = (classtable_elt_t*)VFT_metamodel___partial_order___PartialOrderElement;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction594;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_metamodel___partial_order___PartialOrderElement(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction594[] = "check new ReduceAction594";
+void CHECKNEW_parser___ReduceAction594(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_metamodel___partial_order___PartialOrderElement;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction594;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___partial_order___PartialOrderElement____smallers_cache(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_smallers_cache", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_PartialOrderElement_metamodel___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;
+static const char LOCATE_NEW_ReduceAction594_parser___ReduceAction___init[] = "new ReduceAction594 parser::ReduceAction::init";
+val_t NEW_ReduceAction594_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[2] = {0, 0};
+  int init_table[3] = {0, 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_metamodel___partial_order___PartialOrderElement___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction594_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_metamodel___partial_order___PartialOrderElement();
-  INIT_ATTRIBUTES__metamodel___partial_order___PartialOrderElement(fra.me.REG[3]);
-  metamodel___partial_order___PartialOrderElement___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
-  CHECKNEW_metamodel___partial_order___PartialOrderElement(fra.me.REG[3]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction594();
+  INIT_ATTRIBUTES__parser___ReduceAction594(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction594(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[3];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_metamodel___abstractmetamodel___MMContext[56] = {
-  {(bigint) 187 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "MMContext" /* 2: Class Name */},
-  {(bigint) 3 /* 3: MMContext < Object: superclass typecheck marker */},
-  {(bigint) 187 /* 4: MMContext < MMContext: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction595[55] = {
+  {(bigint) 799 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction595" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction595 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction595 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 799 /* 5: ReduceAction595 < ReduceAction595: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -129946,7 +162741,7 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMContext[56] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: MMContext < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction595 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -129962,6 +162757,8 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMContext[56] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -129975,116 +162772,88 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMContext[56] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) metamodel___inheritance___MMContext___handle_property_conflict},
-  {(bigint) 1 /* 48: MMContext < MMContext: superclass init_table position */},
-  {(bigint) metamodel___abstractmetamodel___MMContext___init},
-  {(bigint) metamodel___abstractmetamodel___MMContext___module_hierarchy},
-  {(bigint) metamodel___abstractmetamodel___MMContext___class_hierarchy},
-  {(bigint) metamodel___abstractmetamodel___MMContext___modules},
-  {(bigint) metamodel___abstractmetamodel___MMContext___add_module},
-  {(bigint) metamodel___abstractmetamodel___MMContext___add_global_class},
-  {(bigint) metamodel___abstractmetamodel___MMContext___add_local_class},
+  {(bigint) 0 /* 50: ReduceAction595 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction595___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction595 < ReduceAction595: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__metamodel___abstractmetamodel___MMContext(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+/* 2: Attribute ReduceAction595::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction595[] = "init var of ReduceAction595";
+void INIT_ATTRIBUTES__parser___ReduceAction595(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMContext;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction595;
   fra.me.has_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_metamodel___partial_order___PartialOrder___init();
-  ATTR_metamodel___abstractmetamodel___MMContext____module_hierarchy(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//abstractmetamodel.nit:34 */
-  fra.me.REG[1] = NEW_PartialOrder_metamodel___partial_order___PartialOrder___init();
-  ATTR_metamodel___abstractmetamodel___MMContext____class_hierarchy(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//abstractmetamodel.nit:37 */
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-  ATTR_metamodel___abstractmetamodel___MMContext____global_classes(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//abstractmetamodel.nit:40 */
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-  ATTR_metamodel___abstractmetamodel___MMContext____modules(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_metamodel___abstractmetamodel___MMContext(void)
+val_t NEW_parser___ReduceAction595(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_metamodel___abstractmetamodel___MMContext;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction595;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_metamodel___abstractmetamodel___MMContext(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction595[] = "check new ReduceAction595";
+void CHECKNEW_parser___ReduceAction595(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_metamodel___abstractmetamodel___MMContext;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction595;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_metamodel___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_metamodel___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_metamodel___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_metamodel___abstractmetamodel___MMContext____modules(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_modules", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMContext_metamodel___abstractmetamodel___MMContext___init(void){
+static const char LOCATE_NEW_ReduceAction595_parser___ReduceAction___init[] = "new ReduceAction595 parser::ReduceAction::init";
+val_t NEW_ReduceAction595_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[2] = {0, 0};
+  int init_table[3] = {0, 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_metamodel___abstractmetamodel___MMContext___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction595_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./metamodel//abstractmetamodel.nit:27 */
-  fra.me.REG[0] = NEW_metamodel___abstractmetamodel___MMContext();
-  INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMContext(fra.me.REG[0]);
-  metamodel___abstractmetamodel___MMContext___init(fra.me.REG[0], init_table);
-  CHECKNEW_metamodel___abstractmetamodel___MMContext(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction595();
+  INIT_ATTRIBUTES__parser___ReduceAction595(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction595(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_metamodel___abstractmetamodel___MMDirectory[57] = {
-  {(bigint) 183 /* 0: Identity */},
-  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "MMDirectory" /* 2: Class Name */},
-  {(bigint) 3 /* 3: MMDirectory < Object: superclass typecheck marker */},
-  {(bigint) 183 /* 4: MMDirectory < MMDirectory: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction596[55] = {
+  {(bigint) 795 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction596" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction596 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction596 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 795 /* 5: ReduceAction596 < ReduceAction596: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -130098,7 +162867,7 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMDirectory[57] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: MMDirectory < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction596 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -130114,6 +162883,8 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMDirectory[57] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -130127,113 +162898,88 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMDirectory[57] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: MMDirectory < MMDirectory: superclass init_table position */},
-  {(bigint) metamodel___abstractmetamodel___MMDirectory___name},
-  {(bigint) metamodel___abstractmetamodel___MMDirectory___path},
-  {(bigint) metamodel___abstractmetamodel___MMDirectory___parent},
-  {(bigint) metamodel___abstractmetamodel___MMDirectory___owner},
-  {(bigint) metamodel___abstractmetamodel___MMDirectory___owner__eq},
-  {(bigint) metamodel___abstractmetamodel___MMDirectory___modules},
-  {(bigint) metamodel___abstractmetamodel___MMDirectory___add_module},
-  {(bigint) metamodel___abstractmetamodel___MMDirectory___init},
-  {(bigint) metamodel___abstractmetamodel___MMDirectory___full_name_for},
+  {(bigint) 0 /* 50: ReduceAction596 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction596___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction596 < ReduceAction596: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__metamodel___abstractmetamodel___MMDirectory(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+/* 2: Attribute ReduceAction596::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction596[] = "init var of ReduceAction596";
+void INIT_ATTRIBUTES__parser___ReduceAction596(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMDirectory;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction596;
   fra.me.has_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_metamodel___abstractmetamodel___MMDirectory____owner(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//abstractmetamodel.nit:88 */
-  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
-  ATTR_metamodel___abstractmetamodel___MMDirectory____modules(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_metamodel___abstractmetamodel___MMDirectory(void)
+val_t NEW_parser___ReduceAction596(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_metamodel___abstractmetamodel___MMDirectory;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction596;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_metamodel___abstractmetamodel___MMDirectory(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction596[] = "check new ReduceAction596";
+void CHECKNEW_parser___ReduceAction596(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_metamodel___abstractmetamodel___MMDirectory;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction596;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_metamodel___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_metamodel___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_metamodel___abstractmetamodel___MMDirectory____modules(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_modules", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMDirectory_metamodel___abstractmetamodel___MMDirectory___init(val_t p0, val_t p1, val_t p2){
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+static const char LOCATE_NEW_ReduceAction596_parser___ReduceAction___init[] = "new ReduceAction596 parser::ReduceAction::init";
+val_t NEW_ReduceAction596_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[2] = {0, 0};
+  int init_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_MMDirectory_metamodel___abstractmetamodel___MMDirectory___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction596_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_metamodel___abstractmetamodel___MMDirectory();
-  INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMDirectory(fra.me.REG[3]);
-  metamodel___abstractmetamodel___MMDirectory___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
-  CHECKNEW_metamodel___abstractmetamodel___MMDirectory(fra.me.REG[3]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction596();
+  INIT_ATTRIBUTES__parser___ReduceAction596(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction596(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[3];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_metamodel___abstractmetamodel___MMModule[85] = {
-  {(bigint) 155 /* 0: Identity */},
-  {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "MMModule" /* 2: Class Name */},
-  {(bigint) 3 /* 3: MMModule < Object: superclass typecheck marker */},
-  {(bigint) 155 /* 4: MMModule < MMModule: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction597[55] = {
+  {(bigint) 791 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction597" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction597 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction597 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 791 /* 5: ReduceAction597 < ReduceAction597: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -130247,7 +162993,7 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMModule[85] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: MMModule < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction597 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -130263,7 +163009,9 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMModule[85] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) metamodel___abstractmetamodel___MMModule___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -130276,260 +163024,88 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMModule[85] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) abstracttool___MMModule___dump_module_info},
-  {(bigint) syntax___syntax_base___MMModule___nodes},
-  {(bigint) syntax___syntax_base___MMModule___nodes__eq},
-  {(bigint) metamodel___inheritance___MMModule___type_any},
-  {(bigint) metamodel___inheritance___MMModule___type_any_extern},
-  {(bigint) metamodel___inheritance___MMModule___import_global_classes},
-  {(bigint) metamodel___inheritance___MMModule___import_local_classes},
-  {(bigint) metamodel___static_type___MMModule___type_none},
-  {(bigint) metamodel___static_type___MMModule___type_bool},
-  {(bigint) 1 /* 56: MMModule < MMModule: superclass init_table position */},
-  {(bigint) metamodel___abstractmetamodel___MMModule___context},
-  {(bigint) metamodel___abstractmetamodel___MMModule___name},
-  {(bigint) metamodel___abstractmetamodel___MMModule___full_name},
-  {(bigint) metamodel___abstractmetamodel___MMModule___directory},
-  {(bigint) metamodel___abstractmetamodel___MMModule___location},
-  {(bigint) metamodel___abstractmetamodel___MMModule___mhe},
-  {(bigint) metamodel___abstractmetamodel___MMModule___global_classes},
-  {(bigint) metamodel___abstractmetamodel___MMModule___local_classes},
-  {(bigint) metamodel___abstractmetamodel___MMModule___class_specialization_hierarchy},
-  {(bigint) metamodel___abstractmetamodel___MMModule___explicit_imported_modules},
-  {(bigint) metamodel___abstractmetamodel___MMModule___is_extern_hybrid},
-  {(bigint) metamodel___abstractmetamodel___MMModule___is_extern_hybrid__eq},
-  {(bigint) metamodel___abstractmetamodel___MMModule___init},
-  {(bigint) metamodel___abstractmetamodel___MMModule___add_super_module},
-  {(bigint) metamodel___abstractmetamodel___MMModule___visibility_for},
-  {(bigint) metamodel___abstractmetamodel___MMModule_____bra},
-  {(bigint) metamodel___abstractmetamodel___MMModule___class_by_name},
-  {(bigint) metamodel___abstractmetamodel___MMModule___has_global_class_named},
-  {(bigint) metamodel___abstractmetamodel___MMModule___global_class_named},
-  {(bigint) metamodel___abstractmetamodel___MMModule___set_supers_class},
-  {(bigint) metamodel___abstractmetamodel___MMModule___register_global_class},
-  {(bigint) compiling___MMModule___compile_separate_module},
-  {(bigint) compiling___compiling_global___MMModule___declare_class_tables_to_c},
-  {(bigint) compiling___compiling_global___MMModule___compile_mod_to_c},
-  {(bigint) compiling___compiling_global___MMModule___compile_local_table_to_c},
-  {(bigint) compiling___table_computation___MMModule___local_table},
-  {(bigint) compiling___table_computation___MMModule___local_analysis},
-  {(bigint) compiling___compiling_base___MMModule___cname},
+  {(bigint) 0 /* 50: ReduceAction597 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction597___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction597 < ReduceAction597: superclass init_table position */},
 };
 /* 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::@is_extern_hybrid */
-/* 19: Attribute MMModule::_local_table */
-/* 20: Attribute MMModule::_cname_cache */
-void INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMModule(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction597::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction597[] = "init var of ReduceAction597";
+void INIT_ATTRIBUTES__parser___ReduceAction597(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMModule;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction597;
   fra.me.has_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_standard___collection___hash_collection___HashSet___init();
-  ATTR_metamodel___abstractmetamodel___MMModule____global_classes(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//abstractmetamodel.nit:154 */
-  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
-  ATTR_metamodel___abstractmetamodel___MMModule____global_class_by_name(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//abstractmetamodel.nit:151 */
-  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
-  ATTR_metamodel___abstractmetamodel___MMModule____local_class_by_global(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//static_type.nit:534 */
-  fra.me.REG[1] = fra.me.REG[0];
-  /* ./metamodel//static_type.nit:535 */
-  fra.me.REG[1] = NEW_MMTypeNone_metamodel___static_type___MMTypeNone___init(fra.me.REG[1]);
-  ATTR_metamodel___static_type___MMModule____type_none(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//abstractmetamodel.nit:133 */
-  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
-  ATTR_metamodel___abstractmetamodel___MMModule____local_classes(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//abstractmetamodel.nit:136 */
-  fra.me.REG[1] = NEW_PartialOrder_metamodel___partial_order___PartialOrder___init();
-  ATTR_metamodel___abstractmetamodel___MMModule____class_specialization_hierarchy(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//abstractmetamodel.nit:139 */
-  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
-  ATTR_metamodel___abstractmetamodel___MMModule____intrude_modules(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//abstractmetamodel.nit:142 */
-  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
-  ATTR_metamodel___abstractmetamodel___MMModule____public_modules(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//abstractmetamodel.nit:145 */
-  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
-  ATTR_metamodel___abstractmetamodel___MMModule____private_modules(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//abstractmetamodel.nit:148 */
-  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
-  ATTR_metamodel___abstractmetamodel___MMModule____explicit_imported_modules(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//abstractmetamodel.nit:159 */
-  REGB0 = TAG_Bool(false);
-  ATTR_metamodel___abstractmetamodel___MMModule_____atis_extern_hybrid(fra.me.REG[0]) = REGB0;
-  /* ./compiling//table_computation.nit:398 */
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-  ATTR_compiling___table_computation___MMModule____local_table(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_metamodel___abstractmetamodel___MMModule(void)
+val_t NEW_parser___ReduceAction597(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 21);
-  obj->vft = (classtable_elt_t*)VFT_metamodel___abstractmetamodel___MMModule;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction597;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_metamodel___abstractmetamodel___MMModule(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction597[] = "check new ReduceAction597";
+void CHECKNEW_parser___ReduceAction597(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_metamodel___abstractmetamodel___MMModule;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction597;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___abstractmetamodel___MMModule_____atis_extern_hybrid(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "@is_extern_hybrid", LOCATE_nitc, 0);
-  }
-  REGB0 = TAG_Bool(ATTR_compiling___table_computation___MMModule____local_table(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_local_table", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMModule_metamodel___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;
+static const char LOCATE_NEW_ReduceAction597_parser___ReduceAction___init[] = "new ReduceAction597 parser::ReduceAction::init";
+val_t NEW_ReduceAction597_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[2] = {0, 0};
+  int init_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_MMModule_metamodel___abstractmetamodel___MMModule___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction597_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 5;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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:161 */
-  fra.me.REG[4] = NEW_metamodel___abstractmetamodel___MMModule();
-  INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMModule(fra.me.REG[4]);
-  metamodel___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_metamodel___abstractmetamodel___MMModule(fra.me.REG[4]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction597();
+  INIT_ATTRIBUTES__parser___ReduceAction597(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction597(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[4];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_metamodel___abstractmetamodel___MMGlobalClass[72] = {
-  {(bigint) 175 /* 0: Identity */},
-  {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "MMGlobalClass" /* 2: Class Name */},
-  {(bigint) 3 /* 3: MMGlobalClass < Object: superclass typecheck marker */},
-  {(bigint) 175 /* 4: MMGlobalClass < MMGlobalClass: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction598[55] = {
+  {(bigint) 787 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction598" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction598 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction598 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 787 /* 5: ReduceAction598 < ReduceAction598: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -130543,7 +163119,7 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMGlobalClass[72] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: MMGlobalClass < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction598 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -130559,7 +163135,9 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMGlobalClass[72] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) metamodel___abstractmetamodel___MMGlobalClass___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -130572,169 +163150,88 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMGlobalClass[72] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___syntax_base___MMGlobalClass___check_visibility},
-  {(bigint) 1 /* 48: MMGlobalClass < MMGlobalClass: superclass init_table position */},
-  {(bigint) metamodel___abstractmetamodel___MMGlobalClass___intro},
-  {(bigint) metamodel___abstractmetamodel___MMGlobalClass___class_refinement_hierarchy},
-  {(bigint) metamodel___abstractmetamodel___MMGlobalClass___init},
-  {(bigint) metamodel___abstractmetamodel___MMGlobalClass___name},
-  {(bigint) metamodel___abstractmetamodel___MMGlobalClass___mmmodule},
-  {(bigint) metamodel___abstractmetamodel___MMGlobalClass___register_local_class},
-  {(bigint) metamodel___abstractmetamodel___MMGlobalClass___is_interface},
-  {(bigint) metamodel___abstractmetamodel___MMGlobalClass___is_interface__eq},
-  {(bigint) metamodel___abstractmetamodel___MMGlobalClass___is_abstract},
-  {(bigint) metamodel___abstractmetamodel___MMGlobalClass___is_abstract__eq},
-  {(bigint) metamodel___abstractmetamodel___MMGlobalClass___is_enum},
-  {(bigint) metamodel___abstractmetamodel___MMGlobalClass___is_enum__eq},
-  {(bigint) metamodel___abstractmetamodel___MMGlobalClass___is_extern},
-  {(bigint) metamodel___abstractmetamodel___MMGlobalClass___is_extern__eq},
-  {(bigint) metamodel___abstractmetamodel___MMGlobalClass___visibility_level},
-  {(bigint) metamodel___abstractmetamodel___MMGlobalClass___visibility_level__eq},
-  {(bigint) metamodel___abstractmetamodel___MMGlobalClass___is_mixin},
-  {(bigint) metamodel___abstractmetamodel___MMGlobalClass___mixin_of},
-  {(bigint) metamodel___abstractmetamodel___MMGlobalClass___mixin_of__eq},
-  {(bigint) compiling___compiling_base___MMGlobalClass___cname},
-  {(bigint) compiling___compiling_base___MMGlobalClass___id_id},
-  {(bigint) compiling___compiling_base___MMGlobalClass___color_id},
-  {(bigint) compiling___compiling_base___MMGlobalClass___init_table_pos_id},
+  {(bigint) 0 /* 50: ReduceAction598 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction598___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction598 < ReduceAction598: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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::_is_extern */
-/* 8: Attribute MMGlobalClass::_visibility_level */
-/* 9: Attribute MMGlobalClass::_mixin_of */
-/* 10: Attribute MMGlobalClass::_cname_cache */
-void INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMGlobalClass(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction598::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction598[] = "init var of ReduceAction598";
+void INIT_ATTRIBUTES__parser___ReduceAction598(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMGlobalClass;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction598;
   fra.me.has_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:263 */
-  fra.me.REG[1] = NEW_PartialOrder_metamodel___partial_order___PartialOrder___init();
-  ATTR_metamodel___abstractmetamodel___MMGlobalClass____class_refinement_hierarchy(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//abstractmetamodel.nit:302 */
-  REGB0 = TAG_Bool(false);
-  ATTR_metamodel___abstractmetamodel___MMGlobalClass____is_interface(fra.me.REG[0]) = REGB0;
-  /* ./metamodel//abstractmetamodel.nit:305 */
-  REGB0 = TAG_Bool(false);
-  ATTR_metamodel___abstractmetamodel___MMGlobalClass____is_abstract(fra.me.REG[0]) = REGB0;
-  /* ./metamodel//abstractmetamodel.nit:308 */
-  REGB0 = TAG_Bool(false);
-  ATTR_metamodel___abstractmetamodel___MMGlobalClass____is_enum(fra.me.REG[0]) = REGB0;
-  /* ./metamodel//abstractmetamodel.nit:311 */
-  REGB0 = TAG_Bool(false);
-  ATTR_metamodel___abstractmetamodel___MMGlobalClass____is_extern(fra.me.REG[0]) = REGB0;
-  /* ./metamodel//abstractmetamodel.nit:316 */
-  REGB0 = TAG_Int(1);
-  ATTR_metamodel___abstractmetamodel___MMGlobalClass____visibility_level(fra.me.REG[0]) = REGB0;
-  /* ./metamodel//abstractmetamodel.nit:325 */
-  fra.me.REG[1] = fra.me.REG[0];
-  ATTR_metamodel___abstractmetamodel___MMGlobalClass____mixin_of(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_metamodel___abstractmetamodel___MMGlobalClass(void)
+val_t NEW_parser___ReduceAction598(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 11);
-  obj->vft = (classtable_elt_t*)VFT_metamodel___abstractmetamodel___MMGlobalClass;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction598;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_metamodel___abstractmetamodel___MMGlobalClass(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction598[] = "check new ReduceAction598";
+void CHECKNEW_parser___ReduceAction598(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_metamodel___abstractmetamodel___MMGlobalClass;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction598;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___abstractmetamodel___MMGlobalClass____is_extern(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_is_extern", LOCATE_nitc, 0);
-  }
-  REGB0 = TAG_Bool(ATTR_metamodel___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_metamodel___abstractmetamodel___MMGlobalClass____mixin_of(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_mixin_of", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMGlobalClass_metamodel___abstractmetamodel___MMGlobalClass___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ReduceAction598_parser___ReduceAction___init[] = "new ReduceAction598 parser::ReduceAction::init";
+val_t NEW_ReduceAction598_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[2] = {0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 265;
-  fra.me.meth = LOCATE_NEW_MMGlobalClass_metamodel___abstractmetamodel___MMGlobalClass___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction598_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./metamodel//abstractmetamodel.nit:265 */
-  fra.me.REG[1] = NEW_metamodel___abstractmetamodel___MMGlobalClass();
-  INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMGlobalClass(fra.me.REG[1]);
-  metamodel___abstractmetamodel___MMGlobalClass___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_metamodel___abstractmetamodel___MMGlobalClass(fra.me.REG[1]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction598();
+  INIT_ATTRIBUTES__parser___ReduceAction598(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction598(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_metamodel___abstractmetamodel___MMLocalClass[117] = {
-  {(bigint) 163 /* 0: Identity */},
-  {(bigint) 25 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "MMLocalClass" /* 2: Class Name */},
-  {(bigint) 3 /* 3: MMLocalClass < Object: superclass typecheck marker */},
-  {(bigint) 163 /* 4: MMLocalClass < MMLocalClass: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction600[55] = {
+  {(bigint) 775 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction600" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction600 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction600 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 775 /* 5: ReduceAction600 < ReduceAction600: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -130748,7 +163245,7 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMLocalClass[117] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: MMLocalClass < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction600 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -130764,7 +163261,9 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMLocalClass[117] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -130777,283 +163276,88 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMLocalClass[117] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) abstracttool___MMLocalClass___dump_properties},
-  {(bigint) syntax___mmbuilder___MMLocalClass___accept_class_visitor},
-  {(bigint) syntax___mmbuilder___MMLocalClass___accept_properties_visitor},
-  {(bigint) primitive_info___MMLocalClass___primitive_info},
-  {(bigint) primitive_info___MMLocalClass___primitive_ctypes},
-  {(bigint) metamodel___genericity___MMLocalClass___get_formal},
-  {(bigint) metamodel___genericity___MMLocalClass___register_formal},
-  {(bigint) metamodel___genericity___MMLocalClass___get_instantiate_type},
-  {(bigint) metamodel___genericity___MMLocalClass___formals_types},
-  {(bigint) metamodel___static_type___MMLocalClass___get_type},
-  {(bigint) metamodel___genericity___MMLocalClass___is_generic},
-  {(bigint) metamodel___inheritance___MMLocalClass___compute_super_classes},
-  {(bigint) metamodel___inheritance___MMLocalClass___compute_ancestors},
-  {(bigint) metamodel___inheritance___MMLocalClass___inherit_global_properties},
-  {(bigint) metamodel___inheritance___MMLocalClass___make_visible_an_inherited_global_property},
-  {(bigint) metamodel___inheritance___MMLocalClass___add_direct_parent},
-  {(bigint) metamodel___inheritance___MMLocalClass___computed_super_classes},
-  {(bigint) metamodel___inheritance___MMLocalClass___computed_ancestors},
-  {(bigint) metamodel___inheritance___MMLocalClass___ancestor_for},
-  {(bigint) metamodel___inheritance___MMLocalClass___add_default_any_class},
-  {(bigint) metamodel___inheritance___MMLocalClass___add_super_classes},
-  {(bigint) metamodel___inheritance___MMLocalClass___add_explicit_classes},
-  {(bigint) metamodel___inheritance___MMLocalClass___compute_super_parents},
-  {(bigint) metamodel___inheritance___MMLocalClass___build_ancestors},
-  {(bigint) metamodel___inheritance___MMLocalClass___group_ancestors},
-  {(bigint) metamodel___inheritance___MMLocalClass___merge_ancestors},
-  {(bigint) metamodel___inheritance___MMLocalClass___inherit_local_property},
-  {(bigint) metamodel___genericity___MMLocalClass___get_type},
-  {(bigint) metamodel___static_type___MMLocalClass___add_ancestor},
-  {(bigint) metamodel___static_type___MMLocalClass___ancestors},
-  {(bigint) metamodel___static_type___MMLocalClass___ancestor},
-  {(bigint) 1 /* 78: MMLocalClass < MMLocalClass: superclass init_table position */},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___name},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___arity},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___mmmodule},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___global},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___crhe},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___cshe},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___che},
-  {(bigint) metamodel___inheritance___MMLocalClass___global_properties},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___local_local_properties},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___init},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___for_module},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___new_global},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___set_global},
-  {(bigint) metamodel___inheritance___MMLocalClass___has_global_property_by_name},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___get_property_by_name},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___attribute},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___method},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___select_method},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___select_attribute},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___super_methods_named},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___register_local_property},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___register_global_property},
-  {(bigint) metamodel___inheritance___MMLocalClass___has_global_property},
-  {(bigint) metamodel___inheritance___MMLocalClass_____bra},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___context},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___total_order_compare},
-  {(bigint) metamodel___virtualtype___MMLocalClass___virtual_type},
-  {(bigint) metamodel___virtualtype___MMLocalClass___select_virtual_type},
-  {(bigint) native_interface___frontier___MMLocalClass___compile_defaut_extern_type},
-  {(bigint) compiling___icode_generator___MMLocalClass___generate_icode_file},
-  {(bigint) compiling___compiling_base___MMLocalClass___cname},
-  {(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___compiling_global___MMLocalClass___declare_tables_to_c},
-  {(bigint) compiling___compiling_global___MMLocalClass___compile_tables_to_c},
+  {(bigint) 0 /* 50: ReduceAction600 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction600___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction600 < ReduceAction600: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute MMLocalClass::_primitive_info_cache */
-/* 3: Attribute MMLocalClass::_primitive_info_b */
-/* 4: Attribute MMLocalClass::_types */
-/* 5: Attribute MMLocalClass::_formals_types */
-/* 6: Attribute MMLocalClass::_direct_parents */
-/* 7: Attribute MMLocalClass::_computing_super */
-/* 8: Attribute MMLocalClass::_are_global_properties_inherited */
-/* 9: Attribute MMLocalClass::_base_type_cache */
-/* 10: Attribute MMLocalClass::_ancestors */
-/* 11: Attribute MMLocalClass::_name */
-/* 12: Attribute MMLocalClass::_arity */
-/* 13: Attribute MMLocalClass::_mmmodule */
-/* 14: Attribute MMLocalClass::_global */
-/* 15: Attribute MMLocalClass::_crhe */
-/* 16: Attribute MMLocalClass::_cshe */
-/* 17: Attribute MMLocalClass::_che */
-/* 18: Attribute MMLocalClass::_local_property_by_global */
-/* 19: Attribute MMLocalClass::_global_properties */
-/* 20: Attribute MMLocalClass::_local_local_properties */
-/* 21: Attribute MMLocalClass::_properties_by_name */
-/* 22: Attribute MMLocalClass::_init_var_iroutine */
-/* 23: Attribute MMLocalClass::_checknew_iroutine */
-/* 24: Attribute MMLocalClass::_new_instance_iroutine */
-void INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMLocalClass(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction600::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction600[] = "init var of ReduceAction600";
+void INIT_ATTRIBUTES__parser___ReduceAction600(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMLocalClass;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction600;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./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_standard___collection___array___Array___init();
-  ATTR_metamodel___genericity___MMLocalClass____types(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//genericity.nit:55 */
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-  ATTR_metamodel___genericity___MMLocalClass____formals_types(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//inheritance.nit:82 */
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-  ATTR_metamodel___inheritance___MMLocalClass____direct_parents(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//inheritance.nit:86 */
-  REGB0 = TAG_Bool(false);
-  ATTR_metamodel___inheritance___MMLocalClass____computing_super(fra.me.REG[0]) = REGB0;
-  /* ./metamodel//inheritance.nit:133 */
-  REGB0 = TAG_Bool(false);
-  ATTR_metamodel___inheritance___MMLocalClass____are_global_properties_inherited(fra.me.REG[0]) = REGB0;
-  /* ./metamodel//abstractmetamodel.nit:361 */
-  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
-  ATTR_metamodel___abstractmetamodel___MMLocalClass____local_property_by_global(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//abstractmetamodel.nit:364 */
-  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
-  ATTR_metamodel___abstractmetamodel___MMLocalClass____global_properties(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//abstractmetamodel.nit:367 */
-  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
-  ATTR_metamodel___abstractmetamodel___MMLocalClass____local_local_properties(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//abstractmetamodel.nit:370 */
-  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
-  ATTR_metamodel___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_standard___collection___hash_collection___HashMap___init();
-  ATTR_program___MMLocalClass____new_instance_iroutine(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_metamodel___abstractmetamodel___MMLocalClass(void)
+val_t NEW_parser___ReduceAction600(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 25);
-  obj->vft = (classtable_elt_t*)VFT_metamodel___abstractmetamodel___MMLocalClass;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction600;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_metamodel___abstractmetamodel___MMLocalClass(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction600[] = "check new ReduceAction600";
+void CHECKNEW_parser___ReduceAction600(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_metamodel___abstractmetamodel___MMLocalClass;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction600;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_new_instance_iroutine", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMLocalClass_metamodel___abstractmetamodel___MMLocalClass___init(val_t p0, val_t p1, val_t p2){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_ReduceAction600_parser___ReduceAction___init[] = "new ReduceAction600 parser::ReduceAction::init";
+val_t NEW_ReduceAction600_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
-  int init_table[2] = {0, 0};
+  int init_table[3] = {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_MMLocalClass_metamodel___abstractmetamodel___MMLocalClass___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction600_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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:372 */
-  fra.me.REG[2] = NEW_metamodel___abstractmetamodel___MMLocalClass();
-  INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMLocalClass(fra.me.REG[2]);
-  metamodel___abstractmetamodel___MMLocalClass___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], REGB0, init_table);
-  CHECKNEW_metamodel___abstractmetamodel___MMLocalClass(fra.me.REG[2]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction600();
+  INIT_ATTRIBUTES__parser___ReduceAction600(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction600(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_metamodel___abstractmetamodel___MMGlobalProperty[66] = {
-  {(bigint) 171 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "MMGlobalProperty" /* 2: Class Name */},
-  {(bigint) 3 /* 3: MMGlobalProperty < Object: superclass typecheck marker */},
-  {(bigint) 171 /* 4: MMGlobalProperty < MMGlobalProperty: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction601[55] = {
+  {(bigint) 771 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction601" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction601 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction601 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 771 /* 5: ReduceAction601 < ReduceAction601: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -131067,7 +163371,7 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMGlobalProperty[66]
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: MMGlobalProperty < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction601 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -131083,7 +163387,9 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMGlobalProperty[66]
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) metamodel___abstractmetamodel___MMGlobalProperty___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -131096,126 +163402,88 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMGlobalProperty[66]
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___syntax_base___MMGlobalProperty___check_visibility},
-  {(bigint) metamodel___virtualtype___MMGlobalProperty___is_virtual_type},
-  {(bigint) 1 /* 49: MMGlobalProperty < MMGlobalProperty: superclass init_table position */},
-  {(bigint) metamodel___abstractmetamodel___MMGlobalProperty___intro},
-  {(bigint) metamodel___abstractmetamodel___MMGlobalProperty___local_class},
-  {(bigint) metamodel___abstractmetamodel___MMGlobalProperty___property_hierarchy},
-  {(bigint) metamodel___abstractmetamodel___MMGlobalProperty___init},
-  {(bigint) metamodel___abstractmetamodel___MMGlobalProperty___add_local_property},
-  {(bigint) metamodel___abstractmetamodel___MMGlobalProperty___is_attribute},
-  {(bigint) metamodel___abstractmetamodel___MMGlobalProperty___is_method},
-  {(bigint) metamodel___abstractmetamodel___MMGlobalProperty___is_init},
-  {(bigint) metamodel___abstractmetamodel___MMGlobalProperty___is_init__eq},
-  {(bigint) metamodel___abstractmetamodel___MMGlobalProperty___is_init_for},
-  {(bigint) metamodel___abstractmetamodel___MMGlobalProperty___visibility_level},
-  {(bigint) metamodel___abstractmetamodel___MMGlobalProperty___visibility_level__eq},
-  {(bigint) compiling___compiling_base___MMGlobalProperty___meth_call},
-  {(bigint) compiling___compiling_base___MMGlobalProperty___attr_access},
-  {(bigint) compiling___compiling_base___MMGlobalProperty___vt_class_color},
-  {(bigint) compiling___compiling_base___MMGlobalProperty___vt_class_id},
+  {(bigint) 0 /* 50: ReduceAction601 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction601___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction601 < ReduceAction601: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__metamodel___abstractmetamodel___MMGlobalProperty(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction601::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction601[] = "init var of ReduceAction601";
+void INIT_ATTRIBUTES__parser___ReduceAction601(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMGlobalProperty;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction601;
   fra.me.has_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:554 */
-  fra.me.REG[1] = NEW_PartialOrder_metamodel___partial_order___PartialOrder___init();
-  ATTR_metamodel___abstractmetamodel___MMGlobalProperty____property_hierarchy(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//abstractmetamodel.nit:578 */
-  REGB0 = TAG_Bool(false);
-  ATTR_metamodel___abstractmetamodel___MMGlobalProperty____is_init(fra.me.REG[0]) = REGB0;
-  /* ./metamodel//abstractmetamodel.nit:593 */
-  REGB0 = TAG_Int(1);
-  ATTR_metamodel___abstractmetamodel___MMGlobalProperty____visibility_level(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_metamodel___abstractmetamodel___MMGlobalProperty(void)
+val_t NEW_parser___ReduceAction601(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_metamodel___abstractmetamodel___MMGlobalProperty;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction601;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_metamodel___abstractmetamodel___MMGlobalProperty(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction601[] = "check new ReduceAction601";
+void CHECKNEW_parser___ReduceAction601(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_metamodel___abstractmetamodel___MMGlobalProperty;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction601;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_metamodel___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_metamodel___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_metamodel___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_metamodel___abstractmetamodel___MMGlobalProperty____visibility_level(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_visibility_level", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMGlobalProperty_metamodel___abstractmetamodel___MMGlobalProperty___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ReduceAction601_parser___ReduceAction___init[] = "new ReduceAction601 parser::ReduceAction::init";
+val_t NEW_ReduceAction601_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[2] = {0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 556;
-  fra.me.meth = LOCATE_NEW_MMGlobalProperty_metamodel___abstractmetamodel___MMGlobalProperty___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction601_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./metamodel//abstractmetamodel.nit:556 */
-  fra.me.REG[1] = NEW_metamodel___abstractmetamodel___MMGlobalProperty();
-  INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMGlobalProperty(fra.me.REG[1]);
-  metamodel___abstractmetamodel___MMGlobalProperty___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_metamodel___abstractmetamodel___MMGlobalProperty(fra.me.REG[1]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction601();
+  INIT_ATTRIBUTES__parser___ReduceAction601(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction601(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_metamodel___abstractmetamodel___MMLocalProperty[69] = {
-  {(bigint) 159 /* 0: Identity */},
-  {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "MMLocalProperty" /* 2: Class Name */},
-  {(bigint) 3 /* 3: MMLocalProperty < Object: superclass typecheck marker */},
-  {(bigint) 159 /* 4: MMLocalProperty < MMLocalProperty: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction602[55] = {
+  {(bigint) 767 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction602" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction602 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction602 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 767 /* 5: ReduceAction602 < ReduceAction602: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -131229,7 +163497,7 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMLocalProperty[69] =
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: MMLocalProperty < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction602 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -131245,7 +163513,9 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMLocalProperty[69] =
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -131258,133 +163528,89 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMLocalProperty[69] =
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___MMLocalProperty___accept_property_visitor},
-  {(bigint) syntax___syntax_base___MMLocalProperty___node},
-  {(bigint) syntax___syntax_base___MMLocalProperty___is_init},
-  {(bigint) metamodel___inheritance___MMLocalProperty___inherit_global},
-  {(bigint) metamodel___static_type___MMLocalProperty___signature},
-  {(bigint) metamodel___static_type___MMLocalProperty___signature__eq},
-  {(bigint) metamodel___static_type___MMLocalProperty___signature_for},
-  {(bigint) 1 /* 54: MMLocalProperty < MMLocalProperty: superclass init_table position */},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___name},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___local_class},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___global},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___is_global_set},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___prhe},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___mmmodule},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___full_name},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___set_global},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___new_global},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___need_super},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___need_super__eq},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___init},
-  {(bigint) compiling___compiling_base___MMLocalProperty___cname},
-  {(bigint) compiling___compiling_base___MMLocalProperty___super_meth_call},
+  {(bigint) 0 /* 50: ReduceAction602 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction602___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction602 < ReduceAction602: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__metamodel___abstractmetamodel___MMLocalProperty(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction602::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction602[] = "init var of ReduceAction602";
+void INIT_ATTRIBUTES__parser___ReduceAction602(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMLocalProperty;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction602;
   fra.me.has_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_standard___collection___hash_collection___HashMap___init();
-  ATTR_metamodel___static_type___MMLocalProperty____signatures_cache(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//abstractmetamodel.nit:649 */
-  REGB0 = TAG_Bool(false);
-  ATTR_metamodel___abstractmetamodel___MMLocalProperty____need_super(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_metamodel___abstractmetamodel___MMLocalProperty(void)
+val_t NEW_parser___ReduceAction602(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 10);
-  obj->vft = (classtable_elt_t*)VFT_metamodel___abstractmetamodel___MMLocalProperty;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction602;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_metamodel___abstractmetamodel___MMLocalProperty(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction602[] = "check new ReduceAction602";
+void CHECKNEW_parser___ReduceAction602(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_metamodel___abstractmetamodel___MMLocalProperty;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction602;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_metamodel___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_metamodel___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_metamodel___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_metamodel___abstractmetamodel___MMLocalProperty____need_super(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_need_super", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMLocalProperty_metamodel___abstractmetamodel___MMLocalProperty___init(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_ReduceAction602_parser___ReduceAction___init[] = "new ReduceAction602 parser::ReduceAction::init";
+val_t NEW_ReduceAction602_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[2] = {0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 651;
-  fra.me.meth = LOCATE_NEW_MMLocalProperty_metamodel___abstractmetamodel___MMLocalProperty___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction602_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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:651 */
-  fra.me.REG[2] = NEW_metamodel___abstractmetamodel___MMLocalProperty();
-  INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMLocalProperty(fra.me.REG[2]);
-  metamodel___abstractmetamodel___MMLocalProperty___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_metamodel___abstractmetamodel___MMLocalProperty(fra.me.REG[2]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction602();
+  INIT_ATTRIBUTES__parser___ReduceAction602(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction602(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_metamodel___abstractmetamodel___MMAttribute[71] = {
-  {(bigint) 2195 /* 0: Identity */},
-  {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "MMAttribute" /* 2: Class Name */},
-  {(bigint) 3 /* 3: MMAttribute < Object: superclass typecheck marker */},
-  {(bigint) 159 /* 4: MMAttribute < MMLocalProperty: superclass typecheck marker */},
-  {(bigint) 2195 /* 5: MMAttribute < MMAttribute: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction603[55] = {
+  {(bigint) 763 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction603" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction603 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction603 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 763 /* 5: ReduceAction603 < ReduceAction603: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -131397,7 +163623,7 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMAttribute[71] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: MMAttribute < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction603 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -131413,7 +163639,9 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMAttribute[71] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -131426,134 +163654,88 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMAttribute[71] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___MMLocalProperty___accept_property_visitor},
-  {(bigint) syntax___syntax_base___MMLocalProperty___node},
-  {(bigint) syntax___syntax_base___MMLocalProperty___is_init},
-  {(bigint) metamodel___inheritance___MMLocalProperty___inherit_global},
-  {(bigint) metamodel___static_type___MMLocalProperty___signature},
-  {(bigint) metamodel___static_type___MMLocalProperty___signature__eq},
-  {(bigint) metamodel___static_type___MMLocalProperty___signature_for},
-  {(bigint) 1 /* 54: MMAttribute < MMLocalProperty: superclass init_table position */},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___name},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___local_class},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___global},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___is_global_set},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___prhe},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___mmmodule},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___full_name},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___set_global},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___new_global},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___need_super},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___need_super__eq},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___init},
-  {(bigint) compiling___compiling_base___MMLocalProperty___cname},
-  {(bigint) compiling___compiling_base___MMLocalProperty___super_meth_call},
-  {(bigint) icode___icode_base___MMAttribute___iroutine},
-  {(bigint) 2 /* 70: MMAttribute < MMAttribute: superclass init_table position */},
+  {(bigint) 0 /* 50: ReduceAction603 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction603___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction603 < ReduceAction603: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__metamodel___abstractmetamodel___MMAttribute(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction603::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction603[] = "init var of ReduceAction603";
+void INIT_ATTRIBUTES__parser___ReduceAction603(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMAttribute;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction603;
   fra.me.has_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:649 */
-  REGB0 = TAG_Bool(false);
-  ATTR_metamodel___abstractmetamodel___MMLocalProperty____need_super(fra.me.REG[0]) = REGB0;
-  /* ./metamodel//static_type.nit:56 */
-  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
-  ATTR_metamodel___static_type___MMLocalProperty____signatures_cache(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_metamodel___abstractmetamodel___MMAttribute(void)
+val_t NEW_parser___ReduceAction603(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 10);
-  obj->vft = (classtable_elt_t*)VFT_metamodel___abstractmetamodel___MMAttribute;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction603;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_metamodel___abstractmetamodel___MMAttribute(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction603[] = "check new ReduceAction603";
+void CHECKNEW_parser___ReduceAction603(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_metamodel___abstractmetamodel___MMAttribute;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction603;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_metamodel___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_metamodel___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_metamodel___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_metamodel___static_type___MMLocalProperty____signatures_cache(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_signatures_cache", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMAttribute_metamodel___abstractmetamodel___MMLocalProperty___init(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_ReduceAction603_parser___ReduceAction___init[] = "new ReduceAction603 parser::ReduceAction::init";
+val_t NEW_ReduceAction603_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 651;
-  fra.me.meth = LOCATE_NEW_MMAttribute_metamodel___abstractmetamodel___MMLocalProperty___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction603_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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:651 */
-  fra.me.REG[2] = NEW_metamodel___abstractmetamodel___MMAttribute();
-  INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMAttribute(fra.me.REG[2]);
-  metamodel___abstractmetamodel___MMLocalProperty___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_metamodel___abstractmetamodel___MMAttribute(fra.me.REG[2]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction603();
+  INIT_ATTRIBUTES__parser___ReduceAction603(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction603(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_metamodel___abstractmetamodel___MMExplicitImport[57] = {
-  {(bigint) 179 /* 0: Identity */},
-  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "MMExplicitImport" /* 2: Class Name */},
-  {(bigint) 3 /* 3: MMExplicitImport < Object: superclass typecheck marker */},
-  {(bigint) 179 /* 4: MMExplicitImport < MMExplicitImport: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction604[55] = {
+  {(bigint) 759 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction604" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction604 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction604 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 759 /* 5: ReduceAction604 < ReduceAction604: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -131567,10 +163749,10 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMExplicitImport[57]
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: MMExplicitImport < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction604 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) native_interface___frontier___MMExplicitImport_____eqeq},
+  {(bigint) standard___kernel___Object_____eqeq},
   {(bigint) standard___kernel___Object_____neq},
   {(bigint) standard___kernel___Object___output},
   {(bigint) standard___kernel___Object___output_class_name},
@@ -131583,114 +163765,104 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMExplicitImport[57]
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
-  {(bigint) native_interface___frontier___MMExplicitImport___hash},
+  {(bigint) standard___hash___Object___hash},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) native_interface___frontier___MMExplicitImport___compile_friendly_to_frontier},
-  {(bigint) metamodel___static_type___MMExplicitImport___signature},
-  {(bigint) metamodel___static_type___MMExplicitImport___signature__eq},
-  {(bigint) metamodel___abstractmetamodel___MMExplicitImport___init},
-  {(bigint) 1 /* 51: MMExplicitImport < MMExplicitImport: superclass init_table position */},
-  {(bigint) metamodel___abstractmetamodel___MMExplicitImport___local_class},
-  {(bigint) metamodel___abstractmetamodel___MMExplicitImport___local_class__eq},
-  {(bigint) metamodel___abstractmetamodel___MMExplicitImport___method},
-  {(bigint) metamodel___abstractmetamodel___MMExplicitImport___method__eq},
-  {(bigint) metamodel___static_type___MMExplicitImport___init},
+  {(bigint) 0 /* 50: ReduceAction604 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction604___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction604 < ReduceAction604: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute MMExplicitImport::@signature */
-/* 3: Attribute MMExplicitImport::@local_class */
-/* 4: Attribute MMExplicitImport::@method */
-void INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMExplicitImport(val_t p0){
+/* 2: Attribute ReduceAction604::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction604[] = "init var of ReduceAction604";
+void INIT_ATTRIBUTES__parser___ReduceAction604(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMExplicitImport;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction604;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_metamodel___abstractmetamodel___MMExplicitImport(void)
+val_t NEW_parser___ReduceAction604(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_metamodel___abstractmetamodel___MMExplicitImport;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction604;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_metamodel___abstractmetamodel___MMExplicitImport(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction604[] = "check new ReduceAction604";
+void CHECKNEW_parser___ReduceAction604(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_metamodel___abstractmetamodel___MMExplicitImport;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction604;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMExplicitImport_____atsignature(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "@signature", LOCATE_nitc, 0);
-  }
-  REGB0 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMExplicitImport_____atlocal_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_metamodel___abstractmetamodel___MMExplicitImport_____atmethod(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "@method", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMExplicitImport_metamodel___abstractmetamodel___MMExplicitImport___init(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_ReduceAction604_parser___ReduceAction___init[] = "new ReduceAction604 parser::ReduceAction::init";
+val_t NEW_ReduceAction604_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[2] = {0, 0};
+  int init_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_MMExplicitImport_metamodel___abstractmetamodel___MMExplicitImport___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction604_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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//static_type.nit:253 */
-  fra.me.REG[2] = NEW_metamodel___abstractmetamodel___MMExplicitImport();
-  INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMExplicitImport(fra.me.REG[2]);
-  metamodel___static_type___MMExplicitImport___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_metamodel___abstractmetamodel___MMExplicitImport(fra.me.REG[2]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction604();
+  INIT_ATTRIBUTES__parser___ReduceAction604(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction604(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_metamodel___abstractmetamodel___MMMethod[94] = {
-  {(bigint) 2179 /* 0: Identity */},
-  {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "MMMethod" /* 2: Class Name */},
-  {(bigint) 3 /* 3: MMMethod < Object: superclass typecheck marker */},
-  {(bigint) 159 /* 4: MMMethod < MMLocalProperty: superclass typecheck marker */},
-  {(bigint) 2179 /* 5: MMMethod < MMMethod: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction605[55] = {
+  {(bigint) 755 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction605" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction605 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction605 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 755 /* 5: ReduceAction605 < ReduceAction605: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -131703,7 +163875,7 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMMethod[94] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: MMMethod < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction605 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -131719,7 +163891,9 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMMethod[94] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -131732,158 +163906,89 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMMethod[94] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___MMLocalProperty___accept_property_visitor},
-  {(bigint) syntax___syntax_base___MMLocalProperty___node},
-  {(bigint) syntax___syntax_base___MMLocalProperty___is_init},
-  {(bigint) metamodel___inheritance___MMLocalProperty___inherit_global},
-  {(bigint) metamodel___static_type___MMLocalProperty___signature},
-  {(bigint) metamodel___static_type___MMLocalProperty___signature__eq},
-  {(bigint) metamodel___static_type___MMLocalProperty___signature_for},
-  {(bigint) 1 /* 54: MMMethod < MMLocalProperty: superclass init_table position */},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___name},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___local_class},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___global},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___is_global_set},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___prhe},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___mmmodule},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___full_name},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___set_global},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___new_global},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___need_super},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___need_super__eq},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___init},
-  {(bigint) compiling___compiling_base___MMLocalProperty___cname},
-  {(bigint) compiling___compiling_base___MMLocalProperty___super_meth_call},
-  {(bigint) native_interface___ni_metamodel___MMMethod___local_friendly_name_from},
-  {(bigint) native_interface___ni_metamodel___MMMethod___friendly_super_cname},
-  {(bigint) native_interface___ni_metamodel___MMMethod___local_friendly_super_name_from},
-  {(bigint) native_interface___ni_metamodel___MMMethod___friendly_cparams},
-  {(bigint) native_interface___ni_metamodel___MMMethod___csignature_with_suffix},
-  {(bigint) native_interface___ni_metamodel___MMMethod___csignature_with_name},
-  {(bigint) native_interface___ni_metamodel___MMMethod___friendly_csignature},
-  {(bigint) native_interface___ni_metamodel___MMMethod___frontier_csignature_from},
-  {(bigint) native_interface___ni_metamodel___MMMethod___friendly_super_csignature},
-  {(bigint) native_interface___ni_metamodel___MMMethod___frontier_super_csignature_from},
-  {(bigint) native_interface___ni_metamodel___MMMethod___impl_csignature},
-  {(bigint) native_interface___ni_metamodel___MMMethod___cparams},
-  {(bigint) native_interface___ni_metamodel___MMMethod___out_csignature},
-  {(bigint) compiling___icode_generator___MMMethod___generate_icode},
-  {(bigint) primitive_info___MMMethod___default_extern_name},
-  {(bigint) primitive_info___MMMethod___friendly_extern_name},
-  {(bigint) metamodel___static_type___MMMethod___explicit_casts},
-  {(bigint) 2 /* 86: MMMethod < MMMethod: superclass init_table position */},
-  {(bigint) metamodel___abstractmetamodel___MMMethod___is_intern},
-  {(bigint) metamodel___abstractmetamodel___MMMethod___is_abstract},
-  {(bigint) metamodel___abstractmetamodel___MMMethod___is_extern},
-  {(bigint) metamodel___abstractmetamodel___MMMethod___extern_name},
-  {(bigint) metamodel___abstractmetamodel___MMMethod___explicit_imports},
-  {(bigint) icode___icode_base___MMMethod___iroutine},
-  {(bigint) compiling___compiling_global___MMMethod___compile_property_to_c},
+  {(bigint) 0 /* 50: ReduceAction605 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction605___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction605 < ReduceAction605: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__metamodel___abstractmetamodel___MMMethod(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction605::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction605[] = "init var of ReduceAction605";
+void INIT_ATTRIBUTES__parser___ReduceAction605(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMMethod;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction605;
   fra.me.has_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:649 */
-  REGB0 = TAG_Bool(false);
-  ATTR_metamodel___abstractmetamodel___MMLocalProperty____need_super(fra.me.REG[0]) = REGB0;
-  /* ./metamodel//static_type.nit:56 */
-  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
-  ATTR_metamodel___static_type___MMLocalProperty____signatures_cache(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_metamodel___abstractmetamodel___MMMethod(void)
+val_t NEW_parser___ReduceAction605(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 10);
-  obj->vft = (classtable_elt_t*)VFT_metamodel___abstractmetamodel___MMMethod;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction605;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_metamodel___abstractmetamodel___MMMethod(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction605[] = "check new ReduceAction605";
+void CHECKNEW_parser___ReduceAction605(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_metamodel___abstractmetamodel___MMMethod;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction605;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_metamodel___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_metamodel___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_metamodel___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_metamodel___static_type___MMLocalProperty____signatures_cache(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_signatures_cache", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMMethod_metamodel___abstractmetamodel___MMLocalProperty___init(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_ReduceAction605_parser___ReduceAction___init[] = "new ReduceAction605 parser::ReduceAction::init";
+val_t NEW_ReduceAction605_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 651;
-  fra.me.meth = LOCATE_NEW_MMMethod_metamodel___abstractmetamodel___MMLocalProperty___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction605_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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:651 */
-  fra.me.REG[2] = NEW_metamodel___abstractmetamodel___MMMethod();
-  INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMMethod(fra.me.REG[2]);
-  metamodel___abstractmetamodel___MMLocalProperty___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_metamodel___abstractmetamodel___MMMethod(fra.me.REG[2]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction605();
+  INIT_ATTRIBUTES__parser___ReduceAction605(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction605(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_metamodel___abstractmetamodel___MMConcreteClass[122] = {
-  {(bigint) 2191 /* 0: Identity */},
-  {(bigint) 28 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "MMConcreteClass" /* 2: Class Name */},
-  {(bigint) 3 /* 3: MMConcreteClass < Object: superclass typecheck marker */},
-  {(bigint) 163 /* 4: MMConcreteClass < MMLocalClass: superclass typecheck marker */},
-  {(bigint) 2191 /* 5: MMConcreteClass < MMConcreteClass: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction606[55] = {
+  {(bigint) 751 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction606" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction606 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction606 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 751 /* 5: ReduceAction606 < ReduceAction606: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -131896,7 +164001,7 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMConcreteClass[122]
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: MMConcreteClass < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction606 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -131912,7 +164017,9 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMConcreteClass[122]
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -131925,307 +164032,88 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMConcreteClass[122]
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) abstracttool___MMLocalClass___dump_properties},
-  {(bigint) syntax___mmbuilder___MMLocalClass___accept_class_visitor},
-  {(bigint) syntax___mmbuilder___MMLocalClass___accept_properties_visitor},
-  {(bigint) primitive_info___MMLocalClass___primitive_info},
-  {(bigint) primitive_info___MMLocalClass___primitive_ctypes},
-  {(bigint) metamodel___genericity___MMLocalClass___get_formal},
-  {(bigint) metamodel___genericity___MMLocalClass___register_formal},
-  {(bigint) metamodel___genericity___MMLocalClass___get_instantiate_type},
-  {(bigint) metamodel___genericity___MMLocalClass___formals_types},
-  {(bigint) metamodel___static_type___MMLocalClass___get_type},
-  {(bigint) metamodel___genericity___MMLocalClass___is_generic},
-  {(bigint) metamodel___inheritance___MMLocalClass___compute_super_classes},
-  {(bigint) metamodel___inheritance___MMLocalClass___compute_ancestors},
-  {(bigint) metamodel___inheritance___MMLocalClass___inherit_global_properties},
-  {(bigint) metamodel___inheritance___MMLocalClass___make_visible_an_inherited_global_property},
-  {(bigint) metamodel___inheritance___MMLocalClass___add_direct_parent},
-  {(bigint) metamodel___inheritance___MMLocalClass___computed_super_classes},
-  {(bigint) metamodel___inheritance___MMLocalClass___computed_ancestors},
-  {(bigint) metamodel___inheritance___MMLocalClass___ancestor_for},
-  {(bigint) metamodel___inheritance___MMLocalClass___add_default_any_class},
-  {(bigint) metamodel___inheritance___MMLocalClass___add_super_classes},
-  {(bigint) metamodel___inheritance___MMLocalClass___add_explicit_classes},
-  {(bigint) metamodel___inheritance___MMLocalClass___compute_super_parents},
-  {(bigint) metamodel___inheritance___MMLocalClass___build_ancestors},
-  {(bigint) metamodel___inheritance___MMLocalClass___group_ancestors},
-  {(bigint) metamodel___inheritance___MMLocalClass___merge_ancestors},
-  {(bigint) metamodel___inheritance___MMLocalClass___inherit_local_property},
-  {(bigint) metamodel___genericity___MMLocalClass___get_type},
-  {(bigint) metamodel___static_type___MMLocalClass___add_ancestor},
-  {(bigint) metamodel___static_type___MMLocalClass___ancestors},
-  {(bigint) metamodel___static_type___MMLocalClass___ancestor},
-  {(bigint) 1 /* 78: MMConcreteClass < MMLocalClass: superclass init_table position */},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___name},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___arity},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___mmmodule},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___global},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___crhe},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___cshe},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___che},
-  {(bigint) metamodel___inheritance___MMLocalClass___global_properties},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___local_local_properties},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___init},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___for_module},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___new_global},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___set_global},
-  {(bigint) metamodel___inheritance___MMLocalClass___has_global_property_by_name},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___get_property_by_name},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___attribute},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___method},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___select_method},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___select_attribute},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___super_methods_named},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___register_local_property},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___register_global_property},
-  {(bigint) metamodel___inheritance___MMLocalClass___has_global_property},
-  {(bigint) metamodel___inheritance___MMLocalClass_____bra},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___context},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___total_order_compare},
-  {(bigint) metamodel___virtualtype___MMLocalClass___virtual_type},
-  {(bigint) metamodel___virtualtype___MMLocalClass___select_virtual_type},
-  {(bigint) native_interface___frontier___MMLocalClass___compile_defaut_extern_type},
-  {(bigint) compiling___icode_generator___MMLocalClass___generate_icode_file},
-  {(bigint) compiling___compiling_base___MMLocalClass___cname},
-  {(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___compiling_global___MMLocalClass___declare_tables_to_c},
-  {(bigint) compiling___compiling_global___MMLocalClass___compile_tables_to_c},
-  {(bigint) compiling___table_computation___MMConcreteClass___class_color_pos},
-  {(bigint) compiling___table_computation___MMConcreteClass___class_layout},
-  {(bigint) compiling___table_computation___MMConcreteClass___instance_layout},
-  {(bigint) compiling___table_computation___MMConcreteClass___build_layout_in},
-  {(bigint) 2 /* 121: MMConcreteClass < MMConcreteClass: superclass init_table position */},
+  {(bigint) 0 /* 50: ReduceAction606 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction606___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction606 < ReduceAction606: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute MMConcreteClass::_primitive_info_cache */
-/* 3: Attribute MMConcreteClass::_primitive_info_b */
-/* 4: Attribute MMConcreteClass::_types */
-/* 5: Attribute MMConcreteClass::_formals_types */
-/* 6: Attribute MMConcreteClass::_direct_parents */
-/* 7: Attribute MMConcreteClass::_computing_super */
-/* 8: Attribute MMConcreteClass::_are_global_properties_inherited */
-/* 9: Attribute MMConcreteClass::_base_type_cache */
-/* 10: Attribute MMConcreteClass::_ancestors */
-/* 11: Attribute MMConcreteClass::_name */
-/* 12: Attribute MMConcreteClass::_arity */
-/* 13: Attribute MMConcreteClass::_mmmodule */
-/* 14: Attribute MMConcreteClass::_global */
-/* 15: Attribute MMConcreteClass::_crhe */
-/* 16: Attribute MMConcreteClass::_cshe */
-/* 17: Attribute MMConcreteClass::_che */
-/* 18: Attribute MMConcreteClass::_local_property_by_global */
-/* 19: Attribute MMConcreteClass::_global_properties */
-/* 20: Attribute MMConcreteClass::_local_local_properties */
-/* 21: Attribute MMConcreteClass::_properties_by_name */
-/* 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__metamodel___abstractmetamodel___MMConcreteClass(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction606::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction606[] = "init var of ReduceAction606";
+void INIT_ATTRIBUTES__parser___ReduceAction606(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMConcreteClass;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction606;
   fra.me.has_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_standard___collection___array___Array___init();
-  ATTR_compiling___table_computation___MMConcreteClass____class_layout(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./compiling//table_computation.nit:93 */
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-  ATTR_compiling___table_computation___MMConcreteClass____instance_layout(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//abstractmetamodel.nit:361 */
-  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
-  ATTR_metamodel___abstractmetamodel___MMLocalClass____local_property_by_global(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//abstractmetamodel.nit:364 */
-  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
-  ATTR_metamodel___abstractmetamodel___MMLocalClass____global_properties(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//abstractmetamodel.nit:367 */
-  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
-  ATTR_metamodel___abstractmetamodel___MMLocalClass____local_local_properties(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//abstractmetamodel.nit:370 */
-  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
-  ATTR_metamodel___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_standard___collection___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_standard___collection___array___Array___init();
-  ATTR_metamodel___genericity___MMLocalClass____types(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//genericity.nit:55 */
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-  ATTR_metamodel___genericity___MMLocalClass____formals_types(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//inheritance.nit:82 */
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-  ATTR_metamodel___inheritance___MMLocalClass____direct_parents(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//inheritance.nit:86 */
-  REGB0 = TAG_Bool(false);
-  ATTR_metamodel___inheritance___MMLocalClass____computing_super(fra.me.REG[0]) = REGB0;
-  /* ./metamodel//inheritance.nit:133 */
-  REGB0 = TAG_Bool(false);
-  ATTR_metamodel___inheritance___MMLocalClass____are_global_properties_inherited(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_metamodel___abstractmetamodel___MMConcreteClass(void)
+val_t NEW_parser___ReduceAction606(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 28);
-  obj->vft = (classtable_elt_t*)VFT_metamodel___abstractmetamodel___MMConcreteClass;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction606;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_metamodel___abstractmetamodel___MMConcreteClass(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction606[] = "check new ReduceAction606";
+void CHECKNEW_parser___ReduceAction606(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_metamodel___abstractmetamodel___MMConcreteClass;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction606;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_compiling___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_compiling___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___inheritance___MMLocalClass____are_global_properties_inherited(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_are_global_properties_inherited", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMConcreteClass_metamodel___abstractmetamodel___MMLocalClass___init(val_t p0, val_t p1, val_t p2){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_ReduceAction606_parser___ReduceAction___init[] = "new ReduceAction606 parser::ReduceAction::init";
+val_t NEW_ReduceAction606_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   int init_table[3] = {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_MMConcreteClass_metamodel___abstractmetamodel___MMLocalClass___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction606_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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:372 */
-  fra.me.REG[2] = NEW_metamodel___abstractmetamodel___MMConcreteClass();
-  INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMConcreteClass(fra.me.REG[2]);
-  metamodel___abstractmetamodel___MMLocalClass___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], REGB0, init_table);
-  CHECKNEW_metamodel___abstractmetamodel___MMConcreteClass(fra.me.REG[2]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction606();
+  INIT_ATTRIBUTES__parser___ReduceAction606(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction606(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_metamodel___static_type___MMParam[51] = {
-  {(bigint) 151 /* 0: Identity */},
-  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "MMParam" /* 2: Class Name */},
-  {(bigint) 3 /* 3: MMParam < Object: superclass typecheck marker */},
-  {(bigint) 151 /* 4: MMParam < MMParam: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction607[55] = {
+  {(bigint) 747 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction607" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction607 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction607 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 747 /* 5: ReduceAction607 < ReduceAction607: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -132239,7 +164127,7 @@ const classtable_elt_t VFT_metamodel___static_type___MMParam[51] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: MMParam < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction607 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -132255,7 +164143,9 @@ const classtable_elt_t VFT_metamodel___static_type___MMParam[51] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) metamodel___static_type___MMParam___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -132268,88 +164158,88 @@ const classtable_elt_t VFT_metamodel___static_type___MMParam[51] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: MMParam < MMParam: superclass init_table position */},
-  {(bigint) metamodel___static_type___MMParam___mmtype},
-  {(bigint) metamodel___static_type___MMParam___name},
-  {(bigint) metamodel___static_type___MMParam___init},
+  {(bigint) 0 /* 50: ReduceAction607 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction607___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction607 < ReduceAction607: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute MMParam::_mmtype */
-/* 3: Attribute MMParam::_name */
-void INIT_ATTRIBUTES__metamodel___static_type___MMParam(val_t p0){
+/* 2: Attribute ReduceAction607::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction607[] = "init var of ReduceAction607";
+void INIT_ATTRIBUTES__parser___ReduceAction607(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__metamodel___static_type___MMParam;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction607;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_metamodel___static_type___MMParam(void)
+val_t NEW_parser___ReduceAction607(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_metamodel___static_type___MMParam;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction607;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_metamodel___static_type___MMParam(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction607[] = "check new ReduceAction607";
+void CHECKNEW_parser___ReduceAction607(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_metamodel___static_type___MMParam;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction607;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMParam____mmtype(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_mmtype", LOCATE_nitc, 0);
-  }
-  REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMParam____name(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_name", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMParam_metamodel___static_type___MMParam___init(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_ReduceAction607_parser___ReduceAction___init[] = "new ReduceAction607 parser::ReduceAction::init";
+val_t NEW_ReduceAction607_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[2] = {0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 74;
-  fra.me.meth = LOCATE_NEW_MMParam_metamodel___static_type___MMParam___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction607_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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//static_type.nit:74 */
-  fra.me.REG[2] = NEW_metamodel___static_type___MMParam();
-  INIT_ATTRIBUTES__metamodel___static_type___MMParam(fra.me.REG[2]);
-  metamodel___static_type___MMParam___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_metamodel___static_type___MMParam(fra.me.REG[2]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction607();
+  INIT_ATTRIBUTES__parser___ReduceAction607(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction607(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_metamodel___static_type___MMSignature[68] = {
-  {(bigint) 147 /* 0: Identity */},
-  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "MMSignature" /* 2: Class Name */},
-  {(bigint) 3 /* 3: MMSignature < Object: superclass typecheck marker */},
-  {(bigint) 147 /* 4: MMSignature < MMSignature: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction608[55] = {
+  {(bigint) 743 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction608" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction608 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction608 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 743 /* 5: ReduceAction608 < ReduceAction608: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -132363,7 +164253,7 @@ const classtable_elt_t VFT_metamodel___static_type___MMSignature[68] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: MMSignature < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction608 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -132379,7 +164269,9 @@ const classtable_elt_t VFT_metamodel___static_type___MMSignature[68] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) metamodel___static_type___MMSignature___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -132392,130 +164284,88 @@ const classtable_elt_t VFT_metamodel___static_type___MMSignature[68] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) native_interface___frontier___MMSignature___compile_frontier},
-  {(bigint) icode___icode_builder___MMSignature___generate_empty_iroutine},
-  {(bigint) icode___icode_builder___MMSignature___generate_empty_iclosuredef},
-  {(bigint) metamodel___vararg___MMSignature___vararg_rank},
-  {(bigint) metamodel___vararg___MMSignature___vararg_rank__eq},
-  {(bigint) metamodel___vararg___MMSignature___has_vararg},
-  {(bigint) metamodel___static_type___MMSignature___adaptation_to},
-  {(bigint) metamodel___static_type___MMSignature___not_for_self},
-  {(bigint) metamodel___static_type___MMSignature___init},
-  {(bigint) 1 /* 56: MMSignature < MMSignature: superclass init_table position */},
-  {(bigint) metamodel___static_type___MMSignature___recv},
-  {(bigint) metamodel___static_type___MMSignature___params},
-  {(bigint) metamodel___static_type___MMSignature___return_type},
-  {(bigint) metamodel___static_type___MMSignature___closures},
-  {(bigint) metamodel___static_type___MMSignature___closure_named},
-  {(bigint) metamodel___static_type___MMSignature___arity},
-  {(bigint) metamodel___static_type___MMSignature_____l},
-  {(bigint) metamodel___static_type___MMSignature_____bra},
-  {(bigint) metamodel___vararg___MMSignature___adaptation_to},
-  {(bigint) metamodel___vararg___MMSignature___not_for_self},
-  {(bigint) metamodel___vararg___MMSignature___init},
+  {(bigint) 0 /* 50: ReduceAction608 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction608___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction608 < ReduceAction608: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__metamodel___static_type___MMSignature(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+/* 2: Attribute ReduceAction608::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction608[] = "init var of ReduceAction608";
+void INIT_ATTRIBUTES__parser___ReduceAction608(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__metamodel___static_type___MMSignature;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction608;
   fra.me.has_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:95 */
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-  ATTR_metamodel___static_type___MMSignature____closures(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//static_type.nit:193 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_metamodel___static_type___MMSignature____not_for_self_cache(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_metamodel___static_type___MMSignature(void)
+val_t NEW_parser___ReduceAction608(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 8);
-  obj->vft = (classtable_elt_t*)VFT_metamodel___static_type___MMSignature;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction608;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_metamodel___static_type___MMSignature(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction608[] = "check new ReduceAction608";
+void CHECKNEW_parser___ReduceAction608(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_metamodel___static_type___MMSignature;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction608;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_metamodel___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_metamodel___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_metamodel___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_metamodel___static_type___MMSignature____closures(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_closures", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMSignature_metamodel___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;
+static const char LOCATE_NEW_ReduceAction608_parser___ReduceAction___init[] = "new ReduceAction608 parser::ReduceAction::init";
+val_t NEW_ReduceAction608_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[2] = {0, 0};
+  int init_table[3] = {0, 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_metamodel___static_type___MMSignature___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction608_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_metamodel___static_type___MMSignature();
-  INIT_ATTRIBUTES__metamodel___static_type___MMSignature(fra.me.REG[3]);
-  metamodel___vararg___MMSignature___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
-  CHECKNEW_metamodel___static_type___MMSignature(fra.me.REG[3]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction608();
+  INIT_ATTRIBUTES__parser___ReduceAction608(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction608(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[3];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_metamodel___static_type___MMClosure[56] = {
-  {(bigint) 191 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "MMClosure" /* 2: Class Name */},
-  {(bigint) 3 /* 3: MMClosure < Object: superclass typecheck marker */},
-  {(bigint) 191 /* 4: MMClosure < MMClosure: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction609[55] = {
+  {(bigint) 739 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction609" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction609 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction609 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 739 /* 5: ReduceAction609 < ReduceAction609: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -132529,7 +164379,7 @@ const classtable_elt_t VFT_metamodel___static_type___MMClosure[56] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: MMClosure < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction609 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -132545,6 +164395,8 @@ const classtable_elt_t VFT_metamodel___static_type___MMClosure[56] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -132558,110 +164410,89 @@ const classtable_elt_t VFT_metamodel___static_type___MMClosure[56] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: MMClosure < MMClosure: superclass init_table position */},
-  {(bigint) metamodel___static_type___MMClosure___name},
-  {(bigint) metamodel___static_type___MMClosure___signature},
-  {(bigint) metamodel___static_type___MMClosure___is_break},
-  {(bigint) metamodel___static_type___MMClosure___is_optional},
-  {(bigint) metamodel___static_type___MMClosure___adaptation_to},
-  {(bigint) metamodel___static_type___MMClosure___init},
-  {(bigint) metamodel___static_type___MMClosure___not_for_self},
-  {(bigint) metamodel___static_type___MMClosure_____l},
+  {(bigint) 0 /* 50: ReduceAction609 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction609___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction609 < ReduceAction609: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute MMClosure::_name */
-/* 3: Attribute MMClosure::_signature */
-/* 4: Attribute MMClosure::_is_break */
-/* 5: Attribute MMClosure::_is_optional */
-void INIT_ATTRIBUTES__metamodel___static_type___MMClosure(val_t p0){
+/* 2: Attribute ReduceAction609::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction609[] = "init var of ReduceAction609";
+void INIT_ATTRIBUTES__parser___ReduceAction609(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__metamodel___static_type___MMClosure;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction609;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_metamodel___static_type___MMClosure(void)
+val_t NEW_parser___ReduceAction609(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_metamodel___static_type___MMClosure;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction609;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_metamodel___static_type___MMClosure(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction609[] = "check new ReduceAction609";
+void CHECKNEW_parser___ReduceAction609(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_metamodel___static_type___MMClosure;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction609;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_metamodel___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_metamodel___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_metamodel___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_metamodel___static_type___MMClosure____is_optional(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_optional", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMClosure_metamodel___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;
+static const char LOCATE_NEW_ReduceAction609_parser___ReduceAction___init[] = "new ReduceAction609 parser::ReduceAction::init";
+val_t NEW_ReduceAction609_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t REGB0;
-  val_t REGB1;
   val_t tmp;
-  int init_table[2] = {0, 0};
+  int init_table[3] = {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_MMClosure_metamodel___static_type___MMClosure___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction609_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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:282 */
-  fra.me.REG[2] = NEW_metamodel___static_type___MMClosure();
-  INIT_ATTRIBUTES__metamodel___static_type___MMClosure(fra.me.REG[2]);
-  metamodel___static_type___MMClosure___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], REGB0, REGB1, init_table);
-  CHECKNEW_metamodel___static_type___MMClosure(fra.me.REG[2]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction609();
+  INIT_ATTRIBUTES__parser___ReduceAction609(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction609(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_metamodel___static_type___MMNullableType[77] = {
-  {(bigint) 2175 /* 0: Identity */},
-  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "MMNullableType" /* 2: Class Name */},
-  {(bigint) 3 /* 3: MMNullableType < Object: superclass typecheck marker */},
-  {(bigint) 143 /* 4: MMNullableType < MMType: superclass typecheck marker */},
-  {(bigint) 2175 /* 5: MMNullableType < MMNullableType: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction610[55] = {
+  {(bigint) 731 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction610" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction610 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction610 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 731 /* 5: ReduceAction610 < ReduceAction610: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -132674,7 +164505,7 @@ const classtable_elt_t VFT_metamodel___static_type___MMNullableType[77] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: MMNullableType < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction610 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -132690,7 +164521,9 @@ const classtable_elt_t VFT_metamodel___static_type___MMNullableType[77] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) metamodel___static_type___MMNullableType___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -132703,114 +164536,89 @@ const classtable_elt_t VFT_metamodel___static_type___MMNullableType[77] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) native_interface___frontier___MMType___compile_check_isa},
-  {(bigint) native_interface___frontier___MMType___compile_condition_isa},
-  {(bigint) native_interface___frontier___MMType___compile_to_frontier},
-  {(bigint) native_interface___ni_metamodel___MMType___friendly_extern_name},
-  {(bigint) native_interface___ni_metamodel___MMType___from_native},
-  {(bigint) native_interface___ni_metamodel___MMType___assign_to_friendly},
-  {(bigint) native_interface___ni_metamodel___MMType___assign_from_friendly},
-  {(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) metamodel___genericity___MMType___is_generic},
-  {(bigint) metamodel___type_formal___MMType___direct_type},
-  {(bigint) 0 /* 61: MMNullableType < MMType: superclass init_table position */},
-  {(bigint) metamodel___static_type___MMNullableType___mmmodule},
-  {(bigint) metamodel___static_type___MMNullableType___local_class},
-  {(bigint) metamodel___static_type___MMNullableType___is_valid},
-  {(bigint) metamodel___static_type___MMNullableType_____l},
-  {(bigint) metamodel___static_type___MMNullableType___is_supertype},
-  {(bigint) metamodel___static_type___MMNullableType___for_module},
-  {(bigint) metamodel___static_type___MMNullableType___adapt_to},
-  {(bigint) metamodel___static_type___MMNullableType___upcast_for},
-  {(bigint) metamodel___static_type___MMNullableType___not_for_self},
-  {(bigint) metamodel___static_type___MMNullableType___is_nullable},
-  {(bigint) metamodel___static_type___MMNullableType___as_nullable},
-  {(bigint) metamodel___static_type___MMNullableType___as_notnull},
-  {(bigint) metamodel___static_type___MMType___init},
-  {(bigint) 2 /* 75: MMNullableType < MMNullableType: superclass init_table position */},
-  {(bigint) metamodel___static_type___MMNullableType___init},
+  {(bigint) 0 /* 50: ReduceAction610 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction610___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction610 < ReduceAction610: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute MMNullableType::_as_nullable_cache */
-/* 3: Attribute MMNullableType::_base_type */
-void INIT_ATTRIBUTES__metamodel___static_type___MMNullableType(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+/* 2: Attribute ReduceAction610::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction610[] = "init var of ReduceAction610";
+void INIT_ATTRIBUTES__parser___ReduceAction610(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__metamodel___static_type___MMNullableType;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction610;
   fra.me.has_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:397 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_metamodel___static_type___MMType____as_nullable_cache(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_metamodel___static_type___MMNullableType(void)
+val_t NEW_parser___ReduceAction610(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_metamodel___static_type___MMNullableType;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction610;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_metamodel___static_type___MMNullableType(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction610[] = "check new ReduceAction610";
+void CHECKNEW_parser___ReduceAction610(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_metamodel___static_type___MMNullableType;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction610;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMNullableType____base_type(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_base_type", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMNullableType_metamodel___static_type___MMNullableType___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ReduceAction610_parser___ReduceAction___init[] = "new ReduceAction610 parser::ReduceAction::init";
+val_t NEW_ReduceAction610_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 425;
-  fra.me.meth = LOCATE_NEW_MMNullableType_metamodel___static_type___MMNullableType___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction610_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./metamodel//static_type.nit:425 */
-  fra.me.REG[1] = NEW_metamodel___static_type___MMNullableType();
-  INIT_ATTRIBUTES__metamodel___static_type___MMNullableType(fra.me.REG[1]);
-  metamodel___static_type___MMNullableType___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_metamodel___static_type___MMNullableType(fra.me.REG[1]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction610();
+  INIT_ATTRIBUTES__parser___ReduceAction610(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction610(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_metamodel___static_type___MMTypeClass[77] = {
-  {(bigint) 2155 /* 0: Identity */},
-  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "MMTypeClass" /* 2: Class Name */},
-  {(bigint) 3 /* 3: MMTypeClass < Object: superclass typecheck marker */},
-  {(bigint) 143 /* 4: MMTypeClass < MMType: superclass typecheck marker */},
-  {(bigint) 2155 /* 5: MMTypeClass < MMTypeClass: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction612[55] = {
+  {(bigint) 727 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction612" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction612 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction612 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 727 /* 5: ReduceAction612 < ReduceAction612: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -132823,7 +164631,7 @@ const classtable_elt_t VFT_metamodel___static_type___MMTypeClass[77] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: MMTypeClass < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction612 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -132839,7 +164647,9 @@ const classtable_elt_t VFT_metamodel___static_type___MMTypeClass[77] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) metamodel___static_type___MMTypeClass___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -132852,115 +164662,90 @@ const classtable_elt_t VFT_metamodel___static_type___MMTypeClass[77] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) native_interface___frontier___MMType___compile_check_isa},
-  {(bigint) native_interface___frontier___MMType___compile_condition_isa},
-  {(bigint) native_interface___frontier___MMType___compile_to_frontier},
-  {(bigint) native_interface___ni_metamodel___MMType___friendly_extern_name},
-  {(bigint) native_interface___ni_metamodel___MMType___from_native},
-  {(bigint) native_interface___ni_metamodel___MMType___assign_to_friendly},
-  {(bigint) native_interface___ni_metamodel___MMType___assign_from_friendly},
-  {(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) metamodel___genericity___MMType___is_generic},
-  {(bigint) metamodel___type_formal___MMType___direct_type},
-  {(bigint) 0 /* 61: MMTypeClass < MMType: superclass init_table position */},
-  {(bigint) metamodel___static_type___MMTypeClass___mmmodule},
-  {(bigint) metamodel___static_type___MMTypeClass___local_class},
-  {(bigint) metamodel___static_type___MMType___is_valid},
-  {(bigint) metamodel___static_type___MMTypeClass_____l},
-  {(bigint) metamodel___static_type___MMType___is_supertype},
-  {(bigint) metamodel___static_type___MMType___for_module},
-  {(bigint) metamodel___static_type___MMType___adapt_to},
-  {(bigint) metamodel___static_type___MMTypeClass___upcast_for},
-  {(bigint) metamodel___static_type___MMType___not_for_self},
-  {(bigint) metamodel___static_type___MMType___is_nullable},
-  {(bigint) metamodel___static_type___MMType___as_nullable},
-  {(bigint) metamodel___static_type___MMType___as_notnull},
-  {(bigint) metamodel___static_type___MMType___init},
-  {(bigint) 2 /* 75: MMTypeClass < MMTypeClass: superclass init_table position */},
-  {(bigint) metamodel___static_type___MMTypeClass___init},
+  {(bigint) 0 /* 50: ReduceAction612 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction612___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction612 < ReduceAction612: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute MMTypeClass::_as_nullable_cache */
-/* 3: Attribute MMTypeClass::_local_class */
-void INIT_ATTRIBUTES__metamodel___static_type___MMTypeClass(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+/* 2: Attribute ReduceAction612::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction612[] = "init var of ReduceAction612";
+void INIT_ATTRIBUTES__parser___ReduceAction612(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__metamodel___static_type___MMTypeClass;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction612;
   fra.me.has_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:397 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_metamodel___static_type___MMType____as_nullable_cache(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_metamodel___static_type___MMTypeClass(void)
+val_t NEW_parser___ReduceAction612(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_metamodel___static_type___MMTypeClass;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction612;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_metamodel___static_type___MMTypeClass(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction612[] = "check new ReduceAction612";
+void CHECKNEW_parser___ReduceAction612(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_metamodel___static_type___MMTypeClass;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction612;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMTypeClass____local_class(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMTypeClass_metamodel___static_type___MMTypeClass___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ReduceAction612_parser___ReduceAction___init[] = "new ReduceAction612 parser::ReduceAction::init";
+val_t NEW_ReduceAction612_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 487;
-  fra.me.meth = LOCATE_NEW_MMTypeClass_metamodel___static_type___MMTypeClass___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction612_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./metamodel//static_type.nit:487 */
-  fra.me.REG[1] = NEW_metamodel___static_type___MMTypeClass();
-  INIT_ATTRIBUTES__metamodel___static_type___MMTypeClass(fra.me.REG[1]);
-  metamodel___static_type___MMTypeClass___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_metamodel___static_type___MMTypeClass(fra.me.REG[1]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction612();
+  INIT_ATTRIBUTES__parser___ReduceAction612(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction612(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_metamodel___static_type___MMTypeSimpleClass[79] = {
-  {(bigint) 2823 /* 0: Identity */},
-  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "MMTypeSimpleClass" /* 2: Class Name */},
-  {(bigint) 3 /* 3: MMTypeSimpleClass < Object: superclass typecheck marker */},
-  {(bigint) 143 /* 4: MMTypeSimpleClass < MMType: superclass typecheck marker */},
-  {(bigint) 2155 /* 5: MMTypeSimpleClass < MMTypeClass: superclass typecheck marker */},
-  {(bigint) 2823 /* 6: MMTypeSimpleClass < MMTypeSimpleClass: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction613[55] = {
+  {(bigint) 723 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction613" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction613 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction613 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 723 /* 5: ReduceAction613 < ReduceAction613: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -132972,7 +164757,7 @@ const classtable_elt_t VFT_metamodel___static_type___MMTypeSimpleClass[79] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: MMTypeSimpleClass < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction613 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -132988,7 +164773,9 @@ const classtable_elt_t VFT_metamodel___static_type___MMTypeSimpleClass[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) metamodel___static_type___MMTypeClass___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -133001,116 +164788,89 @@ const classtable_elt_t VFT_metamodel___static_type___MMTypeSimpleClass[79] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) native_interface___frontier___MMType___compile_check_isa},
-  {(bigint) native_interface___frontier___MMType___compile_condition_isa},
-  {(bigint) native_interface___frontier___MMType___compile_to_frontier},
-  {(bigint) native_interface___ni_metamodel___MMType___friendly_extern_name},
-  {(bigint) native_interface___ni_metamodel___MMType___from_native},
-  {(bigint) native_interface___ni_metamodel___MMType___assign_to_friendly},
-  {(bigint) native_interface___ni_metamodel___MMType___assign_from_friendly},
-  {(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) metamodel___genericity___MMTypeSimpleClass___is_generic},
-  {(bigint) metamodel___type_formal___MMType___direct_type},
-  {(bigint) 0 /* 61: MMTypeSimpleClass < MMType: superclass init_table position */},
-  {(bigint) metamodel___static_type___MMTypeClass___mmmodule},
-  {(bigint) metamodel___static_type___MMTypeClass___local_class},
-  {(bigint) metamodel___static_type___MMType___is_valid},
-  {(bigint) metamodel___static_type___MMTypeClass_____l},
-  {(bigint) metamodel___static_type___MMTypeSimpleClass___is_supertype},
-  {(bigint) metamodel___static_type___MMTypeSimpleClass___for_module},
-  {(bigint) metamodel___static_type___MMTypeSimpleClass___adapt_to},
-  {(bigint) metamodel___static_type___MMTypeClass___upcast_for},
-  {(bigint) metamodel___static_type___MMType___not_for_self},
-  {(bigint) metamodel___static_type___MMType___is_nullable},
-  {(bigint) metamodel___static_type___MMType___as_nullable},
-  {(bigint) metamodel___static_type___MMType___as_notnull},
-  {(bigint) metamodel___static_type___MMType___init},
-  {(bigint) 2 /* 75: MMTypeSimpleClass < MMTypeClass: superclass init_table position */},
-  {(bigint) metamodel___static_type___MMTypeClass___init},
-  {(bigint) 3 /* 77: MMTypeSimpleClass < MMTypeSimpleClass: superclass init_table position */},
-  {(bigint) metamodel___static_type___MMTypeSimpleClass___init},
+  {(bigint) 0 /* 50: ReduceAction613 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction613___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction613 < ReduceAction613: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute MMTypeSimpleClass::_as_nullable_cache */
-/* 3: Attribute MMTypeSimpleClass::_local_class */
-void INIT_ATTRIBUTES__metamodel___static_type___MMTypeSimpleClass(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+/* 2: Attribute ReduceAction613::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction613[] = "init var of ReduceAction613";
+void INIT_ATTRIBUTES__parser___ReduceAction613(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__metamodel___static_type___MMTypeSimpleClass;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction613;
   fra.me.has_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:397 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_metamodel___static_type___MMType____as_nullable_cache(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_metamodel___static_type___MMTypeSimpleClass(void)
+val_t NEW_parser___ReduceAction613(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_metamodel___static_type___MMTypeSimpleClass;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction613;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_metamodel___static_type___MMTypeSimpleClass(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction613[] = "check new ReduceAction613";
+void CHECKNEW_parser___ReduceAction613(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_metamodel___static_type___MMTypeSimpleClass;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction613;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMTypeClass____local_class(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMTypeSimpleClass_metamodel___static_type___MMTypeSimpleClass___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ReduceAction613_parser___ReduceAction___init[] = "new ReduceAction613 parser::ReduceAction::init";
+val_t NEW_ReduceAction613_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 511;
-  fra.me.meth = LOCATE_NEW_MMTypeSimpleClass_metamodel___static_type___MMTypeSimpleClass___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction613_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./metamodel//static_type.nit:511 */
-  fra.me.REG[1] = NEW_metamodel___static_type___MMTypeSimpleClass();
-  INIT_ATTRIBUTES__metamodel___static_type___MMTypeSimpleClass(fra.me.REG[1]);
-  metamodel___static_type___MMTypeSimpleClass___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_metamodel___static_type___MMTypeSimpleClass(fra.me.REG[1]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction613();
+  INIT_ATTRIBUTES__parser___ReduceAction613(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction613(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_metamodel___static_type___MMTypeNone[77] = {
-  {(bigint) 2147 /* 0: Identity */},
-  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "MMTypeNone" /* 2: Class Name */},
-  {(bigint) 3 /* 3: MMTypeNone < Object: superclass typecheck marker */},
-  {(bigint) 143 /* 4: MMTypeNone < MMType: superclass typecheck marker */},
-  {(bigint) 2147 /* 5: MMTypeNone < MMTypeNone: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction614[55] = {
+  {(bigint) 719 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction614" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction614 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction614 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 719 /* 5: ReduceAction614 < ReduceAction614: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -133123,7 +164883,7 @@ const classtable_elt_t VFT_metamodel___static_type___MMTypeNone[77] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: MMTypeNone < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction614 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -133139,7 +164899,9 @@ const classtable_elt_t VFT_metamodel___static_type___MMTypeNone[77] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) metamodel___static_type___MMTypeNone___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -133152,113 +164914,88 @@ const classtable_elt_t VFT_metamodel___static_type___MMTypeNone[77] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) native_interface___frontier___MMType___compile_check_isa},
-  {(bigint) native_interface___frontier___MMType___compile_condition_isa},
-  {(bigint) native_interface___frontier___MMType___compile_to_frontier},
-  {(bigint) native_interface___ni_metamodel___MMType___friendly_extern_name},
-  {(bigint) native_interface___ni_metamodel___MMType___from_native},
-  {(bigint) native_interface___ni_metamodel___MMType___assign_to_friendly},
-  {(bigint) native_interface___ni_metamodel___MMType___assign_from_friendly},
-  {(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) metamodel___genericity___MMTypeNone___is_generic},
-  {(bigint) metamodel___type_formal___MMType___direct_type},
-  {(bigint) 0 /* 61: MMTypeNone < MMType: superclass init_table position */},
-  {(bigint) metamodel___static_type___MMTypeNone___mmmodule},
-  {(bigint) metamodel___static_type___MMTypeNone___local_class},
-  {(bigint) metamodel___static_type___MMType___is_valid},
-  {(bigint) metamodel___static_type___MMTypeNone_____l},
-  {(bigint) metamodel___static_type___MMTypeNone___is_supertype},
-  {(bigint) metamodel___genericity___MMTypeNone___for_module},
-  {(bigint) metamodel___genericity___MMTypeNone___adapt_to},
-  {(bigint) metamodel___static_type___MMTypeNone___upcast_for},
-  {(bigint) metamodel___static_type___MMType___not_for_self},
-  {(bigint) metamodel___static_type___MMTypeNone___is_nullable},
-  {(bigint) metamodel___static_type___MMTypeNone___as_nullable},
-  {(bigint) metamodel___static_type___MMTypeNone___as_notnull},
-  {(bigint) metamodel___static_type___MMType___init},
-  {(bigint) 2 /* 75: MMTypeNone < MMTypeNone: superclass init_table position */},
-  {(bigint) metamodel___static_type___MMTypeNone___init},
+  {(bigint) 0 /* 50: ReduceAction614 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction614___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction614 < ReduceAction614: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute MMTypeNone::_as_nullable_cache */
-/* 3: Attribute MMTypeNone::_mmmodule */
-void INIT_ATTRIBUTES__metamodel___static_type___MMTypeNone(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+/* 2: Attribute ReduceAction614::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction614[] = "init var of ReduceAction614";
+void INIT_ATTRIBUTES__parser___ReduceAction614(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__metamodel___static_type___MMTypeNone;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction614;
   fra.me.has_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:397 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_metamodel___static_type___MMType____as_nullable_cache(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_metamodel___static_type___MMTypeNone(void)
+val_t NEW_parser___ReduceAction614(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_metamodel___static_type___MMTypeNone;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction614;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_metamodel___static_type___MMTypeNone(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction614[] = "check new ReduceAction614";
+void CHECKNEW_parser___ReduceAction614(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_metamodel___static_type___MMTypeNone;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction614;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMTypeNone____mmmodule(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_mmmodule", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMTypeNone_metamodel___static_type___MMTypeNone___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ReduceAction614_parser___ReduceAction___init[] = "new ReduceAction614 parser::ReduceAction::init";
+val_t NEW_ReduceAction614_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 530;
-  fra.me.meth = LOCATE_NEW_MMTypeNone_metamodel___static_type___MMTypeNone___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction614_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./metamodel//static_type.nit:530 */
-  fra.me.REG[1] = NEW_metamodel___static_type___MMTypeNone();
-  INIT_ATTRIBUTES__metamodel___static_type___MMTypeNone(fra.me.REG[1]);
-  metamodel___static_type___MMTypeNone___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_metamodel___static_type___MMTypeNone(fra.me.REG[1]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction614();
+  INIT_ATTRIBUTES__parser___ReduceAction614(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction614(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_metamodel___static_type___MMImportedCast[68] = {
-  {(bigint) 167 /* 0: Identity */},
-  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "MMImportedCast" /* 2: Class Name */},
-  {(bigint) 3 /* 3: MMImportedCast < Object: superclass typecheck marker */},
-  {(bigint) 167 /* 4: MMImportedCast < MMImportedCast: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction615[55] = {
+  {(bigint) 715 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction615" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction615 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction615 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 715 /* 5: ReduceAction615 < ReduceAction615: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -133272,10 +165009,10 @@ const classtable_elt_t VFT_metamodel___static_type___MMImportedCast[68] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: MMImportedCast < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction615 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) native_interface___frontier___MMImportedCast_____eqeq},
+  {(bigint) standard___kernel___Object_____eqeq},
   {(bigint) standard___kernel___Object_____neq},
   {(bigint) standard___kernel___Object___output},
   {(bigint) standard___kernel___Object___output_class_name},
@@ -133288,139 +165025,104 @@ const classtable_elt_t VFT_metamodel___static_type___MMImportedCast[68] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
   {(bigint) standard___string___Object___inspect_head},
   {(bigint) standard___string___Object___args},
-  {(bigint) native_interface___frontier___MMImportedCast___hash},
+  {(bigint) standard___hash___Object___hash},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) native_interface___frontier___MMImportedCast___compile_to_frontier},
-  {(bigint) native_interface___frontier___MMImportedCast___compile_as},
-  {(bigint) native_interface___frontier___MMImportedCast___compile_is},
-  {(bigint) native_interface___frontier___MMImportedCast___compile_check_is_not_null},
-  {(bigint) native_interface___ni_metamodel___MMImportedCast___in_name},
-  {(bigint) native_interface___ni_metamodel___MMImportedCast___in_name__eq},
-  {(bigint) native_interface___ni_metamodel___MMImportedCast___as_friendly_extern_name},
-  {(bigint) native_interface___ni_metamodel___MMImportedCast___as_local_cname},
-  {(bigint) native_interface___ni_metamodel___MMImportedCast___as_local_csignature},
-  {(bigint) native_interface___ni_metamodel___MMImportedCast___as_friendly_csignature},
-  {(bigint) native_interface___ni_metamodel___MMImportedCast___is_a_friendly_extern_name},
-  {(bigint) native_interface___ni_metamodel___MMImportedCast___is_a_local_cname},
-  {(bigint) native_interface___ni_metamodel___MMImportedCast___is_a_local_csignature},
-  {(bigint) native_interface___ni_metamodel___MMImportedCast___is_a_friendly_csignature},
-  {(bigint) 1 /* 61: MMImportedCast < MMImportedCast: superclass init_table position */},
-  {(bigint) metamodel___static_type___MMImportedCast___from},
-  {(bigint) metamodel___static_type___MMImportedCast___to},
-  {(bigint) metamodel___static_type___MMImportedCast___is_about_nullable_only},
-  {(bigint) metamodel___static_type___MMImportedCast___is_not_null_to_nullable},
-  {(bigint) metamodel___static_type___MMImportedCast___is_nullable_to_not_null},
-  {(bigint) metamodel___static_type___MMImportedCast___init},
+  {(bigint) 0 /* 50: ReduceAction615 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction615___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction615 < ReduceAction615: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute MMImportedCast::@in_name */
-/* 3: Attribute MMImportedCast::_from */
-/* 4: Attribute MMImportedCast::_to */
-void INIT_ATTRIBUTES__metamodel___static_type___MMImportedCast(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction615::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction615[] = "init var of ReduceAction615";
+void INIT_ATTRIBUTES__parser___ReduceAction615(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   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__metamodel___static_type___MMImportedCast;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction615;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./native_interface//ni_metamodel.nit:216 */
-  if (!once_value_1) {
-    fra.me.REG[1] = BOX_NativeString("value");
-    REGB0 = TAG_Int(5);
-    fra.me.REG[1] = NEW_String_standard___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_native_interface___ni_metamodel___MMImportedCast_____atin_name(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_metamodel___static_type___MMImportedCast(void)
+val_t NEW_parser___ReduceAction615(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_metamodel___static_type___MMImportedCast;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction615;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_metamodel___static_type___MMImportedCast(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction615[] = "check new ReduceAction615";
+void CHECKNEW_parser___ReduceAction615(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_metamodel___static_type___MMImportedCast;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction615;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_native_interface___ni_metamodel___MMImportedCast_____atin_name(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "@in_name", LOCATE_nitc, 0);
-  }
-  REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMImportedCast____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_metamodel___static_type___MMImportedCast____to(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_to", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMImportedCast_metamodel___static_type___MMImportedCast___init(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_ReduceAction615_parser___ReduceAction___init[] = "new ReduceAction615 parser::ReduceAction::init";
+val_t NEW_ReduceAction615_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[2] = {0, 0};
+  int init_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_MMImportedCast_metamodel___static_type___MMImportedCast___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction615_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_metamodel___static_type___MMImportedCast();
-  INIT_ATTRIBUTES__metamodel___static_type___MMImportedCast(fra.me.REG[2]);
-  metamodel___static_type___MMImportedCast___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_metamodel___static_type___MMImportedCast(fra.me.REG[2]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction615();
+  INIT_ATTRIBUTES__parser___ReduceAction615(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction615(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_metamodel___inheritance___MMImplicitLocalClass[119] = {
-  {(bigint) 2183 /* 0: Identity */},
-  {(bigint) 25 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "MMImplicitLocalClass" /* 2: Class Name */},
-  {(bigint) 3 /* 3: MMImplicitLocalClass < Object: superclass typecheck marker */},
-  {(bigint) 163 /* 4: MMImplicitLocalClass < MMLocalClass: superclass typecheck marker */},
-  {(bigint) 2183 /* 5: MMImplicitLocalClass < MMImplicitLocalClass: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction616[55] = {
+  {(bigint) 711 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction616" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction616 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction616 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 711 /* 5: ReduceAction616 < ReduceAction616: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -133433,313 +165135,120 @@ const classtable_elt_t VFT_metamodel___inheritance___MMImplicitLocalClass[119] =
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: MMImplicitLocalClass < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction616 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
-  {(bigint) standard___file___Object___printn},
-  {(bigint) standard___file___Object___print},
-  {(bigint) standard___file___Object___getc},
-  {(bigint) standard___file___Object___gets},
-  {(bigint) standard___file___Object___stdin},
-  {(bigint) standard___file___Object___stdout},
-  {(bigint) standard___file___Object___stderr},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___to_s},
-  {(bigint) standard___string___Object___native_class_name},
-  {(bigint) standard___string___Object___class_name},
-  {(bigint) standard___string___Object___inspect},
-  {(bigint) standard___string___Object___inspect_head},
-  {(bigint) standard___string___Object___args},
-  {(bigint) standard___hash___Object___hash},
-  {(bigint) standard___math___Object___atan2},
-  {(bigint) standard___math___Object___pi},
-  {(bigint) standard___math___Object___srand_from},
-  {(bigint) standard___math___Object___srand},
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) abstracttool___MMLocalClass___dump_properties},
-  {(bigint) syntax___mmbuilder___MMLocalClass___accept_class_visitor},
-  {(bigint) syntax___mmbuilder___MMLocalClass___accept_properties_visitor},
-  {(bigint) primitive_info___MMLocalClass___primitive_info},
-  {(bigint) primitive_info___MMLocalClass___primitive_ctypes},
-  {(bigint) metamodel___genericity___MMLocalClass___get_formal},
-  {(bigint) metamodel___genericity___MMLocalClass___register_formal},
-  {(bigint) metamodel___genericity___MMLocalClass___get_instantiate_type},
-  {(bigint) metamodel___genericity___MMLocalClass___formals_types},
-  {(bigint) metamodel___static_type___MMLocalClass___get_type},
-  {(bigint) metamodel___genericity___MMLocalClass___is_generic},
-  {(bigint) metamodel___inheritance___MMLocalClass___compute_super_classes},
-  {(bigint) metamodel___inheritance___MMLocalClass___compute_ancestors},
-  {(bigint) metamodel___inheritance___MMLocalClass___inherit_global_properties},
-  {(bigint) metamodel___inheritance___MMLocalClass___make_visible_an_inherited_global_property},
-  {(bigint) metamodel___inheritance___MMLocalClass___add_direct_parent},
-  {(bigint) metamodel___inheritance___MMLocalClass___computed_super_classes},
-  {(bigint) metamodel___inheritance___MMLocalClass___computed_ancestors},
-  {(bigint) metamodel___inheritance___MMLocalClass___ancestor_for},
-  {(bigint) metamodel___inheritance___MMLocalClass___add_default_any_class},
-  {(bigint) metamodel___inheritance___MMLocalClass___add_super_classes},
-  {(bigint) metamodel___inheritance___MMLocalClass___add_explicit_classes},
-  {(bigint) metamodel___inheritance___MMLocalClass___compute_super_parents},
-  {(bigint) metamodel___inheritance___MMLocalClass___build_ancestors},
-  {(bigint) metamodel___inheritance___MMLocalClass___group_ancestors},
-  {(bigint) metamodel___inheritance___MMLocalClass___merge_ancestors},
-  {(bigint) metamodel___inheritance___MMLocalClass___inherit_local_property},
-  {(bigint) metamodel___genericity___MMLocalClass___get_type},
-  {(bigint) metamodel___static_type___MMLocalClass___add_ancestor},
-  {(bigint) metamodel___static_type___MMLocalClass___ancestors},
-  {(bigint) metamodel___static_type___MMLocalClass___ancestor},
-  {(bigint) 1 /* 78: MMImplicitLocalClass < MMLocalClass: superclass init_table position */},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___name},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___arity},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___mmmodule},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___global},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___crhe},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___cshe},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___che},
-  {(bigint) metamodel___inheritance___MMLocalClass___global_properties},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___local_local_properties},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___init},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___for_module},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___new_global},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___set_global},
-  {(bigint) metamodel___inheritance___MMLocalClass___has_global_property_by_name},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___get_property_by_name},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___attribute},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___method},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___select_method},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___select_attribute},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___super_methods_named},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___register_local_property},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___register_global_property},
-  {(bigint) metamodel___inheritance___MMLocalClass___has_global_property},
-  {(bigint) metamodel___inheritance___MMLocalClass_____bra},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___context},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___total_order_compare},
-  {(bigint) metamodel___virtualtype___MMLocalClass___virtual_type},
-  {(bigint) metamodel___virtualtype___MMLocalClass___select_virtual_type},
-  {(bigint) native_interface___frontier___MMLocalClass___compile_defaut_extern_type},
-  {(bigint) compiling___icode_generator___MMLocalClass___generate_icode_file},
-  {(bigint) compiling___compiling_base___MMLocalClass___cname},
-  {(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___compiling_global___MMLocalClass___declare_tables_to_c},
-  {(bigint) compiling___compiling_global___MMLocalClass___compile_tables_to_c},
-  {(bigint) 2 /* 117: MMImplicitLocalClass < MMImplicitLocalClass: superclass init_table position */},
-  {(bigint) metamodel___inheritance___MMImplicitLocalClass___init},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 50: ReduceAction616 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction616___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction616 < ReduceAction616: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute MMImplicitLocalClass::_primitive_info_cache */
-/* 3: Attribute MMImplicitLocalClass::_primitive_info_b */
-/* 4: Attribute MMImplicitLocalClass::_types */
-/* 5: Attribute MMImplicitLocalClass::_formals_types */
-/* 6: Attribute MMImplicitLocalClass::_direct_parents */
-/* 7: Attribute MMImplicitLocalClass::_computing_super */
-/* 8: Attribute MMImplicitLocalClass::_are_global_properties_inherited */
-/* 9: Attribute MMImplicitLocalClass::_base_type_cache */
-/* 10: Attribute MMImplicitLocalClass::_ancestors */
-/* 11: Attribute MMImplicitLocalClass::_name */
-/* 12: Attribute MMImplicitLocalClass::_arity */
-/* 13: Attribute MMImplicitLocalClass::_mmmodule */
-/* 14: Attribute MMImplicitLocalClass::_global */
-/* 15: Attribute MMImplicitLocalClass::_crhe */
-/* 16: Attribute MMImplicitLocalClass::_cshe */
-/* 17: Attribute MMImplicitLocalClass::_che */
-/* 18: Attribute MMImplicitLocalClass::_local_property_by_global */
-/* 19: Attribute MMImplicitLocalClass::_global_properties */
-/* 20: Attribute MMImplicitLocalClass::_local_local_properties */
-/* 21: Attribute MMImplicitLocalClass::_properties_by_name */
-/* 22: Attribute MMImplicitLocalClass::_init_var_iroutine */
-/* 23: Attribute MMImplicitLocalClass::_checknew_iroutine */
-/* 24: Attribute MMImplicitLocalClass::_new_instance_iroutine */
-void INIT_ATTRIBUTES__metamodel___inheritance___MMImplicitLocalClass(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction616::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction616[] = "init var of ReduceAction616";
+void INIT_ATTRIBUTES__parser___ReduceAction616(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__metamodel___inheritance___MMImplicitLocalClass;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction616;
   fra.me.has_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:82 */
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-  ATTR_metamodel___inheritance___MMLocalClass____direct_parents(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//inheritance.nit:86 */
-  REGB0 = TAG_Bool(false);
-  ATTR_metamodel___inheritance___MMLocalClass____computing_super(fra.me.REG[0]) = REGB0;
-  /* ./metamodel//inheritance.nit:133 */
-  REGB0 = TAG_Bool(false);
-  ATTR_metamodel___inheritance___MMLocalClass____are_global_properties_inherited(fra.me.REG[0]) = REGB0;
-  /* ./metamodel//abstractmetamodel.nit:361 */
-  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
-  ATTR_metamodel___abstractmetamodel___MMLocalClass____local_property_by_global(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//abstractmetamodel.nit:364 */
-  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
-  ATTR_metamodel___abstractmetamodel___MMLocalClass____global_properties(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//abstractmetamodel.nit:367 */
-  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
-  ATTR_metamodel___abstractmetamodel___MMLocalClass____local_local_properties(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//abstractmetamodel.nit:370 */
-  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
-  ATTR_metamodel___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;
-  /* ./metamodel//genericity.nit:41 */
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-  ATTR_metamodel___genericity___MMLocalClass____types(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//genericity.nit:55 */
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-  ATTR_metamodel___genericity___MMLocalClass____formals_types(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_standard___collection___hash_collection___HashMap___init();
-  ATTR_program___MMLocalClass____new_instance_iroutine(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_metamodel___inheritance___MMImplicitLocalClass(void)
+val_t NEW_parser___ReduceAction616(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 25);
-  obj->vft = (classtable_elt_t*)VFT_metamodel___inheritance___MMImplicitLocalClass;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction616;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_metamodel___inheritance___MMImplicitLocalClass(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction616[] = "check new ReduceAction616";
+void CHECKNEW_parser___ReduceAction616(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_metamodel___inheritance___MMImplicitLocalClass;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction616;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_program___MMLocalClass____new_instance_iroutine(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_new_instance_iroutine", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMImplicitLocalClass_metamodel___inheritance___MMImplicitLocalClass___init(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_ReduceAction616_parser___ReduceAction___init[] = "new ReduceAction616 parser::ReduceAction::init";
+val_t NEW_ReduceAction616_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 517;
-  fra.me.meth = LOCATE_NEW_MMImplicitLocalClass_metamodel___inheritance___MMImplicitLocalClass___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction616_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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:517 */
-  fra.me.REG[2] = NEW_metamodel___inheritance___MMImplicitLocalClass();
-  INIT_ATTRIBUTES__metamodel___inheritance___MMImplicitLocalClass(fra.me.REG[2]);
-  metamodel___inheritance___MMImplicitLocalClass___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_metamodel___inheritance___MMImplicitLocalClass(fra.me.REG[2]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction616();
+  INIT_ATTRIBUTES__parser___ReduceAction616(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction616(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_metamodel___inheritance___MMRefineAncestor[59] = {
-  {(bigint) 2171 /* 0: Identity */},
-  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "MMRefineAncestor" /* 2: Class Name */},
-  {(bigint) 3 /* 3: MMRefineAncestor < Object: superclass typecheck marker */},
-  {(bigint) 195 /* 4: MMRefineAncestor < MMAncestor: superclass typecheck marker */},
-  {(bigint) 2171 /* 5: MMRefineAncestor < MMRefineAncestor: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction617[55] = {
+  {(bigint) 707 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction617" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction617 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction617 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 707 /* 5: ReduceAction617 < ReduceAction617: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -133752,7 +165261,7 @@ const classtable_elt_t VFT_metamodel___inheritance___MMRefineAncestor[59] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: MMRefineAncestor < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction617 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -133768,7 +165277,9 @@ const classtable_elt_t VFT_metamodel___inheritance___MMRefineAncestor[59] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) metamodel___static_type___MMAncestor___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -133781,102 +165292,89 @@ const classtable_elt_t VFT_metamodel___inheritance___MMRefineAncestor[59] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) metamodel___inheritance___MMAncestor___add_in},
-  {(bigint) 0 /* 48: MMRefineAncestor < MMAncestor: superclass init_table position */},
-  {(bigint) metamodel___static_type___MMAncestor___stype__eq},
-  {(bigint) metamodel___static_type___MMAncestor___stype},
-  {(bigint) metamodel___static_type___MMAncestor___inheriter__eq},
-  {(bigint) metamodel___static_type___MMAncestor___inheriter},
-  {(bigint) metamodel___static_type___MMAncestor___is_reffinement},
-  {(bigint) metamodel___static_type___MMAncestor___is_specialisation},
-  {(bigint) metamodel___inheritance___MMRefineAncestor___local_class},
-  {(bigint) metamodel___static_type___MMAncestor___init},
-  {(bigint) 2 /* 57: MMRefineAncestor < MMRefineAncestor: superclass init_table position */},
-  {(bigint) metamodel___inheritance___MMRefineAncestor___init},
+  {(bigint) 0 /* 50: ReduceAction617 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction617___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction617 < ReduceAction617: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute MMRefineAncestor::_stype */
-/* 3: Attribute MMRefineAncestor::_inheriter */
-/* 4: Attribute MMRefineAncestor::_local_class */
-void INIT_ATTRIBUTES__metamodel___inheritance___MMRefineAncestor(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+/* 2: Attribute ReduceAction617::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction617[] = "init var of ReduceAction617";
+void INIT_ATTRIBUTES__parser___ReduceAction617(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__metamodel___inheritance___MMRefineAncestor;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction617;
   fra.me.has_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:310 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_metamodel___static_type___MMAncestor____stype(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//static_type.nit:316 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_metamodel___static_type___MMAncestor____inheriter(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_metamodel___inheritance___MMRefineAncestor(void)
+val_t NEW_parser___ReduceAction617(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_metamodel___inheritance___MMRefineAncestor;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction617;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_metamodel___inheritance___MMRefineAncestor(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction617[] = "check new ReduceAction617";
+void CHECKNEW_parser___ReduceAction617(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_metamodel___inheritance___MMRefineAncestor;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction617;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_metamodel___inheritance___MMRefineAncestor____local_class(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMRefineAncestor_metamodel___inheritance___MMRefineAncestor___init(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_ReduceAction617_parser___ReduceAction___init[] = "new ReduceAction617 parser::ReduceAction::init";
+val_t NEW_ReduceAction617_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 529;
-  fra.me.meth = LOCATE_NEW_MMRefineAncestor_metamodel___inheritance___MMRefineAncestor___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction617_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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:529 */
-  fra.me.REG[2] = NEW_metamodel___inheritance___MMRefineAncestor();
-  INIT_ATTRIBUTES__metamodel___inheritance___MMRefineAncestor(fra.me.REG[2]);
-  metamodel___inheritance___MMRefineAncestor___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_metamodel___inheritance___MMRefineAncestor(fra.me.REG[2]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction617();
+  INIT_ATTRIBUTES__parser___ReduceAction617(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction617(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_metamodel___inheritance___MMSpecAncestor[59] = {
-  {(bigint) 2167 /* 0: Identity */},
-  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "MMSpecAncestor" /* 2: Class Name */},
-  {(bigint) 3 /* 3: MMSpecAncestor < Object: superclass typecheck marker */},
-  {(bigint) 195 /* 4: MMSpecAncestor < MMAncestor: superclass typecheck marker */},
-  {(bigint) 2167 /* 5: MMSpecAncestor < MMSpecAncestor: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction618[55] = {
+  {(bigint) 703 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction618" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction618 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction618 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 703 /* 5: ReduceAction618 < ReduceAction618: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -133889,7 +165387,7 @@ const classtable_elt_t VFT_metamodel___inheritance___MMSpecAncestor[59] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: MMSpecAncestor < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction618 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -133905,7 +165403,9 @@ const classtable_elt_t VFT_metamodel___inheritance___MMSpecAncestor[59] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) metamodel___static_type___MMAncestor___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -133918,93 +165418,89 @@ const classtable_elt_t VFT_metamodel___inheritance___MMSpecAncestor[59] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) metamodel___inheritance___MMAncestor___add_in},
-  {(bigint) 0 /* 48: MMSpecAncestor < MMAncestor: superclass init_table position */},
-  {(bigint) metamodel___static_type___MMAncestor___stype__eq},
-  {(bigint) metamodel___static_type___MMAncestor___stype},
-  {(bigint) metamodel___static_type___MMAncestor___inheriter__eq},
-  {(bigint) metamodel___static_type___MMAncestor___inheriter},
-  {(bigint) metamodel___static_type___MMAncestor___is_reffinement},
-  {(bigint) metamodel___static_type___MMAncestor___is_specialisation},
-  {(bigint) metamodel___inheritance___MMSpecAncestor___local_class},
-  {(bigint) metamodel___static_type___MMAncestor___init},
-  {(bigint) 2 /* 57: MMSpecAncestor < MMSpecAncestor: superclass init_table position */},
-  {(bigint) metamodel___inheritance___MMSpecAncestor___init},
+  {(bigint) 0 /* 50: ReduceAction618 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction618___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction618 < ReduceAction618: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute MMSpecAncestor::_stype */
-/* 3: Attribute MMSpecAncestor::_inheriter */
-void INIT_ATTRIBUTES__metamodel___inheritance___MMSpecAncestor(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+/* 2: Attribute ReduceAction618::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction618[] = "init var of ReduceAction618";
+void INIT_ATTRIBUTES__parser___ReduceAction618(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__metamodel___inheritance___MMSpecAncestor;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction618;
   fra.me.has_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:310 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_metamodel___static_type___MMAncestor____stype(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//static_type.nit:316 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_metamodel___static_type___MMAncestor____inheriter(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_metamodel___inheritance___MMSpecAncestor(void)
+val_t NEW_parser___ReduceAction618(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_metamodel___inheritance___MMSpecAncestor;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction618;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_metamodel___inheritance___MMSpecAncestor(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction618[] = "check new ReduceAction618";
+void CHECKNEW_parser___ReduceAction618(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_metamodel___inheritance___MMSpecAncestor;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction618;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMSpecAncestor_metamodel___inheritance___MMSpecAncestor___init(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_ReduceAction618_parser___ReduceAction___init[] = "new ReduceAction618 parser::ReduceAction::init";
+val_t NEW_ReduceAction618_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 542;
-  fra.me.meth = LOCATE_NEW_MMSpecAncestor_metamodel___inheritance___MMSpecAncestor___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction618_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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:542 */
-  fra.me.REG[2] = NEW_metamodel___inheritance___MMSpecAncestor();
-  INIT_ATTRIBUTES__metamodel___inheritance___MMSpecAncestor(fra.me.REG[2]);
-  metamodel___inheritance___MMSpecAncestor___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_metamodel___inheritance___MMSpecAncestor(fra.me.REG[2]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction618();
+  INIT_ATTRIBUTES__parser___ReduceAction618(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction618(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_metamodel___inheritance___MMDefaultAncestor[59] = {
-  {(bigint) 2187 /* 0: Identity */},
-  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "MMDefaultAncestor" /* 2: Class Name */},
-  {(bigint) 3 /* 3: MMDefaultAncestor < Object: superclass typecheck marker */},
-  {(bigint) 195 /* 4: MMDefaultAncestor < MMAncestor: superclass typecheck marker */},
-  {(bigint) 2187 /* 5: MMDefaultAncestor < MMDefaultAncestor: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction619[55] = {
+  {(bigint) 699 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction619" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction619 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction619 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 699 /* 5: ReduceAction619 < ReduceAction619: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -134017,7 +165513,7 @@ const classtable_elt_t VFT_metamodel___inheritance___MMDefaultAncestor[59] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: MMDefaultAncestor < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction619 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -134033,7 +165529,9 @@ const classtable_elt_t VFT_metamodel___inheritance___MMDefaultAncestor[59] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) metamodel___static_type___MMAncestor___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -134046,93 +165544,89 @@ const classtable_elt_t VFT_metamodel___inheritance___MMDefaultAncestor[59] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) metamodel___inheritance___MMAncestor___add_in},
-  {(bigint) 0 /* 48: MMDefaultAncestor < MMAncestor: superclass init_table position */},
-  {(bigint) metamodel___static_type___MMAncestor___stype__eq},
-  {(bigint) metamodel___static_type___MMAncestor___stype},
-  {(bigint) metamodel___static_type___MMAncestor___inheriter__eq},
-  {(bigint) metamodel___static_type___MMAncestor___inheriter},
-  {(bigint) metamodel___static_type___MMAncestor___is_reffinement},
-  {(bigint) metamodel___static_type___MMAncestor___is_specialisation},
-  {(bigint) metamodel___inheritance___MMDefaultAncestor___local_class},
-  {(bigint) metamodel___static_type___MMAncestor___init},
-  {(bigint) 2 /* 57: MMDefaultAncestor < MMDefaultAncestor: superclass init_table position */},
-  {(bigint) metamodel___inheritance___MMDefaultAncestor___init},
+  {(bigint) 0 /* 50: ReduceAction619 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction619___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction619 < ReduceAction619: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute MMDefaultAncestor::_stype */
-/* 3: Attribute MMDefaultAncestor::_inheriter */
-void INIT_ATTRIBUTES__metamodel___inheritance___MMDefaultAncestor(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+/* 2: Attribute ReduceAction619::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction619[] = "init var of ReduceAction619";
+void INIT_ATTRIBUTES__parser___ReduceAction619(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__metamodel___inheritance___MMDefaultAncestor;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction619;
   fra.me.has_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:310 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_metamodel___static_type___MMAncestor____stype(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//static_type.nit:316 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_metamodel___static_type___MMAncestor____inheriter(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_metamodel___inheritance___MMDefaultAncestor(void)
+val_t NEW_parser___ReduceAction619(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_metamodel___inheritance___MMDefaultAncestor;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction619;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_metamodel___inheritance___MMDefaultAncestor(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction619[] = "check new ReduceAction619";
+void CHECKNEW_parser___ReduceAction619(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_metamodel___inheritance___MMDefaultAncestor;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction619;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMDefaultAncestor_metamodel___inheritance___MMDefaultAncestor___init(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_ReduceAction619_parser___ReduceAction___init[] = "new ReduceAction619 parser::ReduceAction::init";
+val_t NEW_ReduceAction619_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 553;
-  fra.me.meth = LOCATE_NEW_MMDefaultAncestor_metamodel___inheritance___MMDefaultAncestor___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction619_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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:553 */
-  fra.me.REG[2] = NEW_metamodel___inheritance___MMDefaultAncestor();
-  INIT_ATTRIBUTES__metamodel___inheritance___MMDefaultAncestor(fra.me.REG[2]);
-  metamodel___inheritance___MMDefaultAncestor___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_metamodel___inheritance___MMDefaultAncestor(fra.me.REG[2]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction619();
+  INIT_ATTRIBUTES__parser___ReduceAction619(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction619(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_metamodel___type_formal___MMTypeFormal[79] = {
-  {(bigint) 2151 /* 0: Identity */},
-  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "MMTypeFormal" /* 2: Class Name */},
-  {(bigint) 3 /* 3: MMTypeFormal < Object: superclass typecheck marker */},
-  {(bigint) 143 /* 4: MMTypeFormal < MMType: superclass typecheck marker */},
-  {(bigint) 2151 /* 5: MMTypeFormal < MMTypeFormal: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction620[55] = {
+  {(bigint) 691 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction620" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction620 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction620 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 691 /* 5: ReduceAction620 < ReduceAction620: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -134145,7 +165639,7 @@ const classtable_elt_t VFT_metamodel___type_formal___MMTypeFormal[79] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: MMTypeFormal < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction620 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -134161,7 +165655,9 @@ const classtable_elt_t VFT_metamodel___type_formal___MMTypeFormal[79] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) metamodel___type_formal___MMTypeFormal___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -134174,120 +165670,90 @@ const classtable_elt_t VFT_metamodel___type_formal___MMTypeFormal[79] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) native_interface___frontier___MMType___compile_check_isa},
-  {(bigint) native_interface___frontier___MMType___compile_condition_isa},
-  {(bigint) native_interface___frontier___MMType___compile_to_frontier},
-  {(bigint) native_interface___ni_metamodel___MMType___friendly_extern_name},
-  {(bigint) native_interface___ni_metamodel___MMType___from_native},
-  {(bigint) native_interface___ni_metamodel___MMType___assign_to_friendly},
-  {(bigint) native_interface___ni_metamodel___MMType___assign_from_friendly},
-  {(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) metamodel___genericity___MMTypeFormal___is_generic},
-  {(bigint) metamodel___type_formal___MMTypeFormal___direct_type},
-  {(bigint) 0 /* 61: MMTypeFormal < MMType: superclass init_table position */},
-  {(bigint) metamodel___static_type___MMType___mmmodule},
-  {(bigint) metamodel___type_formal___MMTypeFormal___local_class},
-  {(bigint) metamodel___type_formal___MMTypeFormal___is_valid},
-  {(bigint) metamodel___type_formal___MMTypeFormal_____l},
-  {(bigint) metamodel___type_formal___MMTypeFormal___is_supertype},
-  {(bigint) metamodel___static_type___MMType___for_module},
-  {(bigint) metamodel___static_type___MMType___adapt_to},
-  {(bigint) metamodel___static_type___MMType___upcast_for},
-  {(bigint) metamodel___static_type___MMType___not_for_self},
-  {(bigint) metamodel___type_formal___MMTypeFormal___is_nullable},
-  {(bigint) metamodel___static_type___MMType___as_nullable},
-  {(bigint) metamodel___static_type___MMType___as_notnull},
-  {(bigint) metamodel___static_type___MMType___init},
-  {(bigint) 2 /* 75: MMTypeFormal < MMTypeFormal: superclass init_table position */},
-  {(bigint) metamodel___type_formal___MMTypeFormal___name},
-  {(bigint) metamodel___type_formal___MMTypeFormal___bound},
-  {(bigint) metamodel___type_formal___MMTypeFormal___init},
+  {(bigint) 0 /* 50: ReduceAction620 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction620___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction620 < ReduceAction620: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute MMTypeFormal::_as_nullable_cache */
-/* 3: Attribute MMTypeFormal::_name */
-/* 4: Attribute MMTypeFormal::_bound */
-void INIT_ATTRIBUTES__metamodel___type_formal___MMTypeFormal(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+/* 2: Attribute ReduceAction620::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction620[] = "init var of ReduceAction620";
+void INIT_ATTRIBUTES__parser___ReduceAction620(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__metamodel___type_formal___MMTypeFormal;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction620;
   fra.me.has_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:397 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_metamodel___static_type___MMType____as_nullable_cache(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_metamodel___type_formal___MMTypeFormal(void)
+val_t NEW_parser___ReduceAction620(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_metamodel___type_formal___MMTypeFormal;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction620;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_metamodel___type_formal___MMTypeFormal(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction620[] = "check new ReduceAction620";
+void CHECKNEW_parser___ReduceAction620(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_metamodel___type_formal___MMTypeFormal;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction620;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_metamodel___type_formal___MMTypeFormal____name(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_name", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMTypeFormal_metamodel___type_formal___MMTypeFormal___init(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_ReduceAction620_parser___ReduceAction___init[] = "new ReduceAction620 parser::ReduceAction::init";
+val_t NEW_ReduceAction620_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
   int init_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_metamodel___type_formal___MMTypeFormal___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction620_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_metamodel___type_formal___MMTypeFormal();
-  INIT_ATTRIBUTES__metamodel___type_formal___MMTypeFormal(fra.me.REG[2]);
-  metamodel___type_formal___MMTypeFormal___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_metamodel___type_formal___MMTypeFormal(fra.me.REG[2]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction620();
+  INIT_ATTRIBUTES__parser___ReduceAction620(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction620(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_metamodel___genericity___MMTypeGeneric[84] = {
-  {(bigint) 2827 /* 0: Identity */},
-  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "MMTypeGeneric" /* 2: Class Name */},
-  {(bigint) 3 /* 3: MMTypeGeneric < Object: superclass typecheck marker */},
-  {(bigint) 143 /* 4: MMTypeGeneric < MMType: superclass typecheck marker */},
-  {(bigint) 2155 /* 5: MMTypeGeneric < MMTypeClass: superclass typecheck marker */},
-  {(bigint) 2827 /* 6: MMTypeGeneric < MMTypeGeneric: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction621[55] = {
+  {(bigint) 687 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction621" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction621 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction621 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 687 /* 5: ReduceAction621 < ReduceAction621: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -134299,7 +165765,7 @@ const classtable_elt_t VFT_metamodel___genericity___MMTypeGeneric[84] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: MMTypeGeneric < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction621 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -134315,7 +165781,9 @@ const classtable_elt_t VFT_metamodel___genericity___MMTypeGeneric[84] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) metamodel___genericity___MMTypeGeneric___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -134328,130 +165796,90 @@ const classtable_elt_t VFT_metamodel___genericity___MMTypeGeneric[84] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) native_interface___frontier___MMType___compile_check_isa},
-  {(bigint) native_interface___frontier___MMType___compile_condition_isa},
-  {(bigint) native_interface___frontier___MMType___compile_to_frontier},
-  {(bigint) native_interface___ni_metamodel___MMType___friendly_extern_name},
-  {(bigint) native_interface___ni_metamodel___MMType___from_native},
-  {(bigint) native_interface___ni_metamodel___MMType___assign_to_friendly},
-  {(bigint) native_interface___ni_metamodel___MMType___assign_from_friendly},
-  {(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) metamodel___genericity___MMTypeGeneric___is_generic},
-  {(bigint) metamodel___type_formal___MMType___direct_type},
-  {(bigint) 0 /* 61: MMTypeGeneric < MMType: superclass init_table position */},
-  {(bigint) metamodel___static_type___MMTypeClass___mmmodule},
-  {(bigint) metamodel___static_type___MMTypeClass___local_class},
-  {(bigint) metamodel___static_type___MMType___is_valid},
-  {(bigint) metamodel___static_type___MMTypeClass_____l},
-  {(bigint) metamodel___genericity___MMTypeGeneric___is_supertype},
-  {(bigint) metamodel___genericity___MMTypeGeneric___for_module},
-  {(bigint) metamodel___genericity___MMTypeGeneric___adapt_to},
-  {(bigint) metamodel___genericity___MMTypeGeneric___upcast_for},
-  {(bigint) metamodel___static_type___MMType___not_for_self},
-  {(bigint) metamodel___static_type___MMType___is_nullable},
-  {(bigint) metamodel___static_type___MMType___as_nullable},
-  {(bigint) metamodel___static_type___MMType___as_notnull},
-  {(bigint) metamodel___static_type___MMType___init},
-  {(bigint) 2 /* 75: MMTypeGeneric < MMTypeClass: superclass init_table position */},
-  {(bigint) metamodel___static_type___MMTypeClass___init},
-  {(bigint) 3 /* 77: MMTypeGeneric < MMTypeGeneric: superclass init_table position */},
-  {(bigint) metamodel___genericity___MMTypeGeneric___params},
-  {(bigint) metamodel___static_type___MMTypeClass___upcast_for},
-  {(bigint) metamodel___genericity___MMTypeGeneric___params_equals},
-  {(bigint) metamodel___static_type___MMTypeClass___to_s},
-  {(bigint) metamodel___genericity___MMTypeGeneric___is_subtype},
-  {(bigint) metamodel___genericity___MMTypeGeneric___init},
+  {(bigint) 0 /* 50: ReduceAction621 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction621___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction621 < ReduceAction621: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute MMTypeGeneric::_as_nullable_cache */
-/* 3: Attribute MMTypeGeneric::_local_class */
-/* 4: Attribute MMTypeGeneric::_params */
-void INIT_ATTRIBUTES__metamodel___genericity___MMTypeGeneric(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+/* 2: Attribute ReduceAction621::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction621[] = "init var of ReduceAction621";
+void INIT_ATTRIBUTES__parser___ReduceAction621(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__metamodel___genericity___MMTypeGeneric;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction621;
   fra.me.has_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:397 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_metamodel___static_type___MMType____as_nullable_cache(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_metamodel___genericity___MMTypeGeneric(void)
+val_t NEW_parser___ReduceAction621(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_metamodel___genericity___MMTypeGeneric;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction621;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_metamodel___genericity___MMTypeGeneric(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction621[] = "check new ReduceAction621";
+void CHECKNEW_parser___ReduceAction621(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_metamodel___genericity___MMTypeGeneric;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction621;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_metamodel___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_metamodel___static_type___MMTypeClass____local_class(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMTypeGeneric_metamodel___genericity___MMTypeGeneric___init(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_ReduceAction621_parser___ReduceAction___init[] = "new ReduceAction621 parser::ReduceAction::init";
+val_t NEW_ReduceAction621_parser___ReduceAction___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};
+  int init_table[3] = {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_metamodel___genericity___MMTypeGeneric___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction621_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_metamodel___genericity___MMTypeGeneric();
-  INIT_ATTRIBUTES__metamodel___genericity___MMTypeGeneric(fra.me.REG[2]);
-  metamodel___genericity___MMTypeGeneric___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_metamodel___genericity___MMTypeGeneric(fra.me.REG[2]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction621();
+  INIT_ATTRIBUTES__parser___ReduceAction621(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction621(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_metamodel___genericity___MMTypeFormalParameter[85] = {
-  {(bigint) 2831 /* 0: Identity */},
-  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "MMTypeFormalParameter" /* 2: Class Name */},
-  {(bigint) 3 /* 3: MMTypeFormalParameter < Object: superclass typecheck marker */},
-  {(bigint) 143 /* 4: MMTypeFormalParameter < MMType: superclass typecheck marker */},
-  {(bigint) 2151 /* 5: MMTypeFormalParameter < MMTypeFormal: superclass typecheck marker */},
-  {(bigint) 2831 /* 6: MMTypeFormalParameter < MMTypeFormalParameter: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction622[55] = {
+  {(bigint) 683 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction622" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction622 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction622 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 683 /* 5: ReduceAction622 < ReduceAction622: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -134463,7 +165891,7 @@ const classtable_elt_t VFT_metamodel___genericity___MMTypeFormalParameter[85] =
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: MMTypeFormalParameter < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction622 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -134479,7 +165907,9 @@ const classtable_elt_t VFT_metamodel___genericity___MMTypeFormalParameter[85] =
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) metamodel___type_formal___MMTypeFormal___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -134492,166 +165922,89 @@ const classtable_elt_t VFT_metamodel___genericity___MMTypeFormalParameter[85] =
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) native_interface___frontier___MMType___compile_check_isa},
-  {(bigint) native_interface___frontier___MMType___compile_condition_isa},
-  {(bigint) native_interface___frontier___MMType___compile_to_frontier},
-  {(bigint) native_interface___ni_metamodel___MMType___friendly_extern_name},
-  {(bigint) native_interface___ni_metamodel___MMType___from_native},
-  {(bigint) native_interface___ni_metamodel___MMType___assign_to_friendly},
-  {(bigint) native_interface___ni_metamodel___MMType___assign_from_friendly},
-  {(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) metamodel___genericity___MMTypeFormal___is_generic},
-  {(bigint) metamodel___type_formal___MMTypeFormal___direct_type},
-  {(bigint) 0 /* 61: MMTypeFormalParameter < MMType: superclass init_table position */},
-  {(bigint) metamodel___genericity___MMTypeFormalParameter___mmmodule},
-  {(bigint) metamodel___type_formal___MMTypeFormal___local_class},
-  {(bigint) metamodel___type_formal___MMTypeFormal___is_valid},
-  {(bigint) metamodel___type_formal___MMTypeFormal_____l},
-  {(bigint) metamodel___type_formal___MMTypeFormal___is_supertype},
-  {(bigint) metamodel___genericity___MMTypeFormalParameter___for_module},
-  {(bigint) metamodel___genericity___MMTypeFormalParameter___adapt_to},
-  {(bigint) metamodel___genericity___MMTypeFormalParameter___upcast_for},
-  {(bigint) metamodel___static_type___MMType___not_for_self},
-  {(bigint) metamodel___type_formal___MMTypeFormal___is_nullable},
-  {(bigint) metamodel___static_type___MMType___as_nullable},
-  {(bigint) metamodel___static_type___MMType___as_notnull},
-  {(bigint) metamodel___static_type___MMType___init},
-  {(bigint) 2 /* 75: MMTypeFormalParameter < MMTypeFormal: superclass init_table position */},
-  {(bigint) metamodel___type_formal___MMTypeFormal___name},
-  {(bigint) metamodel___type_formal___MMTypeFormal___bound},
-  {(bigint) metamodel___type_formal___MMTypeFormal___init},
-  {(bigint) 3 /* 79: MMTypeFormalParameter < MMTypeFormalParameter: superclass init_table position */},
-  {(bigint) metamodel___genericity___MMTypeFormalParameter___def_class},
-  {(bigint) metamodel___genericity___MMTypeFormalParameter___position},
-  {(bigint) metamodel___genericity___MMTypeFormalParameter___bound__eq},
-  {(bigint) metamodel___genericity___MMTypeFormalParameter___with_bound},
-  {(bigint) metamodel___genericity___MMTypeFormalParameter___init},
+  {(bigint) 0 /* 50: ReduceAction622 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction622___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction622 < ReduceAction622: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__metamodel___genericity___MMTypeFormalParameter(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+/* 2: Attribute ReduceAction622::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction622[] = "init var of ReduceAction622";
+void INIT_ATTRIBUTES__parser___ReduceAction622(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__metamodel___genericity___MMTypeFormalParameter;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction622;
   fra.me.has_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:397 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_metamodel___static_type___MMType____as_nullable_cache(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_metamodel___genericity___MMTypeFormalParameter(void)
+val_t NEW_parser___ReduceAction622(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_metamodel___genericity___MMTypeFormalParameter;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction622;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_metamodel___genericity___MMTypeFormalParameter(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction622[] = "check new ReduceAction622";
+void CHECKNEW_parser___ReduceAction622(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_metamodel___genericity___MMTypeFormalParameter;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction622;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_metamodel___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_metamodel___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_metamodel___type_formal___MMTypeFormal____name(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_name", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMTypeFormalParameter_metamodel___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_metamodel___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_metamodel___genericity___MMTypeFormalParameter();
-  INIT_ATTRIBUTES__metamodel___genericity___MMTypeFormalParameter(fra.me.REG[3]);
-  metamodel___genericity___MMTypeFormalParameter___with_bound(fra.me.REG[3], fra.me.REG[0], REGB0, fra.me.REG[1], fra.me.REG[2], init_table);
-  CHECKNEW_metamodel___genericity___MMTypeFormalParameter(fra.me.REG[3]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[3];
-}
-val_t NEW_MMTypeFormalParameter_metamodel___genericity___MMTypeFormalParameter___init(val_t p0, val_t p1, val_t p2){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_ReduceAction622_parser___ReduceAction___init[] = "new ReduceAction622 parser::ReduceAction::init";
+val_t NEW_ReduceAction622_parser___ReduceAction___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};
+  int init_table[3] = {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_metamodel___genericity___MMTypeFormalParameter___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction622_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_metamodel___genericity___MMTypeFormalParameter();
-  INIT_ATTRIBUTES__metamodel___genericity___MMTypeFormalParameter(fra.me.REG[2]);
-  metamodel___genericity___MMTypeFormalParameter___init(fra.me.REG[2], fra.me.REG[0], REGB0, fra.me.REG[1], init_table);
-  CHECKNEW_metamodel___genericity___MMTypeFormalParameter(fra.me.REG[2]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction622();
+  INIT_ATTRIBUTES__parser___ReduceAction622(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction622(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_metamodel___virtualtype___MMTypeProperty[72] = {
-  {(bigint) 2143 /* 0: Identity */},
-  {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "MMTypeProperty" /* 2: Class Name */},
-  {(bigint) 3 /* 3: MMTypeProperty < Object: superclass typecheck marker */},
-  {(bigint) 159 /* 4: MMTypeProperty < MMLocalProperty: superclass typecheck marker */},
-  {(bigint) 2143 /* 5: MMTypeProperty < MMTypeProperty: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction624[55] = {
+  {(bigint) 679 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction624" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction624 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction624 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 679 /* 5: ReduceAction624 < ReduceAction624: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -134664,7 +166017,7 @@ const classtable_elt_t VFT_metamodel___virtualtype___MMTypeProperty[72] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: MMTypeProperty < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction624 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -134680,7 +166033,9 @@ const classtable_elt_t VFT_metamodel___virtualtype___MMTypeProperty[72] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -134693,146 +166048,90 @@ const classtable_elt_t VFT_metamodel___virtualtype___MMTypeProperty[72] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___MMLocalProperty___accept_property_visitor},
-  {(bigint) syntax___syntax_base___MMLocalProperty___node},
-  {(bigint) syntax___syntax_base___MMLocalProperty___is_init},
-  {(bigint) metamodel___inheritance___MMLocalProperty___inherit_global},
-  {(bigint) metamodel___static_type___MMLocalProperty___signature},
-  {(bigint) metamodel___static_type___MMLocalProperty___signature__eq},
-  {(bigint) metamodel___static_type___MMLocalProperty___signature_for},
-  {(bigint) 1 /* 54: MMTypeProperty < MMLocalProperty: superclass init_table position */},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___name},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___local_class},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___global},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___is_global_set},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___prhe},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___mmmodule},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___full_name},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___set_global},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___new_global},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___need_super},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___need_super__eq},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___init},
-  {(bigint) compiling___compiling_base___MMLocalProperty___cname},
-  {(bigint) compiling___compiling_base___MMLocalProperty___super_meth_call},
-  {(bigint) 2 /* 69: MMTypeProperty < MMTypeProperty: superclass init_table position */},
-  {(bigint) metamodel___virtualtype___MMTypeProperty___stype_for},
-  {(bigint) metamodel___virtualtype___MMTypeProperty___real_stype_for},
+  {(bigint) 0 /* 50: ReduceAction624 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction624___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction624 < ReduceAction624: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__metamodel___virtualtype___MMTypeProperty(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction624::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction624[] = "init var of ReduceAction624";
+void INIT_ATTRIBUTES__parser___ReduceAction624(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__metamodel___virtualtype___MMTypeProperty;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction624;
   fra.me.has_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_standard___collection___hash_collection___HashMap___init();
-  ATTR_metamodel___virtualtype___MMTypeProperty____stypes_cache(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//static_type.nit:56 */
-  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
-  ATTR_metamodel___static_type___MMLocalProperty____signatures_cache(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//abstractmetamodel.nit:649 */
-  REGB0 = TAG_Bool(false);
-  ATTR_metamodel___abstractmetamodel___MMLocalProperty____need_super(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_metamodel___virtualtype___MMTypeProperty(void)
+val_t NEW_parser___ReduceAction624(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 11);
-  obj->vft = (classtable_elt_t*)VFT_metamodel___virtualtype___MMTypeProperty;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction624;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_metamodel___virtualtype___MMTypeProperty(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction624[] = "check new ReduceAction624";
+void CHECKNEW_parser___ReduceAction624(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_metamodel___virtualtype___MMTypeProperty;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction624;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___abstractmetamodel___MMLocalProperty____need_super(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_need_super", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMTypeProperty_metamodel___abstractmetamodel___MMLocalProperty___init(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_ReduceAction624_parser___ReduceAction___init[] = "new ReduceAction624 parser::ReduceAction::init";
+val_t NEW_ReduceAction624_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 651;
-  fra.me.meth = LOCATE_NEW_MMTypeProperty_metamodel___abstractmetamodel___MMLocalProperty___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction624_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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:651 */
-  fra.me.REG[2] = NEW_metamodel___virtualtype___MMTypeProperty();
-  INIT_ATTRIBUTES__metamodel___virtualtype___MMTypeProperty(fra.me.REG[2]);
-  metamodel___abstractmetamodel___MMLocalProperty___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_metamodel___virtualtype___MMTypeProperty(fra.me.REG[2]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction624();
+  INIT_ATTRIBUTES__parser___ReduceAction624(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction624(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_metamodel___virtualtype___MMVirtualType[83] = {
-  {(bigint) 2819 /* 0: Identity */},
-  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "MMVirtualType" /* 2: Class Name */},
-  {(bigint) 3 /* 3: MMVirtualType < Object: superclass typecheck marker */},
-  {(bigint) 143 /* 4: MMVirtualType < MMType: superclass typecheck marker */},
-  {(bigint) 2151 /* 5: MMVirtualType < MMTypeFormal: superclass typecheck marker */},
-  {(bigint) 2819 /* 6: MMVirtualType < MMVirtualType: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction625[55] = {
+  {(bigint) 675 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction625" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction625 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction625 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 675 /* 5: ReduceAction625 < ReduceAction625: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -134844,7 +166143,7 @@ const classtable_elt_t VFT_metamodel___virtualtype___MMVirtualType[83] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: MMVirtualType < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction625 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -134860,7 +166159,9 @@ const classtable_elt_t VFT_metamodel___virtualtype___MMVirtualType[83] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) metamodel___type_formal___MMTypeFormal___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -134873,134 +166174,88 @@ const classtable_elt_t VFT_metamodel___virtualtype___MMVirtualType[83] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) native_interface___frontier___MMType___compile_check_isa},
-  {(bigint) native_interface___frontier___MMType___compile_condition_isa},
-  {(bigint) native_interface___frontier___MMType___compile_to_frontier},
-  {(bigint) native_interface___ni_metamodel___MMType___friendly_extern_name},
-  {(bigint) native_interface___ni_metamodel___MMType___from_native},
-  {(bigint) native_interface___ni_metamodel___MMType___assign_to_friendly},
-  {(bigint) native_interface___ni_metamodel___MMType___assign_from_friendly},
-  {(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) metamodel___genericity___MMTypeFormal___is_generic},
-  {(bigint) metamodel___type_formal___MMTypeFormal___direct_type},
-  {(bigint) 0 /* 61: MMVirtualType < MMType: superclass init_table position */},
-  {(bigint) metamodel___virtualtype___MMVirtualType___mmmodule},
-  {(bigint) metamodel___type_formal___MMTypeFormal___local_class},
-  {(bigint) metamodel___type_formal___MMTypeFormal___is_valid},
-  {(bigint) metamodel___type_formal___MMTypeFormal_____l},
-  {(bigint) metamodel___type_formal___MMTypeFormal___is_supertype},
-  {(bigint) metamodel___virtualtype___MMVirtualType___for_module},
-  {(bigint) metamodel___virtualtype___MMVirtualType___adapt_to},
-  {(bigint) metamodel___static_type___MMType___upcast_for},
-  {(bigint) metamodel___virtualtype___MMVirtualType___not_for_self},
-  {(bigint) metamodel___type_formal___MMTypeFormal___is_nullable},
-  {(bigint) metamodel___static_type___MMType___as_nullable},
-  {(bigint) metamodel___static_type___MMType___as_notnull},
-  {(bigint) metamodel___static_type___MMType___init},
-  {(bigint) 2 /* 75: MMVirtualType < MMTypeFormal: superclass init_table position */},
-  {(bigint) metamodel___type_formal___MMTypeFormal___name},
-  {(bigint) metamodel___type_formal___MMTypeFormal___bound},
-  {(bigint) metamodel___type_formal___MMTypeFormal___init},
-  {(bigint) 3 /* 79: MMVirtualType < MMVirtualType: superclass init_table position */},
-  {(bigint) metamodel___virtualtype___MMVirtualType___property},
-  {(bigint) metamodel___virtualtype___MMVirtualType___recv},
-  {(bigint) metamodel___virtualtype___MMVirtualType___init},
+  {(bigint) 0 /* 50: ReduceAction625 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction625___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction625 < ReduceAction625: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__metamodel___virtualtype___MMVirtualType(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+/* 2: Attribute ReduceAction625::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction625[] = "init var of ReduceAction625";
+void INIT_ATTRIBUTES__parser___ReduceAction625(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__metamodel___virtualtype___MMVirtualType;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction625;
   fra.me.has_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:397 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_metamodel___static_type___MMType____as_nullable_cache(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_metamodel___virtualtype___MMVirtualType(void)
+val_t NEW_parser___ReduceAction625(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_metamodel___virtualtype___MMVirtualType;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction625;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_metamodel___virtualtype___MMVirtualType(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction625[] = "check new ReduceAction625";
+void CHECKNEW_parser___ReduceAction625(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_metamodel___virtualtype___MMVirtualType;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction625;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_metamodel___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_metamodel___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_metamodel___type_formal___MMTypeFormal____name(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_name", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMVirtualType_metamodel___virtualtype___MMVirtualType___init(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_ReduceAction625_parser___ReduceAction___init[] = "new ReduceAction625 parser::ReduceAction::init";
+val_t NEW_ReduceAction625_parser___ReduceAction___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};
+  int init_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_MMVirtualType_metamodel___virtualtype___MMVirtualType___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction625_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_metamodel___virtualtype___MMVirtualType();
-  INIT_ATTRIBUTES__metamodel___virtualtype___MMVirtualType(fra.me.REG[2]);
-  metamodel___virtualtype___MMVirtualType___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_metamodel___virtualtype___MMVirtualType(fra.me.REG[2]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction625();
+  INIT_ATTRIBUTES__parser___ReduceAction625(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction625(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_opts___Option[63] = {
-  {(bigint) 115 /* 0: Identity */},
-  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "Option" /* 2: Class Name */},
-  {(bigint) 3 /* 3: Option < Object: superclass typecheck marker */},
-  {(bigint) 115 /* 4: Option < Option: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction626[55] = {
+  {(bigint) 671 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction626" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction626 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction626 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 671 /* 5: ReduceAction626 < ReduceAction626: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -135014,7 +166269,7 @@ const classtable_elt_t VFT_opts___Option[63] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: Option < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction626 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -135030,7 +166285,9 @@ const classtable_elt_t VFT_opts___Option[63] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) opts___Option___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -135043,111 +166300,89 @@ const classtable_elt_t VFT_opts___Option[63] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: Option < Option: superclass init_table position */},
-  {(bigint) opts___Option___names},
-  {(bigint) 3 /* 49: VT Option::VALUE : id of Object */},
-  {(bigint) 3 /* 50: VT Option::VALUE : color of Object */},
-  {(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},
+  {(bigint) 0 /* 50: ReduceAction626 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction626___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction626 < ReduceAction626: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__opts___Option(val_t p0){
+/* 2: Attribute ReduceAction626::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction626[] = "init var of ReduceAction626";
+void INIT_ATTRIBUTES__parser___ReduceAction626(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__opts___Option;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction626;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_opts___Option(void)
+val_t NEW_parser___ReduceAction626(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_opts___Option;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction626;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_opts___Option(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction626[] = "check new ReduceAction626";
+void CHECKNEW_parser___ReduceAction626(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_opts___Option;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction626;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_mandatory", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-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;
+static const char LOCATE_NEW_ReduceAction626_parser___ReduceAction___init[] = "new ReduceAction626 parser::ReduceAction::init";
+val_t NEW_ReduceAction626_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[2] = {0, 0};
+  int init_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_Option_opts___Option___init_opt;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction626_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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:40 */
-  fra.me.REG[3] = NEW_opts___Option();
-  INIT_ATTRIBUTES__opts___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_opts___Option(fra.me.REG[3]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction626();
+  INIT_ATTRIBUTES__parser___ReduceAction626(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction626(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[3];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_opts___OptionText[65] = {
-  {(bigint) 2091 /* 0: Identity */},
-  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "OptionText" /* 2: Class Name */},
-  {(bigint) 3 /* 3: OptionText < Object: superclass typecheck marker */},
-  {(bigint) 115 /* 4: OptionText < Option: superclass typecheck marker */},
-  {(bigint) 2091 /* 5: OptionText < OptionText: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction627[55] = {
+  {(bigint) 667 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction627" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction627 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction627 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 667 /* 5: ReduceAction627 < ReduceAction627: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -135160,7 +166395,7 @@ const classtable_elt_t VFT_opts___OptionText[65] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: OptionText < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction627 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -135176,7 +166411,9 @@ const classtable_elt_t VFT_opts___OptionText[65] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) opts___OptionText___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -135189,109 +166426,89 @@ const classtable_elt_t VFT_opts___OptionText[65] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: OptionText < Option: superclass init_table position */},
-  {(bigint) opts___Option___names},
-  {(bigint) 3 /* 49: VT OptionText::VALUE : id of Object */},
-  {(bigint) 3 /* 50: VT OptionText::VALUE : color of Object */},
-  {(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 /* 63: OptionText < OptionText: superclass init_table position */},
-  {(bigint) opts___OptionText___init},
+  {(bigint) 0 /* 50: ReduceAction627 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction627___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction627 < ReduceAction627: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__opts___OptionText(val_t p0){
+/* 2: Attribute ReduceAction627::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction627[] = "init var of ReduceAction627";
+void INIT_ATTRIBUTES__parser___ReduceAction627(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__opts___OptionText;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction627;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_opts___OptionText(void)
+val_t NEW_parser___ReduceAction627(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_opts___OptionText;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction627;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_opts___OptionText(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction627[] = "check new ReduceAction627";
+void CHECKNEW_parser___ReduceAction627(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_opts___OptionText;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction627;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_mandatory", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", 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;
+static const char LOCATE_NEW_ReduceAction627_parser___ReduceAction___init[] = "new ReduceAction627 parser::ReduceAction::init";
+val_t NEW_ReduceAction627_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 86;
-  fra.me.meth = LOCATE_NEW_OptionText_opts___OptionText___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction627_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./../lib/opts.nit:86 */
-  fra.me.REG[1] = NEW_opts___OptionText();
-  INIT_ATTRIBUTES__opts___OptionText(fra.me.REG[1]);
-  opts___OptionText___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_opts___OptionText(fra.me.REG[1]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction627();
+  INIT_ATTRIBUTES__parser___ReduceAction627(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction627(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_opts___OptionBool[65] = {
-  {(bigint) 2103 /* 0: Identity */},
-  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "OptionBool" /* 2: Class Name */},
-  {(bigint) 3 /* 3: OptionBool < Object: superclass typecheck marker */},
-  {(bigint) 115 /* 4: OptionBool < Option: superclass typecheck marker */},
-  {(bigint) 2103 /* 5: OptionBool < OptionBool: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction628[55] = {
+  {(bigint) 663 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction628" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction628 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction628 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 663 /* 5: ReduceAction628 < ReduceAction628: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -135304,7 +166521,7 @@ const classtable_elt_t VFT_opts___OptionBool[65] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: OptionBool < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction628 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -135320,7 +166537,9 @@ const classtable_elt_t VFT_opts___OptionBool[65] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) opts___Option___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -135333,111 +166552,89 @@ const classtable_elt_t VFT_opts___OptionBool[65] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: OptionBool < Option: superclass init_table position */},
-  {(bigint) opts___Option___names},
-  {(bigint) -13 /* 49: VT OptionBool::VALUE : id of Bool */},
-  {(bigint) 4 /* 50: VT OptionBool::VALUE : color of Bool */},
-  {(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 /* 63: OptionBool < OptionBool: superclass init_table position */},
-  {(bigint) opts___OptionBool___init},
+  {(bigint) 0 /* 50: ReduceAction628 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction628___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction628 < ReduceAction628: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__opts___OptionBool(val_t p0){
+/* 2: Attribute ReduceAction628::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction628[] = "init var of ReduceAction628";
+void INIT_ATTRIBUTES__parser___ReduceAction628(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__opts___OptionBool;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction628;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_opts___OptionBool(void)
+val_t NEW_parser___ReduceAction628(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_opts___OptionBool;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction628;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_opts___OptionBool(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction628[] = "check new ReduceAction628";
+void CHECKNEW_parser___ReduceAction628(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_opts___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);
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction628;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_mandatory", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", 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;
+static const char LOCATE_NEW_ReduceAction628_parser___ReduceAction___init[] = "new ReduceAction628 parser::ReduceAction::init";
+val_t NEW_ReduceAction628_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
   int init_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_OptionBool_opts___OptionBool___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction628_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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:97 */
-  fra.me.REG[2] = NEW_opts___OptionBool();
-  INIT_ATTRIBUTES__opts___OptionBool(fra.me.REG[2]);
-  opts___OptionBool___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_opts___OptionBool(fra.me.REG[2]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction628();
+  INIT_ATTRIBUTES__parser___ReduceAction628(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction628(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_opts___OptionCount[65] = {
-  {(bigint) 2099 /* 0: Identity */},
-  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "OptionCount" /* 2: Class Name */},
-  {(bigint) 3 /* 3: OptionCount < Object: superclass typecheck marker */},
-  {(bigint) 115 /* 4: OptionCount < Option: superclass typecheck marker */},
-  {(bigint) 2099 /* 5: OptionCount < OptionCount: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction629[55] = {
+  {(bigint) 659 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction629" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction629 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction629 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 659 /* 5: ReduceAction629 < ReduceAction629: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -135450,7 +166647,7 @@ const classtable_elt_t VFT_opts___OptionCount[65] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: OptionCount < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction629 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -135466,7 +166663,9 @@ const classtable_elt_t VFT_opts___OptionCount[65] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) opts___Option___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -135479,111 +166678,89 @@ const classtable_elt_t VFT_opts___OptionCount[65] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: OptionCount < Option: superclass init_table position */},
-  {(bigint) opts___Option___names},
-  {(bigint) -29 /* 49: VT OptionCount::VALUE : id of Int */},
-  {(bigint) 7 /* 50: VT OptionCount::VALUE : color of Int */},
-  {(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 /* 63: OptionCount < OptionCount: superclass init_table position */},
-  {(bigint) opts___OptionCount___init},
+  {(bigint) 0 /* 50: ReduceAction629 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction629___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction629 < ReduceAction629: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__opts___OptionCount(val_t p0){
+/* 2: Attribute ReduceAction629::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction629[] = "init var of ReduceAction629";
+void INIT_ATTRIBUTES__parser___ReduceAction629(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__opts___OptionCount;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction629;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_opts___OptionCount(void)
+val_t NEW_parser___ReduceAction629(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_opts___OptionCount;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction629;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_opts___OptionCount(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction629[] = "check new ReduceAction629";
+void CHECKNEW_parser___ReduceAction629(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_opts___OptionCount;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction629;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_mandatory", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", 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;
+static const char LOCATE_NEW_ReduceAction629_parser___ReduceAction___init[] = "new ReduceAction629 parser::ReduceAction::init";
+val_t NEW_ReduceAction629_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 106;
-  fra.me.meth = LOCATE_NEW_OptionCount_opts___OptionCount___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction629_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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:106 */
-  fra.me.REG[2] = NEW_opts___OptionCount();
-  INIT_ATTRIBUTES__opts___OptionCount(fra.me.REG[2]);
-  opts___OptionCount___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_opts___OptionCount(fra.me.REG[2]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction629();
+  INIT_ATTRIBUTES__parser___ReduceAction629(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction629(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_opts___OptionParameter[66] = {
-  {(bigint) 2095 /* 0: Identity */},
-  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "OptionParameter" /* 2: Class Name */},
-  {(bigint) 3 /* 3: OptionParameter < Object: superclass typecheck marker */},
-  {(bigint) 115 /* 4: OptionParameter < Option: superclass typecheck marker */},
-  {(bigint) 2095 /* 5: OptionParameter < OptionParameter: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction630[55] = {
+  {(bigint) 651 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction630" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction630 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction630 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 651 /* 5: ReduceAction630 < ReduceAction630: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -135596,7 +166773,7 @@ const classtable_elt_t VFT_opts___OptionParameter[66] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: OptionParameter < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction630 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -135612,7 +166789,9 @@ const classtable_elt_t VFT_opts___OptionParameter[66] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) opts___Option___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -135625,115 +166804,90 @@ const classtable_elt_t VFT_opts___OptionParameter[66] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: OptionParameter < Option: superclass init_table position */},
-  {(bigint) opts___Option___names},
-  {(bigint) 3 /* 49: VT OptionParameter::VALUE : id of Object */},
-  {(bigint) 3 /* 50: VT OptionParameter::VALUE : color of Object */},
-  {(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 /* 63: OptionParameter < OptionParameter: superclass init_table position */},
-  {(bigint) opts___OptionParameter___convert},
-  {(bigint) opts___OptionParameter___init_opt},
+  {(bigint) 0 /* 50: ReduceAction630 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction630___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction630 < ReduceAction630: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__opts___OptionParameter(val_t p0){
+/* 2: Attribute ReduceAction630::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction630[] = "init var of ReduceAction630";
+void INIT_ATTRIBUTES__parser___ReduceAction630(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__opts___OptionParameter;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction630;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_opts___OptionParameter(void)
+val_t NEW_parser___ReduceAction630(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_opts___OptionParameter;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction630;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_opts___OptionParameter(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction630[] = "check new ReduceAction630";
+void CHECKNEW_parser___ReduceAction630(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_opts___OptionParameter;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction630;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_mandatory", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", 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;
+static const char LOCATE_NEW_ReduceAction630_parser___ReduceAction___init[] = "new ReduceAction630 parser::ReduceAction::init";
+val_t NEW_ReduceAction630_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
   int init_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_OptionParameter_opts___OptionParameter___init_opt;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction630_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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:126 */
-  fra.me.REG[3] = NEW_opts___OptionParameter();
-  INIT_ATTRIBUTES__opts___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_opts___OptionParameter(fra.me.REG[3]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction630();
+  INIT_ATTRIBUTES__parser___ReduceAction630(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction630(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[3];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_opts___OptionString[68] = {
-  {(bigint) 2791 /* 0: Identity */},
-  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "OptionString" /* 2: Class Name */},
-  {(bigint) 3 /* 3: OptionString < Object: superclass typecheck marker */},
-  {(bigint) 115 /* 4: OptionString < Option: superclass typecheck marker */},
-  {(bigint) 2095 /* 5: OptionString < OptionParameter: superclass typecheck marker */},
-  {(bigint) 2791 /* 6: OptionString < OptionString: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction631[55] = {
+  {(bigint) 647 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction631" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction631 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction631 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 647 /* 5: ReduceAction631 < ReduceAction631: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -135745,7 +166899,7 @@ const classtable_elt_t VFT_opts___OptionString[68] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: OptionString < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction631 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -135761,7 +166915,9 @@ const classtable_elt_t VFT_opts___OptionString[68] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) opts___Option___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -135774,115 +166930,90 @@ const classtable_elt_t VFT_opts___OptionString[68] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: OptionString < Option: superclass init_table position */},
-  {(bigint) opts___Option___names},
-  {(bigint) 3535 /* 49: VT OptionString::VALUE : id of String */},
-  {(bigint) 8 /* 50: VT OptionString::VALUE : color of String */},
-  {(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 /* 63: OptionString < OptionParameter: superclass init_table position */},
-  {(bigint) opts___OptionString___convert},
-  {(bigint) opts___OptionParameter___init_opt},
-  {(bigint) 3 /* 66: OptionString < OptionString: superclass init_table position */},
-  {(bigint) opts___OptionString___init},
+  {(bigint) 0 /* 50: ReduceAction631 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction631___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction631 < ReduceAction631: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__opts___OptionString(val_t p0){
+/* 2: Attribute ReduceAction631::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction631[] = "init var of ReduceAction631";
+void INIT_ATTRIBUTES__parser___ReduceAction631(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__opts___OptionString;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction631;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_opts___OptionString(void)
+val_t NEW_parser___ReduceAction631(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_opts___OptionString;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction631;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_opts___OptionString(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction631[] = "check new ReduceAction631";
+void CHECKNEW_parser___ReduceAction631(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_opts___OptionString;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction631;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_mandatory", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-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;
+static const char LOCATE_NEW_ReduceAction631_parser___ReduceAction___init[] = "new ReduceAction631 parser::ReduceAction::init";
+val_t NEW_ReduceAction631_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 133;
-  fra.me.meth = LOCATE_NEW_OptionString_opts___OptionString___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction631_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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:133 */
-  fra.me.REG[2] = NEW_opts___OptionString();
-  INIT_ATTRIBUTES__opts___OptionString(fra.me.REG[2]);
-  opts___OptionString___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_opts___OptionString(fra.me.REG[2]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction631();
+  INIT_ATTRIBUTES__parser___ReduceAction631(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction631(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_opts___OptionEnum[69] = {
-  {(bigint) 2799 /* 0: Identity */},
-  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "OptionEnum" /* 2: Class Name */},
-  {(bigint) 3 /* 3: OptionEnum < Object: superclass typecheck marker */},
-  {(bigint) 115 /* 4: OptionEnum < Option: superclass typecheck marker */},
-  {(bigint) 2095 /* 5: OptionEnum < OptionParameter: superclass typecheck marker */},
-  {(bigint) 2799 /* 6: OptionEnum < OptionEnum: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction633[55] = {
+  {(bigint) 643 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction633" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction633 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction633 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 643 /* 5: ReduceAction633 < ReduceAction633: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -135894,7 +167025,7 @@ const classtable_elt_t VFT_opts___OptionEnum[69] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: OptionEnum < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction633 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -135910,7 +167041,9 @@ const classtable_elt_t VFT_opts___OptionEnum[69] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) opts___Option___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -135923,126 +167056,90 @@ const classtable_elt_t VFT_opts___OptionEnum[69] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: OptionEnum < Option: superclass init_table position */},
-  {(bigint) opts___Option___names},
-  {(bigint) -29 /* 49: VT OptionEnum::VALUE : id of Int */},
-  {(bigint) 7 /* 50: VT OptionEnum::VALUE : color of Int */},
-  {(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 /* 63: OptionEnum < OptionParameter: superclass init_table position */},
-  {(bigint) opts___OptionEnum___convert},
-  {(bigint) opts___OptionParameter___init_opt},
-  {(bigint) 3 /* 66: OptionEnum < OptionEnum: superclass init_table position */},
-  {(bigint) opts___OptionEnum___init},
-  {(bigint) opts___OptionEnum___value_name},
+  {(bigint) 0 /* 50: ReduceAction633 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction633___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction633 < ReduceAction633: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__opts___OptionEnum(val_t p0){
+/* 2: Attribute ReduceAction633::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction633[] = "init var of ReduceAction633";
+void INIT_ATTRIBUTES__parser___ReduceAction633(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__opts___OptionEnum;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction633;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_opts___OptionEnum(void)
+val_t NEW_parser___ReduceAction633(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 8);
-  obj->vft = (classtable_elt_t*)VFT_opts___OptionEnum;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction633;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_opts___OptionEnum(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction633[] = "check new ReduceAction633";
+void CHECKNEW_parser___ReduceAction633(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_opts___OptionEnum;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction633;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_mandatory", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", 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){
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+static const char LOCATE_NEW_ReduceAction633_parser___ReduceAction___init[] = "new ReduceAction633 parser::ReduceAction::init";
+val_t NEW_ReduceAction633_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 143;
-  fra.me.meth = LOCATE_NEW_OptionEnum_opts___OptionEnum___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction633_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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:143 */
-  fra.me.REG[3] = NEW_opts___OptionEnum();
-  INIT_ATTRIBUTES__opts___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_opts___OptionEnum(fra.me.REG[3]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction633();
+  INIT_ATTRIBUTES__parser___ReduceAction633(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction633(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[3];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_opts___OptionInt[68] = {
-  {(bigint) 2795 /* 0: Identity */},
-  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "OptionInt" /* 2: Class Name */},
-  {(bigint) 3 /* 3: OptionInt < Object: superclass typecheck marker */},
-  {(bigint) 115 /* 4: OptionInt < Option: superclass typecheck marker */},
-  {(bigint) 2095 /* 5: OptionInt < OptionParameter: superclass typecheck marker */},
-  {(bigint) 2795 /* 6: OptionInt < OptionInt: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction636[55] = {
+  {(bigint) 639 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction636" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction636 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction636 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 639 /* 5: ReduceAction636 < ReduceAction636: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -136054,7 +167151,7 @@ const classtable_elt_t VFT_opts___OptionInt[68] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: OptionInt < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction636 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -136070,7 +167167,9 @@ const classtable_elt_t VFT_opts___OptionInt[68] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) opts___Option___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -136083,117 +167182,90 @@ const classtable_elt_t VFT_opts___OptionInt[68] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: OptionInt < Option: superclass init_table position */},
-  {(bigint) opts___Option___names},
-  {(bigint) -29 /* 49: VT OptionInt::VALUE : id of Int */},
-  {(bigint) 7 /* 50: VT OptionInt::VALUE : color of Int */},
-  {(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 /* 63: OptionInt < OptionParameter: superclass init_table position */},
-  {(bigint) opts___OptionInt___convert},
-  {(bigint) opts___OptionParameter___init_opt},
-  {(bigint) 3 /* 66: OptionInt < OptionInt: superclass init_table position */},
-  {(bigint) opts___OptionInt___init},
+  {(bigint) 0 /* 50: ReduceAction636 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction636___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction636 < ReduceAction636: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__opts___OptionInt(val_t p0){
+/* 2: Attribute ReduceAction636::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction636[] = "init var of ReduceAction636";
+void INIT_ATTRIBUTES__parser___ReduceAction636(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__opts___OptionInt;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction636;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_opts___OptionInt(void)
+val_t NEW_parser___ReduceAction636(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_opts___OptionInt;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction636;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_opts___OptionInt(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction636[] = "check new ReduceAction636";
+void CHECKNEW_parser___ReduceAction636(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_opts___OptionInt;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction636;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_mandatory", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", 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){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_ReduceAction636_parser___ReduceAction___init[] = "new ReduceAction636 parser::ReduceAction::init";
+val_t NEW_ReduceAction636_parser___ReduceAction___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};
+  int init_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_OptionInt_opts___OptionInt___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction636_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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:172 */
-  fra.me.REG[2] = NEW_opts___OptionInt();
-  INIT_ATTRIBUTES__opts___OptionInt(fra.me.REG[2]);
-  opts___OptionInt___init(fra.me.REG[2], fra.me.REG[0], REGB0, fra.me.REG[1], init_table);
-  CHECKNEW_opts___OptionInt(fra.me.REG[2]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction636();
+  INIT_ATTRIBUTES__parser___ReduceAction636(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction636(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_opts___OptionArray[68] = {
-  {(bigint) 2803 /* 0: Identity */},
-  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "OptionArray" /* 2: Class Name */},
-  {(bigint) 3 /* 3: OptionArray < Object: superclass typecheck marker */},
-  {(bigint) 115 /* 4: OptionArray < Option: superclass typecheck marker */},
-  {(bigint) 2095 /* 5: OptionArray < OptionParameter: superclass typecheck marker */},
-  {(bigint) 2803 /* 6: OptionArray < OptionArray: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction637[55] = {
+  {(bigint) 635 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction637" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction637 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction637 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 635 /* 5: ReduceAction637 < ReduceAction637: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -136205,7 +167277,7 @@ const classtable_elt_t VFT_opts___OptionArray[68] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: OptionArray < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction637 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -136221,7 +167293,9 @@ const classtable_elt_t VFT_opts___OptionArray[68] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) opts___Option___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -136234,119 +167308,88 @@ const classtable_elt_t VFT_opts___OptionArray[68] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: OptionArray < Option: superclass init_table position */},
-  {(bigint) opts___Option___names},
-  {(bigint) 3747 /* 49: VT OptionArray::VALUE : id of Array */},
-  {(bigint) 4 /* 50: VT OptionArray::VALUE : color of Array */},
-  {(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 /* 63: OptionArray < OptionParameter: superclass init_table position */},
-  {(bigint) opts___OptionArray___convert},
-  {(bigint) opts___OptionParameter___init_opt},
-  {(bigint) 3 /* 66: OptionArray < OptionArray: superclass init_table position */},
-  {(bigint) opts___OptionArray___init},
+  {(bigint) 0 /* 50: ReduceAction637 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction637___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction637 < ReduceAction637: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__opts___OptionArray(val_t p0){
+/* 2: Attribute ReduceAction637::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction637[] = "init var of ReduceAction637";
+void INIT_ATTRIBUTES__parser___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__opts___OptionArray;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction637;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_opts___OptionArray(void)
+val_t NEW_parser___ReduceAction637(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 8);
-  obj->vft = (classtable_elt_t*)VFT_opts___OptionArray;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction637;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_opts___OptionArray(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction637[] = "check new ReduceAction637";
+void CHECKNEW_parser___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_opts___OptionArray;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction637;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_mandatory", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-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;
+static const char LOCATE_NEW_ReduceAction637_parser___ReduceAction___init[] = "new ReduceAction637 parser::ReduceAction::init";
+val_t NEW_ReduceAction637_parser___ReduceAction___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};
+  int init_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_OptionArray_opts___OptionArray___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction637_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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:181 */
-  fra.me.REG[2] = NEW_opts___OptionArray();
-  INIT_ATTRIBUTES__opts___OptionArray(fra.me.REG[2]);
-  opts___OptionArray___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_opts___OptionArray(fra.me.REG[2]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction637();
+  INIT_ATTRIBUTES__parser___ReduceAction637(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction637(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_opts___OptionContext[56] = {
-  {(bigint) 111 /* 0: Identity */},
-  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "OptionContext" /* 2: Class Name */},
-  {(bigint) 3 /* 3: OptionContext < Object: superclass typecheck marker */},
-  {(bigint) 111 /* 4: OptionContext < OptionContext: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction638[55] = {
+  {(bigint) 631 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction638" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction638 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction638 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 631 /* 5: ReduceAction638 < ReduceAction638: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -136360,7 +167403,7 @@ const classtable_elt_t VFT_opts___OptionContext[56] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: OptionContext < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction638 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -136376,6 +167419,8 @@ const classtable_elt_t VFT_opts___OptionContext[56] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -136389,97 +167434,90 @@ const classtable_elt_t VFT_opts___OptionContext[56] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: 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) 0 /* 50: ReduceAction638 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction638___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction638 < ReduceAction638: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute OptionContext::_options */
-/* 3: Attribute OptionContext::_rest */
-/* 4: Attribute OptionContext::_optmap */
-void INIT_ATTRIBUTES__opts___OptionContext(val_t p0){
+/* 2: Attribute ReduceAction638::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction638[] = "init var of ReduceAction638";
+void INIT_ATTRIBUTES__parser___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__opts___OptionContext;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction638;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_opts___OptionContext(void)
+val_t NEW_parser___ReduceAction638(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_opts___OptionContext;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction638;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_opts___OptionContext(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction638[] = "check new ReduceAction638";
+void CHECKNEW_parser___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_opts___OptionContext;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction638;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_optmap", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_OptionContext_opts___OptionContext___init(void){
+static const char LOCATE_NEW_ReduceAction638_parser___ReduceAction___init[] = "new ReduceAction638 parser::ReduceAction::init";
+val_t NEW_ReduceAction638_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[2] = {0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 256;
-  fra.me.meth = LOCATE_NEW_OptionContext_opts___OptionContext___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction638_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./../lib/opts.nit:256 */
-  fra.me.REG[0] = NEW_opts___OptionContext();
-  INIT_ATTRIBUTES__opts___OptionContext(fra.me.REG[0]);
-  opts___OptionContext___init(fra.me.REG[0], init_table);
-  CHECKNEW_opts___OptionContext(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction638();
+  INIT_ATTRIBUTES__parser___ReduceAction638(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction638(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_mmloader___Message[68] = {
-  {(bigint) 2123 /* 0: Identity */},
-  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "Message" /* 2: Class Name */},
-  {(bigint) 3 /* 3: Message < Object: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction639[55] = {
+  {(bigint) 627 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction639" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction639 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction639 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 627 /* 5: ReduceAction639 < ReduceAction639: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 275 /* 5: Message < Comparable: superclass typecheck marker */},
-  {(bigint) 2123 /* 6: Message < Message: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -136491,7 +167529,7 @@ const classtable_elt_t VFT_mmloader___Message[68] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: Message < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction639 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -136507,7 +167545,9 @@ const classtable_elt_t VFT_mmloader___Message[68] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) mmloader___Message___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -136520,100 +167560,89 @@ const classtable_elt_t VFT_mmloader___Message[68] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 0 /* 52: Message < Comparable: superclass init_table position */},
-  {(bigint) 2123 /* 53: VT Message::OTHER : id of Message */},
-  {(bigint) 6 /* 54: VT Message::OTHER : color of Message */},
-  {(bigint) mmloader___Message_____l},
-  {(bigint) standard___kernel___Comparable_____leq},
-  {(bigint) standard___kernel___Comparable_____geq},
-  {(bigint) standard___kernel___Comparable_____g},
-  {(bigint) standard___kernel___Comparable_____leqg},
-  {(bigint) standard___kernel___Comparable___is_between},
-  {(bigint) standard___kernel___Comparable___max},
-  {(bigint) standard___kernel___Comparable___min},
-  {(bigint) 2 /* 63: Message < Message: superclass init_table position */},
-  {(bigint) mmloader___Message___location},
-  {(bigint) mmloader___Message___text},
-  {(bigint) mmloader___Message___to_color_string},
-  {(bigint) mmloader___Message___init},
+  {(bigint) 0 /* 50: ReduceAction639 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction639___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction639 < ReduceAction639: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute Message::_location */
-/* 3: Attribute Message::_text */
-void INIT_ATTRIBUTES__mmloader___Message(val_t p0){
+/* 2: Attribute ReduceAction639::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction639[] = "init var of ReduceAction639";
+void INIT_ATTRIBUTES__parser___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__mmloader___Message;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction639;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_mmloader___Message(void)
+val_t NEW_parser___ReduceAction639(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_mmloader___Message;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction639;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_mmloader___Message(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction639[] = "check new ReduceAction639";
+void CHECKNEW_parser___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_mmloader___Message;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction639;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_mmloader___Message____text(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", 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;
+static const char LOCATE_NEW_ReduceAction639_parser___ReduceAction___init[] = "new ReduceAction639 parser::ReduceAction::init";
+val_t NEW_ReduceAction639_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
   int init_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.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction639_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_mmloader___Message();
-  INIT_ATTRIBUTES__mmloader___Message(fra.me.REG[2]);
-  mmloader___Message___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_mmloader___Message(fra.me.REG[2]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction639();
+  INIT_ATTRIBUTES__parser___ReduceAction639(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction639(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_mmloader___ToolContext[134] = {
-  {(bigint) 327 /* 0: Identity */},
-  {(bigint) 51 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ToolContext" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ToolContext < Object: superclass typecheck marker */},
-  {(bigint) 187 /* 4: ToolContext < MMContext: superclass typecheck marker */},
-  {(bigint) 327 /* 5: ToolContext < ToolContext: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction640[55] = {
+  {(bigint) 619 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction640" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction640 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction640 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 619 /* 5: ReduceAction640 < ReduceAction640: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -136626,7 +167655,7 @@ const classtable_elt_t VFT_mmloader___ToolContext[134] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: ToolContext < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction640 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -136642,963 +167671,103 @@ const classtable_elt_t VFT_mmloader___ToolContext[134] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
-  {(bigint) standard___string___Object___inspect_head},
-  {(bigint) standard___string___Object___args},
-  {(bigint) standard___hash___Object___hash},
-  {(bigint) standard___math___Object___atan2},
-  {(bigint) standard___math___Object___pi},
-  {(bigint) standard___math___Object___srand_from},
-  {(bigint) standard___math___Object___srand},
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ToolContext___handle_property_conflict},
-  {(bigint) 1 /* 48: ToolContext < MMContext: superclass init_table position */},
-  {(bigint) metamodel___abstractmetamodel___MMContext___init},
-  {(bigint) metamodel___abstractmetamodel___MMContext___module_hierarchy},
-  {(bigint) metamodel___abstractmetamodel___MMContext___class_hierarchy},
-  {(bigint) metamodel___abstractmetamodel___MMContext___modules},
-  {(bigint) metamodel___abstractmetamodel___MMContext___add_module},
-  {(bigint) metamodel___abstractmetamodel___MMContext___add_global_class},
-  {(bigint) metamodel___abstractmetamodel___MMContext___add_local_class},
-  {(bigint) separate_options___ToolContext___separate_options},
-  {(bigint) separate_options___ToolContext___separate_options__eq},
-  {(bigint) separate_options___ToolContext___opt_cc_lib_paths},
-  {(bigint) separate_options___ToolContext___opt_cc_lib_paths__eq},
-  {(bigint) separate_options___ToolContext___opt_cc_libs},
-  {(bigint) separate_options___ToolContext___opt_cc_libs__eq},
-  {(bigint) separate_options___ToolContext___opt_cc_include_paths},
-  {(bigint) separate_options___ToolContext___opt_cc_include_paths__eq},
-  {(bigint) mmloader___ToolContext___init},
-  {(bigint) separate_options___ToolContext___integrate_separate_options},
-  {(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 /* 78: 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___opt_stop_on_first_error},
-  {(bigint) mmloader___ToolContext___opt_no_color},
-  {(bigint) mmloader___ToolContext___verbose_level},
-  {(bigint) separate_options___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___compiling_base___ToolContext___compdir},
-  {(bigint) compiling___compiling_base___ToolContext___compdir__eq},
-  {(bigint) compiling___compiling_base___ToolContext___clibdir},
-  {(bigint) compiling___compiling_base___ToolContext___clibdir__eq},
-  {(bigint) compiling___compiling_base___ToolContext___bindir},
-  {(bigint) compiling___compiling_base___ToolContext___bindir__eq},
-  {(bigint) compiling___compiling_base___ToolContext___output_file},
-  {(bigint) compiling___compiling_base___ToolContext___output_file__eq},
-  {(bigint) compiling___compiling_base___ToolContext___boost},
-  {(bigint) compiling___compiling_base___ToolContext___boost__eq},
-  {(bigint) compiling___compiling_base___ToolContext___no_cc},
-  {(bigint) compiling___compiling_base___ToolContext___no_cc__eq},
-  {(bigint) compiling___compiling_base___ToolContext___cc_link},
-  {(bigint) compiling___compiling_base___ToolContext___cc_link__eq},
-  {(bigint) compiling___compiling_base___ToolContext___cc_libs},
-  {(bigint) compiling___compiling_base___ToolContext___cc_libs__eq},
-  {(bigint) compiling___compiling_base___ToolContext___cc_lib_paths},
-  {(bigint) compiling___compiling_base___ToolContext___cc_lib_paths__eq},
-  {(bigint) compiling___compiling_base___ToolContext___cc_include_paths},
-  {(bigint) compiling___compiling_base___ToolContext___cc_include_paths__eq},
-  {(bigint) compiling___compiling_base___ToolContext___ext_prefix},
-  {(bigint) compiling___compiling_base___ToolContext___ext_prefix__eq},
-};
-/* 0: Pointer to the classtable */
-/* 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::@separate_options */
-/* 7: Attribute ToolContext::@opt_cc_lib_paths */
-/* 8: Attribute ToolContext::@opt_cc_libs */
-/* 9: Attribute ToolContext::@opt_cc_include_paths */
-/* 10: Attribute ToolContext::_global_callgraph */
-/* 11: Attribute ToolContext::_no_dead_method_removal */
-/* 12: Attribute ToolContext::_no_inline_get_set */
-/* 13: Attribute ToolContext::_no_callgraph_from_init */
-/* 14: Attribute ToolContext::_no_out_of_init_get_test_removal */
-/* 15: Attribute ToolContext::_keep_ast */
-/* 16: Attribute ToolContext::_error_count */
-/* 17: Attribute ToolContext::_warning_count */
-/* 18: Attribute ToolContext::_log_directory */
-/* 19: Attribute ToolContext::_messages */
-/* 20: Attribute ToolContext::_message_sorter */
-/* 21: Attribute ToolContext::_paths */
-/* 22: Attribute ToolContext::_loaders */
-/* 23: Attribute ToolContext::_option_context */
-/* 24: Attribute ToolContext::_opt_warn */
-/* 25: Attribute ToolContext::_opt_path */
-/* 26: Attribute ToolContext::_opt_log */
-/* 27: Attribute ToolContext::_opt_log_dir */
-/* 28: Attribute ToolContext::_opt_only_metamodel */
-/* 29: Attribute ToolContext::_opt_only_parse */
-/* 30: Attribute ToolContext::_opt_help */
-/* 31: Attribute ToolContext::_opt_version */
-/* 32: Attribute ToolContext::_opt_verbose */
-/* 33: Attribute ToolContext::_opt_stop_on_first_error */
-/* 34: Attribute ToolContext::_opt_no_color */
-/* 35: Attribute ToolContext::_verbose_level */
-/* 36: Attribute ToolContext::_processing_modules */
-/* 37: Attribute ToolContext::_path_dirs */
-/* 38: Attribute ToolContext::_global */
-/* 39: Attribute ToolContext::_use_SFT_optimization */
-/* 40: Attribute ToolContext::_compdir */
-/* 41: Attribute ToolContext::_clibdir */
-/* 42: Attribute ToolContext::_bindir */
-/* 43: Attribute ToolContext::_output_file */
-/* 44: Attribute ToolContext::_boost */
-/* 45: Attribute ToolContext::_no_cc */
-/* 46: Attribute ToolContext::_cc_link */
-/* 47: Attribute ToolContext::_cc_libs */
-/* 48: Attribute ToolContext::_cc_lib_paths */
-/* 49: Attribute ToolContext::_cc_include_paths */
-/* 50: Attribute ToolContext::_ext_prefix */
-void INIT_ATTRIBUTES__mmloader___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 */
-  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 */
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_nitc;
-  fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__mmloader___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;
-  /* ./separate_options.nit:11 */
-  fra.me.REG[1] = NEW_OptionContext_opts___OptionContext___init();
-  ATTR_separate_options___ToolContext_____atseparate_options(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./separate_options.nit:12 */
-  if (!once_value_1) {
-    fra.me.REG[1] = BOX_NativeString("Path to libraries for C compiler");
-    REGB0 = TAG_Int(32);
-    fra.me.REG[1] = NEW_String_standard___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(0);
-  fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
-  if (!once_value_2) {
-    fra.me.REG[3] = BOX_NativeString("--cc-lib-path");
-    REGB0 = TAG_Int(13);
-    fra.me.REG[3] = NEW_String_standard___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_standard___collection___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_separate_options___ToolContext_____atopt_cc_lib_paths(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./separate_options.nit:13 */
-  if (!once_value_3) {
-    fra.me.REG[2] = BOX_NativeString("Name of library to use for C compiler");
-    REGB0 = TAG_Int(37);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
-    once_value_3 = fra.me.REG[2];
-    register_static_object(&once_value_3);
-  } else fra.me.REG[2] = once_value_3;
-  fra.me.REG[2] = fra.me.REG[2];
-  REGB0 = TAG_Int(0);
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
-  if (!once_value_4) {
-    fra.me.REG[3] = BOX_NativeString("--cc-lib-name");
-    REGB0 = TAG_Int(13);
-    fra.me.REG[3] = NEW_String_standard___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_standard___collection___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_separate_options___ToolContext_____atopt_cc_libs(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./separate_options.nit:14 */
-  if (!once_value_5) {
-    fra.me.REG[1] = BOX_NativeString("Path to .h files for C compiler");
-    REGB0 = TAG_Int(31);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
-    once_value_5 = fra.me.REG[1];
-    register_static_object(&once_value_5);
-  } else fra.me.REG[1] = once_value_5;
-  fra.me.REG[1] = fra.me.REG[1];
-  REGB0 = TAG_Int(0);
-  fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
-  if (!once_value_6) {
-    fra.me.REG[3] = BOX_NativeString("--cc-header-path");
-    REGB0 = TAG_Int(16);
-    fra.me.REG[3] = NEW_String_standard___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_standard___collection___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_separate_options___ToolContext_____atopt_cc_include_paths(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./analysis//analysis.nit:48 */
-  if (!once_value_7) {
-    fra.me.REG[2] = BOX_NativeString("rta");
-    REGB0 = TAG_Int(3);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
-    once_value_7 = fra.me.REG[2];
-    register_static_object(&once_value_7);
-  } else fra.me.REG[2] = once_value_7;
-  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;
-  /* ./syntax//syntax.nit:98 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___ToolContext____keep_ast(fra.me.REG[0]) = REGB0;
-  /* ./mmloader.nit:98 */
-  REGB0 = TAG_Int(0);
-  ATTR_mmloader___ToolContext____error_count(fra.me.REG[0]) = REGB0;
-  /* ./mmloader.nit:101 */
-  REGB0 = TAG_Int(0);
-  ATTR_mmloader___ToolContext____warning_count(fra.me.REG[0]) = REGB0;
-  /* ./mmloader.nit:104 */
-  if (!once_value_8) {
-    fra.me.REG[2] = BOX_NativeString("logs");
-    REGB0 = TAG_Int(4);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
-    once_value_8 = fra.me.REG[2];
-    register_static_object(&once_value_8);
-  } else fra.me.REG[2] = once_value_8;
-  fra.me.REG[2] = fra.me.REG[2];
-  ATTR_mmloader___ToolContext____log_directory(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./mmloader.nit:107 */
-  fra.me.REG[2] = NEW_Array_standard___collection___array___Array___init();
-  ATTR_mmloader___ToolContext____messages(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./mmloader.nit:108 */
-  fra.me.REG[2] = NEW_ComparableSorter_standard___collection___sorter___ComparableSorter___init();
-  ATTR_mmloader___ToolContext____message_sorter(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./mmloader.nit:166 */
-  fra.me.REG[2] = NEW_Array_standard___collection___array___Array___init();
-  ATTR_mmloader___ToolContext____paths(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./mmloader.nit:169 */
-  fra.me.REG[2] = NEW_Array_standard___collection___array___Array___init();
-  ATTR_mmloader___ToolContext____loaders(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./mmloader.nit:172 */
-  fra.me.REG[2] = NEW_OptionContext_opts___OptionContext___init();
-  ATTR_mmloader___ToolContext____option_context(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./mmloader.nit:175 */
-  if (!once_value_9) {
-    fra.me.REG[2] = BOX_NativeString("Show warnings");
-    REGB0 = TAG_Int(13);
-    fra.me.REG[2] = NEW_String_standard___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(1);
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
-  if (!once_value_10) {
-    fra.me.REG[3] = BOX_NativeString("-W");
-    REGB0 = TAG_Int(2);
-    fra.me.REG[3] = NEW_String_standard___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_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  if (!once_value_11) {
-    fra.me.REG[3] = BOX_NativeString("--warn");
-    REGB0 = TAG_Int(6);
-    fra.me.REG[3] = NEW_String_standard___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_standard___collection___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:178 */
-  if (!once_value_12) {
-    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_standard___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(1);
-  fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
-  if (!once_value_13) {
-    fra.me.REG[3] = BOX_NativeString("-I");
-    REGB0 = TAG_Int(2);
-    fra.me.REG[3] = NEW_String_standard___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_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-  if (!once_value_14) {
-    fra.me.REG[3] = BOX_NativeString("--path");
-    REGB0 = TAG_Int(6);
-    fra.me.REG[3] = NEW_String_standard___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_standard___collection___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:181 */
-  if (!once_value_15) {
-    fra.me.REG[2] = BOX_NativeString("Generate various log files");
-    REGB0 = TAG_Int(26);
-    fra.me.REG[2] = NEW_String_standard___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_standard___collection___array___Array___with_capacity(REGB0);
-  if (!once_value_16) {
-    fra.me.REG[3] = BOX_NativeString("--log");
-    REGB0 = TAG_Int(5);
-    fra.me.REG[3] = NEW_String_standard___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_standard___collection___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:184 */
-  if (!once_value_17) {
-    fra.me.REG[1] = BOX_NativeString("Directory where to generate log files");
-    REGB0 = TAG_Int(37);
-    fra.me.REG[1] = NEW_String_standard___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(0);
-  fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
-  if (!once_value_18) {
-    fra.me.REG[3] = BOX_NativeString("--log-dir");
-    REGB0 = TAG_Int(9);
-    fra.me.REG[3] = NEW_String_standard___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_standard___collection___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:187 */
-  if (!once_value_19) {
-    fra.me.REG[2] = BOX_NativeString("Stop after meta-model processing");
-    REGB0 = TAG_Int(32);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
-    once_value_19 = fra.me.REG[2];
-    register_static_object(&once_value_19);
-  } else fra.me.REG[2] = once_value_19;
-  fra.me.REG[2] = fra.me.REG[2];
-  REGB0 = TAG_Int(0);
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
-  if (!once_value_20) {
-    fra.me.REG[3] = BOX_NativeString("--only-metamodel");
-    REGB0 = TAG_Int(16);
-    fra.me.REG[3] = NEW_String_standard___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_standard___collection___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:190 */
-  if (!once_value_21) {
-    fra.me.REG[1] = BOX_NativeString("Only proceed to parse step of loaders");
-    REGB0 = TAG_Int(37);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
-    once_value_21 = fra.me.REG[1];
-    register_static_object(&once_value_21);
-  } else fra.me.REG[1] = once_value_21;
-  fra.me.REG[1] = fra.me.REG[1];
-  REGB0 = TAG_Int(0);
-  fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
-  if (!once_value_22) {
-    fra.me.REG[3] = BOX_NativeString("--only-parse");
-    REGB0 = TAG_Int(12);
-    fra.me.REG[3] = NEW_String_standard___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_standard___collection___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:193 */
-  if (!once_value_23) {
-    fra.me.REG[2] = BOX_NativeString("Show Help (This screen)");
-    REGB0 = TAG_Int(23);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
-    once_value_23 = fra.me.REG[2];
-    register_static_object(&once_value_23);
-  } else fra.me.REG[2] = once_value_23;
-  fra.me.REG[2] = fra.me.REG[2];
-  REGB0 = TAG_Int(2);
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
-  if (!once_value_24) {
-    fra.me.REG[3] = BOX_NativeString("-h");
-    REGB0 = TAG_Int(2);
-    fra.me.REG[3] = NEW_String_standard___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_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  if (!once_value_25) {
-    fra.me.REG[3] = BOX_NativeString("-?");
-    REGB0 = TAG_Int(2);
-    fra.me.REG[3] = NEW_String_standard___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_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  if (!once_value_26) {
-    fra.me.REG[3] = BOX_NativeString("--help");
-    REGB0 = TAG_Int(6);
-    fra.me.REG[3] = NEW_String_standard___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_standard___collection___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:196 */
-  if (!once_value_27) {
-    fra.me.REG[1] = BOX_NativeString("Show version and exit");
-    REGB0 = TAG_Int(21);
-    fra.me.REG[1] = NEW_String_standard___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_standard___collection___array___Array___with_capacity(REGB0);
-  if (!once_value_28) {
-    fra.me.REG[3] = BOX_NativeString("--version");
-    REGB0 = TAG_Int(9);
-    fra.me.REG[3] = NEW_String_standard___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_standard___collection___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:199 */
-  if (!once_value_29) {
-    fra.me.REG[2] = BOX_NativeString("Verbose");
-    REGB0 = TAG_Int(7);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
-    once_value_29 = fra.me.REG[2];
-    register_static_object(&once_value_29);
-  } else fra.me.REG[2] = once_value_29;
-  fra.me.REG[2] = fra.me.REG[2];
-  REGB0 = TAG_Int(1);
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
-  if (!once_value_30) {
-    fra.me.REG[3] = BOX_NativeString("-v");
-    REGB0 = TAG_Int(2);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
-    once_value_30 = fra.me.REG[3];
-    register_static_object(&once_value_30);
-  } else fra.me.REG[3] = once_value_30;
-  fra.me.REG[3] = fra.me.REG[3];
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  if (!once_value_31) {
-    fra.me.REG[3] = BOX_NativeString("--verbose");
-    REGB0 = TAG_Int(9);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
-    once_value_31 = fra.me.REG[3];
-    register_static_object(&once_value_31);
-  } else fra.me.REG[3] = once_value_31;
-  fra.me.REG[3] = fra.me.REG[3];
-  CALL_standard___collection___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:202 */
-  if (!once_value_32) {
-    fra.me.REG[1] = BOX_NativeString("Stop on first error");
-    REGB0 = TAG_Int(19);
-    fra.me.REG[1] = NEW_String_standard___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(0);
-  fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
-  if (!once_value_33) {
-    fra.me.REG[3] = BOX_NativeString("--stop-on-first-error");
-    REGB0 = TAG_Int(21);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
-    once_value_33 = fra.me.REG[3];
-    register_static_object(&once_value_33);
-  } else fra.me.REG[3] = once_value_33;
-  fra.me.REG[3] = fra.me.REG[3];
-  CALL_standard___collection___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_stop_on_first_error(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./mmloader.nit:205 */
-  if (!once_value_34) {
-    fra.me.REG[2] = BOX_NativeString("Do not use color to display errors and warnings");
-    REGB0 = TAG_Int(47);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
-    once_value_34 = fra.me.REG[2];
-    register_static_object(&once_value_34);
-  } else fra.me.REG[2] = once_value_34;
-  fra.me.REG[2] = fra.me.REG[2];
-  REGB0 = TAG_Int(0);
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
-  if (!once_value_35) {
-    fra.me.REG[3] = BOX_NativeString("--no-color");
-    REGB0 = TAG_Int(10);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
-    once_value_35 = fra.me.REG[3];
-    register_static_object(&once_value_35);
-  } else fra.me.REG[3] = once_value_35;
-  fra.me.REG[3] = fra.me.REG[3];
-  CALL_standard___collection___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_no_color(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./mmloader.nit:208 */
-  REGB0 = TAG_Int(0);
-  ATTR_mmloader___ToolContext____verbose_level(fra.me.REG[0]) = REGB0;
-  /* ./mmloader.nit:291 */
-  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
-  ATTR_mmloader___ToolContext____processing_modules(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./mmloader.nit:358 */
-  fra.me.REG[1] = NEW_HashMap_standard___collection___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_metamodel___partial_order___PartialOrder___init();
-  ATTR_metamodel___abstractmetamodel___MMContext____module_hierarchy(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//abstractmetamodel.nit:34 */
-  fra.me.REG[1] = NEW_PartialOrder_metamodel___partial_order___PartialOrder___init();
-  ATTR_metamodel___abstractmetamodel___MMContext____class_hierarchy(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//abstractmetamodel.nit:37 */
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-  ATTR_metamodel___abstractmetamodel___MMContext____global_classes(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//abstractmetamodel.nit:40 */
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-  ATTR_metamodel___abstractmetamodel___MMContext____modules(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./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___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___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___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___compiling_base___ToolContext____output_file(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./compiling//compiling_base.nit:31 */
-  REGB0 = TAG_Bool(false);
-  ATTR_compiling___compiling_base___ToolContext____boost(fra.me.REG[0]) = REGB0;
-  /* ./compiling//compiling_base.nit:32 */
-  REGB0 = TAG_Bool(false);
-  ATTR_compiling___compiling_base___ToolContext____no_cc(fra.me.REG[0]) = REGB0;
-  /* ./compiling//compiling_base.nit:33 */
-  REGB0 = TAG_Bool(false);
-  ATTR_compiling___compiling_base___ToolContext____cc_link(fra.me.REG[0]) = REGB0;
-  /* ./compiling//compiling_base.nit:34 */
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-  ATTR_compiling___compiling_base___ToolContext____cc_libs(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./compiling//compiling_base.nit:35 */
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-  ATTR_compiling___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_standard___collection___array___Array___init();
-  ATTR_compiling___compiling_base___ToolContext____cc_include_paths(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./compiling//compiling_base.nit:37 */
-  if (!once_value_36) {
-    fra.me.REG[1] = BOX_NativeString("");
-    REGB0 = TAG_Int(0);
-    fra.me.REG[1] = NEW_String_standard___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];
-  ATTR_compiling___compiling_base___ToolContext____ext_prefix(fra.me.REG[0]) = fra.me.REG[1];
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 50: ReduceAction640 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction640___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction640 < ReduceAction640: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ReduceAction640::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction640[] = "init var of ReduceAction640";
+void INIT_ATTRIBUTES__parser___ReduceAction640(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.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___ReduceAction640;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_mmloader___ToolContext(void)
+val_t NEW_parser___ReduceAction640(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 51);
-  obj->vft = (classtable_elt_t*)VFT_mmloader___ToolContext;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction640;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_mmloader___ToolContext(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction640[] = "check new ReduceAction640";
+void CHECKNEW_parser___ReduceAction640(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_mmloader___ToolContext;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction640;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_separate_options___ToolContext_____atseparate_options(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "@separate_options", LOCATE_nitc, 0);
-  }
-  REGB0 = TAG_Bool(ATTR_separate_options___ToolContext_____atopt_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_separate_options___ToolContext_____atopt_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_separate_options___ToolContext_____atopt_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_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____opt_stop_on_first_error(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_opt_stop_on_first_error", LOCATE_nitc, 0);
-  }
-  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____opt_no_color(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_opt_no_color", 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_metamodel___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_metamodel___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_metamodel___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_metamodel___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___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___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___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___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___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___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___compiling_base___ToolContext____ext_prefix(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_ext_prefix", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ToolContext_mmloader___ToolContext___init(void){
+static const char LOCATE_NEW_ReduceAction640_parser___ReduceAction___init[] = "new ReduceAction640 parser::ReduceAction::init";
+val_t NEW_ReduceAction640_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 16;
-  fra.me.meth = LOCATE_NEW_ToolContext_mmloader___ToolContext___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction640_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./separate_options.nit:16 */
-  fra.me.REG[0] = NEW_mmloader___ToolContext();
-  INIT_ATTRIBUTES__mmloader___ToolContext(fra.me.REG[0]);
-  separate_options___ToolContext___init(fra.me.REG[0], init_table);
-  CHECKNEW_mmloader___ToolContext(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction640();
+  INIT_ATTRIBUTES__parser___ReduceAction640(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction640(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_mmloader___ModuleLoader[58] = {
-  {(bigint) 127 /* 0: Identity */},
-  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ModuleLoader" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ModuleLoader < Object: superclass typecheck marker */},
-  {(bigint) 127 /* 4: ModuleLoader < ModuleLoader: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction641[55] = {
+  {(bigint) 615 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction641" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction641 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction641 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 615 /* 5: ReduceAction641 < ReduceAction641: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -137612,7 +167781,7 @@ const classtable_elt_t VFT_mmloader___ModuleLoader[58] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: ModuleLoader < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction641 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -137628,6 +167797,8 @@ const classtable_elt_t VFT_mmloader___ModuleLoader[58] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -137641,76 +167812,89 @@ const classtable_elt_t VFT_mmloader___ModuleLoader[58] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: ModuleLoader < ModuleLoader: superclass init_table position */},
-  {(bigint) 155 /* 48: VT ModuleLoader::MODULE : id of MMModule */},
-  {(bigint) 4 /* 49: VT ModuleLoader::MODULE : color of MMModule */},
-  {(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) 0 /* 50: ReduceAction641 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction641___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction641 < ReduceAction641: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-void INIT_ATTRIBUTES__mmloader___ModuleLoader(val_t p0){
+/* 2: Attribute ReduceAction641::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction641[] = "init var of ReduceAction641";
+void INIT_ATTRIBUTES__parser___ReduceAction641(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__mmloader___ModuleLoader;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction641;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_mmloader___ModuleLoader(void)
+val_t NEW_parser___ReduceAction641(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 2);
-  obj->vft = (classtable_elt_t*)VFT_mmloader___ModuleLoader;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction641;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_mmloader___ModuleLoader(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction641[] = "check new ReduceAction641";
+void CHECKNEW_parser___ReduceAction641(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_mmloader___ModuleLoader;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction641;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ModuleLoader_mmloader___ModuleLoader___init(void){
+static const char LOCATE_NEW_ReduceAction641_parser___ReduceAction___init[] = "new ReduceAction641 parser::ReduceAction::init";
+val_t NEW_ReduceAction641_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[2] = {0, 0};
+  int init_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_ModuleLoader_mmloader___ModuleLoader___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction641_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = NEW_mmloader___ModuleLoader();
-  INIT_ATTRIBUTES__mmloader___ModuleLoader(fra.me.REG[0]);
-  mmloader___ModuleLoader___init(fra.me.REG[0], init_table);
-  CHECKNEW_mmloader___ModuleLoader(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction641();
+  INIT_ATTRIBUTES__parser___ReduceAction641(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction641(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_syntax___syntax_base___MMSrcModule[99] = {
-  {(bigint) 2159 /* 0: Identity */},
-  {(bigint) 23 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "MMSrcModule" /* 2: Class Name */},
-  {(bigint) 3 /* 3: MMSrcModule < Object: superclass typecheck marker */},
-  {(bigint) 155 /* 4: MMSrcModule < MMModule: superclass typecheck marker */},
-  {(bigint) 2159 /* 5: MMSrcModule < MMSrcModule: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction642[55] = {
+  {(bigint) 611 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction642" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction642 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction642 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 611 /* 5: ReduceAction642 < ReduceAction642: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -137723,7 +167907,7 @@ const classtable_elt_t VFT_syntax___syntax_base___MMSrcModule[99] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: MMSrcModule < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction642 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -137739,7 +167923,9 @@ const classtable_elt_t VFT_syntax___syntax_base___MMSrcModule[99] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) metamodel___abstractmetamodel___MMModule___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -137752,288 +167938,594 @@ const classtable_elt_t VFT_syntax___syntax_base___MMSrcModule[99] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) abstracttool___MMModule___dump_module_info},
-  {(bigint) syntax___syntax_base___MMSrcModule___nodes},
-  {(bigint) syntax___syntax_base___MMSrcModule___nodes__eq},
-  {(bigint) metamodel___inheritance___MMModule___type_any},
-  {(bigint) metamodel___inheritance___MMModule___type_any_extern},
-  {(bigint) metamodel___inheritance___MMModule___import_global_classes},
-  {(bigint) metamodel___inheritance___MMModule___import_local_classes},
-  {(bigint) metamodel___static_type___MMModule___type_none},
-  {(bigint) metamodel___static_type___MMModule___type_bool},
-  {(bigint) 1 /* 56: MMSrcModule < MMModule: superclass init_table position */},
-  {(bigint) metamodel___abstractmetamodel___MMModule___context},
-  {(bigint) metamodel___abstractmetamodel___MMModule___name},
-  {(bigint) metamodel___abstractmetamodel___MMModule___full_name},
-  {(bigint) metamodel___abstractmetamodel___MMModule___directory},
-  {(bigint) metamodel___abstractmetamodel___MMModule___location},
-  {(bigint) metamodel___abstractmetamodel___MMModule___mhe},
-  {(bigint) metamodel___abstractmetamodel___MMModule___global_classes},
-  {(bigint) metamodel___abstractmetamodel___MMModule___local_classes},
-  {(bigint) metamodel___abstractmetamodel___MMModule___class_specialization_hierarchy},
-  {(bigint) metamodel___abstractmetamodel___MMModule___explicit_imported_modules},
-  {(bigint) metamodel___abstractmetamodel___MMModule___is_extern_hybrid},
-  {(bigint) metamodel___abstractmetamodel___MMModule___is_extern_hybrid__eq},
-  {(bigint) metamodel___abstractmetamodel___MMModule___init},
-  {(bigint) metamodel___abstractmetamodel___MMModule___add_super_module},
-  {(bigint) metamodel___abstractmetamodel___MMModule___visibility_for},
-  {(bigint) metamodel___abstractmetamodel___MMModule_____bra},
-  {(bigint) metamodel___abstractmetamodel___MMModule___class_by_name},
-  {(bigint) metamodel___abstractmetamodel___MMModule___has_global_class_named},
-  {(bigint) metamodel___abstractmetamodel___MMModule___global_class_named},
-  {(bigint) metamodel___abstractmetamodel___MMModule___set_supers_class},
-  {(bigint) metamodel___abstractmetamodel___MMModule___register_global_class},
-  {(bigint) separate_options___MMSrcModule___compile_separate_module},
-  {(bigint) compiling___compiling_global___MMModule___declare_class_tables_to_c},
-  {(bigint) compiling___compiling_global___MMModule___compile_mod_to_c},
-  {(bigint) compiling___compiling_global___MMModule___compile_local_table_to_c},
-  {(bigint) compiling___table_computation___MMModule___local_table},
-  {(bigint) compiling___table_computation___MMModule___local_analysis},
-  {(bigint) compiling___compiling_base___MMModule___cname},
-  {(bigint) native_interface___MMSrcModule___compile_separate_module},
-  {(bigint) compiling___MMModule___compile_separate_module},
-  {(bigint) native_interface___frontier___MMSrcModule___compile_frontier},
-  {(bigint) syntax___MMSrcModule___process_supermodules},
-  {(bigint) syntax___MMSrcModule___process_syntax},
-  {(bigint) syntax___mmbuilder___MMSrcModule___do_mmbuilder},
-  {(bigint) syntax___mmbuilder___MMSrcModule___process_default_classes},
-  {(bigint) 2 /* 92: MMSrcModule < MMSrcModule: superclass init_table position */},
-  {(bigint) syntax___syntax_base___MMSrcModule___clear_ast},
-  {(bigint) syntax___syntax_base___MMSrcModule___node},
-  {(bigint) syntax___syntax_base___MMSrcModule___src_local_classes},
-  {(bigint) syntax___syntax_base___MMSrcModule___init},
-  {(bigint) syntax___icode_generation___MMSrcModule___generate_icode},
-  {(bigint) syntax___typing___MMSrcModule___do_typing},
+  {(bigint) 0 /* 50: ReduceAction642 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction642___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction642 < ReduceAction642: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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::@is_extern_hybrid */
-/* 19: Attribute MMSrcModule::_local_table */
-/* 20: Attribute MMSrcModule::_cname_cache */
-/* 21: Attribute MMSrcModule::_nodes */
-/* 22: Attribute MMSrcModule::_src_local_classes */
-void INIT_ATTRIBUTES__syntax___syntax_base___MMSrcModule(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction642::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction642[] = "init var of ReduceAction642";
+void INIT_ATTRIBUTES__parser___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__syntax___syntax_base___MMSrcModule;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction642;
   fra.me.has_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_standard___collection___hash_collection___HashMap___init();
-  ATTR_syntax___syntax_base___MMSrcModule____nodes(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//abstractmetamodel.nit:130 */
-  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
-  ATTR_metamodel___abstractmetamodel___MMModule____global_classes(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//abstractmetamodel.nit:154 */
-  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
-  ATTR_metamodel___abstractmetamodel___MMModule____global_class_by_name(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//abstractmetamodel.nit:151 */
-  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
-  ATTR_metamodel___abstractmetamodel___MMModule____local_class_by_global(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//static_type.nit:534 */
-  fra.me.REG[1] = fra.me.REG[0];
-  /* ./metamodel//static_type.nit:535 */
-  fra.me.REG[1] = NEW_MMTypeNone_metamodel___static_type___MMTypeNone___init(fra.me.REG[1]);
-  ATTR_metamodel___static_type___MMModule____type_none(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//abstractmetamodel.nit:133 */
-  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
-  ATTR_metamodel___abstractmetamodel___MMModule____local_classes(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//abstractmetamodel.nit:136 */
-  fra.me.REG[1] = NEW_PartialOrder_metamodel___partial_order___PartialOrder___init();
-  ATTR_metamodel___abstractmetamodel___MMModule____class_specialization_hierarchy(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//abstractmetamodel.nit:139 */
-  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
-  ATTR_metamodel___abstractmetamodel___MMModule____intrude_modules(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//abstractmetamodel.nit:142 */
-  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
-  ATTR_metamodel___abstractmetamodel___MMModule____public_modules(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//abstractmetamodel.nit:145 */
-  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
-  ATTR_metamodel___abstractmetamodel___MMModule____private_modules(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//abstractmetamodel.nit:148 */
-  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
-  ATTR_metamodel___abstractmetamodel___MMModule____explicit_imported_modules(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//abstractmetamodel.nit:159 */
-  REGB0 = TAG_Bool(false);
-  ATTR_metamodel___abstractmetamodel___MMModule_____atis_extern_hybrid(fra.me.REG[0]) = REGB0;
-  /* ./compiling//table_computation.nit:398 */
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-  ATTR_compiling___table_computation___MMModule____local_table(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_syntax___syntax_base___MMSrcModule(void)
+val_t NEW_parser___ReduceAction642(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 23);
-  obj->vft = (classtable_elt_t*)VFT_syntax___syntax_base___MMSrcModule;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction642;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_syntax___syntax_base___MMSrcModule(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction642[] = "check new ReduceAction642";
+void CHECKNEW_parser___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_syntax___syntax_base___MMSrcModule;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction642;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___abstractmetamodel___MMModule____public_modules(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_public_modules", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMModule____private_modules(fra.me.REG[0])!=NIT_NULL);
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_ReduceAction642_parser___ReduceAction___init[] = "new ReduceAction642 parser::ReduceAction::init";
+val_t NEW_ReduceAction642_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction642_parser___ReduceAction___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction642();
+  INIT_ATTRIBUTES__parser___ReduceAction642(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction642(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___ReduceAction643[55] = {
+  {(bigint) 607 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction643" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction643 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction643 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 607 /* 5: ReduceAction643 < ReduceAction643: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction643 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 50: ReduceAction643 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction643___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction643 < ReduceAction643: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ReduceAction643::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction643[] = "init var of ReduceAction643";
+void INIT_ATTRIBUTES__parser___ReduceAction643(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.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___ReduceAction643;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___ReduceAction643(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction643;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___ReduceAction643[] = "check new ReduceAction643";
+void CHECKNEW_parser___ReduceAction643(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.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___ReduceAction643;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_private_modules", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMModule____explicit_imported_modules(fra.me.REG[0])!=NIT_NULL);
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_ReduceAction643_parser___ReduceAction___init[] = "new ReduceAction643 parser::ReduceAction::init";
+val_t NEW_ReduceAction643_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction643_parser___ReduceAction___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction643();
+  INIT_ATTRIBUTES__parser___ReduceAction643(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction643(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___ReduceAction644[55] = {
+  {(bigint) 603 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction644" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction644 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction644 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 603 /* 5: ReduceAction644 < ReduceAction644: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction644 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 50: ReduceAction644 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction644___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction644 < ReduceAction644: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ReduceAction644::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction644[] = "init var of ReduceAction644";
+void INIT_ATTRIBUTES__parser___ReduceAction644(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.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___ReduceAction644;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___ReduceAction644(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction644;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___ReduceAction644[] = "check new ReduceAction644";
+void CHECKNEW_parser___ReduceAction644(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.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___ReduceAction644;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_explicit_imported_modules", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMModule_____atis_extern_hybrid(fra.me.REG[0])!=NIT_NULL);
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_ReduceAction644_parser___ReduceAction___init[] = "new ReduceAction644 parser::ReduceAction::init";
+val_t NEW_ReduceAction644_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction644_parser___ReduceAction___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction644();
+  INIT_ATTRIBUTES__parser___ReduceAction644(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction644(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___ReduceAction645[55] = {
+  {(bigint) 599 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction645" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction645 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction645 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 599 /* 5: ReduceAction645 < ReduceAction645: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction645 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 50: ReduceAction645 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction645___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction645 < ReduceAction645: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ReduceAction645::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction645[] = "init var of ReduceAction645";
+void INIT_ATTRIBUTES__parser___ReduceAction645(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.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___ReduceAction645;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___ReduceAction645(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction645;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___ReduceAction645[] = "check new ReduceAction645";
+void CHECKNEW_parser___ReduceAction645(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.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___ReduceAction645;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "@is_extern_hybrid", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_compiling___table_computation___MMModule____local_table(fra.me.REG[0])!=NIT_NULL);
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_ReduceAction645_parser___ReduceAction___init[] = "new ReduceAction645 parser::ReduceAction::init";
+val_t NEW_ReduceAction645_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction645_parser___ReduceAction___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction645();
+  INIT_ATTRIBUTES__parser___ReduceAction645(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction645(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___ReduceAction646[55] = {
+  {(bigint) 595 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction646" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction646 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction646 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 595 /* 5: ReduceAction646 < ReduceAction646: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction646 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 50: ReduceAction646 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction646___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction646 < ReduceAction646: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ReduceAction646::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction646[] = "init var of ReduceAction646";
+void INIT_ATTRIBUTES__parser___ReduceAction646(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.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___ReduceAction646;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___ReduceAction646(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction646;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___ReduceAction646[] = "check new ReduceAction646";
+void CHECKNEW_parser___ReduceAction646(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.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___ReduceAction646;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_local_table", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMSrcModule_syntax___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;
+static const char LOCATE_NEW_ReduceAction646_parser___ReduceAction___init[] = "new ReduceAction646 parser::ReduceAction::init";
+val_t NEW_ReduceAction646_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
   int init_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___syntax_base___MMSrcModule___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction646_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 6;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_syntax___syntax_base___MMSrcModule();
-  INIT_ATTRIBUTES__syntax___syntax_base___MMSrcModule(fra.me.REG[5]);
-  syntax___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_syntax___syntax_base___MMSrcModule(fra.me.REG[5]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction646();
+  INIT_ATTRIBUTES__parser___ReduceAction646(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction646(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[5];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_syntax___syntax_base___MMSrcLocalClass[129] = {
-  {(bigint) 2843 /* 0: Identity */},
-  {(bigint) 30 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "MMSrcLocalClass" /* 2: Class Name */},
-  {(bigint) 3 /* 3: MMSrcLocalClass < Object: superclass typecheck marker */},
-  {(bigint) 163 /* 4: MMSrcLocalClass < MMLocalClass: superclass typecheck marker */},
-  {(bigint) 2191 /* 5: MMSrcLocalClass < MMConcreteClass: superclass typecheck marker */},
-  {(bigint) 2843 /* 6: MMSrcLocalClass < MMSrcLocalClass: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction647[55] = {
+  {(bigint) 591 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction647" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction647 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction647 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 591 /* 5: ReduceAction647 < ReduceAction647: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -138045,7 +168537,7 @@ const classtable_elt_t VFT_syntax___syntax_base___MMSrcLocalClass[129] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: MMSrcLocalClass < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction647 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -138061,7 +168553,9 @@ const classtable_elt_t VFT_syntax___syntax_base___MMSrcLocalClass[129] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -138074,333 +168568,216 @@ const classtable_elt_t VFT_syntax___syntax_base___MMSrcLocalClass[129] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) abstracttool___MMLocalClass___dump_properties},
-  {(bigint) syntax___mmbuilder___MMSrcLocalClass___accept_class_visitor},
-  {(bigint) syntax___mmbuilder___MMSrcLocalClass___accept_properties_visitor},
-  {(bigint) primitive_info___MMLocalClass___primitive_info},
-  {(bigint) primitive_info___MMLocalClass___primitive_ctypes},
-  {(bigint) metamodel___genericity___MMLocalClass___get_formal},
-  {(bigint) metamodel___genericity___MMLocalClass___register_formal},
-  {(bigint) metamodel___genericity___MMLocalClass___get_instantiate_type},
-  {(bigint) metamodel___genericity___MMLocalClass___formals_types},
-  {(bigint) metamodel___static_type___MMLocalClass___get_type},
-  {(bigint) metamodel___genericity___MMLocalClass___is_generic},
-  {(bigint) metamodel___inheritance___MMLocalClass___compute_super_classes},
-  {(bigint) metamodel___inheritance___MMLocalClass___compute_ancestors},
-  {(bigint) metamodel___inheritance___MMLocalClass___inherit_global_properties},
-  {(bigint) metamodel___inheritance___MMLocalClass___make_visible_an_inherited_global_property},
-  {(bigint) metamodel___inheritance___MMLocalClass___add_direct_parent},
-  {(bigint) metamodel___inheritance___MMLocalClass___computed_super_classes},
-  {(bigint) metamodel___inheritance___MMLocalClass___computed_ancestors},
-  {(bigint) metamodel___inheritance___MMLocalClass___ancestor_for},
-  {(bigint) metamodel___inheritance___MMLocalClass___add_default_any_class},
-  {(bigint) metamodel___inheritance___MMLocalClass___add_super_classes},
-  {(bigint) metamodel___inheritance___MMLocalClass___add_explicit_classes},
-  {(bigint) metamodel___inheritance___MMLocalClass___compute_super_parents},
-  {(bigint) metamodel___inheritance___MMLocalClass___build_ancestors},
-  {(bigint) metamodel___inheritance___MMLocalClass___group_ancestors},
-  {(bigint) metamodel___inheritance___MMLocalClass___merge_ancestors},
-  {(bigint) metamodel___inheritance___MMLocalClass___inherit_local_property},
-  {(bigint) metamodel___genericity___MMLocalClass___get_type},
-  {(bigint) metamodel___static_type___MMLocalClass___add_ancestor},
-  {(bigint) metamodel___static_type___MMLocalClass___ancestors},
-  {(bigint) metamodel___static_type___MMLocalClass___ancestor},
-  {(bigint) 1 /* 78: MMSrcLocalClass < MMLocalClass: superclass init_table position */},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___name},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___arity},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___mmmodule},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___global},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___crhe},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___cshe},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___che},
-  {(bigint) metamodel___inheritance___MMLocalClass___global_properties},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___local_local_properties},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___init},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___for_module},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___new_global},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___set_global},
-  {(bigint) metamodel___inheritance___MMLocalClass___has_global_property_by_name},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___get_property_by_name},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___attribute},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___method},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___select_method},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___select_attribute},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___super_methods_named},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___register_local_property},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___register_global_property},
-  {(bigint) metamodel___inheritance___MMLocalClass___has_global_property},
-  {(bigint) metamodel___inheritance___MMLocalClass_____bra},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___context},
-  {(bigint) metamodel___abstractmetamodel___MMLocalClass___total_order_compare},
-  {(bigint) metamodel___virtualtype___MMLocalClass___virtual_type},
-  {(bigint) metamodel___virtualtype___MMLocalClass___select_virtual_type},
-  {(bigint) native_interface___frontier___MMLocalClass___compile_defaut_extern_type},
-  {(bigint) compiling___icode_generator___MMLocalClass___generate_icode_file},
-  {(bigint) compiling___compiling_base___MMLocalClass___cname},
-  {(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___compiling_global___MMLocalClass___declare_tables_to_c},
-  {(bigint) compiling___compiling_global___MMLocalClass___compile_tables_to_c},
-  {(bigint) compiling___table_computation___MMConcreteClass___class_color_pos},
-  {(bigint) compiling___table_computation___MMConcreteClass___class_layout},
-  {(bigint) compiling___table_computation___MMConcreteClass___instance_layout},
-  {(bigint) compiling___table_computation___MMConcreteClass___build_layout_in},
-  {(bigint) 2 /* 121: MMSrcLocalClass < MMConcreteClass: superclass init_table position */},
-  {(bigint) syntax___mmbuilder___MMSrcLocalClass___process_default_constructors},
-  {(bigint) syntax___mmbuilder___MMSrcLocalClass___add_src_local_property},
-  {(bigint) 3 /* 124: MMSrcLocalClass < MMSrcLocalClass: superclass init_table position */},
-  {(bigint) syntax___syntax_base___MMSrcLocalClass___node},
-  {(bigint) syntax___syntax_base___MMSrcLocalClass___formal_dict},
-  {(bigint) syntax___syntax_base___MMSrcLocalClass___src_local_properties},
-  {(bigint) syntax___syntax_base___MMSrcLocalClass___init},
+  {(bigint) 0 /* 50: ReduceAction647 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction647___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction647 < ReduceAction647: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute MMSrcLocalClass::_primitive_info_cache */
-/* 3: Attribute MMSrcLocalClass::_primitive_info_b */
-/* 4: Attribute MMSrcLocalClass::_types */
-/* 5: Attribute MMSrcLocalClass::_formals_types */
-/* 6: Attribute MMSrcLocalClass::_direct_parents */
-/* 7: Attribute MMSrcLocalClass::_computing_super */
-/* 8: Attribute MMSrcLocalClass::_are_global_properties_inherited */
-/* 9: Attribute MMSrcLocalClass::_base_type_cache */
-/* 10: Attribute MMSrcLocalClass::_ancestors */
-/* 11: Attribute MMSrcLocalClass::_name */
-/* 12: Attribute MMSrcLocalClass::_arity */
-/* 13: Attribute MMSrcLocalClass::_mmmodule */
-/* 14: Attribute MMSrcLocalClass::_global */
-/* 15: Attribute MMSrcLocalClass::_crhe */
-/* 16: Attribute MMSrcLocalClass::_cshe */
-/* 17: Attribute MMSrcLocalClass::_che */
-/* 18: Attribute MMSrcLocalClass::_local_property_by_global */
-/* 19: Attribute MMSrcLocalClass::_global_properties */
-/* 20: Attribute MMSrcLocalClass::_local_local_properties */
-/* 21: Attribute MMSrcLocalClass::_properties_by_name */
-/* 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__syntax___syntax_base___MMSrcLocalClass(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+/* 2: Attribute ReduceAction647::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction647[] = "init var of ReduceAction647";
+void INIT_ATTRIBUTES__parser___ReduceAction647(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.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___ReduceAction647;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___ReduceAction647(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction647;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___ReduceAction647[] = "check new ReduceAction647";
+void CHECKNEW_parser___ReduceAction647(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___MMSrcLocalClass;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction647;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_standard___collection___hash_collection___HashMap___init();
-  ATTR_syntax___syntax_base___MMSrcLocalClass____formal_dict(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//abstractmetamodel.nit:361 */
-  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
-  ATTR_metamodel___abstractmetamodel___MMLocalClass____local_property_by_global(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//abstractmetamodel.nit:364 */
-  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
-  ATTR_metamodel___abstractmetamodel___MMLocalClass____global_properties(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//abstractmetamodel.nit:367 */
-  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
-  ATTR_metamodel___abstractmetamodel___MMLocalClass____local_local_properties(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//abstractmetamodel.nit:370 */
-  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
-  ATTR_metamodel___abstractmetamodel___MMLocalClass____properties_by_name(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//genericity.nit:41 */
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-  ATTR_metamodel___genericity___MMLocalClass____types(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//genericity.nit:55 */
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-  ATTR_metamodel___genericity___MMLocalClass____formals_types(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//inheritance.nit:82 */
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-  ATTR_metamodel___inheritance___MMLocalClass____direct_parents(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//inheritance.nit:86 */
-  REGB0 = TAG_Bool(false);
-  ATTR_metamodel___inheritance___MMLocalClass____computing_super(fra.me.REG[0]) = REGB0;
-  /* ./metamodel//inheritance.nit:133 */
-  REGB0 = TAG_Bool(false);
-  ATTR_metamodel___inheritance___MMLocalClass____are_global_properties_inherited(fra.me.REG[0]) = REGB0;
-  /* ./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;
-  /* ./compiling//table_computation.nit:90 */
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-  ATTR_compiling___table_computation___MMConcreteClass____class_layout(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./compiling//table_computation.nit:93 */
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-  ATTR_compiling___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_standard___collection___hash_collection___HashMap___init();
-  ATTR_program___MMLocalClass____new_instance_iroutine(fra.me.REG[0]) = fra.me.REG[1];
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_ReduceAction647_parser___ReduceAction___init[] = "new ReduceAction647 parser::ReduceAction::init";
+val_t NEW_ReduceAction647_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction647_parser___ReduceAction___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction647();
+  INIT_ATTRIBUTES__parser___ReduceAction647(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction647(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___ReduceAction648[55] = {
+  {(bigint) 587 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction648" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction648 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction648 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 587 /* 5: ReduceAction648 < ReduceAction648: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction648 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 50: ReduceAction648 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction648___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction648 < ReduceAction648: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ReduceAction648::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction648[] = "init var of ReduceAction648";
+void INIT_ATTRIBUTES__parser___ReduceAction648(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.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___ReduceAction648;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_syntax___syntax_base___MMSrcLocalClass(void)
+val_t NEW_parser___ReduceAction648(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 30);
-  obj->vft = (classtable_elt_t*)VFT_syntax___syntax_base___MMSrcLocalClass;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction648;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_syntax___syntax_base___MMSrcLocalClass(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction648[] = "check new ReduceAction648";
+void CHECKNEW_parser___ReduceAction648(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_syntax___syntax_base___MMSrcLocalClass;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction648;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_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_compiling___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_compiling___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);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_new_instance_iroutine", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMSrcLocalClass_syntax___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;
+static const char LOCATE_NEW_ReduceAction648_parser___ReduceAction___init[] = "new ReduceAction648 parser::ReduceAction::init";
+val_t NEW_ReduceAction648_parser___ReduceAction___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};
+  int init_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_MMSrcLocalClass_syntax___syntax_base___MMSrcLocalClass___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction648_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_syntax___syntax_base___MMSrcLocalClass();
-  INIT_ATTRIBUTES__syntax___syntax_base___MMSrcLocalClass(fra.me.REG[3]);
-  syntax___syntax_base___MMSrcLocalClass___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], REGB0, init_table);
-  CHECKNEW_syntax___syntax_base___MMSrcLocalClass(fra.me.REG[3]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction648();
+  INIT_ATTRIBUTES__parser___ReduceAction648(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction648(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[3];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_syntax___syntax_base___MMSrcAttribute[75] = {
-  {(bigint) 2847 /* 0: Identity */},
-  {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "MMSrcAttribute" /* 2: Class Name */},
-  {(bigint) 3 /* 3: MMSrcAttribute < Object: superclass typecheck marker */},
-  {(bigint) 159 /* 4: MMSrcAttribute < MMLocalProperty: superclass typecheck marker */},
-  {(bigint) 2195 /* 5: MMSrcAttribute < MMAttribute: superclass typecheck marker */},
-  {(bigint) 2847 /* 6: MMSrcAttribute < MMSrcAttribute: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction649[55] = {
+  {(bigint) 583 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction649" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction649 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction649 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 583 /* 5: ReduceAction649 < ReduceAction649: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -138412,7 +168789,7 @@ const classtable_elt_t VFT_syntax___syntax_base___MMSrcAttribute[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: MMSrcAttribute < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction649 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -138428,7 +168805,9 @@ const classtable_elt_t VFT_syntax___syntax_base___MMSrcAttribute[75] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -138441,143 +168820,90 @@ const classtable_elt_t VFT_syntax___syntax_base___MMSrcAttribute[75] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___MMLocalProperty___accept_property_visitor},
-  {(bigint) syntax___syntax_base___MMSrcAttribute___node},
-  {(bigint) syntax___syntax_base___MMLocalProperty___is_init},
-  {(bigint) metamodel___inheritance___MMLocalProperty___inherit_global},
-  {(bigint) metamodel___static_type___MMLocalProperty___signature},
-  {(bigint) metamodel___static_type___MMLocalProperty___signature__eq},
-  {(bigint) metamodel___static_type___MMLocalProperty___signature_for},
-  {(bigint) 1 /* 54: MMSrcAttribute < MMLocalProperty: superclass init_table position */},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___name},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___local_class},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___global},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___is_global_set},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___prhe},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___mmmodule},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___full_name},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___set_global},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___new_global},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___need_super},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___need_super__eq},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___init},
-  {(bigint) compiling___compiling_base___MMLocalProperty___cname},
-  {(bigint) compiling___compiling_base___MMLocalProperty___super_meth_call},
-  {(bigint) syntax___icode_generation___MMSrcAttribute___iroutine},
-  {(bigint) 2 /* 70: MMSrcAttribute < MMAttribute: superclass init_table position */},
-  {(bigint) syntax___icode_generation___MMSrcAttribute___iroutine__eq},
-  {(bigint) syntax___icode_generation___MMSrcAttribute___generate_iroutine},
-  {(bigint) 3 /* 73: MMSrcAttribute < MMSrcAttribute: superclass init_table position */},
-  {(bigint) syntax___syntax_base___MMSrcAttribute___init},
+  {(bigint) 0 /* 50: ReduceAction649 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction649___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction649 < ReduceAction649: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__syntax___syntax_base___MMSrcAttribute(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction649::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction649[] = "init var of ReduceAction649";
+void INIT_ATTRIBUTES__parser___ReduceAction649(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___MMSrcAttribute;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction649;
   fra.me.has_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:649 */
-  REGB0 = TAG_Bool(false);
-  ATTR_metamodel___abstractmetamodel___MMLocalProperty____need_super(fra.me.REG[0]) = REGB0;
-  /* ./metamodel//static_type.nit:56 */
-  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
-  ATTR_metamodel___static_type___MMLocalProperty____signatures_cache(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_syntax___syntax_base___MMSrcAttribute(void)
+val_t NEW_parser___ReduceAction649(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 11);
-  obj->vft = (classtable_elt_t*)VFT_syntax___syntax_base___MMSrcAttribute;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction649;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_syntax___syntax_base___MMSrcAttribute(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction649[] = "check new ReduceAction649";
+void CHECKNEW_parser___ReduceAction649(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_syntax___syntax_base___MMSrcAttribute;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction649;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_metamodel___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_metamodel___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_metamodel___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_metamodel___static_type___MMLocalProperty____signatures_cache(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_signatures_cache", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMSrcAttribute_syntax___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;
+static const char LOCATE_NEW_ReduceAction649_parser___ReduceAction___init[] = "new ReduceAction649 parser::ReduceAction::init";
+val_t NEW_ReduceAction649_parser___ReduceAction___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};
+  int init_table[3] = {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___syntax_base___MMSrcAttribute___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction649_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_syntax___syntax_base___MMSrcAttribute();
-  INIT_ATTRIBUTES__syntax___syntax_base___MMSrcAttribute(fra.me.REG[3]);
-  syntax___syntax_base___MMSrcAttribute___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
-  CHECKNEW_syntax___syntax_base___MMSrcAttribute(fra.me.REG[3]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction649();
+  INIT_ATTRIBUTES__parser___ReduceAction649(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction649(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[3];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_syntax___syntax_base___MMSrcMethod[101] = {
-  {(bigint) 2839 /* 0: Identity */},
-  {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "MMSrcMethod" /* 2: Class Name */},
-  {(bigint) 3 /* 3: MMSrcMethod < Object: superclass typecheck marker */},
-  {(bigint) 159 /* 4: MMSrcMethod < MMLocalProperty: superclass typecheck marker */},
-  {(bigint) 2179 /* 5: MMSrcMethod < MMMethod: superclass typecheck marker */},
-  {(bigint) 2839 /* 6: MMSrcMethod < MMSrcMethod: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction650[55] = {
+  {(bigint) 575 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction650" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction650 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction650 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 575 /* 5: ReduceAction650 < ReduceAction650: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -138589,7 +168915,7 @@ const classtable_elt_t VFT_syntax___syntax_base___MMSrcMethod[101] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: MMSrcMethod < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction650 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -138605,7 +168931,9 @@ const classtable_elt_t VFT_syntax___syntax_base___MMSrcMethod[101] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -138618,168 +168946,91 @@ const classtable_elt_t VFT_syntax___syntax_base___MMSrcMethod[101] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___MMLocalProperty___accept_property_visitor},
-  {(bigint) syntax___syntax_base___MMLocalProperty___node},
-  {(bigint) syntax___syntax_base___MMLocalProperty___is_init},
-  {(bigint) metamodel___inheritance___MMLocalProperty___inherit_global},
-  {(bigint) metamodel___static_type___MMLocalProperty___signature},
-  {(bigint) metamodel___static_type___MMLocalProperty___signature__eq},
-  {(bigint) metamodel___static_type___MMLocalProperty___signature_for},
-  {(bigint) 1 /* 54: MMSrcMethod < MMLocalProperty: superclass init_table position */},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___name},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___local_class},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___global},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___is_global_set},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___prhe},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___mmmodule},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___full_name},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___set_global},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___new_global},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___need_super},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___need_super__eq},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___init},
-  {(bigint) compiling___compiling_base___MMLocalProperty___cname},
-  {(bigint) compiling___compiling_base___MMLocalProperty___super_meth_call},
-  {(bigint) native_interface___ni_metamodel___MMMethod___local_friendly_name_from},
-  {(bigint) native_interface___ni_metamodel___MMMethod___friendly_super_cname},
-  {(bigint) native_interface___ni_metamodel___MMMethod___local_friendly_super_name_from},
-  {(bigint) native_interface___ni_metamodel___MMMethod___friendly_cparams},
-  {(bigint) native_interface___ni_metamodel___MMMethod___csignature_with_suffix},
-  {(bigint) native_interface___ni_metamodel___MMMethod___csignature_with_name},
-  {(bigint) native_interface___ni_metamodel___MMMethod___friendly_csignature},
-  {(bigint) native_interface___ni_metamodel___MMMethod___frontier_csignature_from},
-  {(bigint) native_interface___ni_metamodel___MMMethod___friendly_super_csignature},
-  {(bigint) native_interface___ni_metamodel___MMMethod___frontier_super_csignature_from},
-  {(bigint) native_interface___ni_metamodel___MMMethod___impl_csignature},
-  {(bigint) native_interface___ni_metamodel___MMMethod___cparams},
-  {(bigint) native_interface___ni_metamodel___MMMethod___out_csignature},
-  {(bigint) compiling___icode_generator___MMMethod___generate_icode},
-  {(bigint) primitive_info___MMMethod___default_extern_name},
-  {(bigint) primitive_info___MMMethod___friendly_extern_name},
-  {(bigint) metamodel___static_type___MMMethod___explicit_casts},
-  {(bigint) 2 /* 86: MMSrcMethod < MMMethod: superclass init_table position */},
-  {(bigint) syntax___syntax_base___MMSrcMethod___is_intern},
-  {(bigint) syntax___syntax_base___MMSrcMethod___is_abstract},
-  {(bigint) syntax___syntax_base___MMSrcMethod___is_extern},
-  {(bigint) syntax___syntax_base___MMSrcMethod___extern_name},
-  {(bigint) metamodel___abstractmetamodel___MMMethod___explicit_imports},
-  {(bigint) syntax___icode_generation___MMSrcMethod___iroutine},
-  {(bigint) compiling___compiling_global___MMMethod___compile_property_to_c},
-  {(bigint) native_interface___frontier___MMSrcMethod___compile_extern_to_frontier},
-  {(bigint) native_interface___frontier___MMSrcMethod___compile_super_to_frontier},
-  {(bigint) native_interface___frontier___MMSrcMethod___compile_out_to_frontier},
-  {(bigint) syntax___icode_generation___MMSrcMethod___iroutine__eq},
-  {(bigint) syntax___icode_generation___MMSrcMethod___generate_iroutine},
-  {(bigint) syntax___icode_generation___MMSrcMethod___inner_generate_iroutine},
-  {(bigint) 3 /* 100: MMSrcMethod < MMSrcMethod: superclass init_table position */},
+  {(bigint) 0 /* 50: ReduceAction650 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction650___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction650 < ReduceAction650: 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__syntax___syntax_base___MMSrcMethod(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction650::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction650[] = "init var of ReduceAction650";
+void INIT_ATTRIBUTES__parser___ReduceAction650(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___MMSrcMethod;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction650;
   fra.me.has_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:649 */
-  REGB0 = TAG_Bool(false);
-  ATTR_metamodel___abstractmetamodel___MMLocalProperty____need_super(fra.me.REG[0]) = REGB0;
-  /* ./metamodel//static_type.nit:56 */
-  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
-  ATTR_metamodel___static_type___MMLocalProperty____signatures_cache(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_syntax___syntax_base___MMSrcMethod(void)
+val_t NEW_parser___ReduceAction650(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 11);
-  obj->vft = (classtable_elt_t*)VFT_syntax___syntax_base___MMSrcMethod;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction650;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_syntax___syntax_base___MMSrcMethod(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction650[] = "check new ReduceAction650";
+void CHECKNEW_parser___ReduceAction650(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_syntax___syntax_base___MMSrcMethod;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction650;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_metamodel___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_metamodel___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_metamodel___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_metamodel___static_type___MMLocalProperty____signatures_cache(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_signatures_cache", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMSrcMethod_metamodel___abstractmetamodel___MMLocalProperty___init(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_ReduceAction650_parser___ReduceAction___init[] = "new ReduceAction650 parser::ReduceAction::init";
+val_t NEW_ReduceAction650_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 651;
-  fra.me.meth = LOCATE_NEW_MMSrcMethod_metamodel___abstractmetamodel___MMLocalProperty___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction650_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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:651 */
-  fra.me.REG[2] = NEW_syntax___syntax_base___MMSrcMethod();
-  INIT_ATTRIBUTES__syntax___syntax_base___MMSrcMethod(fra.me.REG[2]);
-  metamodel___abstractmetamodel___MMLocalProperty___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_syntax___syntax_base___MMSrcMethod(fra.me.REG[2]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction650();
+  INIT_ATTRIBUTES__parser___ReduceAction650(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction650(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_syntax___syntax_base___MMAttrImplementationMethod[103] = {
-  {(bigint) 3199 /* 0: Identity */},
-  {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "MMAttrImplementationMethod" /* 2: Class Name */},
-  {(bigint) 3 /* 3: MMAttrImplementationMethod < Object: superclass typecheck marker */},
-  {(bigint) 159 /* 4: MMAttrImplementationMethod < MMLocalProperty: superclass typecheck marker */},
-  {(bigint) 2179 /* 5: MMAttrImplementationMethod < MMMethod: superclass typecheck marker */},
-  {(bigint) 2839 /* 6: MMAttrImplementationMethod < MMSrcMethod: superclass typecheck marker */},
-  {(bigint) 3199 /* 7: MMAttrImplementationMethod < MMAttrImplementationMethod: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction651[55] = {
+  {(bigint) 571 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction651" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction651 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction651 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 571 /* 5: ReduceAction651 < ReduceAction651: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -138790,7 +169041,7 @@ const classtable_elt_t VFT_syntax___syntax_base___MMAttrImplementationMethod[103
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: MMAttrImplementationMethod < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction651 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -138806,7 +169057,9 @@ const classtable_elt_t VFT_syntax___syntax_base___MMAttrImplementationMethod[103
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -138819,173 +169072,92 @@ const classtable_elt_t VFT_syntax___syntax_base___MMAttrImplementationMethod[103
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___MMLocalProperty___accept_property_visitor},
-  {(bigint) syntax___syntax_base___MMAttrImplementationMethod___node},
-  {(bigint) syntax___syntax_base___MMLocalProperty___is_init},
-  {(bigint) metamodel___inheritance___MMLocalProperty___inherit_global},
-  {(bigint) metamodel___static_type___MMLocalProperty___signature},
-  {(bigint) metamodel___static_type___MMLocalProperty___signature__eq},
-  {(bigint) metamodel___static_type___MMLocalProperty___signature_for},
-  {(bigint) 1 /* 54: MMAttrImplementationMethod < MMLocalProperty: superclass init_table position */},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___name},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___local_class},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___global},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___is_global_set},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___prhe},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___mmmodule},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___full_name},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___set_global},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___new_global},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___need_super},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___need_super__eq},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___init},
-  {(bigint) compiling___compiling_base___MMLocalProperty___cname},
-  {(bigint) compiling___compiling_base___MMLocalProperty___super_meth_call},
-  {(bigint) native_interface___ni_metamodel___MMMethod___local_friendly_name_from},
-  {(bigint) native_interface___ni_metamodel___MMMethod___friendly_super_cname},
-  {(bigint) native_interface___ni_metamodel___MMMethod___local_friendly_super_name_from},
-  {(bigint) native_interface___ni_metamodel___MMMethod___friendly_cparams},
-  {(bigint) native_interface___ni_metamodel___MMMethod___csignature_with_suffix},
-  {(bigint) native_interface___ni_metamodel___MMMethod___csignature_with_name},
-  {(bigint) native_interface___ni_metamodel___MMMethod___friendly_csignature},
-  {(bigint) native_interface___ni_metamodel___MMMethod___frontier_csignature_from},
-  {(bigint) native_interface___ni_metamodel___MMMethod___friendly_super_csignature},
-  {(bigint) native_interface___ni_metamodel___MMMethod___frontier_super_csignature_from},
-  {(bigint) native_interface___ni_metamodel___MMMethod___impl_csignature},
-  {(bigint) native_interface___ni_metamodel___MMMethod___cparams},
-  {(bigint) native_interface___ni_metamodel___MMMethod___out_csignature},
-  {(bigint) compiling___icode_generator___MMMethod___generate_icode},
-  {(bigint) primitive_info___MMMethod___default_extern_name},
-  {(bigint) primitive_info___MMMethod___friendly_extern_name},
-  {(bigint) metamodel___static_type___MMMethod___explicit_casts},
-  {(bigint) 2 /* 86: MMAttrImplementationMethod < MMMethod: superclass init_table position */},
-  {(bigint) syntax___syntax_base___MMSrcMethod___is_intern},
-  {(bigint) syntax___syntax_base___MMSrcMethod___is_abstract},
-  {(bigint) syntax___syntax_base___MMSrcMethod___is_extern},
-  {(bigint) syntax___syntax_base___MMSrcMethod___extern_name},
-  {(bigint) metamodel___abstractmetamodel___MMMethod___explicit_imports},
-  {(bigint) syntax___icode_generation___MMSrcMethod___iroutine},
-  {(bigint) compiling___compiling_global___MMMethod___compile_property_to_c},
-  {(bigint) native_interface___frontier___MMSrcMethod___compile_extern_to_frontier},
-  {(bigint) native_interface___frontier___MMSrcMethod___compile_super_to_frontier},
-  {(bigint) native_interface___frontier___MMSrcMethod___compile_out_to_frontier},
-  {(bigint) syntax___icode_generation___MMSrcMethod___iroutine__eq},
-  {(bigint) syntax___icode_generation___MMSrcMethod___generate_iroutine},
-  {(bigint) syntax___icode_generation___MMSrcMethod___inner_generate_iroutine},
-  {(bigint) 3 /* 100: MMAttrImplementationMethod < MMSrcMethod: superclass init_table position */},
-  {(bigint) 4 /* 101: MMAttrImplementationMethod < MMAttrImplementationMethod: superclass init_table position */},
-  {(bigint) syntax___syntax_base___MMAttrImplementationMethod___init},
+  {(bigint) 0 /* 50: ReduceAction651 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction651___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction651 < ReduceAction651: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__syntax___syntax_base___MMAttrImplementationMethod(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction651::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction651[] = "init var of ReduceAction651";
+void INIT_ATTRIBUTES__parser___ReduceAction651(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___MMAttrImplementationMethod;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction651;
   fra.me.has_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:649 */
-  REGB0 = TAG_Bool(false);
-  ATTR_metamodel___abstractmetamodel___MMLocalProperty____need_super(fra.me.REG[0]) = REGB0;
-  /* ./metamodel//static_type.nit:56 */
-  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
-  ATTR_metamodel___static_type___MMLocalProperty____signatures_cache(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_syntax___syntax_base___MMAttrImplementationMethod(void)
+val_t NEW_parser___ReduceAction651(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 11);
-  obj->vft = (classtable_elt_t*)VFT_syntax___syntax_base___MMAttrImplementationMethod;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction651;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_syntax___syntax_base___MMAttrImplementationMethod(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction651[] = "check new ReduceAction651";
+void CHECKNEW_parser___ReduceAction651(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_syntax___syntax_base___MMAttrImplementationMethod;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction651;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_metamodel___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_metamodel___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_metamodel___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_metamodel___static_type___MMLocalProperty____signatures_cache(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_signatures_cache", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMAttrImplementationMethod_syntax___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;
+static const char LOCATE_NEW_ReduceAction651_parser___ReduceAction___init[] = "new ReduceAction651 parser::ReduceAction::init";
+val_t NEW_ReduceAction651_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 159;
-  fra.me.meth = LOCATE_NEW_MMAttrImplementationMethod_syntax___syntax_base___MMAttrImplementationMethod___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction651_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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:159 */
-  fra.me.REG[3] = NEW_syntax___syntax_base___MMAttrImplementationMethod();
-  INIT_ATTRIBUTES__syntax___syntax_base___MMAttrImplementationMethod(fra.me.REG[3]);
-  syntax___syntax_base___MMAttrImplementationMethod___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
-  CHECKNEW_syntax___syntax_base___MMAttrImplementationMethod(fra.me.REG[3]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction651();
+  INIT_ATTRIBUTES__parser___ReduceAction651(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction651(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[3];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_syntax___syntax_base___MMReadImplementationMethod[105] = {
-  {(bigint) 3547 /* 0: Identity */},
-  {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "MMReadImplementationMethod" /* 2: Class Name */},
-  {(bigint) 3 /* 3: MMReadImplementationMethod < Object: superclass typecheck marker */},
-  {(bigint) 159 /* 4: MMReadImplementationMethod < MMLocalProperty: superclass typecheck marker */},
-  {(bigint) 2179 /* 5: MMReadImplementationMethod < MMMethod: superclass typecheck marker */},
-  {(bigint) 2839 /* 6: MMReadImplementationMethod < MMSrcMethod: superclass typecheck marker */},
-  {(bigint) 3199 /* 7: MMReadImplementationMethod < MMAttrImplementationMethod: superclass typecheck marker */},
-  {(bigint) 3547 /* 8: MMReadImplementationMethod < MMReadImplementationMethod: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction653[55] = {
+  {(bigint) 567 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction653" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction653 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction653 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 567 /* 5: ReduceAction653 < ReduceAction653: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -138995,7 +169167,7 @@ const classtable_elt_t VFT_syntax___syntax_base___MMReadImplementationMethod[105
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: MMReadImplementationMethod < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction653 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -139011,7 +169183,9 @@ const classtable_elt_t VFT_syntax___syntax_base___MMReadImplementationMethod[105
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -139024,175 +169198,92 @@ const classtable_elt_t VFT_syntax___syntax_base___MMReadImplementationMethod[105
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___MMLocalProperty___accept_property_visitor},
-  {(bigint) syntax___syntax_base___MMAttrImplementationMethod___node},
-  {(bigint) syntax___syntax_base___MMLocalProperty___is_init},
-  {(bigint) metamodel___inheritance___MMLocalProperty___inherit_global},
-  {(bigint) metamodel___static_type___MMLocalProperty___signature},
-  {(bigint) metamodel___static_type___MMLocalProperty___signature__eq},
-  {(bigint) metamodel___static_type___MMLocalProperty___signature_for},
-  {(bigint) 1 /* 54: MMReadImplementationMethod < MMLocalProperty: superclass init_table position */},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___name},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___local_class},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___global},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___is_global_set},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___prhe},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___mmmodule},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___full_name},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___set_global},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___new_global},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___need_super},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___need_super__eq},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___init},
-  {(bigint) compiling___compiling_base___MMLocalProperty___cname},
-  {(bigint) compiling___compiling_base___MMLocalProperty___super_meth_call},
-  {(bigint) native_interface___ni_metamodel___MMMethod___local_friendly_name_from},
-  {(bigint) native_interface___ni_metamodel___MMMethod___friendly_super_cname},
-  {(bigint) native_interface___ni_metamodel___MMMethod___local_friendly_super_name_from},
-  {(bigint) native_interface___ni_metamodel___MMMethod___friendly_cparams},
-  {(bigint) native_interface___ni_metamodel___MMMethod___csignature_with_suffix},
-  {(bigint) native_interface___ni_metamodel___MMMethod___csignature_with_name},
-  {(bigint) native_interface___ni_metamodel___MMMethod___friendly_csignature},
-  {(bigint) native_interface___ni_metamodel___MMMethod___frontier_csignature_from},
-  {(bigint) native_interface___ni_metamodel___MMMethod___friendly_super_csignature},
-  {(bigint) native_interface___ni_metamodel___MMMethod___frontier_super_csignature_from},
-  {(bigint) native_interface___ni_metamodel___MMMethod___impl_csignature},
-  {(bigint) native_interface___ni_metamodel___MMMethod___cparams},
-  {(bigint) native_interface___ni_metamodel___MMMethod___out_csignature},
-  {(bigint) compiling___icode_generator___MMMethod___generate_icode},
-  {(bigint) primitive_info___MMMethod___default_extern_name},
-  {(bigint) primitive_info___MMMethod___friendly_extern_name},
-  {(bigint) metamodel___static_type___MMMethod___explicit_casts},
-  {(bigint) 2 /* 86: MMReadImplementationMethod < MMMethod: superclass init_table position */},
-  {(bigint) syntax___syntax_base___MMSrcMethod___is_intern},
-  {(bigint) syntax___syntax_base___MMSrcMethod___is_abstract},
-  {(bigint) syntax___syntax_base___MMSrcMethod___is_extern},
-  {(bigint) syntax___syntax_base___MMSrcMethod___extern_name},
-  {(bigint) metamodel___abstractmetamodel___MMMethod___explicit_imports},
-  {(bigint) syntax___icode_generation___MMSrcMethod___iroutine},
-  {(bigint) compiling___compiling_global___MMMethod___compile_property_to_c},
-  {(bigint) native_interface___frontier___MMSrcMethod___compile_extern_to_frontier},
-  {(bigint) native_interface___frontier___MMSrcMethod___compile_super_to_frontier},
-  {(bigint) native_interface___frontier___MMSrcMethod___compile_out_to_frontier},
-  {(bigint) syntax___icode_generation___MMSrcMethod___iroutine__eq},
-  {(bigint) syntax___icode_generation___MMSrcMethod___generate_iroutine},
-  {(bigint) syntax___icode_generation___MMReadImplementationMethod___inner_generate_iroutine},
-  {(bigint) 3 /* 100: MMReadImplementationMethod < MMSrcMethod: superclass init_table position */},
-  {(bigint) 4 /* 101: MMReadImplementationMethod < MMAttrImplementationMethod: superclass init_table position */},
-  {(bigint) syntax___syntax_base___MMAttrImplementationMethod___init},
-  {(bigint) 5 /* 103: MMReadImplementationMethod < MMReadImplementationMethod: superclass init_table position */},
-  {(bigint) syntax___syntax_base___MMReadImplementationMethod___init},
+  {(bigint) 0 /* 50: ReduceAction653 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction653___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction653 < ReduceAction653: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__syntax___syntax_base___MMReadImplementationMethod(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction653::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction653[] = "init var of ReduceAction653";
+void INIT_ATTRIBUTES__parser___ReduceAction653(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___MMReadImplementationMethod;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction653;
   fra.me.has_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:649 */
-  REGB0 = TAG_Bool(false);
-  ATTR_metamodel___abstractmetamodel___MMLocalProperty____need_super(fra.me.REG[0]) = REGB0;
-  /* ./metamodel//static_type.nit:56 */
-  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
-  ATTR_metamodel___static_type___MMLocalProperty____signatures_cache(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_syntax___syntax_base___MMReadImplementationMethod(void)
+val_t NEW_parser___ReduceAction653(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 11);
-  obj->vft = (classtable_elt_t*)VFT_syntax___syntax_base___MMReadImplementationMethod;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction653;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_syntax___syntax_base___MMReadImplementationMethod(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction653[] = "check new ReduceAction653";
+void CHECKNEW_parser___ReduceAction653(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_syntax___syntax_base___MMReadImplementationMethod;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction653;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_metamodel___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_metamodel___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_metamodel___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_metamodel___static_type___MMLocalProperty____signatures_cache(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_signatures_cache", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMReadImplementationMethod_syntax___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;
+static const char LOCATE_NEW_ReduceAction653_parser___ReduceAction___init[] = "new ReduceAction653 parser::ReduceAction::init";
+val_t NEW_ReduceAction653_parser___ReduceAction___init(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};
+  int init_table[3] = {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_MMReadImplementationMethod_syntax___syntax_base___MMReadImplementationMethod___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction653_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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:169 */
-  fra.me.REG[3] = NEW_syntax___syntax_base___MMReadImplementationMethod();
-  INIT_ATTRIBUTES__syntax___syntax_base___MMReadImplementationMethod(fra.me.REG[3]);
-  syntax___syntax_base___MMReadImplementationMethod___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
-  CHECKNEW_syntax___syntax_base___MMReadImplementationMethod(fra.me.REG[3]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction653();
+  INIT_ATTRIBUTES__parser___ReduceAction653(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction653(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[3];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_syntax___syntax_base___MMWriteImplementationMethod[105] = {
-  {(bigint) 3543 /* 0: Identity */},
-  {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "MMWriteImplementationMethod" /* 2: Class Name */},
-  {(bigint) 3 /* 3: MMWriteImplementationMethod < Object: superclass typecheck marker */},
-  {(bigint) 159 /* 4: MMWriteImplementationMethod < MMLocalProperty: superclass typecheck marker */},
-  {(bigint) 2179 /* 5: MMWriteImplementationMethod < MMMethod: superclass typecheck marker */},
-  {(bigint) 2839 /* 6: MMWriteImplementationMethod < MMSrcMethod: superclass typecheck marker */},
-  {(bigint) 3199 /* 7: MMWriteImplementationMethod < MMAttrImplementationMethod: superclass typecheck marker */},
-  {(bigint) 3543 /* 8: MMWriteImplementationMethod < MMWriteImplementationMethod: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction654[55] = {
+  {(bigint) 563 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction654" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction654 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction654 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 563 /* 5: ReduceAction654 < ReduceAction654: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -139202,7 +169293,7 @@ const classtable_elt_t VFT_syntax___syntax_base___MMWriteImplementationMethod[10
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: MMWriteImplementationMethod < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction654 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -139218,7 +169309,9 @@ const classtable_elt_t VFT_syntax___syntax_base___MMWriteImplementationMethod[10
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -139231,174 +169324,91 @@ const classtable_elt_t VFT_syntax___syntax_base___MMWriteImplementationMethod[10
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___MMLocalProperty___accept_property_visitor},
-  {(bigint) syntax___syntax_base___MMAttrImplementationMethod___node},
-  {(bigint) syntax___syntax_base___MMLocalProperty___is_init},
-  {(bigint) metamodel___inheritance___MMLocalProperty___inherit_global},
-  {(bigint) metamodel___static_type___MMLocalProperty___signature},
-  {(bigint) metamodel___static_type___MMLocalProperty___signature__eq},
-  {(bigint) metamodel___static_type___MMLocalProperty___signature_for},
-  {(bigint) 1 /* 54: MMWriteImplementationMethod < MMLocalProperty: superclass init_table position */},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___name},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___local_class},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___global},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___is_global_set},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___prhe},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___mmmodule},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___full_name},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___set_global},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___new_global},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___need_super},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___need_super__eq},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___init},
-  {(bigint) compiling___compiling_base___MMLocalProperty___cname},
-  {(bigint) compiling___compiling_base___MMLocalProperty___super_meth_call},
-  {(bigint) native_interface___ni_metamodel___MMMethod___local_friendly_name_from},
-  {(bigint) native_interface___ni_metamodel___MMMethod___friendly_super_cname},
-  {(bigint) native_interface___ni_metamodel___MMMethod___local_friendly_super_name_from},
-  {(bigint) native_interface___ni_metamodel___MMMethod___friendly_cparams},
-  {(bigint) native_interface___ni_metamodel___MMMethod___csignature_with_suffix},
-  {(bigint) native_interface___ni_metamodel___MMMethod___csignature_with_name},
-  {(bigint) native_interface___ni_metamodel___MMMethod___friendly_csignature},
-  {(bigint) native_interface___ni_metamodel___MMMethod___frontier_csignature_from},
-  {(bigint) native_interface___ni_metamodel___MMMethod___friendly_super_csignature},
-  {(bigint) native_interface___ni_metamodel___MMMethod___frontier_super_csignature_from},
-  {(bigint) native_interface___ni_metamodel___MMMethod___impl_csignature},
-  {(bigint) native_interface___ni_metamodel___MMMethod___cparams},
-  {(bigint) native_interface___ni_metamodel___MMMethod___out_csignature},
-  {(bigint) compiling___icode_generator___MMMethod___generate_icode},
-  {(bigint) primitive_info___MMMethod___default_extern_name},
-  {(bigint) primitive_info___MMMethod___friendly_extern_name},
-  {(bigint) metamodel___static_type___MMMethod___explicit_casts},
-  {(bigint) 2 /* 86: MMWriteImplementationMethod < MMMethod: superclass init_table position */},
-  {(bigint) syntax___syntax_base___MMSrcMethod___is_intern},
-  {(bigint) syntax___syntax_base___MMSrcMethod___is_abstract},
-  {(bigint) syntax___syntax_base___MMSrcMethod___is_extern},
-  {(bigint) syntax___syntax_base___MMSrcMethod___extern_name},
-  {(bigint) metamodel___abstractmetamodel___MMMethod___explicit_imports},
-  {(bigint) syntax___icode_generation___MMSrcMethod___iroutine},
-  {(bigint) compiling___compiling_global___MMMethod___compile_property_to_c},
-  {(bigint) native_interface___frontier___MMSrcMethod___compile_extern_to_frontier},
-  {(bigint) native_interface___frontier___MMSrcMethod___compile_super_to_frontier},
-  {(bigint) native_interface___frontier___MMSrcMethod___compile_out_to_frontier},
-  {(bigint) syntax___icode_generation___MMSrcMethod___iroutine__eq},
-  {(bigint) syntax___icode_generation___MMSrcMethod___generate_iroutine},
-  {(bigint) syntax___icode_generation___MMWriteImplementationMethod___inner_generate_iroutine},
-  {(bigint) 3 /* 100: MMWriteImplementationMethod < MMSrcMethod: superclass init_table position */},
-  {(bigint) 4 /* 101: MMWriteImplementationMethod < MMAttrImplementationMethod: superclass init_table position */},
-  {(bigint) syntax___syntax_base___MMAttrImplementationMethod___init},
-  {(bigint) 5 /* 103: MMWriteImplementationMethod < MMWriteImplementationMethod: superclass init_table position */},
-  {(bigint) syntax___syntax_base___MMWriteImplementationMethod___init},
+  {(bigint) 0 /* 50: ReduceAction654 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction654___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction654 < ReduceAction654: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__syntax___syntax_base___MMWriteImplementationMethod(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction654::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction654[] = "init var of ReduceAction654";
+void INIT_ATTRIBUTES__parser___ReduceAction654(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___MMWriteImplementationMethod;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction654;
   fra.me.has_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:649 */
-  REGB0 = TAG_Bool(false);
-  ATTR_metamodel___abstractmetamodel___MMLocalProperty____need_super(fra.me.REG[0]) = REGB0;
-  /* ./metamodel//static_type.nit:56 */
-  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
-  ATTR_metamodel___static_type___MMLocalProperty____signatures_cache(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_syntax___syntax_base___MMWriteImplementationMethod(void)
+val_t NEW_parser___ReduceAction654(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 11);
-  obj->vft = (classtable_elt_t*)VFT_syntax___syntax_base___MMWriteImplementationMethod;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction654;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_syntax___syntax_base___MMWriteImplementationMethod(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction654[] = "check new ReduceAction654";
+void CHECKNEW_parser___ReduceAction654(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_syntax___syntax_base___MMWriteImplementationMethod;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction654;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_metamodel___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_metamodel___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_metamodel___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_metamodel___static_type___MMLocalProperty____signatures_cache(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_signatures_cache", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMWriteImplementationMethod_syntax___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;
+static const char LOCATE_NEW_ReduceAction654_parser___ReduceAction___init[] = "new ReduceAction654 parser::ReduceAction::init";
+val_t NEW_ReduceAction654_parser___ReduceAction___init(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};
+  int init_table[3] = {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_MMWriteImplementationMethod_syntax___syntax_base___MMWriteImplementationMethod___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction654_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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:178 */
-  fra.me.REG[3] = NEW_syntax___syntax_base___MMWriteImplementationMethod();
-  INIT_ATTRIBUTES__syntax___syntax_base___MMWriteImplementationMethod(fra.me.REG[3]);
-  syntax___syntax_base___MMWriteImplementationMethod___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
-  CHECKNEW_syntax___syntax_base___MMWriteImplementationMethod(fra.me.REG[3]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction654();
+  INIT_ATTRIBUTES__parser___ReduceAction654(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction654(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[3];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_syntax___syntax_base___MMMethSrcMethod[104] = {
-  {(bigint) 3195 /* 0: Identity */},
-  {(bigint) 18 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "MMMethSrcMethod" /* 2: Class Name */},
-  {(bigint) 3 /* 3: MMMethSrcMethod < Object: superclass typecheck marker */},
-  {(bigint) 159 /* 4: MMMethSrcMethod < MMLocalProperty: superclass typecheck marker */},
-  {(bigint) 2179 /* 5: MMMethSrcMethod < MMMethod: superclass typecheck marker */},
-  {(bigint) 2839 /* 6: MMMethSrcMethod < MMSrcMethod: superclass typecheck marker */},
-  {(bigint) 3195 /* 7: MMMethSrcMethod < MMMethSrcMethod: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction656[55] = {
+  {(bigint) 559 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction656" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction656 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction656 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 559 /* 5: ReduceAction656 < ReduceAction656: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -139409,7 +169419,7 @@ const classtable_elt_t VFT_syntax___syntax_base___MMMethSrcMethod[104] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: MMMethSrcMethod < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction656 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -139425,7 +169435,9 @@ const classtable_elt_t VFT_syntax___syntax_base___MMMethSrcMethod[104] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -139438,215 +169450,90 @@ const classtable_elt_t VFT_syntax___syntax_base___MMMethSrcMethod[104] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___MMLocalProperty___accept_property_visitor},
-  {(bigint) syntax___syntax_base___MMMethSrcMethod___node},
-  {(bigint) syntax___syntax_base___MMMethSrcMethod___is_init},
-  {(bigint) metamodel___inheritance___MMLocalProperty___inherit_global},
-  {(bigint) metamodel___static_type___MMLocalProperty___signature},
-  {(bigint) metamodel___static_type___MMLocalProperty___signature__eq},
-  {(bigint) metamodel___static_type___MMLocalProperty___signature_for},
-  {(bigint) 1 /* 54: MMMethSrcMethod < MMLocalProperty: superclass init_table position */},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___name},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___local_class},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___global},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___is_global_set},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___prhe},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___mmmodule},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___full_name},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___set_global},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___new_global},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___need_super},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___need_super__eq},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___init},
-  {(bigint) compiling___compiling_base___MMLocalProperty___cname},
-  {(bigint) compiling___compiling_base___MMLocalProperty___super_meth_call},
-  {(bigint) native_interface___ni_metamodel___MMMethod___local_friendly_name_from},
-  {(bigint) native_interface___ni_metamodel___MMMethod___friendly_super_cname},
-  {(bigint) native_interface___ni_metamodel___MMMethod___local_friendly_super_name_from},
-  {(bigint) native_interface___ni_metamodel___MMMethod___friendly_cparams},
-  {(bigint) native_interface___ni_metamodel___MMMethod___csignature_with_suffix},
-  {(bigint) native_interface___ni_metamodel___MMMethod___csignature_with_name},
-  {(bigint) native_interface___ni_metamodel___MMMethod___friendly_csignature},
-  {(bigint) native_interface___ni_metamodel___MMMethod___frontier_csignature_from},
-  {(bigint) native_interface___ni_metamodel___MMMethod___friendly_super_csignature},
-  {(bigint) native_interface___ni_metamodel___MMMethod___frontier_super_csignature_from},
-  {(bigint) native_interface___ni_metamodel___MMMethod___impl_csignature},
-  {(bigint) native_interface___ni_metamodel___MMMethod___cparams},
-  {(bigint) native_interface___ni_metamodel___MMMethod___out_csignature},
-  {(bigint) compiling___icode_generator___MMMethod___generate_icode},
-  {(bigint) primitive_info___MMMethod___default_extern_name},
-  {(bigint) primitive_info___MMMethod___friendly_extern_name},
-  {(bigint) syntax___syntax_base___MMMethSrcMethod___explicit_casts},
-  {(bigint) 2 /* 86: MMMethSrcMethod < MMMethod: superclass init_table position */},
-  {(bigint) syntax___syntax_base___MMMethSrcMethod___is_intern},
-  {(bigint) syntax___syntax_base___MMMethSrcMethod___is_abstract},
-  {(bigint) syntax___syntax_base___MMMethSrcMethod___is_extern},
-  {(bigint) syntax___syntax_base___MMMethSrcMethod___extern_name},
-  {(bigint) syntax___syntax_base___MMMethSrcMethod___explicit_imports},
-  {(bigint) syntax___icode_generation___MMSrcMethod___iroutine},
-  {(bigint) compiling___compiling_global___MMMethod___compile_property_to_c},
-  {(bigint) native_interface___frontier___MMSrcMethod___compile_extern_to_frontier},
-  {(bigint) native_interface___frontier___MMSrcMethod___compile_super_to_frontier},
-  {(bigint) native_interface___frontier___MMSrcMethod___compile_out_to_frontier},
-  {(bigint) syntax___icode_generation___MMSrcMethod___iroutine__eq},
-  {(bigint) syntax___icode_generation___MMSrcMethod___generate_iroutine},
-  {(bigint) syntax___icode_generation___MMMethSrcMethod___inner_generate_iroutine},
-  {(bigint) 3 /* 100: MMMethSrcMethod < MMSrcMethod: superclass init_table position */},
-  {(bigint) 4 /* 101: MMMethSrcMethod < MMMethSrcMethod: superclass init_table position */},
-  {(bigint) syntax___syntax_base___MMMethSrcMethod___extern_name__eq},
-  {(bigint) syntax___syntax_base___MMMethSrcMethod___init},
+  {(bigint) 0 /* 50: ReduceAction656 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction656___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction656 < ReduceAction656: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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_extern */
-/* 14: Attribute MMMethSrcMethod::_is_abstract */
-/* 15: Attribute MMMethSrcMethod::_extern_name */
-/* 16: Attribute MMMethSrcMethod::_explicit_casts */
-/* 17: Attribute MMMethSrcMethod::_explicit_imports */
-void INIT_ATTRIBUTES__syntax___syntax_base___MMMethSrcMethod(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction656::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction656[] = "init var of ReduceAction656";
+void INIT_ATTRIBUTES__parser___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__syntax___syntax_base___MMMethSrcMethod;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction656;
   fra.me.has_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:192 */
-  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
-  ATTR_syntax___syntax_base___MMMethSrcMethod____explicit_casts(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//syntax_base.nit:193 */
-  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
-  ATTR_syntax___syntax_base___MMMethSrcMethod____explicit_imports(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//abstractmetamodel.nit:649 */
-  REGB0 = TAG_Bool(false);
-  ATTR_metamodel___abstractmetamodel___MMLocalProperty____need_super(fra.me.REG[0]) = REGB0;
-  /* ./metamodel//static_type.nit:56 */
-  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
-  ATTR_metamodel___static_type___MMLocalProperty____signatures_cache(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_syntax___syntax_base___MMMethSrcMethod(void)
+val_t NEW_parser___ReduceAction656(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 18);
-  obj->vft = (classtable_elt_t*)VFT_syntax___syntax_base___MMMethSrcMethod;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction656;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_syntax___syntax_base___MMMethSrcMethod(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction656[] = "check new ReduceAction656";
+void CHECKNEW_parser___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_syntax___syntax_base___MMMethSrcMethod;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction656;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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___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___syntax_base___MMMethSrcMethod____is_extern(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_is_extern", LOCATE_nitc, 0);
-  }
-  REGB0 = TAG_Bool(ATTR_syntax___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_syntax___syntax_base___MMMethSrcMethod____explicit_casts(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_explicit_casts", LOCATE_nitc, 0);
-  }
-  REGB0 = TAG_Bool(ATTR_syntax___syntax_base___MMMethSrcMethod____explicit_imports(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_explicit_imports", LOCATE_nitc, 0);
-  }
-  REGB0 = TAG_Bool(ATTR_metamodel___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_metamodel___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_metamodel___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_metamodel___static_type___MMLocalProperty____signatures_cache(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_signatures_cache", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMMethSrcMethod_syntax___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;
+static const char LOCATE_NEW_ReduceAction656_parser___ReduceAction___init[] = "new ReduceAction656 parser::ReduceAction::init";
+val_t NEW_ReduceAction656_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 195;
-  fra.me.meth = LOCATE_NEW_MMMethSrcMethod_syntax___syntax_base___MMMethSrcMethod___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction656_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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:195 */
-  fra.me.REG[3] = NEW_syntax___syntax_base___MMMethSrcMethod();
-  INIT_ATTRIBUTES__syntax___syntax_base___MMMethSrcMethod(fra.me.REG[3]);
-  syntax___syntax_base___MMMethSrcMethod___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
-  CHECKNEW_syntax___syntax_base___MMMethSrcMethod(fra.me.REG[3]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction656();
+  INIT_ATTRIBUTES__parser___ReduceAction656(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction656(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[3];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_syntax___syntax_base___MMSrcTypeProperty[74] = {
-  {(bigint) 2835 /* 0: Identity */},
-  {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "MMSrcTypeProperty" /* 2: Class Name */},
-  {(bigint) 3 /* 3: MMSrcTypeProperty < Object: superclass typecheck marker */},
-  {(bigint) 159 /* 4: MMSrcTypeProperty < MMLocalProperty: superclass typecheck marker */},
-  {(bigint) 2143 /* 5: MMSrcTypeProperty < MMTypeProperty: superclass typecheck marker */},
-  {(bigint) 2835 /* 6: MMSrcTypeProperty < MMSrcTypeProperty: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction657[55] = {
+  {(bigint) 555 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction657" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction657 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction657 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 555 /* 5: ReduceAction657 < ReduceAction657: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -139658,7 +169545,7 @@ const classtable_elt_t VFT_syntax___syntax_base___MMSrcTypeProperty[74] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: MMSrcTypeProperty < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction657 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -139674,7 +169561,9 @@ const classtable_elt_t VFT_syntax___syntax_base___MMSrcTypeProperty[74] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -139687,152 +169576,218 @@ const classtable_elt_t VFT_syntax___syntax_base___MMSrcTypeProperty[74] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___MMLocalProperty___accept_property_visitor},
-  {(bigint) syntax___syntax_base___MMLocalProperty___node},
-  {(bigint) syntax___syntax_base___MMLocalProperty___is_init},
-  {(bigint) metamodel___inheritance___MMLocalProperty___inherit_global},
-  {(bigint) metamodel___static_type___MMLocalProperty___signature},
-  {(bigint) metamodel___static_type___MMLocalProperty___signature__eq},
-  {(bigint) metamodel___static_type___MMLocalProperty___signature_for},
-  {(bigint) 1 /* 54: MMSrcTypeProperty < MMLocalProperty: superclass init_table position */},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___name},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___local_class},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___global},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___is_global_set},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___prhe},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___mmmodule},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___full_name},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___set_global},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___new_global},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___need_super},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___need_super__eq},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___init},
-  {(bigint) compiling___compiling_base___MMLocalProperty___cname},
-  {(bigint) compiling___compiling_base___MMLocalProperty___super_meth_call},
-  {(bigint) 2 /* 69: MMSrcTypeProperty < MMTypeProperty: superclass init_table position */},
-  {(bigint) metamodel___virtualtype___MMTypeProperty___stype_for},
-  {(bigint) metamodel___virtualtype___MMTypeProperty___real_stype_for},
-  {(bigint) 3 /* 72: MMSrcTypeProperty < MMSrcTypeProperty: superclass init_table position */},
-  {(bigint) syntax___syntax_base___MMSrcTypeProperty___init},
+  {(bigint) 0 /* 50: ReduceAction657 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction657___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction657 < ReduceAction657: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ReduceAction657::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction657[] = "init var of ReduceAction657";
+void INIT_ATTRIBUTES__parser___ReduceAction657(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.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___ReduceAction657;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_parser___ReduceAction657(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction657;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_parser___ReduceAction657[] = "check new ReduceAction657";
+void CHECKNEW_parser___ReduceAction657(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.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___ReduceAction657;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_ReduceAction657_parser___ReduceAction___init[] = "new ReduceAction657 parser::ReduceAction::init";
+val_t NEW_ReduceAction657_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction657_parser___ReduceAction___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction657();
+  INIT_ATTRIBUTES__parser___ReduceAction657(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction657(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_parser___ReduceAction658[55] = {
+  {(bigint) 551 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction658" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction658 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction658 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 551 /* 5: ReduceAction658 < ReduceAction658: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction658 < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 50: ReduceAction658 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction658___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction658 < ReduceAction658: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__syntax___syntax_base___MMSrcTypeProperty(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction658::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction658[] = "init var of ReduceAction658";
+void INIT_ATTRIBUTES__parser___ReduceAction658(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___MMSrcTypeProperty;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction658;
   fra.me.has_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_standard___collection___hash_collection___HashMap___init();
-  ATTR_metamodel___virtualtype___MMTypeProperty____stypes_cache(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//static_type.nit:56 */
-  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
-  ATTR_metamodel___static_type___MMLocalProperty____signatures_cache(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//abstractmetamodel.nit:649 */
-  REGB0 = TAG_Bool(false);
-  ATTR_metamodel___abstractmetamodel___MMLocalProperty____need_super(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_syntax___syntax_base___MMSrcTypeProperty(void)
+val_t NEW_parser___ReduceAction658(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 11);
-  obj->vft = (classtable_elt_t*)VFT_syntax___syntax_base___MMSrcTypeProperty;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction658;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_syntax___syntax_base___MMSrcTypeProperty(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction658[] = "check new ReduceAction658";
+void CHECKNEW_parser___ReduceAction658(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_syntax___syntax_base___MMSrcTypeProperty;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction658;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___abstractmetamodel___MMLocalProperty____need_super(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_need_super", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMSrcTypeProperty_syntax___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;
+static const char LOCATE_NEW_ReduceAction658_parser___ReduceAction___init[] = "new ReduceAction658 parser::ReduceAction::init";
+val_t NEW_ReduceAction658_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 215;
-  fra.me.meth = LOCATE_NEW_MMSrcTypeProperty_syntax___syntax_base___MMSrcTypeProperty___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction658_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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:215 */
-  fra.me.REG[3] = NEW_syntax___syntax_base___MMSrcTypeProperty();
-  INIT_ATTRIBUTES__syntax___syntax_base___MMSrcTypeProperty(fra.me.REG[3]);
-  syntax___syntax_base___MMSrcTypeProperty___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
-  CHECKNEW_syntax___syntax_base___MMSrcTypeProperty(fra.me.REG[3]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction658();
+  INIT_ATTRIBUTES__parser___ReduceAction658(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction658(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[3];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_syntax___syntax_base___MMImplicitInit[109] = {
-  {(bigint) 3551 /* 0: Identity */},
-  {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "MMImplicitInit" /* 2: Class Name */},
-  {(bigint) 3 /* 3: MMImplicitInit < Object: superclass typecheck marker */},
-  {(bigint) 159 /* 4: MMImplicitInit < MMLocalProperty: superclass typecheck marker */},
-  {(bigint) 2179 /* 5: MMImplicitInit < MMMethod: superclass typecheck marker */},
-  {(bigint) 2839 /* 6: MMImplicitInit < MMSrcMethod: superclass typecheck marker */},
-  {(bigint) 3195 /* 7: MMImplicitInit < MMMethSrcMethod: superclass typecheck marker */},
-  {(bigint) 3551 /* 8: MMImplicitInit < MMImplicitInit: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction659[55] = {
+  {(bigint) 547 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction659" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction659 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction659 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 547 /* 5: ReduceAction659 < ReduceAction659: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -139842,7 +169797,7 @@ const classtable_elt_t VFT_syntax___syntax_base___MMImplicitInit[109] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: MMImplicitInit < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction659 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -139858,7 +169813,9 @@ const classtable_elt_t VFT_syntax___syntax_base___MMImplicitInit[109] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -139871,235 +169828,89 @@ const classtable_elt_t VFT_syntax___syntax_base___MMImplicitInit[109] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___MMImplicitInit___accept_property_visitor},
-  {(bigint) syntax___syntax_base___MMMethSrcMethod___node},
-  {(bigint) syntax___syntax_base___MMImplicitInit___is_init},
-  {(bigint) metamodel___inheritance___MMLocalProperty___inherit_global},
-  {(bigint) metamodel___static_type___MMLocalProperty___signature},
-  {(bigint) metamodel___static_type___MMLocalProperty___signature__eq},
-  {(bigint) metamodel___static_type___MMLocalProperty___signature_for},
-  {(bigint) 1 /* 54: MMImplicitInit < MMLocalProperty: superclass init_table position */},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___name},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___local_class},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___global},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___is_global_set},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___prhe},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___mmmodule},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___full_name},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___set_global},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___new_global},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___need_super},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___need_super__eq},
-  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___init},
-  {(bigint) compiling___compiling_base___MMLocalProperty___cname},
-  {(bigint) compiling___compiling_base___MMLocalProperty___super_meth_call},
-  {(bigint) native_interface___ni_metamodel___MMMethod___local_friendly_name_from},
-  {(bigint) native_interface___ni_metamodel___MMMethod___friendly_super_cname},
-  {(bigint) native_interface___ni_metamodel___MMMethod___local_friendly_super_name_from},
-  {(bigint) native_interface___ni_metamodel___MMMethod___friendly_cparams},
-  {(bigint) native_interface___ni_metamodel___MMMethod___csignature_with_suffix},
-  {(bigint) native_interface___ni_metamodel___MMMethod___csignature_with_name},
-  {(bigint) native_interface___ni_metamodel___MMMethod___friendly_csignature},
-  {(bigint) native_interface___ni_metamodel___MMMethod___frontier_csignature_from},
-  {(bigint) native_interface___ni_metamodel___MMMethod___friendly_super_csignature},
-  {(bigint) native_interface___ni_metamodel___MMMethod___frontier_super_csignature_from},
-  {(bigint) native_interface___ni_metamodel___MMMethod___impl_csignature},
-  {(bigint) native_interface___ni_metamodel___MMMethod___cparams},
-  {(bigint) native_interface___ni_metamodel___MMMethod___out_csignature},
-  {(bigint) compiling___icode_generator___MMMethod___generate_icode},
-  {(bigint) primitive_info___MMMethod___default_extern_name},
-  {(bigint) primitive_info___MMMethod___friendly_extern_name},
-  {(bigint) syntax___syntax_base___MMMethSrcMethod___explicit_casts},
-  {(bigint) 2 /* 86: MMImplicitInit < MMMethod: superclass init_table position */},
-  {(bigint) syntax___syntax_base___MMMethSrcMethod___is_intern},
-  {(bigint) syntax___syntax_base___MMMethSrcMethod___is_abstract},
-  {(bigint) syntax___syntax_base___MMMethSrcMethod___is_extern},
-  {(bigint) syntax___syntax_base___MMMethSrcMethod___extern_name},
-  {(bigint) syntax___syntax_base___MMMethSrcMethod___explicit_imports},
-  {(bigint) syntax___icode_generation___MMSrcMethod___iroutine},
-  {(bigint) compiling___compiling_global___MMMethod___compile_property_to_c},
-  {(bigint) native_interface___frontier___MMSrcMethod___compile_extern_to_frontier},
-  {(bigint) native_interface___frontier___MMSrcMethod___compile_super_to_frontier},
-  {(bigint) native_interface___frontier___MMSrcMethod___compile_out_to_frontier},
-  {(bigint) syntax___icode_generation___MMSrcMethod___iroutine__eq},
-  {(bigint) syntax___icode_generation___MMSrcMethod___generate_iroutine},
-  {(bigint) syntax___icode_generation___MMImplicitInit___inner_generate_iroutine},
-  {(bigint) 3 /* 100: MMImplicitInit < MMSrcMethod: superclass init_table position */},
-  {(bigint) 4 /* 101: MMImplicitInit < MMMethSrcMethod: superclass init_table position */},
-  {(bigint) syntax___syntax_base___MMMethSrcMethod___extern_name__eq},
-  {(bigint) syntax___syntax_base___MMMethSrcMethod___init},
-  {(bigint) 5 /* 104: MMImplicitInit < MMImplicitInit: superclass init_table position */},
-  {(bigint) syntax___mmbuilder___MMImplicitInit___super_init},
-  {(bigint) syntax___syntax_base___MMImplicitInit___unassigned_attributes},
-  {(bigint) syntax___syntax_base___MMImplicitInit___super_inits},
-  {(bigint) syntax___syntax_base___MMImplicitInit___init},
+  {(bigint) 0 /* 50: ReduceAction659 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction659___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction659 < ReduceAction659: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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_extern */
-/* 14: Attribute MMImplicitInit::_is_abstract */
-/* 15: Attribute MMImplicitInit::_extern_name */
-/* 16: Attribute MMImplicitInit::_explicit_casts */
-/* 17: Attribute MMImplicitInit::_explicit_imports */
-/* 18: Attribute MMImplicitInit::_super_init */
-/* 19: Attribute MMImplicitInit::_unassigned_attributes */
-/* 20: Attribute MMImplicitInit::_super_inits */
-void INIT_ATTRIBUTES__syntax___syntax_base___MMImplicitInit(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction659::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction659[] = "init var of ReduceAction659";
+void INIT_ATTRIBUTES__parser___ReduceAction659(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___MMImplicitInit;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction659;
   fra.me.has_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:297 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_syntax___mmbuilder___MMImplicitInit____super_init(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//syntax_base.nit:192 */
-  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
-  ATTR_syntax___syntax_base___MMMethSrcMethod____explicit_casts(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//syntax_base.nit:193 */
-  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
-  ATTR_syntax___syntax_base___MMMethSrcMethod____explicit_imports(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//abstractmetamodel.nit:649 */
-  REGB0 = TAG_Bool(false);
-  ATTR_metamodel___abstractmetamodel___MMLocalProperty____need_super(fra.me.REG[0]) = REGB0;
-  /* ./metamodel//static_type.nit:56 */
-  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
-  ATTR_metamodel___static_type___MMLocalProperty____signatures_cache(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_syntax___syntax_base___MMImplicitInit(void)
+val_t NEW_parser___ReduceAction659(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 21);
-  obj->vft = (classtable_elt_t*)VFT_syntax___syntax_base___MMImplicitInit;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction659;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_syntax___syntax_base___MMImplicitInit(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction659[] = "check new ReduceAction659";
+void CHECKNEW_parser___ReduceAction659(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_syntax___syntax_base___MMImplicitInit;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction659;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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___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___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___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___syntax_base___MMMethSrcMethod____is_extern(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_is_extern", LOCATE_nitc, 0);
-  }
-  REGB0 = TAG_Bool(ATTR_syntax___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_syntax___syntax_base___MMMethSrcMethod____explicit_casts(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_explicit_casts", LOCATE_nitc, 0);
-  }
-  REGB0 = TAG_Bool(ATTR_syntax___syntax_base___MMMethSrcMethod____explicit_imports(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_explicit_imports", LOCATE_nitc, 0);
-  }
-  REGB0 = TAG_Bool(ATTR_metamodel___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_metamodel___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_metamodel___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_metamodel___static_type___MMLocalProperty____signatures_cache(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_signatures_cache", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMImplicitInit_syntax___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;
+static const char LOCATE_NEW_ReduceAction659_parser___ReduceAction___init[] = "new ReduceAction659 parser::ReduceAction::init";
+val_t NEW_ReduceAction659_parser___ReduceAction___init(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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 228;
-  fra.me.meth = LOCATE_NEW_MMImplicitInit_syntax___syntax_base___MMImplicitInit___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction659_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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:228 */
-  fra.me.REG[3] = NEW_syntax___syntax_base___MMImplicitInit();
-  INIT_ATTRIBUTES__syntax___syntax_base___MMImplicitInit(fra.me.REG[3]);
-  syntax___syntax_base___MMImplicitInit___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
-  CHECKNEW_syntax___syntax_base___MMImplicitInit(fra.me.REG[3]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction659();
+  INIT_ATTRIBUTES__parser___ReduceAction659(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction659(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[3];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_syntax___syntax_base___VarVariable[57] = {
-  {(bigint) 323 /* 0: Identity */},
-  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "VarVariable" /* 2: Class Name */},
-  {(bigint) 3 /* 3: VarVariable < Object: superclass typecheck marker */},
-  {(bigint) 19 /* 4: VarVariable < Variable: superclass typecheck marker */},
-  {(bigint) 323 /* 5: VarVariable < VarVariable: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction931[55] = {
+  {(bigint) 423 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction931" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction931 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction931 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 423 /* 5: ReduceAction931 < ReduceAction931: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -140112,7 +169923,7 @@ const classtable_elt_t VFT_syntax___syntax_base___VarVariable[57] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: VarVariable < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction931 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -140128,7 +169939,9 @@ const classtable_elt_t VFT_syntax___syntax_base___VarVariable[57] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) syntax___syntax_base___Variable___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -140141,91 +169954,89 @@ const classtable_elt_t VFT_syntax___syntax_base___VarVariable[57] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___flow___VarVariable___must_be_set},
-  {(bigint) 0 /* 48: VarVariable < Variable: superclass init_table position */},
-  {(bigint) syntax___syntax_base___Variable___name},
-  {(bigint) syntax___syntax_base___Variable___decl},
-  {(bigint) syntax___syntax_base___Variable___stype},
-  {(bigint) syntax___syntax_base___Variable___stype__eq},
-  {(bigint) syntax___syntax_base___VarVariable___kind},
-  {(bigint) syntax___syntax_base___Variable___init},
-  {(bigint) 2 /* 55: VarVariable < VarVariable: superclass init_table position */},
-  {(bigint) syntax___syntax_base___VarVariable___init},
+  {(bigint) 0 /* 50: ReduceAction931 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction931___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction931 < ReduceAction931: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute VarVariable::_name */
-/* 3: Attribute VarVariable::_decl */
-/* 4: Attribute VarVariable::_stype */
-void INIT_ATTRIBUTES__syntax___syntax_base___VarVariable(val_t p0){
+/* 2: Attribute ReduceAction931::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction931[] = "init var of ReduceAction931";
+void INIT_ATTRIBUTES__parser___ReduceAction931(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___VarVariable;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction931;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_syntax___syntax_base___VarVariable(void)
+val_t NEW_parser___ReduceAction931(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_syntax___syntax_base___VarVariable;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction931;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_syntax___syntax_base___VarVariable(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction931[] = "check new ReduceAction931";
+void CHECKNEW_parser___ReduceAction931(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_syntax___syntax_base___VarVariable;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction931;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___syntax_base___Variable____name(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_name", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_VarVariable_syntax___syntax_base___VarVariable___init(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_ReduceAction931_parser___ReduceAction___init[] = "new ReduceAction931 parser::ReduceAction::init";
+val_t NEW_ReduceAction931_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 262;
-  fra.me.meth = LOCATE_NEW_VarVariable_syntax___syntax_base___VarVariable___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction931_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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:262 */
-  fra.me.REG[2] = NEW_syntax___syntax_base___VarVariable();
-  INIT_ATTRIBUTES__syntax___syntax_base___VarVariable(fra.me.REG[2]);
-  syntax___syntax_base___VarVariable___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_syntax___syntax_base___VarVariable(fra.me.REG[2]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction931();
+  INIT_ATTRIBUTES__parser___ReduceAction931(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction931(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_syntax___syntax_base___ParamVariable[57] = {
-  {(bigint) 2087 /* 0: Identity */},
-  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ParamVariable" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ParamVariable < Object: superclass typecheck marker */},
-  {(bigint) 19 /* 4: ParamVariable < Variable: superclass typecheck marker */},
-  {(bigint) 2087 /* 5: ParamVariable < ParamVariable: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction932[55] = {
+  {(bigint) 419 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction932" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction932 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction932 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 419 /* 5: ReduceAction932 < ReduceAction932: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -140238,7 +170049,7 @@ const classtable_elt_t VFT_syntax___syntax_base___ParamVariable[57] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ParamVariable < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction932 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -140254,7 +170065,9 @@ const classtable_elt_t VFT_syntax___syntax_base___ParamVariable[57] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) syntax___syntax_base___Variable___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -140267,91 +170080,89 @@ const classtable_elt_t VFT_syntax___syntax_base___ParamVariable[57] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___flow___Variable___must_be_set},
-  {(bigint) 0 /* 48: ParamVariable < Variable: superclass init_table position */},
-  {(bigint) syntax___syntax_base___Variable___name},
-  {(bigint) syntax___syntax_base___Variable___decl},
-  {(bigint) syntax___syntax_base___Variable___stype},
-  {(bigint) syntax___syntax_base___Variable___stype__eq},
-  {(bigint) syntax___syntax_base___ParamVariable___kind},
-  {(bigint) syntax___syntax_base___Variable___init},
-  {(bigint) 2 /* 55: ParamVariable < ParamVariable: superclass init_table position */},
-  {(bigint) syntax___syntax_base___ParamVariable___init},
+  {(bigint) 0 /* 50: ReduceAction932 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction932___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction932 < ReduceAction932: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ParamVariable::_name */
-/* 3: Attribute ParamVariable::_decl */
-/* 4: Attribute ParamVariable::_stype */
-void INIT_ATTRIBUTES__syntax___syntax_base___ParamVariable(val_t p0){
+/* 2: Attribute ReduceAction932::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction932[] = "init var of ReduceAction932";
+void INIT_ATTRIBUTES__parser___ReduceAction932(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___ParamVariable;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction932;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_syntax___syntax_base___ParamVariable(void)
+val_t NEW_parser___ReduceAction932(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_syntax___syntax_base___ParamVariable;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction932;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_syntax___syntax_base___ParamVariable(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction932[] = "check new ReduceAction932";
+void CHECKNEW_parser___ReduceAction932(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_syntax___syntax_base___ParamVariable;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction932;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___syntax_base___Variable____name(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_name", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ParamVariable_syntax___syntax_base___ParamVariable___init(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_ReduceAction932_parser___ReduceAction___init[] = "new ReduceAction932 parser::ReduceAction::init";
+val_t NEW_ReduceAction932_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 269;
-  fra.me.meth = LOCATE_NEW_ParamVariable_syntax___syntax_base___ParamVariable___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction932_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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:269 */
-  fra.me.REG[2] = NEW_syntax___syntax_base___ParamVariable();
-  INIT_ATTRIBUTES__syntax___syntax_base___ParamVariable(fra.me.REG[2]);
-  syntax___syntax_base___ParamVariable___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_syntax___syntax_base___ParamVariable(fra.me.REG[2]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction932();
+  INIT_ATTRIBUTES__parser___ReduceAction932(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction932(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_syntax___syntax_base___AutoVariable[57] = {
-  {(bigint) 2359 /* 0: Identity */},
-  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AutoVariable" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AutoVariable < Object: superclass typecheck marker */},
-  {(bigint) 19 /* 4: AutoVariable < Variable: superclass typecheck marker */},
-  {(bigint) 2359 /* 5: AutoVariable < AutoVariable: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction933[55] = {
+  {(bigint) 415 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction933" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction933 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction933 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 415 /* 5: ReduceAction933 < ReduceAction933: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -140364,7 +170175,7 @@ const classtable_elt_t VFT_syntax___syntax_base___AutoVariable[57] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: AutoVariable < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction933 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -140380,7 +170191,9 @@ const classtable_elt_t VFT_syntax___syntax_base___AutoVariable[57] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) syntax___syntax_base___Variable___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -140393,91 +170206,89 @@ const classtable_elt_t VFT_syntax___syntax_base___AutoVariable[57] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___flow___Variable___must_be_set},
-  {(bigint) 0 /* 48: AutoVariable < Variable: superclass init_table position */},
-  {(bigint) syntax___syntax_base___Variable___name},
-  {(bigint) syntax___syntax_base___Variable___decl},
-  {(bigint) syntax___syntax_base___Variable___stype},
-  {(bigint) syntax___syntax_base___Variable___stype__eq},
-  {(bigint) syntax___syntax_base___AutoVariable___kind},
-  {(bigint) syntax___syntax_base___Variable___init},
-  {(bigint) 2 /* 55: AutoVariable < AutoVariable: superclass init_table position */},
-  {(bigint) syntax___syntax_base___AutoVariable___init},
+  {(bigint) 0 /* 50: ReduceAction933 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction933___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction933 < ReduceAction933: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AutoVariable::_name */
-/* 3: Attribute AutoVariable::_decl */
-/* 4: Attribute AutoVariable::_stype */
-void INIT_ATTRIBUTES__syntax___syntax_base___AutoVariable(val_t p0){
+/* 2: Attribute ReduceAction933::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction933[] = "init var of ReduceAction933";
+void INIT_ATTRIBUTES__parser___ReduceAction933(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___AutoVariable;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction933;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_syntax___syntax_base___AutoVariable(void)
+val_t NEW_parser___ReduceAction933(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_syntax___syntax_base___AutoVariable;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction933;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_syntax___syntax_base___AutoVariable(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction933[] = "check new ReduceAction933";
+void CHECKNEW_parser___ReduceAction933(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_syntax___syntax_base___AutoVariable;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction933;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___syntax_base___Variable____name(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_name", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AutoVariable_syntax___syntax_base___AutoVariable___init(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_ReduceAction933_parser___ReduceAction___init[] = "new ReduceAction933 parser::ReduceAction::init";
+val_t NEW_ReduceAction933_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 276;
-  fra.me.meth = LOCATE_NEW_AutoVariable_syntax___syntax_base___AutoVariable___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction933_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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:276 */
-  fra.me.REG[2] = NEW_syntax___syntax_base___AutoVariable();
-  INIT_ATTRIBUTES__syntax___syntax_base___AutoVariable(fra.me.REG[2]);
-  syntax___syntax_base___AutoVariable___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_syntax___syntax_base___AutoVariable(fra.me.REG[2]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction933();
+  INIT_ATTRIBUTES__parser___ReduceAction933(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction933(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_syntax___syntax_base___ClosureVariable[58] = {
-  {(bigint) 2339 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ClosureVariable" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ClosureVariable < Object: superclass typecheck marker */},
-  {(bigint) 19 /* 4: ClosureVariable < Variable: superclass typecheck marker */},
-  {(bigint) 2339 /* 5: ClosureVariable < ClosureVariable: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction936[55] = {
+  {(bigint) 411 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction936" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction936 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction936 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 411 /* 5: ReduceAction936 < ReduceAction936: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -140490,7 +170301,7 @@ const classtable_elt_t VFT_syntax___syntax_base___ClosureVariable[58] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: ClosureVariable < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction936 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -140506,7 +170317,9 @@ const classtable_elt_t VFT_syntax___syntax_base___ClosureVariable[58] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) syntax___syntax_base___Variable___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -140519,100 +170332,89 @@ const classtable_elt_t VFT_syntax___syntax_base___ClosureVariable[58] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___flow___Variable___must_be_set},
-  {(bigint) 0 /* 48: ClosureVariable < Variable: superclass init_table position */},
-  {(bigint) syntax___syntax_base___Variable___name},
-  {(bigint) syntax___syntax_base___Variable___decl},
-  {(bigint) syntax___syntax_base___Variable___stype},
-  {(bigint) syntax___syntax_base___Variable___stype__eq},
-  {(bigint) syntax___syntax_base___ClosureVariable___kind},
-  {(bigint) syntax___syntax_base___Variable___init},
-  {(bigint) 2 /* 55: ClosureVariable < ClosureVariable: superclass init_table position */},
-  {(bigint) syntax___syntax_base___ClosureVariable___closure},
-  {(bigint) syntax___syntax_base___ClosureVariable___init},
+  {(bigint) 0 /* 50: ReduceAction936 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction936___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction936 < ReduceAction936: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ClosureVariable::_name */
-/* 3: Attribute ClosureVariable::_decl */
-/* 4: Attribute ClosureVariable::_stype */
-/* 5: Attribute ClosureVariable::_closure */
-void INIT_ATTRIBUTES__syntax___syntax_base___ClosureVariable(val_t p0){
+/* 2: Attribute ReduceAction936::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction936[] = "init var of ReduceAction936";
+void INIT_ATTRIBUTES__parser___ReduceAction936(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___ClosureVariable;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction936;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_syntax___syntax_base___ClosureVariable(void)
+val_t NEW_parser___ReduceAction936(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_syntax___syntax_base___ClosureVariable;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction936;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_syntax___syntax_base___ClosureVariable(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction936[] = "check new ReduceAction936";
+void CHECKNEW_parser___ReduceAction936(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_syntax___syntax_base___ClosureVariable;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction936;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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___syntax_base___Variable____name(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_name", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ClosureVariable_syntax___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;
+static const char LOCATE_NEW_ReduceAction936_parser___ReduceAction___init[] = "new ReduceAction936 parser::ReduceAction::init";
+val_t NEW_ReduceAction936_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 288;
-  fra.me.meth = LOCATE_NEW_ClosureVariable_syntax___syntax_base___ClosureVariable___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction936_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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:288 */
-  fra.me.REG[3] = NEW_syntax___syntax_base___ClosureVariable();
-  INIT_ATTRIBUTES__syntax___syntax_base___ClosureVariable(fra.me.REG[3]);
-  syntax___syntax_base___ClosureVariable___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
-  CHECKNEW_syntax___syntax_base___ClosureVariable(fra.me.REG[3]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction936();
+  INIT_ATTRIBUTES__parser___ReduceAction936(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction936(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[3];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_syntax___syntax_base___AbsSyntaxVisitor[81] = {
-  {(bigint) 2371 /* 0: Identity */},
-  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AbsSyntaxVisitor" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AbsSyntaxVisitor < Object: superclass typecheck marker */},
-  {(bigint) 15 /* 4: AbsSyntaxVisitor < Visitor: superclass typecheck marker */},
-  {(bigint) 2371 /* 5: AbsSyntaxVisitor < AbsSyntaxVisitor: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction957[55] = {
+  {(bigint) 399 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction957" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction957 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction957 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 399 /* 5: ReduceAction957 < ReduceAction957: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -140625,7 +170427,7 @@ const classtable_elt_t VFT_syntax___syntax_base___AbsSyntaxVisitor[81] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: AbsSyntaxVisitor < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction957 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -140641,6 +170443,8 @@ const classtable_elt_t VFT_syntax___syntax_base___AbsSyntaxVisitor[81] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -140654,130 +170458,91 @@ const classtable_elt_t VFT_syntax___syntax_base___AbsSyntaxVisitor[81] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: AbsSyntaxVisitor < Visitor: superclass init_table position */},
-  {(bigint) parser___parser_prod___Visitor___visit},
-  {(bigint) parser___parser_prod___Visitor___enter_visit},
-  {(bigint) parser___parser_prod___Visitor___current_node},
-  {(bigint) parser___parser_prod___Visitor___init},
-  {(bigint) 2 /* 52: AbsSyntaxVisitor < AbsSyntaxVisitor: superclass init_table position */},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_type_by_name},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_instantiated_type_by_name},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_object},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_bool},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_int},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_float},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_char},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_string},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_nativestring},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_array},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_discrete},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_range},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_none},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_method},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___mmmodule},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___local_class},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___local_class__eq},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___local_property},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___local_property__eq},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___tc},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___error},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___fatal_error},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___warning},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_expr},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_multiexpr},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___init},
+  {(bigint) 0 /* 50: ReduceAction957 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction957___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction957 < ReduceAction957: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__syntax___syntax_base___AbsSyntaxVisitor(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+/* 2: Attribute ReduceAction957::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction957[] = "init var of ReduceAction957";
+void INIT_ATTRIBUTES__parser___ReduceAction957(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___AbsSyntaxVisitor;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction957;
   fra.me.has_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___parser_prod___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_syntax___syntax_base___AbsSyntaxVisitor(void)
+val_t NEW_parser___ReduceAction957(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_syntax___syntax_base___AbsSyntaxVisitor;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction957;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_syntax___syntax_base___AbsSyntaxVisitor(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction957[] = "check new ReduceAction957";
+void CHECKNEW_parser___ReduceAction957(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_syntax___syntax_base___AbsSyntaxVisitor;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction957;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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___syntax_base___AbsSyntaxVisitor____tc(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_tc", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AbsSyntaxVisitor_syntax___syntax_base___AbsSyntaxVisitor___init(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_ReduceAction957_parser___ReduceAction___init[] = "new ReduceAction957 parser::ReduceAction::init";
+val_t NEW_ReduceAction957_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 500;
-  fra.me.meth = LOCATE_NEW_AbsSyntaxVisitor_syntax___syntax_base___AbsSyntaxVisitor___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction957_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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:500 */
-  fra.me.REG[2] = NEW_syntax___syntax_base___AbsSyntaxVisitor();
-  INIT_ATTRIBUTES__syntax___syntax_base___AbsSyntaxVisitor(fra.me.REG[2]);
-  syntax___syntax_base___AbsSyntaxVisitor___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_syntax___syntax_base___AbsSyntaxVisitor(fra.me.REG[2]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction957();
+  INIT_ATTRIBUTES__parser___ReduceAction957(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction957(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_syntax___syntax_base___AAbsAbsSendExpr[97] = {
-  {(bigint) 3527 /* 0: Identity */},
-  {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AAbsAbsSendExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AAbsAbsSendExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AAbsAbsSendExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3527 /* 5: AAbsAbsSendExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: AAbsAbsSendExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AAbsAbsSendExpr < AExpr: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction958[55] = {
+  {(bigint) 395 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction958" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction958 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction958 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 395 /* 5: ReduceAction958 < ReduceAction958: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -140788,7 +170553,7 @@ const classtable_elt_t VFT_syntax___syntax_base___AAbsAbsSendExpr[97] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AAbsAbsSendExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction958 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -140804,6 +170569,8 @@ const classtable_elt_t VFT_syntax___syntax_base___AAbsAbsSendExpr[97] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -140817,150 +170584,93 @@ const classtable_elt_t VFT_syntax___syntax_base___AAbsAbsSendExpr[97] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ANode___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ANode___visit_all},
-  {(bigint) 1 /* 60: AAbsAbsSendExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___AExpr___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AAbsAbsSendExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 75: AAbsAbsSendExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___AExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___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) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___compute_raw_arguments},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 4 /* 94: AAbsAbsSendExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) 0 /* 50: ReduceAction958 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction958___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction958 < ReduceAction958: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__syntax___syntax_base___AAbsAbsSendExpr(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction958::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction958[] = "init var of ReduceAction958";
+void INIT_ATTRIBUTES__parser___ReduceAction958(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___AAbsAbsSendExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction958;
   fra.me.has_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:1388 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_syntax___syntax_base___AAbsAbsSendExpr(void)
+val_t NEW_parser___ReduceAction958(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 13);
-  obj->vft = (classtable_elt_t*)VFT_syntax___syntax_base___AAbsAbsSendExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction958;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_syntax___syntax_base___AAbsAbsSendExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction958[] = "check new ReduceAction958";
+void CHECKNEW_parser___ReduceAction958(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_syntax___syntax_base___AAbsAbsSendExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction958;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AAbsAbsSendExpr_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ReduceAction958_parser___ReduceAction___init[] = "new ReduceAction958 parser::ReduceAction::init";
+val_t NEW_ReduceAction958_parser___ReduceAction___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};
+  int init_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_AAbsAbsSendExpr_parser___parser_nodes___ANode___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction958_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_syntax___syntax_base___AAbsAbsSendExpr();
-  INIT_ATTRIBUTES__syntax___syntax_base___AAbsAbsSendExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_syntax___syntax_base___AAbsAbsSendExpr(fra.me.REG[1]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction958();
+  INIT_ATTRIBUTES__parser___ReduceAction958(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction958(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_syntax___syntax_base___AAbsSendExpr[103] = {
-  {(bigint) 3739 /* 0: Identity */},
-  {(bigint) 18 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AAbsSendExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AAbsSendExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AAbsSendExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3527 /* 5: AAbsSendExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: AAbsSendExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AAbsSendExpr < AExpr: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction1250[55] = {
+  {(bigint) 2867 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction1250" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction1250 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction1250 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2867 /* 5: ReduceAction1250 < ReduceAction1250: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 3739 /* 9: AAbsSendExpr < AAbsSendExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -140969,7 +170679,7 @@ const classtable_elt_t VFT_syntax___syntax_base___AAbsSendExpr[103] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AAbsSendExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction1250 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -140985,6 +170695,8 @@ const classtable_elt_t VFT_syntax___syntax_base___AAbsSendExpr[103] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -140998,162 +170710,94 @@ const classtable_elt_t VFT_syntax___syntax_base___AAbsSendExpr[103] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ANode___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ANode___visit_all},
-  {(bigint) 1 /* 60: AAbsSendExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___AExpr___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AAbsSendExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 75: AAbsSendExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___AExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___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) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___compute_raw_arguments},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 4 /* 94: AAbsSendExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
-  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
-  {(bigint) syntax___typing___AAbsSendExpr___get_property},
-  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 5 /* 100: AAbsSendExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsSendExpr___prop},
-  {(bigint) syntax___typing___AAbsSendExpr___return_type},
+  {(bigint) 0 /* 50: ReduceAction1250 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction1250___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction1250 < ReduceAction1250: superclass init_table position */},
 };
 /* 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__syntax___syntax_base___AAbsSendExpr(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction1250::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1250[] = "init var of ReduceAction1250";
+void INIT_ATTRIBUTES__parser___ReduceAction1250(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___AAbsSendExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1250;
   fra.me.has_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:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  /* ./syntax//typing.nit:1388 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_syntax___syntax_base___AAbsSendExpr(void)
+val_t NEW_parser___ReduceAction1250(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 18);
-  obj->vft = (classtable_elt_t*)VFT_syntax___syntax_base___AAbsSendExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction1250;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_syntax___syntax_base___AAbsSendExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction1250[] = "check new ReduceAction1250";
+void CHECKNEW_parser___ReduceAction1250(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_syntax___syntax_base___AAbsSendExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction1250;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AAbsSendExpr_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ReduceAction1250_parser___ReduceAction___init[] = "new ReduceAction1250 parser::ReduceAction::init";
+val_t NEW_ReduceAction1250_parser___ReduceAction___init(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};
+  int init_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_AAbsSendExpr_parser___parser_nodes___ANode___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction1250_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_syntax___syntax_base___AAbsSendExpr();
-  INIT_ATTRIBUTES__syntax___syntax_base___AAbsSendExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_syntax___syntax_base___AAbsSendExpr(fra.me.REG[1]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction1250();
+  INIT_ATTRIBUTES__parser___ReduceAction1250(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction1250(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_syntax___syntax_base___ASuperInitCall[103] = {
-  {(bigint) 3751 /* 0: Identity */},
-  {(bigint) 18 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ASuperInitCall" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ASuperInitCall < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ASuperInitCall < ANode: superclass typecheck marker */},
-  {(bigint) 3527 /* 5: ASuperInitCall < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: ASuperInitCall < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: ASuperInitCall < AExpr: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction1251[55] = {
+  {(bigint) 2863 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction1251" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction1251 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction1251 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2863 /* 5: ReduceAction1251 < ReduceAction1251: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 3739 /* 9: ASuperInitCall < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3751 /* 10: ASuperInitCall < ASuperInitCall: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -141161,7 +170805,7 @@ const classtable_elt_t VFT_syntax___syntax_base___ASuperInitCall[103] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: ASuperInitCall < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction1251 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -141177,6 +170821,8 @@ const classtable_elt_t VFT_syntax___syntax_base___ASuperInitCall[103] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -141190,170 +170836,102 @@ const classtable_elt_t VFT_syntax___syntax_base___ASuperInitCall[103] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ANode___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ANode___visit_all},
-  {(bigint) 1 /* 60: ASuperInitCall < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___AExpr___after_typing},
-  {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 6 /* 68: ASuperInitCall < ASuperInitCall: superclass init_table position */},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: ASuperInitCall < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 75: ASuperInitCall < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___AExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___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) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___compute_raw_arguments},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 4 /* 94: ASuperInitCall < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
-  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
-  {(bigint) syntax___typing___AAbsSendExpr___get_property},
-  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 5 /* 100: ASuperInitCall < AAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsSendExpr___prop},
-  {(bigint) syntax___typing___AAbsSendExpr___return_type},
+  {(bigint) 0 /* 50: ReduceAction1251 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction1251___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction1251 < ReduceAction1251: superclass init_table position */},
 };
 /* 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__syntax___syntax_base___ASuperInitCall(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction1251::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1251[] = "init var of ReduceAction1251";
+void INIT_ATTRIBUTES__parser___ReduceAction1251(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___ASuperInitCall;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1251;
   fra.me.has_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:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  /* ./syntax//typing.nit:1388 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_syntax___syntax_base___ASuperInitCall(void)
+val_t NEW_parser___ReduceAction1251(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 18);
-  obj->vft = (classtable_elt_t*)VFT_syntax___syntax_base___ASuperInitCall;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction1251;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_syntax___syntax_base___ASuperInitCall(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction1251[] = "check new ReduceAction1251";
+void CHECKNEW_parser___ReduceAction1251(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_syntax___syntax_base___ASuperInitCall;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction1251;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ASuperInitCall_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ReduceAction1251_parser___ReduceAction___init[] = "new ReduceAction1251 parser::ReduceAction::init";
+val_t NEW_ReduceAction1251_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  int init_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_ASuperInitCall_parser___parser_nodes___ANode___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction1251_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_syntax___syntax_base___ASuperInitCall();
-  INIT_ATTRIBUTES__syntax___syntax_base___ASuperInitCall(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_syntax___syntax_base___ASuperInitCall(fra.me.REG[1]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction1251();
+  INIT_ATTRIBUTES__parser___ReduceAction1251(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction1251(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_syntax___syntax_base___ASendReassignExpr[111] = {
-  {(bigint) 3787 /* 0: Identity */},
-  {(bigint) 20 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ASendReassignExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ASendReassignExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ASendReassignExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3527 /* 5: ASendReassignExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: ASendReassignExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: ASendReassignExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3311 /* 8: ASendReassignExpr < AReassignFormExpr: superclass typecheck marker */},
-  {(bigint) 3739 /* 9: ASendReassignExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3751 /* 10: ASendReassignExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3779 /* 11: ASendReassignExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 3787 /* 12: ASendReassignExpr < ASendReassignExpr: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction1252[55] = {
+  {(bigint) 2859 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction1252" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction1252 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction1252 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2859 /* 5: ReduceAction1252 < ReduceAction1252: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
-  {(bigint) 5 /* 18: ASendReassignExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction1252 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -141369,6 +170947,8 @@ const classtable_elt_t VFT_syntax___syntax_base___ASendReassignExpr[111] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -141382,229 +170962,88 @@ const classtable_elt_t VFT_syntax___syntax_base___ASendReassignExpr[111] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ASendExpr___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ASendExpr___visit_all},
-  {(bigint) 4 /* 60: ASendReassignExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ASendExpr___after_typing},
-  {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 68: ASendReassignExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 70: ASendReassignExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 75: ASendReassignExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___ASendReassignExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) 9 /* 82: ASendReassignExpr < ASendReassignExpr: superclass init_table position */},
-  {(bigint) syntax___typing___ASendReassignExpr___read_prop},
-  {0} /* Class Hole :( */,
-  {(bigint) syntax___typing___AReassignFormExpr___do_rvalue_typing},
-  {(bigint) syntax___typing___AReassignFormExpr___assign_method},
-  {(bigint) 8 /* 87: ASendReassignExpr < AReassignFormExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___AReassignFormExpr___n_assign_op},
-  {(bigint) parser___parser_nodes___AReassignFormExpr___n_value},
-  {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___compute_raw_arguments},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 94: ASendReassignExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
-  {(bigint) syntax___typing___AAbsSendExpr___do_typing},
-  {(bigint) syntax___typing___AAbsSendExpr___get_property},
-  {(bigint) syntax___typing___AAbsSendExpr___get_signature},
-  {(bigint) 1 /* 100: ASendReassignExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsSendExpr___prop},
-  {(bigint) syntax___typing___AAbsSendExpr___return_type},
-  {(bigint) syntax___typing___ASendExpr___name},
-  {(bigint) syntax___typing___ASendReassignExpr___do_all_typing},
-  {(bigint) syntax___typing___ASendExpr___closure_defs},
-  {(bigint) parser___parser_prod___ASendExpr___empty_init},
-  {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 108: ASendReassignExpr < ASendExpr: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ASendExpr___n_expr},
-  {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
+  {(bigint) 0 /* 50: ReduceAction1252 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction1252___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction1252 < ReduceAction1252: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__syntax___syntax_base___ASendReassignExpr(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction1252::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1252[] = "init var of ReduceAction1252";
+void INIT_ATTRIBUTES__parser___ReduceAction1252(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___ASendReassignExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1252;
   fra.me.has_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:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  /* ./parser//parser_nodes.nit:776 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//typing.nit:1388 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_syntax___typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_syntax___syntax_base___ASendReassignExpr(void)
+val_t NEW_parser___ReduceAction1252(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 20);
-  obj->vft = (classtable_elt_t*)VFT_syntax___syntax_base___ASendReassignExpr;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction1252;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_syntax___syntax_base___ASendReassignExpr(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction1252[] = "check new ReduceAction1252";
+void CHECKNEW_parser___ReduceAction1252(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_syntax___syntax_base___ASendReassignExpr;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction1252;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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___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___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___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___parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ASendReassignExpr_parser___parser_prod___ASendExpr___empty_init(void){
+static const char LOCATE_NEW_ReduceAction1252_parser___ReduceAction___init[] = "new ReduceAction1252 parser::ReduceAction::init";
+val_t NEW_ReduceAction1252_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4273;
-  fra.me.meth = LOCATE_NEW_ASendReassignExpr_parser___parser_prod___ASendExpr___empty_init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction1252_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser_prod.nit:4273 */
-  fra.me.REG[0] = NEW_syntax___syntax_base___ASendReassignExpr();
-  INIT_ATTRIBUTES__syntax___syntax_base___ASendReassignExpr(fra.me.REG[0]);
-  parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_syntax___syntax_base___ASendReassignExpr(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction1252();
+  INIT_ATTRIBUTES__parser___ReduceAction1252(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction1252(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_ASendReassignExpr_parser___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 = 4275;
-  fra.me.meth = LOCATE_NEW_ASendReassignExpr_parser___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:4275 */
-  fra.me.REG[1] = NEW_syntax___syntax_base___ASendReassignExpr();
-  INIT_ATTRIBUTES__syntax___syntax_base___ASendReassignExpr(fra.me.REG[1]);
-  parser___parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_syntax___syntax_base___ASendReassignExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t NEW_ASendReassignExpr_parser___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___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_syntax___syntax_base___ASendReassignExpr();
-  INIT_ATTRIBUTES__syntax___syntax_base___ASendReassignExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_syntax___syntax_base___ASendReassignExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_primitive_info___PrimitiveInfo[52] = {
-  {(bigint) 99 /* 0: Identity */},
-  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "PrimitiveInfo" /* 2: Class Name */},
-  {(bigint) 3 /* 3: PrimitiveInfo < Object: superclass typecheck marker */},
-  {(bigint) 99 /* 4: PrimitiveInfo < PrimitiveInfo: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction1253[55] = {
+  {(bigint) 2855 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction1253" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction1253 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction1253 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2855 /* 5: ReduceAction1253 < ReduceAction1253: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -141618,7 +171057,7 @@ const classtable_elt_t VFT_primitive_info___PrimitiveInfo[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: PrimitiveInfo < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction1253 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -141634,6 +171073,8 @@ const classtable_elt_t VFT_primitive_info___PrimitiveInfo[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -141647,98 +171088,89 @@ const classtable_elt_t VFT_primitive_info___PrimitiveInfo[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: 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},
+  {(bigint) 0 /* 50: ReduceAction1253 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction1253___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction1253 < ReduceAction1253: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute PrimitiveInfo::_name */
-/* 3: Attribute PrimitiveInfo::_tagged */
-/* 4: Attribute PrimitiveInfo::_cname */
-void INIT_ATTRIBUTES__primitive_info___PrimitiveInfo(val_t p0){
+/* 2: Attribute ReduceAction1253::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1253[] = "init var of ReduceAction1253";
+void INIT_ATTRIBUTES__parser___ReduceAction1253(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__primitive_info___PrimitiveInfo;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1253;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_primitive_info___PrimitiveInfo(void)
+val_t NEW_parser___ReduceAction1253(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_primitive_info___PrimitiveInfo;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction1253;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_primitive_info___PrimitiveInfo(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction1253[] = "check new ReduceAction1253";
+void CHECKNEW_parser___ReduceAction1253(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_primitive_info___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);
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction1253;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_cname", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-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;
+static const char LOCATE_NEW_ReduceAction1253_parser___ReduceAction___init[] = "new ReduceAction1253 parser::ReduceAction::init";
+val_t NEW_ReduceAction1253_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
-  int init_table[2] = {0, 0};
+  int init_table[3] = {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_PrimitiveInfo_primitive_info___PrimitiveInfo___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction1253_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_primitive_info___PrimitiveInfo();
-  INIT_ATTRIBUTES__primitive_info___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_primitive_info___PrimitiveInfo(fra.me.REG[2]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction1253();
+  INIT_ATTRIBUTES__parser___ReduceAction1253(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction1253(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_syntax___mmbuilder___CSHSorter[56] = {
-  {(bigint) 2351 /* 0: Identity */},
-  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "CSHSorter" /* 2: Class Name */},
-  {(bigint) 3 /* 3: CSHSorter < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: CSHSorter < AbstractSorter: superclass typecheck marker */},
-  {(bigint) 2351 /* 5: CSHSorter < CSHSorter: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction1254[55] = {
+  {(bigint) 2851 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction1254" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction1254 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction1254 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2851 /* 5: ReduceAction1254 < ReduceAction1254: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -141751,7 +171183,7 @@ const classtable_elt_t VFT_syntax___mmbuilder___CSHSorter[56] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: CSHSorter < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction1254 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -141767,6 +171199,8 @@ const classtable_elt_t VFT_syntax___mmbuilder___CSHSorter[56] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -141780,75 +171214,89 @@ const classtable_elt_t VFT_syntax___mmbuilder___CSHSorter[56] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: CSHSorter < AbstractSorter: superclass init_table position */},
-  {(bigint) syntax___mmbuilder___CSHSorter___compare},
-  {(bigint) standard___collection___sorter___AbstractSorter___sort},
-  {(bigint) standard___collection___sorter___AbstractSorter___sub_sort},
-  {(bigint) standard___collection___sorter___AbstractSorter___quick_sort},
-  {(bigint) standard___collection___sorter___AbstractSorter___bubble_sort},
-  {(bigint) standard___collection___sorter___AbstractSorter___init},
-  {(bigint) 2 /* 54: CSHSorter < CSHSorter: superclass init_table position */},
-  {(bigint) syntax___mmbuilder___CSHSorter___init},
+  {(bigint) 0 /* 50: ReduceAction1254 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction1254___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction1254 < ReduceAction1254: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-void INIT_ATTRIBUTES__syntax___mmbuilder___CSHSorter(val_t p0){
+/* 2: Attribute ReduceAction1254::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1254[] = "init var of ReduceAction1254";
+void INIT_ATTRIBUTES__parser___ReduceAction1254(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___mmbuilder___CSHSorter;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1254;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_syntax___mmbuilder___CSHSorter(void)
+val_t NEW_parser___ReduceAction1254(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 2);
-  obj->vft = (classtable_elt_t*)VFT_syntax___mmbuilder___CSHSorter;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction1254;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_syntax___mmbuilder___CSHSorter(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction1254[] = "check new ReduceAction1254";
+void CHECKNEW_parser___ReduceAction1254(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_syntax___mmbuilder___CSHSorter;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction1254;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_CSHSorter_syntax___mmbuilder___CSHSorter___init(void){
+static const char LOCATE_NEW_ReduceAction1254_parser___ReduceAction___init[] = "new ReduceAction1254 parser::ReduceAction::init";
+val_t NEW_ReduceAction1254_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
   int init_table[3] = {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_CSHSorter_syntax___mmbuilder___CSHSorter___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction1254_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./syntax//mmbuilder.nit:50 */
-  fra.me.REG[0] = NEW_syntax___mmbuilder___CSHSorter();
-  INIT_ATTRIBUTES__syntax___mmbuilder___CSHSorter(fra.me.REG[0]);
-  syntax___mmbuilder___CSHSorter___init(fra.me.REG[0], init_table);
-  CHECKNEW_syntax___mmbuilder___CSHSorter(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction1254();
+  INIT_ATTRIBUTES__parser___ReduceAction1254(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction1254(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_syntax___mmbuilder___MMSrcAncestor[59] = {
-  {(bigint) 2163 /* 0: Identity */},
-  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "MMSrcAncestor" /* 2: Class Name */},
-  {(bigint) 3 /* 3: MMSrcAncestor < Object: superclass typecheck marker */},
-  {(bigint) 195 /* 4: MMSrcAncestor < MMAncestor: superclass typecheck marker */},
-  {(bigint) 2163 /* 5: MMSrcAncestor < MMSrcAncestor: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction1255[55] = {
+  {(bigint) 2847 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction1255" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction1255 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction1255 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2847 /* 5: ReduceAction1255 < ReduceAction1255: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -141861,7 +171309,7 @@ const classtable_elt_t VFT_syntax___mmbuilder___MMSrcAncestor[59] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: MMSrcAncestor < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction1255 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -141877,7 +171325,9 @@ const classtable_elt_t VFT_syntax___mmbuilder___MMSrcAncestor[59] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) metamodel___static_type___MMAncestor___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -141890,101 +171340,90 @@ const classtable_elt_t VFT_syntax___mmbuilder___MMSrcAncestor[59] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) metamodel___inheritance___MMAncestor___add_in},
-  {(bigint) 0 /* 48: MMSrcAncestor < MMAncestor: superclass init_table position */},
-  {(bigint) metamodel___static_type___MMAncestor___stype__eq},
-  {(bigint) metamodel___static_type___MMAncestor___stype},
-  {(bigint) metamodel___static_type___MMAncestor___inheriter__eq},
-  {(bigint) metamodel___static_type___MMAncestor___inheriter},
-  {(bigint) metamodel___static_type___MMAncestor___is_reffinement},
-  {(bigint) metamodel___static_type___MMAncestor___is_specialisation},
-  {(bigint) syntax___mmbuilder___MMSrcAncestor___local_class},
-  {(bigint) metamodel___static_type___MMAncestor___init},
-  {(bigint) 2 /* 57: MMSrcAncestor < MMSrcAncestor: superclass init_table position */},
-  {(bigint) syntax___mmbuilder___MMSrcAncestor___init},
+  {(bigint) 0 /* 50: ReduceAction1255 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction1255___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction1255 < ReduceAction1255: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute MMSrcAncestor::_stype */
-/* 3: Attribute MMSrcAncestor::_inheriter */
-/* 4: Attribute MMSrcAncestor::_local_class */
-void INIT_ATTRIBUTES__syntax___mmbuilder___MMSrcAncestor(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+/* 2: Attribute ReduceAction1255::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1255[] = "init var of ReduceAction1255";
+void INIT_ATTRIBUTES__parser___ReduceAction1255(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___mmbuilder___MMSrcAncestor;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1255;
   fra.me.has_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:310 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_metamodel___static_type___MMAncestor____stype(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//static_type.nit:316 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_metamodel___static_type___MMAncestor____inheriter(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_syntax___mmbuilder___MMSrcAncestor(void)
+val_t NEW_parser___ReduceAction1255(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_syntax___mmbuilder___MMSrcAncestor;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction1255;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_syntax___mmbuilder___MMSrcAncestor(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction1255[] = "check new ReduceAction1255";
+void CHECKNEW_parser___ReduceAction1255(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_syntax___mmbuilder___MMSrcAncestor;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction1255;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___mmbuilder___MMSrcAncestor____local_class(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMSrcAncestor_syntax___mmbuilder___MMSrcAncestor___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ReduceAction1255_parser___ReduceAction___init[] = "new ReduceAction1255 parser::ReduceAction::init";
+val_t NEW_ReduceAction1255_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 339;
-  fra.me.meth = LOCATE_NEW_MMSrcAncestor_syntax___mmbuilder___MMSrcAncestor___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction1255_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:339 */
-  fra.me.REG[1] = NEW_syntax___mmbuilder___MMSrcAncestor();
-  INIT_ATTRIBUTES__syntax___mmbuilder___MMSrcAncestor(fra.me.REG[1]);
-  syntax___mmbuilder___MMSrcAncestor___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_syntax___mmbuilder___MMSrcAncestor(fra.me.REG[1]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction1255();
+  INIT_ATTRIBUTES__parser___ReduceAction1255(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction1255(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_syntax___mmbuilder___ClassBuilderVisitor[87] = {
-  {(bigint) 3003 /* 0: Identity */},
-  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ClassBuilderVisitor" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ClassBuilderVisitor < Object: superclass typecheck marker */},
-  {(bigint) 15 /* 4: ClassBuilderVisitor < Visitor: superclass typecheck marker */},
-  {(bigint) 2371 /* 5: ClassBuilderVisitor < AbsSyntaxVisitor: superclass typecheck marker */},
-  {(bigint) 3003 /* 6: ClassBuilderVisitor < ClassBuilderVisitor: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction1256[55] = {
+  {(bigint) 2843 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction1256" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction1256 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction1256 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2843 /* 5: ReduceAction1256 < ReduceAction1256: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -141996,7 +171435,7 @@ const classtable_elt_t VFT_syntax___mmbuilder___ClassBuilderVisitor[87] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: ClassBuilderVisitor < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction1256 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -142012,6 +171451,8 @@ const classtable_elt_t VFT_syntax___mmbuilder___ClassBuilderVisitor[87] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -142025,146 +171466,90 @@ const classtable_elt_t VFT_syntax___mmbuilder___ClassBuilderVisitor[87] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: ClassBuilderVisitor < Visitor: superclass init_table position */},
-  {(bigint) syntax___mmbuilder___ClassBuilderVisitor___visit},
-  {(bigint) parser___parser_prod___Visitor___enter_visit},
-  {(bigint) parser___parser_prod___Visitor___current_node},
-  {(bigint) parser___parser_prod___Visitor___init},
-  {(bigint) 2 /* 52: ClassBuilderVisitor < AbsSyntaxVisitor: superclass init_table position */},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_type_by_name},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_instantiated_type_by_name},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_object},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_bool},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_int},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_float},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_char},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_string},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_nativestring},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_array},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_discrete},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_range},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_none},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_method},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___mmmodule},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___local_class},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___local_class__eq},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___local_property},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___local_property__eq},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___tc},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___error},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___fatal_error},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___warning},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_expr},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_multiexpr},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___init},
-  {(bigint) 3 /* 81: ClassBuilderVisitor < ClassBuilderVisitor: superclass init_table position */},
-  {(bigint) syntax___mmbuilder___ClassBuilderVisitor___local_class_arity},
-  {(bigint) syntax___mmbuilder___ClassBuilderVisitor___local_class_arity__eq},
-  {(bigint) syntax___mmbuilder___ClassBuilderVisitor___formals},
-  {(bigint) syntax___mmbuilder___ClassBuilderVisitor___formals__eq},
-  {(bigint) syntax___mmbuilder___ClassBuilderVisitor___init},
+  {(bigint) 0 /* 50: ReduceAction1256 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction1256___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction1256 < ReduceAction1256: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__syntax___mmbuilder___ClassBuilderVisitor(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction1256::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1256[] = "init var of ReduceAction1256";
+void INIT_ATTRIBUTES__parser___ReduceAction1256(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___mmbuilder___ClassBuilderVisitor;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1256;
   fra.me.has_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:353 */
-  REGB0 = TAG_Int(0);
-  ATTR_syntax___mmbuilder___ClassBuilderVisitor____local_class_arity(fra.me.REG[0]) = REGB0;
-  /* ./parser//parser_prod.nit:66 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_prod___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_syntax___mmbuilder___ClassBuilderVisitor(void)
+val_t NEW_parser___ReduceAction1256(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 9);
-  obj->vft = (classtable_elt_t*)VFT_syntax___mmbuilder___ClassBuilderVisitor;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction1256;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_syntax___mmbuilder___ClassBuilderVisitor(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction1256[] = "check new ReduceAction1256";
+void CHECKNEW_parser___ReduceAction1256(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_syntax___mmbuilder___ClassBuilderVisitor;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction1256;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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___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___syntax_base___AbsSyntaxVisitor____tc(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_tc", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ClassBuilderVisitor_syntax___mmbuilder___ClassBuilderVisitor___init(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_ReduceAction1256_parser___ReduceAction___init[] = "new ReduceAction1256 parser::ReduceAction::init";
+val_t NEW_ReduceAction1256_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   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_ClassBuilderVisitor_syntax___mmbuilder___ClassBuilderVisitor___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction1256_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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:359 */
-  fra.me.REG[2] = NEW_syntax___mmbuilder___ClassBuilderVisitor();
-  INIT_ATTRIBUTES__syntax___mmbuilder___ClassBuilderVisitor(fra.me.REG[2]);
-  syntax___mmbuilder___ClassBuilderVisitor___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_syntax___mmbuilder___ClassBuilderVisitor(fra.me.REG[2]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction1256();
+  INIT_ATTRIBUTES__parser___ReduceAction1256(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction1256(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_syntax___mmbuilder___ClassSpecializationBuilderVisitor[83] = {
-  {(bigint) 2999 /* 0: Identity */},
-  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ClassSpecializationBuilderVisitor" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ClassSpecializationBuilderVisitor < Object: superclass typecheck marker */},
-  {(bigint) 15 /* 4: ClassSpecializationBuilderVisitor < Visitor: superclass typecheck marker */},
-  {(bigint) 2371 /* 5: ClassSpecializationBuilderVisitor < AbsSyntaxVisitor: superclass typecheck marker */},
-  {(bigint) 2999 /* 6: ClassSpecializationBuilderVisitor < ClassSpecializationBuilderVisitor: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction1257[55] = {
+  {(bigint) 2839 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction1257" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction1257 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction1257 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2839 /* 5: ReduceAction1257 < ReduceAction1257: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -142176,7 +171561,7 @@ const classtable_elt_t VFT_syntax___mmbuilder___ClassSpecializationBuilderVisito
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: ClassSpecializationBuilderVisitor < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction1257 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -142192,6 +171577,8 @@ const classtable_elt_t VFT_syntax___mmbuilder___ClassSpecializationBuilderVisito
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -142205,131 +171592,90 @@ const classtable_elt_t VFT_syntax___mmbuilder___ClassSpecializationBuilderVisito
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: ClassSpecializationBuilderVisitor < Visitor: superclass init_table position */},
-  {(bigint) syntax___mmbuilder___ClassSpecializationBuilderVisitor___visit},
-  {(bigint) parser___parser_prod___Visitor___enter_visit},
-  {(bigint) parser___parser_prod___Visitor___current_node},
-  {(bigint) parser___parser_prod___Visitor___init},
-  {(bigint) 2 /* 52: ClassSpecializationBuilderVisitor < AbsSyntaxVisitor: superclass init_table position */},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_type_by_name},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_instantiated_type_by_name},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_object},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_bool},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_int},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_float},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_char},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_string},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_nativestring},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_array},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_discrete},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_range},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_none},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_method},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___mmmodule},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___local_class},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___local_class__eq},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___local_property},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___local_property__eq},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___tc},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___error},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___fatal_error},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___warning},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_expr},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_multiexpr},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___init},
-  {(bigint) 3 /* 81: ClassSpecializationBuilderVisitor < ClassSpecializationBuilderVisitor: superclass init_table position */},
-  {(bigint) syntax___mmbuilder___ClassSpecializationBuilderVisitor___init},
+  {(bigint) 0 /* 50: ReduceAction1257 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction1257___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction1257 < ReduceAction1257: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__syntax___mmbuilder___ClassSpecializationBuilderVisitor(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+/* 2: Attribute ReduceAction1257::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1257[] = "init var of ReduceAction1257";
+void INIT_ATTRIBUTES__parser___ReduceAction1257(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___mmbuilder___ClassSpecializationBuilderVisitor;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1257;
   fra.me.has_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___parser_prod___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_syntax___mmbuilder___ClassSpecializationBuilderVisitor(void)
+val_t NEW_parser___ReduceAction1257(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_syntax___mmbuilder___ClassSpecializationBuilderVisitor;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction1257;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_syntax___mmbuilder___ClassSpecializationBuilderVisitor(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction1257[] = "check new ReduceAction1257";
+void CHECKNEW_parser___ReduceAction1257(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_syntax___mmbuilder___ClassSpecializationBuilderVisitor;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction1257;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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___syntax_base___AbsSyntaxVisitor____tc(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_tc", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ClassSpecializationBuilderVisitor_syntax___mmbuilder___ClassSpecializationBuilderVisitor___init(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_ReduceAction1257_parser___ReduceAction___init[] = "new ReduceAction1257 parser::ReduceAction::init";
+val_t NEW_ReduceAction1257_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 367;
-  fra.me.meth = LOCATE_NEW_ClassSpecializationBuilderVisitor_syntax___mmbuilder___ClassSpecializationBuilderVisitor___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction1257_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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:367 */
-  fra.me.REG[2] = NEW_syntax___mmbuilder___ClassSpecializationBuilderVisitor();
-  INIT_ATTRIBUTES__syntax___mmbuilder___ClassSpecializationBuilderVisitor(fra.me.REG[2]);
-  syntax___mmbuilder___ClassSpecializationBuilderVisitor___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_syntax___mmbuilder___ClassSpecializationBuilderVisitor(fra.me.REG[2]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction1257();
+  INIT_ATTRIBUTES__parser___ReduceAction1257(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction1257(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_syntax___mmbuilder___ClassAncestorBuilder[83] = {
-  {(bigint) 3007 /* 0: Identity */},
-  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ClassAncestorBuilder" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ClassAncestorBuilder < Object: superclass typecheck marker */},
-  {(bigint) 15 /* 4: ClassAncestorBuilder < Visitor: superclass typecheck marker */},
-  {(bigint) 2371 /* 5: ClassAncestorBuilder < AbsSyntaxVisitor: superclass typecheck marker */},
-  {(bigint) 3007 /* 6: ClassAncestorBuilder < ClassAncestorBuilder: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction1258[55] = {
+  {(bigint) 2835 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction1258" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction1258 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction1258 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2835 /* 5: ReduceAction1258 < ReduceAction1258: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -142341,7 +171687,7 @@ const classtable_elt_t VFT_syntax___mmbuilder___ClassAncestorBuilder[83] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: ClassAncestorBuilder < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction1258 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -142357,6 +171703,8 @@ const classtable_elt_t VFT_syntax___mmbuilder___ClassAncestorBuilder[83] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -142370,131 +171718,90 @@ const classtable_elt_t VFT_syntax___mmbuilder___ClassAncestorBuilder[83] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: ClassAncestorBuilder < Visitor: superclass init_table position */},
-  {(bigint) syntax___mmbuilder___ClassAncestorBuilder___visit},
-  {(bigint) parser___parser_prod___Visitor___enter_visit},
-  {(bigint) parser___parser_prod___Visitor___current_node},
-  {(bigint) parser___parser_prod___Visitor___init},
-  {(bigint) 2 /* 52: ClassAncestorBuilder < AbsSyntaxVisitor: superclass init_table position */},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_type_by_name},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_instantiated_type_by_name},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_object},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_bool},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_int},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_float},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_char},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_string},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_nativestring},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_array},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_discrete},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_range},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_none},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_method},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___mmmodule},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___local_class},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___local_class__eq},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___local_property},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___local_property__eq},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___tc},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___error},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___fatal_error},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___warning},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_expr},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_multiexpr},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___init},
-  {(bigint) 3 /* 81: ClassAncestorBuilder < ClassAncestorBuilder: superclass init_table position */},
-  {(bigint) syntax___mmbuilder___ClassAncestorBuilder___init},
+  {(bigint) 0 /* 50: ReduceAction1258 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction1258___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction1258 < ReduceAction1258: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__syntax___mmbuilder___ClassAncestorBuilder(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+/* 2: Attribute ReduceAction1258::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1258[] = "init var of ReduceAction1258";
+void INIT_ATTRIBUTES__parser___ReduceAction1258(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___mmbuilder___ClassAncestorBuilder;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1258;
   fra.me.has_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___parser_prod___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_syntax___mmbuilder___ClassAncestorBuilder(void)
+val_t NEW_parser___ReduceAction1258(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_syntax___mmbuilder___ClassAncestorBuilder;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction1258;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_syntax___mmbuilder___ClassAncestorBuilder(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction1258[] = "check new ReduceAction1258";
+void CHECKNEW_parser___ReduceAction1258(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_syntax___mmbuilder___ClassAncestorBuilder;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction1258;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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___syntax_base___AbsSyntaxVisitor____tc(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_tc", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ClassAncestorBuilder_syntax___mmbuilder___ClassAncestorBuilder___init(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_ReduceAction1258_parser___ReduceAction___init[] = "new ReduceAction1258 parser::ReduceAction::init";
+val_t NEW_ReduceAction1258_parser___ReduceAction___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};
+  int init_table[3] = {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_ClassAncestorBuilder_syntax___mmbuilder___ClassAncestorBuilder___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction1258_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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:375 */
-  fra.me.REG[2] = NEW_syntax___mmbuilder___ClassAncestorBuilder();
-  INIT_ATTRIBUTES__syntax___mmbuilder___ClassAncestorBuilder(fra.me.REG[2]);
-  syntax___mmbuilder___ClassAncestorBuilder___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_syntax___mmbuilder___ClassAncestorBuilder(fra.me.REG[2]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction1258();
+  INIT_ATTRIBUTES__parser___ReduceAction1258(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction1258(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_syntax___mmbuilder___ClassVerifierVisitor[83] = {
-  {(bigint) 2995 /* 0: Identity */},
-  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ClassVerifierVisitor" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ClassVerifierVisitor < Object: superclass typecheck marker */},
-  {(bigint) 15 /* 4: ClassVerifierVisitor < Visitor: superclass typecheck marker */},
-  {(bigint) 2371 /* 5: ClassVerifierVisitor < AbsSyntaxVisitor: superclass typecheck marker */},
-  {(bigint) 2995 /* 6: ClassVerifierVisitor < ClassVerifierVisitor: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction1259[55] = {
+  {(bigint) 2831 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction1259" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction1259 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction1259 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2831 /* 5: ReduceAction1259 < ReduceAction1259: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -142506,7 +171813,7 @@ const classtable_elt_t VFT_syntax___mmbuilder___ClassVerifierVisitor[83] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: ClassVerifierVisitor < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction1259 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -142522,6 +171829,8 @@ const classtable_elt_t VFT_syntax___mmbuilder___ClassVerifierVisitor[83] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -142535,131 +171844,90 @@ const classtable_elt_t VFT_syntax___mmbuilder___ClassVerifierVisitor[83] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: ClassVerifierVisitor < Visitor: superclass init_table position */},
-  {(bigint) syntax___mmbuilder___ClassVerifierVisitor___visit},
-  {(bigint) parser___parser_prod___Visitor___enter_visit},
-  {(bigint) parser___parser_prod___Visitor___current_node},
-  {(bigint) parser___parser_prod___Visitor___init},
-  {(bigint) 2 /* 52: ClassVerifierVisitor < AbsSyntaxVisitor: superclass init_table position */},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_type_by_name},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_instantiated_type_by_name},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_object},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_bool},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_int},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_float},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_char},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_string},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_nativestring},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_array},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_discrete},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_range},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_none},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_method},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___mmmodule},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___local_class},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___local_class__eq},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___local_property},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___local_property__eq},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___tc},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___error},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___fatal_error},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___warning},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_expr},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_multiexpr},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___init},
-  {(bigint) 3 /* 81: ClassVerifierVisitor < ClassVerifierVisitor: superclass init_table position */},
-  {(bigint) syntax___mmbuilder___ClassVerifierVisitor___init},
+  {(bigint) 0 /* 50: ReduceAction1259 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction1259___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction1259 < ReduceAction1259: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__syntax___mmbuilder___ClassVerifierVisitor(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+/* 2: Attribute ReduceAction1259::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1259[] = "init var of ReduceAction1259";
+void INIT_ATTRIBUTES__parser___ReduceAction1259(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___mmbuilder___ClassVerifierVisitor;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1259;
   fra.me.has_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___parser_prod___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_syntax___mmbuilder___ClassVerifierVisitor(void)
+val_t NEW_parser___ReduceAction1259(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_syntax___mmbuilder___ClassVerifierVisitor;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction1259;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_syntax___mmbuilder___ClassVerifierVisitor(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction1259[] = "check new ReduceAction1259";
+void CHECKNEW_parser___ReduceAction1259(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_syntax___mmbuilder___ClassVerifierVisitor;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction1259;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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___syntax_base___AbsSyntaxVisitor____tc(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_tc", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ClassVerifierVisitor_syntax___mmbuilder___ClassVerifierVisitor___init(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_ReduceAction1259_parser___ReduceAction___init[] = "new ReduceAction1259 parser::ReduceAction::init";
+val_t NEW_ReduceAction1259_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 383;
-  fra.me.meth = LOCATE_NEW_ClassVerifierVisitor_syntax___mmbuilder___ClassVerifierVisitor___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction1259_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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:383 */
-  fra.me.REG[2] = NEW_syntax___mmbuilder___ClassVerifierVisitor();
-  INIT_ATTRIBUTES__syntax___mmbuilder___ClassVerifierVisitor(fra.me.REG[2]);
-  syntax___mmbuilder___ClassVerifierVisitor___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_syntax___mmbuilder___ClassVerifierVisitor(fra.me.REG[2]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction1259();
+  INIT_ATTRIBUTES__parser___ReduceAction1259(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction1259(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_syntax___mmbuilder___PropertyBuilderVisitor[83] = {
-  {(bigint) 2787 /* 0: Identity */},
-  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "PropertyBuilderVisitor" /* 2: Class Name */},
-  {(bigint) 3 /* 3: PropertyBuilderVisitor < Object: superclass typecheck marker */},
-  {(bigint) 15 /* 4: PropertyBuilderVisitor < Visitor: superclass typecheck marker */},
-  {(bigint) 2371 /* 5: PropertyBuilderVisitor < AbsSyntaxVisitor: superclass typecheck marker */},
-  {(bigint) 2787 /* 6: PropertyBuilderVisitor < PropertyBuilderVisitor: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction1262[55] = {
+  {(bigint) 2823 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction1262" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction1262 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction1262 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2823 /* 5: ReduceAction1262 < ReduceAction1262: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -142671,7 +171939,7 @@ const classtable_elt_t VFT_syntax___mmbuilder___PropertyBuilderVisitor[83] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: PropertyBuilderVisitor < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction1262 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -142687,6 +171955,8 @@ const classtable_elt_t VFT_syntax___mmbuilder___PropertyBuilderVisitor[83] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -142700,131 +171970,90 @@ const classtable_elt_t VFT_syntax___mmbuilder___PropertyBuilderVisitor[83] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: PropertyBuilderVisitor < Visitor: superclass init_table position */},
-  {(bigint) syntax___mmbuilder___PropertyBuilderVisitor___visit},
-  {(bigint) parser___parser_prod___Visitor___enter_visit},
-  {(bigint) parser___parser_prod___Visitor___current_node},
-  {(bigint) parser___parser_prod___Visitor___init},
-  {(bigint) 2 /* 52: PropertyBuilderVisitor < AbsSyntaxVisitor: superclass init_table position */},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_type_by_name},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_instantiated_type_by_name},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_object},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_bool},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_int},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_float},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_char},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_string},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_nativestring},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_array},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_discrete},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_range},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_none},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_method},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___mmmodule},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___local_class},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___local_class__eq},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___local_property},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___local_property__eq},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___tc},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___error},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___fatal_error},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___warning},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_expr},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_multiexpr},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___init},
-  {(bigint) 3 /* 81: PropertyBuilderVisitor < PropertyBuilderVisitor: superclass init_table position */},
-  {(bigint) syntax___mmbuilder___PropertyBuilderVisitor___init},
+  {(bigint) 0 /* 50: ReduceAction1262 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction1262___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction1262 < ReduceAction1262: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__syntax___mmbuilder___PropertyBuilderVisitor(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+/* 2: Attribute ReduceAction1262::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1262[] = "init var of ReduceAction1262";
+void INIT_ATTRIBUTES__parser___ReduceAction1262(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___mmbuilder___PropertyBuilderVisitor;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1262;
   fra.me.has_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___parser_prod___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_syntax___mmbuilder___PropertyBuilderVisitor(void)
+val_t NEW_parser___ReduceAction1262(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_syntax___mmbuilder___PropertyBuilderVisitor;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction1262;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_syntax___mmbuilder___PropertyBuilderVisitor(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction1262[] = "check new ReduceAction1262";
+void CHECKNEW_parser___ReduceAction1262(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_syntax___mmbuilder___PropertyBuilderVisitor;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction1262;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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___syntax_base___AbsSyntaxVisitor____tc(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_tc", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_PropertyBuilderVisitor_syntax___mmbuilder___PropertyBuilderVisitor___init(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_ReduceAction1262_parser___ReduceAction___init[] = "new ReduceAction1262 parser::ReduceAction::init";
+val_t NEW_ReduceAction1262_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 394;
-  fra.me.meth = LOCATE_NEW_PropertyBuilderVisitor_syntax___mmbuilder___PropertyBuilderVisitor___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction1262_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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:394 */
-  fra.me.REG[2] = NEW_syntax___mmbuilder___PropertyBuilderVisitor();
-  INIT_ATTRIBUTES__syntax___mmbuilder___PropertyBuilderVisitor(fra.me.REG[2]);
-  syntax___mmbuilder___PropertyBuilderVisitor___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_syntax___mmbuilder___PropertyBuilderVisitor(fra.me.REG[2]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction1262();
+  INIT_ATTRIBUTES__parser___ReduceAction1262(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction1262(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_syntax___mmbuilder___PropertyVerifierVisitor[85] = {
-  {(bigint) 2783 /* 0: Identity */},
-  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "PropertyVerifierVisitor" /* 2: Class Name */},
-  {(bigint) 3 /* 3: PropertyVerifierVisitor < Object: superclass typecheck marker */},
-  {(bigint) 15 /* 4: PropertyVerifierVisitor < Visitor: superclass typecheck marker */},
-  {(bigint) 2371 /* 5: PropertyVerifierVisitor < AbsSyntaxVisitor: superclass typecheck marker */},
-  {(bigint) 2783 /* 6: PropertyVerifierVisitor < PropertyVerifierVisitor: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction1263[55] = {
+  {(bigint) 2819 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction1263" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction1263 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction1263 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2819 /* 5: ReduceAction1263 < ReduceAction1263: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -142836,7 +172065,7 @@ const classtable_elt_t VFT_syntax___mmbuilder___PropertyVerifierVisitor[85] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: PropertyVerifierVisitor < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction1263 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -142852,6 +172081,8 @@ const classtable_elt_t VFT_syntax___mmbuilder___PropertyVerifierVisitor[85] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -142865,137 +172096,88 @@ const classtable_elt_t VFT_syntax___mmbuilder___PropertyVerifierVisitor[85] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: PropertyVerifierVisitor < Visitor: superclass init_table position */},
-  {(bigint) syntax___mmbuilder___PropertyVerifierVisitor___visit},
-  {(bigint) parser___parser_prod___Visitor___enter_visit},
-  {(bigint) parser___parser_prod___Visitor___current_node},
-  {(bigint) parser___parser_prod___Visitor___init},
-  {(bigint) 2 /* 52: PropertyVerifierVisitor < AbsSyntaxVisitor: superclass init_table position */},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_type_by_name},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_instantiated_type_by_name},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_object},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_bool},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_int},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_float},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_char},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_string},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_nativestring},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_array},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_discrete},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_range},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_none},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_method},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___mmmodule},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___local_class},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___local_class__eq},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___local_property},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___local_property__eq},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___tc},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___error},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___fatal_error},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___warning},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_expr},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_multiexpr},
-  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___init},
-  {(bigint) 3 /* 81: PropertyVerifierVisitor < PropertyVerifierVisitor: superclass init_table position */},
-  {(bigint) syntax___mmbuilder___PropertyVerifierVisitor___signature_builder},
-  {(bigint) syntax___mmbuilder___PropertyVerifierVisitor___signature_builder__eq},
-  {(bigint) syntax___mmbuilder___PropertyVerifierVisitor___init},
+  {(bigint) 0 /* 50: ReduceAction1263 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction1263___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction1263 < ReduceAction1263: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__syntax___mmbuilder___PropertyVerifierVisitor(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+/* 2: Attribute ReduceAction1263::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1263[] = "init var of ReduceAction1263";
+void INIT_ATTRIBUTES__parser___ReduceAction1263(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___mmbuilder___PropertyVerifierVisitor;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1263;
   fra.me.has_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___parser_prod___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_syntax___mmbuilder___PropertyVerifierVisitor(void)
+val_t NEW_parser___ReduceAction1263(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 8);
-  obj->vft = (classtable_elt_t*)VFT_syntax___mmbuilder___PropertyVerifierVisitor;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction1263;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_syntax___mmbuilder___PropertyVerifierVisitor(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction1263[] = "check new ReduceAction1263";
+void CHECKNEW_parser___ReduceAction1263(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_syntax___mmbuilder___PropertyVerifierVisitor;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction1263;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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___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___syntax_base___AbsSyntaxVisitor____tc(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_tc", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_PropertyVerifierVisitor_syntax___mmbuilder___PropertyVerifierVisitor___init(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_ReduceAction1263_parser___ReduceAction___init[] = "new ReduceAction1263 parser::ReduceAction::init";
+val_t NEW_ReduceAction1263_parser___ReduceAction___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};
+  int init_table[3] = {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_PropertyVerifierVisitor_syntax___mmbuilder___PropertyVerifierVisitor___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction1263_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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:407 */
-  fra.me.REG[2] = NEW_syntax___mmbuilder___PropertyVerifierVisitor();
-  INIT_ATTRIBUTES__syntax___mmbuilder___PropertyVerifierVisitor(fra.me.REG[2]);
-  syntax___mmbuilder___PropertyVerifierVisitor___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_syntax___mmbuilder___PropertyVerifierVisitor(fra.me.REG[2]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction1263();
+  INIT_ATTRIBUTES__parser___ReduceAction1263(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction1263(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_syntax___mmbuilder___SignatureBuilder[61] = {
-  {(bigint) 51 /* 0: Identity */},
-  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "SignatureBuilder" /* 2: Class Name */},
-  {(bigint) 3 /* 3: SignatureBuilder < Object: superclass typecheck marker */},
-  {(bigint) 51 /* 4: SignatureBuilder < SignatureBuilder: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction1264[55] = {
+  {(bigint) 2815 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction1264" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction1264 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction1264 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2815 /* 5: ReduceAction1264 < ReduceAction1264: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -143009,7 +172191,7 @@ const classtable_elt_t VFT_syntax___mmbuilder___SignatureBuilder[61] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: SignatureBuilder < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction1264 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -143025,6 +172207,8 @@ const classtable_elt_t VFT_syntax___mmbuilder___SignatureBuilder[61] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -143038,137 +172222,89 @@ const classtable_elt_t VFT_syntax___mmbuilder___SignatureBuilder[61] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: SignatureBuilder < SignatureBuilder: superclass init_table position */},
-  {(bigint) syntax___mmbuilder___SignatureBuilder___params},
-  {(bigint) syntax___mmbuilder___SignatureBuilder___params__eq},
-  {(bigint) syntax___mmbuilder___SignatureBuilder___untyped_params},
-  {(bigint) syntax___mmbuilder___SignatureBuilder___untyped_params__eq},
-  {(bigint) syntax___mmbuilder___SignatureBuilder___vararg_rank},
-  {(bigint) syntax___mmbuilder___SignatureBuilder___vararg_rank__eq},
-  {(bigint) syntax___mmbuilder___SignatureBuilder___closure_decls},
-  {(bigint) syntax___mmbuilder___SignatureBuilder___closure_decls__eq},
-  {(bigint) syntax___mmbuilder___SignatureBuilder___has_error_occured},
-  {(bigint) syntax___mmbuilder___SignatureBuilder___has_error_occured__eq},
-  {(bigint) syntax___mmbuilder___SignatureBuilder___signature},
-  {(bigint) syntax___mmbuilder___SignatureBuilder___signature__eq},
-  {(bigint) syntax___mmbuilder___SignatureBuilder___init},
+  {(bigint) 0 /* 50: ReduceAction1264 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction1264___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction1264 < ReduceAction1264: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__syntax___mmbuilder___SignatureBuilder(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction1264::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1264[] = "init var of ReduceAction1264";
+void INIT_ATTRIBUTES__parser___ReduceAction1264(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___mmbuilder___SignatureBuilder;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1264;
   fra.me.has_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:417 */
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-  ATTR_syntax___mmbuilder___SignatureBuilder____params(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:420 */
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-  ATTR_syntax___mmbuilder___SignatureBuilder____untyped_params(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:423 */
-  REGB0 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:236 */
-  REGB0 = TAG_Int(-UNTAG_Int(REGB0));
-  ATTR_syntax___mmbuilder___SignatureBuilder____vararg_rank(fra.me.REG[0]) = REGB0;
-  /* ./syntax//mmbuilder.nit:426 */
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-  ATTR_syntax___mmbuilder___SignatureBuilder____closure_decls(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:429 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___mmbuilder___SignatureBuilder____has_error_occured(fra.me.REG[0]) = REGB0;
-  /* ./syntax//mmbuilder.nit:431 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_syntax___mmbuilder___SignatureBuilder____signature(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_syntax___mmbuilder___SignatureBuilder(void)
+val_t NEW_parser___ReduceAction1264(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 8);
-  obj->vft = (classtable_elt_t*)VFT_syntax___mmbuilder___SignatureBuilder;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction1264;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_syntax___mmbuilder___SignatureBuilder(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction1264[] = "check new ReduceAction1264";
+void CHECKNEW_parser___ReduceAction1264(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_syntax___mmbuilder___SignatureBuilder;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction1264;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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_syntax___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_syntax___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_syntax___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_syntax___mmbuilder___SignatureBuilder____has_error_occured(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_has_error_occured", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_SignatureBuilder_syntax___mmbuilder___SignatureBuilder___init(void){
+static const char LOCATE_NEW_ReduceAction1264_parser___ReduceAction___init[] = "new ReduceAction1264 parser::ReduceAction::init";
+val_t NEW_ReduceAction1264_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[2] = {0, 0};
+  int init_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_SignatureBuilder_syntax___mmbuilder___SignatureBuilder___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction1264_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = NEW_syntax___mmbuilder___SignatureBuilder();
-  INIT_ATTRIBUTES__syntax___mmbuilder___SignatureBuilder(fra.me.REG[0]);
-  syntax___mmbuilder___SignatureBuilder___init(fra.me.REG[0], init_table);
-  CHECKNEW_syntax___mmbuilder___SignatureBuilder(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction1264();
+  INIT_ATTRIBUTES__parser___ReduceAction1264(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction1264(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_syntax___mmbuilder___MethidAccumulator[54] = {
-  {(bigint) 2119 /* 0: Identity */},
-  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "MethidAccumulator" /* 2: Class Name */},
-  {(bigint) 3 /* 3: MethidAccumulator < Object: superclass typecheck marker */},
-  {(bigint) 15 /* 4: MethidAccumulator < Visitor: superclass typecheck marker */},
-  {(bigint) 2119 /* 5: MethidAccumulator < MethidAccumulator: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction1265[55] = {
+  {(bigint) 2811 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction1265" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction1265 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction1265 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2811 /* 5: ReduceAction1265 < ReduceAction1265: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -143181,7 +172317,7 @@ const classtable_elt_t VFT_syntax___mmbuilder___MethidAccumulator[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: MethidAccumulator < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction1265 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -143197,6 +172333,8 @@ const classtable_elt_t VFT_syntax___mmbuilder___MethidAccumulator[54] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -143210,90 +172348,88 @@ const classtable_elt_t VFT_syntax___mmbuilder___MethidAccumulator[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: MethidAccumulator < Visitor: superclass init_table position */},
-  {(bigint) syntax___mmbuilder___MethidAccumulator___visit},
-  {(bigint) parser___parser_prod___Visitor___enter_visit},
-  {(bigint) parser___parser_prod___Visitor___current_node},
-  {(bigint) parser___parser_prod___Visitor___init},
-  {(bigint) 2 /* 52: MethidAccumulator < MethidAccumulator: superclass init_table position */},
-  {(bigint) syntax___mmbuilder___MethidAccumulator___name},
+  {(bigint) 0 /* 50: ReduceAction1265 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction1265___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction1265 < ReduceAction1265: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute MethidAccumulator::_current_node */
-/* 3: Attribute MethidAccumulator::_name */
-void INIT_ATTRIBUTES__syntax___mmbuilder___MethidAccumulator(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+/* 2: Attribute ReduceAction1265::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1265[] = "init var of ReduceAction1265";
+void INIT_ATTRIBUTES__parser___ReduceAction1265(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___mmbuilder___MethidAccumulator;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1265;
   fra.me.has_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:1249 */
-  fra.me.REG[1] = NEW_Buffer_standard___string___Buffer___init();
-  ATTR_syntax___mmbuilder___MethidAccumulator____name(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser_prod.nit:66 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_prod___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_syntax___mmbuilder___MethidAccumulator(void)
+val_t NEW_parser___ReduceAction1265(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_syntax___mmbuilder___MethidAccumulator;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction1265;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_syntax___mmbuilder___MethidAccumulator(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction1265[] = "check new ReduceAction1265";
+void CHECKNEW_parser___ReduceAction1265(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_syntax___mmbuilder___MethidAccumulator;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction1265;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___mmbuilder___MethidAccumulator____name(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_name", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_MethidAccumulator_parser___parser_prod___Visitor___init(void){
+static const char LOCATE_NEW_ReduceAction1265_parser___ReduceAction___init[] = "new ReduceAction1265 parser::ReduceAction::init";
+val_t NEW_ReduceAction1265_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
   int init_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___parser_prod___Visitor___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction1265_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = NEW_syntax___mmbuilder___MethidAccumulator();
-  INIT_ATTRIBUTES__syntax___mmbuilder___MethidAccumulator(fra.me.REG[0]);
-  parser___parser_prod___Visitor___init(fra.me.REG[0], init_table);
-  CHECKNEW_syntax___mmbuilder___MethidAccumulator(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction1265();
+  INIT_ATTRIBUTES__parser___ReduceAction1265(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction1265(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_icode___icode_base___IRegister[58] = {
-  {(bigint) 211 /* 0: Identity */},
-  {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "IRegister" /* 2: Class Name */},
-  {(bigint) 3 /* 3: IRegister < Object: superclass typecheck marker */},
-  {(bigint) 211 /* 4: IRegister < IRegister: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction1266[55] = {
+  {(bigint) 2807 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction1266" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction1266 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction1266 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2807 /* 5: ReduceAction1266 < ReduceAction1266: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -143307,7 +172443,7 @@ const classtable_elt_t VFT_icode___icode_base___IRegister[58] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: IRegister < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction1266 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -143323,6 +172459,8 @@ const classtable_elt_t VFT_icode___icode_base___IRegister[58] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -143336,128 +172474,88 @@ const classtable_elt_t VFT_icode___icode_base___IRegister[58] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) analysis___allocate_iregister_slots___IRegister___slot_index},
-  {(bigint) analysis___allocate_iregister_slots___IRegister___slot_index__eq},
-  {(bigint) analysis___allocate_iregister_slots___IRegister___is_local},
-  {(bigint) analysis___allocate_iregister_slots___IRegister___is_local__eq},
-  {(bigint) analysis___allocate_iregister_slots___IRegister___local_iroutine},
-  {(bigint) analysis___allocate_iregister_slots___IRegister___local_iroutine__eq},
-  {(bigint) analysis___allocate_iregister_slots___IRegister___in_tag_slots},
-  {(bigint) analysis___allocate_iregister_slots___IRegister___in_tag_slots__eq},
-  {(bigint) 1 /* 55: IRegister < IRegister: superclass init_table position */},
-  {(bigint) icode___icode_base___IRegister___stype},
-  {(bigint) icode___icode_base___IRegister___init},
+  {(bigint) 0 /* 50: ReduceAction1266 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction1266___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction1266 < ReduceAction1266: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__icode___icode_base___IRegister(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction1266::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1266[] = "init var of ReduceAction1266";
+void INIT_ATTRIBUTES__parser___ReduceAction1266(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__icode___icode_base___IRegister;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1266;
   fra.me.has_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_analysis___allocate_iregister_slots___IRegister____is_local(fra.me.REG[0]) = REGB0;
-  /* ./analysis//allocate_iregister_slots.nit:293 */
-  REGB0 = TAG_Bool(false);
-  ATTR_analysis___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_analysis___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_analysis___allocate_iregister_slots___IRegister____last(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./analysis//allocate_iregister_slots.nit:307 */
-  REGB0 = TAG_Int(0);
-  ATTR_analysis___allocate_iregister_slots___IRegister____born_rank(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_icode___icode_base___IRegister(void)
+val_t NEW_parser___ReduceAction1266(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 10);
-  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___IRegister;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction1266;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_icode___icode_base___IRegister(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction1266[] = "check new ReduceAction1266";
+void CHECKNEW_parser___ReduceAction1266(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_icode___icode_base___IRegister;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction1266;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_analysis___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_analysis___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_analysis___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___icode_base___IRegister____stype(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_stype", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_IRegister_icode___icode_base___IRegister___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ReduceAction1266_parser___ReduceAction___init[] = "new ReduceAction1266 parser::ReduceAction::init";
+val_t NEW_ReduceAction1266_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[2] = {0, 0};
+  int init_table[3] = {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_IRegister_icode___icode_base___IRegister___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction1266_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:28 */
-  fra.me.REG[1] = NEW_icode___icode_base___IRegister();
-  INIT_ATTRIBUTES__icode___icode_base___IRegister(fra.me.REG[1]);
-  icode___icode_base___IRegister___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_icode___icode_base___IRegister(fra.me.REG[1]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction1266();
+  INIT_ATTRIBUTES__parser___ReduceAction1266(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction1266(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_icode___icode_base___IEscapeMark[49] = {
-  {(bigint) 219 /* 0: Identity */},
-  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "IEscapeMark" /* 2: Class Name */},
-  {(bigint) 3 /* 3: IEscapeMark < Object: superclass typecheck marker */},
-  {(bigint) 219 /* 4: IEscapeMark < IEscapeMark: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction1267[55] = {
+  {(bigint) 2803 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction1267" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction1267 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction1267 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2803 /* 5: ReduceAction1267 < ReduceAction1267: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -143471,7 +172569,7 @@ const classtable_elt_t VFT_icode___icode_base___IEscapeMark[49] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: IEscapeMark < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction1267 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -143487,6 +172585,8 @@ const classtable_elt_t VFT_icode___icode_base___IEscapeMark[49] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -143500,66 +172600,88 @@ const classtable_elt_t VFT_icode___icode_base___IEscapeMark[49] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: IEscapeMark < IEscapeMark: superclass init_table position */},
-  {(bigint) icode___icode_base___IEscapeMark___init},
+  {(bigint) 0 /* 50: ReduceAction1267 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction1267___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction1267 < ReduceAction1267: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-void INIT_ATTRIBUTES__icode___icode_base___IEscapeMark(val_t p0){
+/* 2: Attribute ReduceAction1267::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1267[] = "init var of ReduceAction1267";
+void INIT_ATTRIBUTES__parser___ReduceAction1267(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__icode___icode_base___IEscapeMark;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1267;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_icode___icode_base___IEscapeMark(void)
+val_t NEW_parser___ReduceAction1267(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 2);
-  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___IEscapeMark;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction1267;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_icode___icode_base___IEscapeMark(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction1267[] = "check new ReduceAction1267";
+void CHECKNEW_parser___ReduceAction1267(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_icode___icode_base___IEscapeMark;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction1267;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_IEscapeMark_icode___icode_base___IEscapeMark___init(void){
+static const char LOCATE_NEW_ReduceAction1267_parser___ReduceAction___init[] = "new ReduceAction1267 parser::ReduceAction::init";
+val_t NEW_ReduceAction1267_parser___ReduceAction___init(val_t p0){
   struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[2] = {0, 0};
+  int init_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_IEscapeMark_icode___icode_base___IEscapeMark___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction1267_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = NEW_icode___icode_base___IEscapeMark();
-  INIT_ATTRIBUTES__icode___icode_base___IEscapeMark(fra.me.REG[0]);
-  icode___icode_base___IEscapeMark___init(fra.me.REG[0], init_table);
-  CHECKNEW_icode___icode_base___IEscapeMark(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction1267();
+  INIT_ATTRIBUTES__parser___ReduceAction1267(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction1267(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_icode___icode_base___IClosureDecl[53] = {
-  {(bigint) 243 /* 0: Identity */},
-  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "IClosureDecl" /* 2: Class Name */},
-  {(bigint) 3 /* 3: IClosureDecl < Object: superclass typecheck marker */},
-  {(bigint) 243 /* 4: IClosureDecl < IClosureDecl: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction1268[55] = {
+  {(bigint) 2799 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction1268" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction1268 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction1268 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2799 /* 5: ReduceAction1268 < ReduceAction1268: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -143573,7 +172695,7 @@ const classtable_elt_t VFT_icode___icode_base___IClosureDecl[53] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: IClosureDecl < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction1268 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -143589,6 +172711,8 @@ const classtable_elt_t VFT_icode___icode_base___IClosureDecl[53] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -143598,87 +172722,92 @@ const classtable_elt_t VFT_icode___icode_base___IClosureDecl[53] = {
   {(bigint) standard___hash___Object___hash},
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
-  {(bigint) standard___math___Object___srand_from},
-  {(bigint) standard___math___Object___srand},
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) analysis___icode_dump___IClosureDecl___dump},
-  {(bigint) 1 /* 48: IClosureDecl < IClosureDecl: superclass init_table position */},
-  {(bigint) icode___icode_base___IClosureDecl___closure},
-  {(bigint) icode___icode_base___IClosureDecl___default},
-  {(bigint) icode___icode_base___IClosureDecl___default__eq},
-  {(bigint) icode___icode_base___IClosureDecl___init},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 50: ReduceAction1268 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction1268___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction1268 < ReduceAction1268: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute IClosureDecl::_closure */
-/* 3: Attribute IClosureDecl::_default */
-void INIT_ATTRIBUTES__icode___icode_base___IClosureDecl(val_t p0){
+/* 2: Attribute ReduceAction1268::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1268[] = "init var of ReduceAction1268";
+void INIT_ATTRIBUTES__parser___ReduceAction1268(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__icode___icode_base___IClosureDecl;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1268;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_icode___icode_base___IClosureDecl(void)
+val_t NEW_parser___ReduceAction1268(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___IClosureDecl;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction1268;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_icode___icode_base___IClosureDecl(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction1268[] = "check new ReduceAction1268";
+void CHECKNEW_parser___ReduceAction1268(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_icode___icode_base___IClosureDecl;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction1268;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_icode___icode_base___IClosureDecl____closure(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_closure", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_IClosureDecl_icode___icode_base___IClosureDecl___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ReduceAction1268_parser___ReduceAction___init[] = "new ReduceAction1268 parser::ReduceAction::init";
+val_t NEW_ReduceAction1268_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[2] = {0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 46;
-  fra.me.meth = LOCATE_NEW_IClosureDecl_icode___icode_base___IClosureDecl___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction1268_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:46 */
-  fra.me.REG[1] = NEW_icode___icode_base___IClosureDecl();
-  INIT_ATTRIBUTES__icode___icode_base___IClosureDecl(fra.me.REG[1]);
-  icode___icode_base___IClosureDecl___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_icode___icode_base___IClosureDecl(fra.me.REG[1]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction1268();
+  INIT_ATTRIBUTES__parser___ReduceAction1268(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction1268(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_icode___icode_base___IRoutine[68] = {
-  {(bigint) 207 /* 0: Identity */},
-  {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "IRoutine" /* 2: Class Name */},
-  {(bigint) 3 /* 3: IRoutine < Object: superclass typecheck marker */},
-  {(bigint) 207 /* 4: IRoutine < IRoutine: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction1269[55] = {
+  {(bigint) 2795 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction1269" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction1269 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction1269 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2795 /* 5: ReduceAction1269 < ReduceAction1269: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -143692,7 +172821,7 @@ const classtable_elt_t VFT_icode___icode_base___IRoutine[68] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: IRoutine < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction1269 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -143708,6 +172837,8 @@ const classtable_elt_t VFT_icode___icode_base___IRoutine[68] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -143721,158 +172852,89 @@ const classtable_elt_t VFT_icode___icode_base___IRoutine[68] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) compiling___compiling_icode___IRoutine___compile_signature_to_c},
-  {(bigint) compiling___compiling_icode___IRoutine___compile_inside_to_c},
-  {(bigint) compiling___compiling_icode___IRoutine___compile_to_c},
-  {(bigint) analysis___IRoutine___optimize},
-  {(bigint) analysis___icode_dump___IRoutine___dump},
-  {(bigint) analysis___allocate_iregister_slots___IRoutine___std_slots_nb},
-  {(bigint) analysis___allocate_iregister_slots___IRoutine___tag_slots_nb},
-  {(bigint) analysis___allocate_iregister_slots___IRoutine___allocate_iregister_slots},
-  {(bigint) 1 /* 55: IRoutine < IRoutine: superclass init_table position */},
-  {(bigint) icode___icode_base___IRoutine___params},
-  {(bigint) icode___icode_base___IRoutine___closure_decls},
-  {(bigint) icode___icode_base___IRoutine___closure_decls__eq},
-  {(bigint) icode___icode_base___IRoutine___registers},
-  {(bigint) icode___icode_base___IRoutine___result},
-  {(bigint) icode___icode_base___IRoutine___escape_marks},
-  {(bigint) icode___icode_base___IRoutine___body},
-  {(bigint) icode___icode_base___IRoutine___location},
-  {(bigint) icode___icode_base___IRoutine___location__eq},
-  {(bigint) icode___icode_base___IRoutine___init},
-  {(bigint) analysis___inline_methods___IRoutine___inline_methods},
-  {(bigint) analysis___dead_method_removal___IRoutine___set_not_reachable},
+  {(bigint) 0 /* 50: ReduceAction1269 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction1269___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction1269 < ReduceAction1269: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__icode___icode_base___IRoutine(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction1269::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1269[] = "init var of ReduceAction1269";
+void INIT_ATTRIBUTES__parser___ReduceAction1269(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__icode___icode_base___IRoutine;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1269;
   fra.me.has_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_analysis___allocate_iregister_slots___IRoutine____std_slots_nb(fra.me.REG[0]) = REGB0;
-  /* ./analysis//allocate_iregister_slots.nit:271 */
-  REGB0 = TAG_Int(0);
-  ATTR_analysis___allocate_iregister_slots___IRoutine____tag_slots_nb(fra.me.REG[0]) = REGB0;
-  /* ./icode//icode_base.nit:54 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___IRoutine____closure_decls(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:58 */
-  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
-  ATTR_icode___icode_base___IRoutine____registers(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:64 */
-  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
-  ATTR_icode___icode_base___IRoutine____escape_marks(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:67 */
-  fra.me.REG[1] = NEW_ISeq_icode___icode_base___ISeq___init();
-  ATTR_icode___icode_base___IRoutine____body(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:69 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___IRoutine____location(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_icode___icode_base___IRoutine(void)
+val_t NEW_parser___ReduceAction1269(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 11);
-  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___IRoutine;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction1269;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_icode___icode_base___IRoutine(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction1269[] = "check new ReduceAction1269";
+void CHECKNEW_parser___ReduceAction1269(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_icode___icode_base___IRoutine;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction1269;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_analysis___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_analysis___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___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___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___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___icode_base___IRoutine____body(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_body", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_IRoutine_icode___icode_base___IRoutine___init(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_ReduceAction1269_parser___ReduceAction___init[] = "new ReduceAction1269 parser::ReduceAction::init";
+val_t NEW_ReduceAction1269_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[2] = {0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 72;
-  fra.me.meth = LOCATE_NEW_IRoutine_icode___icode_base___IRoutine___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction1269_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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:72 */
-  fra.me.REG[2] = NEW_icode___icode_base___IRoutine();
-  INIT_ATTRIBUTES__icode___icode_base___IRoutine(fra.me.REG[2]);
-  icode___icode_base___IRoutine___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_icode___icode_base___IRoutine(fra.me.REG[2]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction1269();
+  INIT_ATTRIBUTES__parser___ReduceAction1269(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction1269(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_icode___icode_base___IClosureDef[71] = {
-  {(bigint) 2251 /* 0: Identity */},
-  {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "IClosureDef" /* 2: Class Name */},
-  {(bigint) 3 /* 3: IClosureDef < Object: superclass typecheck marker */},
-  {(bigint) 207 /* 4: IClosureDef < IRoutine: superclass typecheck marker */},
-  {(bigint) 2251 /* 5: IClosureDef < IClosureDef: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction1271[55] = {
+  {(bigint) 2787 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction1271" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction1271 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction1271 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2787 /* 5: ReduceAction1271 < ReduceAction1271: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -143885,7 +172947,7 @@ const classtable_elt_t VFT_icode___icode_base___IClosureDef[71] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: IClosureDef < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction1271 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -143901,6 +172963,8 @@ const classtable_elt_t VFT_icode___icode_base___IClosureDef[71] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -143914,162 +172978,90 @@ const classtable_elt_t VFT_icode___icode_base___IClosureDef[71] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) compiling___compiling_icode___IRoutine___compile_signature_to_c},
-  {(bigint) compiling___compiling_icode___IRoutine___compile_inside_to_c},
-  {(bigint) compiling___compiling_icode___IRoutine___compile_to_c},
-  {(bigint) analysis___IRoutine___optimize},
-  {(bigint) analysis___icode_dump___IRoutine___dump},
-  {(bigint) analysis___allocate_iregister_slots___IRoutine___std_slots_nb},
-  {(bigint) analysis___allocate_iregister_slots___IRoutine___tag_slots_nb},
-  {(bigint) analysis___allocate_iregister_slots___IRoutine___allocate_iregister_slots},
-  {(bigint) 1 /* 55: IClosureDef < IRoutine: superclass init_table position */},
-  {(bigint) icode___icode_base___IRoutine___params},
-  {(bigint) icode___icode_base___IRoutine___closure_decls},
-  {(bigint) icode___icode_base___IRoutine___closure_decls__eq},
-  {(bigint) icode___icode_base___IRoutine___registers},
-  {(bigint) icode___icode_base___IRoutine___result},
-  {(bigint) icode___icode_base___IRoutine___escape_marks},
-  {(bigint) icode___icode_base___IRoutine___body},
-  {(bigint) icode___icode_base___IRoutine___location},
-  {(bigint) icode___icode_base___IRoutine___location__eq},
-  {(bigint) icode___icode_base___IRoutine___init},
-  {(bigint) analysis___inline_methods___IRoutine___inline_methods},
-  {(bigint) analysis___dead_method_removal___IRoutine___set_not_reachable},
-  {(bigint) compiling___compiling_icode___IClosureDef___compile_closure},
-  {(bigint) 2 /* 69: IClosureDef < IClosureDef: superclass init_table position */},
-  {(bigint) icode___icode_base___IClosureDef___init},
+  {(bigint) 0 /* 50: ReduceAction1271 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction1271___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction1271 < ReduceAction1271: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__icode___icode_base___IClosureDef(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction1271::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1271[] = "init var of ReduceAction1271";
+void INIT_ATTRIBUTES__parser___ReduceAction1271(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__icode___icode_base___IClosureDef;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1271;
   fra.me.has_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:54 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___IRoutine____closure_decls(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:58 */
-  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
-  ATTR_icode___icode_base___IRoutine____registers(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:64 */
-  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
-  ATTR_icode___icode_base___IRoutine____escape_marks(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:67 */
-  fra.me.REG[1] = NEW_ISeq_icode___icode_base___ISeq___init();
-  ATTR_icode___icode_base___IRoutine____body(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:69 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___IRoutine____location(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./analysis//allocate_iregister_slots.nit:268 */
-  REGB0 = TAG_Int(0);
-  ATTR_analysis___allocate_iregister_slots___IRoutine____std_slots_nb(fra.me.REG[0]) = REGB0;
-  /* ./analysis//allocate_iregister_slots.nit:271 */
-  REGB0 = TAG_Int(0);
-  ATTR_analysis___allocate_iregister_slots___IRoutine____tag_slots_nb(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_icode___icode_base___IClosureDef(void)
+val_t NEW_parser___ReduceAction1271(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 11);
-  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___IClosureDef;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction1271;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_icode___icode_base___IClosureDef(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction1271[] = "check new ReduceAction1271";
+void CHECKNEW_parser___ReduceAction1271(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_icode___icode_base___IClosureDef;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction1271;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_icode___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___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___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___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_analysis___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_analysis___allocate_iregister_slots___IRoutine____tag_slots_nb(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_tag_slots_nb", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_IClosureDef_icode___icode_base___IClosureDef___init(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_ReduceAction1271_parser___ReduceAction___init[] = "new ReduceAction1271 parser::ReduceAction::init";
+val_t NEW_ReduceAction1271_parser___ReduceAction___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
   val_t tmp;
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 82;
-  fra.me.meth = LOCATE_NEW_IClosureDef_icode___icode_base___IClosureDef___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction1271_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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:82 */
-  fra.me.REG[2] = NEW_icode___icode_base___IClosureDef();
-  INIT_ATTRIBUTES__icode___icode_base___IClosureDef(fra.me.REG[2]);
-  icode___icode_base___IClosureDef___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_icode___icode_base___IClosureDef(fra.me.REG[2]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction1271();
+  INIT_ATTRIBUTES__parser___ReduceAction1271(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction1271(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_icode___icode_base___ISeq[70] = {
-  {(bigint) 2867 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ISeq" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ISeq < Object: superclass typecheck marker */},
-  {(bigint) 239 /* 4: ISeq < ICode: superclass typecheck marker */},
-  {(bigint) 2247 /* 5: ISeq < ICode0: superclass typecheck marker */},
-  {(bigint) 2867 /* 6: ISeq < ISeq: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction1272[55] = {
+  {(bigint) 2783 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction1272" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction1272 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction1272 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2783 /* 5: ReduceAction1272 < ReduceAction1272: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -144081,7 +173073,7 @@ const classtable_elt_t VFT_icode___icode_base___ISeq[70] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: ISeq < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction1272 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -144097,6 +173089,8 @@ const classtable_elt_t VFT_icode___icode_base___ISeq[70] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -144110,115 +173104,91 @@ const classtable_elt_t VFT_icode___icode_base___ISeq[70] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) compiling___compiling_icode___ISeq___compile_to_c},
-  {(bigint) compiling___compiling_icode___ICode___need_result},
-  {(bigint) compiling___compiling_icode___ICode___store_result},
-  {(bigint) compiling___compiling_icode___ICode___new_result},
-  {(bigint) analysis___icode_dump___ISeq___dump},
-  {(bigint) analysis___icode_dump___ICode___dump_intern},
-  {(bigint) icode___icode_tools___ICode___dup_with},
-  {(bigint) icode___icode_tools___ISeq___inner_dup_with},
-  {(bigint) 1 /* 55: ISeq < ICode: superclass init_table position */},
-  {(bigint) icode___icode_base___ICode0___arity},
-  {(bigint) icode___icode_base___ICode___result},
-  {(bigint) icode___icode_base___ICode___result__eq},
-  {(bigint) icode___icode_base___ICode___location},
-  {(bigint) icode___icode_base___ICode___location__eq},
-  {(bigint) icode___icode_base___ICode___is_pure},
-  {(bigint) icode___icode_base___ICode___init},
-  {(bigint) 0 /* 63: ISeq < ICode0: superclass init_table position */},
-  {(bigint) icode___icode_tools___ISeq___dup_seq_to},
-  {(bigint) 3 /* 65: ISeq < ISeq: superclass init_table position */},
-  {(bigint) icode___icode_base___ISeq___icodes},
-  {(bigint) icode___icode_base___ISeq___iescape_mark},
-  {(bigint) icode___icode_base___ISeq___iescape_mark__eq},
-  {(bigint) icode___icode_base___ISeq___init},
+  {(bigint) 0 /* 50: ReduceAction1272 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction1272___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction1272 < ReduceAction1272: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ISeq::_result */
-/* 3: Attribute ISeq::_location */
-/* 4: Attribute ISeq::_icodes */
-/* 5: Attribute ISeq::_iescape_mark */
-void INIT_ATTRIBUTES__icode___icode_base___ISeq(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+/* 2: Attribute ReduceAction1272::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1272[] = "init var of ReduceAction1272";
+void INIT_ATTRIBUTES__parser___ReduceAction1272(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__icode___icode_base___ISeq;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1272;
   fra.me.has_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:167 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_icode___icode_base___ISeq____icodes(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:95 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:98 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_icode___icode_base___ISeq(void)
+val_t NEW_parser___ReduceAction1272(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___ISeq;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction1272;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_icode___icode_base___ISeq(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction1272[] = "check new ReduceAction1272";
+void CHECKNEW_parser___ReduceAction1272(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_icode___icode_base___ISeq;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction1272;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_icode___icode_base___ISeq____icodes(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_icodes", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ISeq_icode___icode_base___ISeq___init(void){
+static const char LOCATE_NEW_ReduceAction1272_parser___ReduceAction___init[] = "new ReduceAction1272 parser::ReduceAction::init";
+val_t NEW_ReduceAction1272_parser___ReduceAction___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};
+  int init_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_ISeq_icode___icode_base___ISeq___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction1272_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./icode//icode_base.nit:172 */
-  fra.me.REG[0] = NEW_icode___icode_base___ISeq();
-  INIT_ATTRIBUTES__icode___icode_base___ISeq(fra.me.REG[0]);
-  icode___icode_base___ISeq___init(fra.me.REG[0], init_table);
-  CHECKNEW_icode___icode_base___ISeq(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction1272();
+  INIT_ATTRIBUTES__parser___ReduceAction1272(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction1272(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_icode___icode_base___ILoop[72] = {
-  {(bigint) 3219 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ILoop" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ILoop < Object: superclass typecheck marker */},
-  {(bigint) 239 /* 4: ILoop < ICode: superclass typecheck marker */},
-  {(bigint) 2247 /* 5: ILoop < ICode0: superclass typecheck marker */},
-  {(bigint) 2867 /* 6: ILoop < ISeq: superclass typecheck marker */},
-  {(bigint) 3219 /* 7: ILoop < ILoop: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction1273[55] = {
+  {(bigint) 2779 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction1273" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction1273 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction1273 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2779 /* 5: ReduceAction1273 < ReduceAction1273: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -144229,7 +173199,7 @@ const classtable_elt_t VFT_icode___icode_base___ILoop[72] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: ILoop < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction1273 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -144245,6 +173215,8 @@ const classtable_elt_t VFT_icode___icode_base___ILoop[72] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -144258,116 +173230,90 @@ const classtable_elt_t VFT_icode___icode_base___ILoop[72] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) compiling___compiling_icode___ILoop___compile_to_c},
-  {(bigint) compiling___compiling_icode___ICode___need_result},
-  {(bigint) compiling___compiling_icode___ICode___store_result},
-  {(bigint) compiling___compiling_icode___ICode___new_result},
-  {(bigint) analysis___icode_dump___ILoop___dump},
-  {(bigint) analysis___icode_dump___ICode___dump_intern},
-  {(bigint) icode___icode_tools___ICode___dup_with},
-  {(bigint) icode___icode_tools___ILoop___inner_dup_with},
-  {(bigint) 1 /* 55: ILoop < ICode: superclass init_table position */},
-  {(bigint) icode___icode_base___ICode0___arity},
-  {(bigint) icode___icode_base___ICode___result},
-  {(bigint) icode___icode_base___ICode___result__eq},
-  {(bigint) icode___icode_base___ICode___location},
-  {(bigint) icode___icode_base___ICode___location__eq},
-  {(bigint) icode___icode_base___ICode___is_pure},
-  {(bigint) icode___icode_base___ICode___init},
-  {(bigint) 0 /* 63: ILoop < ICode0: superclass init_table position */},
-  {(bigint) icode___icode_tools___ISeq___dup_seq_to},
-  {(bigint) 3 /* 65: ILoop < ISeq: superclass init_table position */},
-  {(bigint) icode___icode_base___ISeq___icodes},
-  {(bigint) icode___icode_base___ISeq___iescape_mark},
-  {(bigint) icode___icode_base___ISeq___iescape_mark__eq},
-  {(bigint) icode___icode_base___ISeq___init},
-  {(bigint) 4 /* 70: ILoop < ILoop: superclass init_table position */},
-  {(bigint) icode___icode_base___ILoop___init},
+  {(bigint) 0 /* 50: ReduceAction1273 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction1273___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction1273 < ReduceAction1273: superclass init_table position */},
 };
 /* 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__icode___icode_base___ILoop(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+/* 2: Attribute ReduceAction1273::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1273[] = "init var of ReduceAction1273";
+void INIT_ATTRIBUTES__parser___ReduceAction1273(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__icode___icode_base___ILoop;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1273;
   fra.me.has_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:167 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_icode___icode_base___ISeq____icodes(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:95 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:98 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_icode___icode_base___ILoop(void)
+val_t NEW_parser___ReduceAction1273(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___ILoop;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction1273;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_icode___icode_base___ILoop(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction1273[] = "check new ReduceAction1273";
+void CHECKNEW_parser___ReduceAction1273(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_icode___icode_base___ILoop;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction1273;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_icode___icode_base___ISeq____icodes(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_icodes", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ILoop_icode___icode_base___ILoop___init(void){
+static const char LOCATE_NEW_ReduceAction1273_parser___ReduceAction___init[] = "new ReduceAction1273 parser::ReduceAction::init";
+val_t NEW_ReduceAction1273_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 179;
-  fra.me.meth = LOCATE_NEW_ILoop_icode___icode_base___ILoop___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction1273_parser___ReduceAction___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./icode//icode_base.nit:179 */
-  fra.me.REG[0] = NEW_icode___icode_base___ILoop();
-  INIT_ATTRIBUTES__icode___icode_base___ILoop(fra.me.REG[0]);
-  icode___icode_base___ILoop___init(fra.me.REG[0], init_table);
-  CHECKNEW_icode___icode_base___ILoop(fra.me.REG[0]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction1273();
+  INIT_ATTRIBUTES__parser___ReduceAction1273(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction1273(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_icode___icode_base___IIf[70] = {
-  {(bigint) 2907 /* 0: Identity */},
-  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "IIf" /* 2: Class Name */},
-  {(bigint) 3 /* 3: IIf < Object: superclass typecheck marker */},
-  {(bigint) 239 /* 4: IIf < ICode: superclass typecheck marker */},
-  {(bigint) 2243 /* 5: IIf < ICode1: superclass typecheck marker */},
-  {(bigint) 2907 /* 6: IIf < IIf: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction1275[55] = {
+  {(bigint) 2775 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction1275" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction1275 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction1275 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2775 /* 5: ReduceAction1275 < ReduceAction1275: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -144379,7 +173325,7 @@ const classtable_elt_t VFT_icode___icode_base___IIf[70] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: IIf < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction1275 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -144395,6 +173341,8 @@ const classtable_elt_t VFT_icode___icode_base___IIf[70] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -144408,130 +173356,90 @@ const classtable_elt_t VFT_icode___icode_base___IIf[70] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) compiling___compiling_icode___IIf___compile_to_c},
-  {(bigint) compiling___compiling_icode___ICode___need_result},
-  {(bigint) compiling___compiling_icode___ICode___store_result},
-  {(bigint) compiling___compiling_icode___ICode___new_result},
-  {(bigint) analysis___icode_dump___IIf___dump},
-  {(bigint) analysis___icode_dump___ICode___dump_intern},
-  {(bigint) icode___icode_tools___ICode___dup_with},
-  {(bigint) icode___icode_tools___IIf___inner_dup_with},
-  {(bigint) 1 /* 55: IIf < ICode: superclass init_table position */},
-  {(bigint) icode___icode_base___ICode1___arity},
-  {(bigint) icode___icode_base___ICode___result},
-  {(bigint) icode___icode_base___ICode___result__eq},
-  {(bigint) icode___icode_base___ICode___location},
-  {(bigint) icode___icode_base___ICode___location__eq},
-  {(bigint) icode___icode_base___ICode___is_pure},
-  {(bigint) icode___icode_base___ICode___init},
-  {(bigint) 0 /* 63: IIf < ICode1: superclass init_table position */},
-  {(bigint) icode___icode_base___ICode1___expr},
-  {(bigint) icode___icode_base___ICode1___init},
-  {(bigint) 3 /* 66: IIf < IIf: superclass init_table position */},
-  {(bigint) icode___icode_base___IIf___then_seq},
-  {(bigint) icode___icode_base___IIf___else_seq},
-  {(bigint) icode___icode_base___IIf___init},
+  {(bigint) 0 /* 50: ReduceAction1275 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction1275___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction1275 < ReduceAction1275: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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__icode___icode_base___IIf(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+/* 2: Attribute ReduceAction1275::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1275[] = "init var of ReduceAction1275";
+void INIT_ATTRIBUTES__parser___ReduceAction1275(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__icode___icode_base___IIf;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1275;
   fra.me.has_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:187 */
-  fra.me.REG[1] = NEW_ISeq_icode___icode_base___ISeq___init();
-  ATTR_icode___icode_base___IIf____then_seq(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:189 */
-  fra.me.REG[1] = NEW_ISeq_icode___icode_base___ISeq___init();
-  ATTR_icode___icode_base___IIf____else_seq(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:95 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:98 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_icode___icode_base___IIf(void)
+val_t NEW_parser___ReduceAction1275(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___IIf;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction1275;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_icode___icode_base___IIf(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction1275[] = "check new ReduceAction1275";
+void CHECKNEW_parser___ReduceAction1275(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_icode___icode_base___IIf;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction1275;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_icode___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___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___icode_base___ICode1____expr(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_expr", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_IIf_icode___icode_base___IIf___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ReduceAction1275_parser___ReduceAction___init[] = "new ReduceAction1275 parser::ReduceAction::init";
+val_t NEW_ReduceAction1275_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 190;
-  fra.me.meth = LOCATE_NEW_IIf_icode___icode_base___IIf___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction1275_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:190 */
-  fra.me.REG[1] = NEW_icode___icode_base___IIf();
-  INIT_ATTRIBUTES__icode___icode_base___IIf(fra.me.REG[1]);
-  icode___icode_base___IIf___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_icode___icode_base___IIf(fra.me.REG[1]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction1275();
+  INIT_ATTRIBUTES__parser___ReduceAction1275(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction1275(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_icode___icode_base___IEscape[67] = {
-  {(bigint) 2919 /* 0: Identity */},
-  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "IEscape" /* 2: Class Name */},
-  {(bigint) 3 /* 3: IEscape < Object: superclass typecheck marker */},
-  {(bigint) 239 /* 4: IEscape < ICode: superclass typecheck marker */},
-  {(bigint) 2247 /* 5: IEscape < ICode0: superclass typecheck marker */},
-  {(bigint) 2919 /* 6: IEscape < IEscape: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction1277[55] = {
+  {(bigint) 2771 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction1277" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction1277 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction1277 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2771 /* 5: ReduceAction1277 < ReduceAction1277: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -144543,7 +173451,7 @@ const classtable_elt_t VFT_icode___icode_base___IEscape[67] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: IEscape < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction1277 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -144559,6 +173467,8 @@ const classtable_elt_t VFT_icode___icode_base___IEscape[67] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -144572,109 +173482,90 @@ const classtable_elt_t VFT_icode___icode_base___IEscape[67] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) compiling___compiling_icode___IEscape___compile_to_c},
-  {(bigint) compiling___compiling_icode___ICode___need_result},
-  {(bigint) compiling___compiling_icode___ICode___store_result},
-  {(bigint) compiling___compiling_icode___ICode___new_result},
-  {(bigint) analysis___icode_dump___ICode___dump},
-  {(bigint) analysis___icode_dump___IEscape___dump_intern},
-  {(bigint) icode___icode_tools___ICode___dup_with},
-  {(bigint) icode___icode_tools___IEscape___inner_dup_with},
-  {(bigint) 1 /* 55: IEscape < ICode: superclass init_table position */},
-  {(bigint) icode___icode_base___ICode0___arity},
-  {(bigint) icode___icode_base___ICode___result},
-  {(bigint) icode___icode_base___ICode___result__eq},
-  {(bigint) icode___icode_base___ICode___location},
-  {(bigint) icode___icode_base___ICode___location__eq},
-  {(bigint) icode___icode_base___ICode___is_pure},
-  {(bigint) icode___icode_base___ICode___init},
-  {(bigint) 0 /* 63: IEscape < ICode0: superclass init_table position */},
-  {(bigint) 3 /* 64: IEscape < IEscape: superclass init_table position */},
-  {(bigint) icode___icode_base___IEscape___iescape_mark},
-  {(bigint) icode___icode_base___IEscape___init},
+  {(bigint) 0 /* 50: ReduceAction1277 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction1277___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction1277 < ReduceAction1277: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute IEscape::_result */
-/* 3: Attribute IEscape::_location */
-/* 4: Attribute IEscape::_iescape_mark */
-void INIT_ATTRIBUTES__icode___icode_base___IEscape(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+/* 2: Attribute ReduceAction1277::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1277[] = "init var of ReduceAction1277";
+void INIT_ATTRIBUTES__parser___ReduceAction1277(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__icode___icode_base___IEscape;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1277;
   fra.me.has_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:95 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:98 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_icode___icode_base___IEscape(void)
+val_t NEW_parser___ReduceAction1277(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___IEscape;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction1277;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_icode___icode_base___IEscape(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction1277[] = "check new ReduceAction1277";
+void CHECKNEW_parser___ReduceAction1277(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_icode___icode_base___IEscape;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction1277;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_icode___icode_base___IEscape____iescape_mark(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_iescape_mark", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_IEscape_icode___icode_base___IEscape___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ReduceAction1277_parser___ReduceAction___init[] = "new ReduceAction1277 parser::ReduceAction::init";
+val_t NEW_ReduceAction1277_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 199;
-  fra.me.meth = LOCATE_NEW_IEscape_icode___icode_base___IEscape___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction1277_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:199 */
-  fra.me.REG[1] = NEW_icode___icode_base___IEscape();
-  INIT_ATTRIBUTES__icode___icode_base___IEscape(fra.me.REG[1]);
-  icode___icode_base___IEscape___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_icode___icode_base___IEscape(fra.me.REG[1]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction1277();
+  INIT_ATTRIBUTES__parser___ReduceAction1277(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction1277(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_icode___icode_base___IAbort[68] = {
-  {(bigint) 2959 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "IAbort" /* 2: Class Name */},
-  {(bigint) 3 /* 3: IAbort < Object: superclass typecheck marker */},
-  {(bigint) 239 /* 4: IAbort < ICode: superclass typecheck marker */},
-  {(bigint) 2247 /* 5: IAbort < ICode0: superclass typecheck marker */},
-  {(bigint) 2959 /* 6: IAbort < IAbort: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction1281[55] = {
+  {(bigint) 2763 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction1281" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction1281 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction1281 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2763 /* 5: ReduceAction1281 < ReduceAction1281: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -144686,7 +173577,7 @@ const classtable_elt_t VFT_icode___icode_base___IAbort[68] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: IAbort < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction1281 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -144702,6 +173593,8 @@ const classtable_elt_t VFT_icode___icode_base___IAbort[68] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -144715,119 +173608,91 @@ const classtable_elt_t VFT_icode___icode_base___IAbort[68] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) compiling___compiling_icode___IAbort___compile_to_c},
-  {(bigint) compiling___compiling_icode___ICode___need_result},
-  {(bigint) compiling___compiling_icode___ICode___store_result},
-  {(bigint) compiling___compiling_icode___ICode___new_result},
-  {(bigint) analysis___icode_dump___ICode___dump},
-  {(bigint) analysis___icode_dump___IAbort___dump_intern},
-  {(bigint) icode___icode_tools___ICode___dup_with},
-  {(bigint) icode___icode_tools___IAbort___inner_dup_with},
-  {(bigint) 1 /* 55: IAbort < ICode: superclass init_table position */},
-  {(bigint) icode___icode_base___ICode0___arity},
-  {(bigint) icode___icode_base___ICode___result},
-  {(bigint) icode___icode_base___ICode___result__eq},
-  {(bigint) icode___icode_base___ICode___location},
-  {(bigint) icode___icode_base___ICode___location__eq},
-  {(bigint) icode___icode_base___ICode___is_pure},
-  {(bigint) icode___icode_base___ICode___init},
-  {(bigint) 0 /* 63: IAbort < ICode0: superclass init_table position */},
-  {(bigint) 3 /* 64: IAbort < IAbort: superclass init_table position */},
-  {(bigint) icode___icode_base___IAbort___texts},
-  {(bigint) icode___icode_base___IAbort___module_location},
-  {(bigint) icode___icode_base___IAbort___init},
+  {(bigint) 0 /* 50: ReduceAction1281 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction1281___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction1281 < ReduceAction1281: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute IAbort::_result */
-/* 3: Attribute IAbort::_location */
-/* 4: Attribute IAbort::_texts */
-/* 5: Attribute IAbort::_module_location */
-void INIT_ATTRIBUTES__icode___icode_base___IAbort(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+/* 2: Attribute ReduceAction1281::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1281[] = "init var of ReduceAction1281";
+void INIT_ATTRIBUTES__parser___ReduceAction1281(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__icode___icode_base___IAbort;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1281;
   fra.me.has_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:95 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:98 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_icode___icode_base___IAbort(void)
+val_t NEW_parser___ReduceAction1281(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___IAbort;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction1281;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_icode___icode_base___IAbort(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction1281[] = "check new ReduceAction1281";
+void CHECKNEW_parser___ReduceAction1281(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_icode___icode_base___IAbort;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction1281;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_icode___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___icode_base___IAbort____module_location(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_module_location", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_IAbort_icode___icode_base___IAbort___init(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_ReduceAction1281_parser___ReduceAction___init[] = "new ReduceAction1281 parser::ReduceAction::init";
+val_t NEW_ReduceAction1281_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 210;
-  fra.me.meth = LOCATE_NEW_IAbort_icode___icode_base___IAbort___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction1281_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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:210 */
-  fra.me.REG[2] = NEW_icode___icode_base___IAbort();
-  INIT_ATTRIBUTES__icode___icode_base___IAbort(fra.me.REG[2]);
-  icode___icode_base___IAbort___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_icode___icode_base___IAbort(fra.me.REG[2]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction1281();
+  INIT_ATTRIBUTES__parser___ReduceAction1281(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction1281(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_icode___icode_base___ICall[78] = {
-  {(bigint) 3227 /* 0: Identity */},
-  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ICall" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ICall < Object: superclass typecheck marker */},
-  {(bigint) 239 /* 4: ICall < ICode: superclass typecheck marker */},
-  {(bigint) 2235 /* 5: ICall < ICodeN: superclass typecheck marker */},
-  {(bigint) 2955 /* 6: ICall < IAbsCall: superclass typecheck marker */},
-  {(bigint) 3227 /* 7: ICall < ICall: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction1285[55] = {
+  {(bigint) 2759 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction1285" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction1285 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction1285 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2759 /* 5: ReduceAction1285 < ReduceAction1285: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -144838,7 +173703,7 @@ const classtable_elt_t VFT_icode___icode_base___ICall[78] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 18: ICall < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction1285 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -144854,6 +173719,8 @@ const classtable_elt_t VFT_icode___icode_base___ICall[78] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -144867,140 +173734,91 @@ const classtable_elt_t VFT_icode___icode_base___ICall[78] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) compiling___compiling_icode___IAbsCall___compile_to_c},
-  {(bigint) compiling___compiling_icode___ICode___need_result},
-  {(bigint) compiling___compiling_icode___ICode___store_result},
-  {(bigint) compiling___compiling_icode___ICode___new_result},
-  {(bigint) analysis___icode_dump___ICodeN___dump},
-  {(bigint) analysis___icode_dump___ICall___dump_intern},
-  {(bigint) icode___icode_tools___ICode___dup_with},
-  {(bigint) icode___icode_tools___ICall___inner_dup_with},
-  {(bigint) 2 /* 55: ICall < ICode: superclass init_table position */},
-  {(bigint) icode___icode_base___ICodeN___arity},
-  {(bigint) icode___icode_base___ICode___result},
-  {(bigint) icode___icode_base___ICode___result__eq},
-  {(bigint) icode___icode_base___ICode___location},
-  {(bigint) icode___icode_base___ICode___location__eq},
-  {(bigint) icode___icode_base___ICode___is_pure},
-  {(bigint) icode___icode_base___ICode___init},
-  {(bigint) analysis___icode_dump___ICode___dump},
-  {(bigint) 1 /* 64: ICall < ICodeN: superclass init_table position */},
-  {(bigint) icode___icode_base___ICodeN___exprs},
-  {(bigint) icode___icode_base___ICodeN___closure_defs},
-  {(bigint) icode___icode_base___ICodeN___closure_defs__eq},
-  {(bigint) icode___icode_base___ICodeN___init},
-  {(bigint) compiling___compiling_icode___ICall___compile_call_to_c},
-  {(bigint) 0 /* 70: ICall < IAbsCall: superclass init_table position */},
-  {(bigint) icode___icode_base___IAbsCall___property},
-  {(bigint) icode___icode_base___IAbsCall___is_explicit_from_extern},
-  {(bigint) icode___icode_base___IAbsCall___is_explicit_from_extern__eq},
-  {(bigint) icode___icode_base___IAbsCall___init},
-  {(bigint) 4 /* 75: ICall < ICall: superclass init_table position */},
-  {(bigint) icode___icode_base___ICall___init},
-  {(bigint) analysis___inline_methods___ICall___is_inlinable},
+  {(bigint) 0 /* 50: ReduceAction1285 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction1285___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction1285 < ReduceAction1285: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ICall::_result */
-/* 3: Attribute ICall::_location */
-/* 4: Attribute ICall::_exprs */
-/* 5: Attribute ICall::_closure_defs */
-/* 6: Attribute ICall::_property */
-/* 7: Attribute ICall::@is_explicit_from_extern */
-void INIT_ATTRIBUTES__icode___icode_base___ICall(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction1285::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1285[] = "init var of ReduceAction1285";
+void INIT_ATTRIBUTES__parser___ReduceAction1285(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__icode___icode_base___ICall;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1285;
   fra.me.has_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:226 */
-  REGB0 = TAG_Bool(false);
-  ATTR_icode___icode_base___IAbsCall_____atis_explicit_from_extern(fra.me.REG[0]) = REGB0;
-  /* ./icode//icode_base.nit:95 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:98 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_icode___icode_base___ICall(void)
+val_t NEW_parser___ReduceAction1285(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 8);
-  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___ICall;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction1285;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_icode___icode_base___ICall(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction1285[] = "check new ReduceAction1285";
+void CHECKNEW_parser___ReduceAction1285(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_icode___icode_base___ICall;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction1285;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_icode___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___icode_base___IAbsCall_____atis_explicit_from_extern(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "@is_explicit_from_extern", LOCATE_nitc, 0);
-  }
-  REGB0 = TAG_Bool(ATTR_icode___icode_base___ICodeN____exprs(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_exprs", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ICall_icode___icode_base___ICall___init(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_ReduceAction1285_parser___ReduceAction___init[] = "new ReduceAction1285 parser::ReduceAction::init";
+val_t NEW_ReduceAction1285_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 239;
-  fra.me.meth = LOCATE_NEW_ICall_icode___icode_base___ICall___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction1285_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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:239 */
-  fra.me.REG[2] = NEW_icode___icode_base___ICall();
-  INIT_ATTRIBUTES__icode___icode_base___ICall(fra.me.REG[2]);
-  icode___icode_base___ICall___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_icode___icode_base___ICall(fra.me.REG[2]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction1285();
+  INIT_ATTRIBUTES__parser___ReduceAction1285(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction1285(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_icode___icode_base___ISuper[77] = {
-  {(bigint) 3203 /* 0: Identity */},
-  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ISuper" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ISuper < Object: superclass typecheck marker */},
-  {(bigint) 239 /* 4: ISuper < ICode: superclass typecheck marker */},
-  {(bigint) 2235 /* 5: ISuper < ICodeN: superclass typecheck marker */},
-  {(bigint) 2955 /* 6: ISuper < IAbsCall: superclass typecheck marker */},
-  {(bigint) 3203 /* 7: ISuper < ISuper: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction1286[55] = {
+  {(bigint) 2755 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction1286" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction1286 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction1286 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2755 /* 5: ReduceAction1286 < ReduceAction1286: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -145011,7 +173829,7 @@ const classtable_elt_t VFT_icode___icode_base___ISuper[77] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 18: ISuper < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction1286 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -145027,6 +173845,8 @@ const classtable_elt_t VFT_icode___icode_base___ISuper[77] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -145040,139 +173860,91 @@ const classtable_elt_t VFT_icode___icode_base___ISuper[77] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) compiling___compiling_icode___IAbsCall___compile_to_c},
-  {(bigint) compiling___compiling_icode___ICode___need_result},
-  {(bigint) compiling___compiling_icode___ICode___store_result},
-  {(bigint) compiling___compiling_icode___ICode___new_result},
-  {(bigint) analysis___icode_dump___ICodeN___dump},
-  {(bigint) analysis___icode_dump___ISuper___dump_intern},
-  {(bigint) icode___icode_tools___ICode___dup_with},
-  {(bigint) icode___icode_tools___ISuper___inner_dup_with},
-  {(bigint) 2 /* 55: ISuper < ICode: superclass init_table position */},
-  {(bigint) icode___icode_base___ICodeN___arity},
-  {(bigint) icode___icode_base___ICode___result},
-  {(bigint) icode___icode_base___ICode___result__eq},
-  {(bigint) icode___icode_base___ICode___location},
-  {(bigint) icode___icode_base___ICode___location__eq},
-  {(bigint) icode___icode_base___ICode___is_pure},
-  {(bigint) icode___icode_base___ICode___init},
-  {(bigint) analysis___icode_dump___ICode___dump},
-  {(bigint) 1 /* 64: ISuper < ICodeN: superclass init_table position */},
-  {(bigint) icode___icode_base___ICodeN___exprs},
-  {(bigint) icode___icode_base___ICodeN___closure_defs},
-  {(bigint) icode___icode_base___ICodeN___closure_defs__eq},
-  {(bigint) icode___icode_base___ICodeN___init},
-  {(bigint) compiling___compiling_icode___ISuper___compile_call_to_c},
-  {(bigint) 0 /* 70: ISuper < IAbsCall: superclass init_table position */},
-  {(bigint) icode___icode_base___IAbsCall___property},
-  {(bigint) icode___icode_base___IAbsCall___is_explicit_from_extern},
-  {(bigint) icode___icode_base___IAbsCall___is_explicit_from_extern__eq},
-  {(bigint) icode___icode_base___IAbsCall___init},
-  {(bigint) 4 /* 75: ISuper < ISuper: superclass init_table position */},
-  {(bigint) icode___icode_base___ISuper___init},
+  {(bigint) 0 /* 50: ReduceAction1286 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction1286___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction1286 < ReduceAction1286: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ISuper::_result */
-/* 3: Attribute ISuper::_location */
-/* 4: Attribute ISuper::_exprs */
-/* 5: Attribute ISuper::_closure_defs */
-/* 6: Attribute ISuper::_property */
-/* 7: Attribute ISuper::@is_explicit_from_extern */
-void INIT_ATTRIBUTES__icode___icode_base___ISuper(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction1286::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1286[] = "init var of ReduceAction1286";
+void INIT_ATTRIBUTES__parser___ReduceAction1286(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__icode___icode_base___ISuper;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1286;
   fra.me.has_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:226 */
-  REGB0 = TAG_Bool(false);
-  ATTR_icode___icode_base___IAbsCall_____atis_explicit_from_extern(fra.me.REG[0]) = REGB0;
-  /* ./icode//icode_base.nit:95 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:98 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_icode___icode_base___ISuper(void)
+val_t NEW_parser___ReduceAction1286(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 8);
-  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___ISuper;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction1286;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_icode___icode_base___ISuper(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction1286[] = "check new ReduceAction1286";
+void CHECKNEW_parser___ReduceAction1286(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_icode___icode_base___ISuper;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction1286;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_icode___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___icode_base___IAbsCall_____atis_explicit_from_extern(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "@is_explicit_from_extern", LOCATE_nitc, 0);
-  }
-  REGB0 = TAG_Bool(ATTR_icode___icode_base___ICodeN____exprs(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_exprs", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ISuper_icode___icode_base___ISuper___init(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_ReduceAction1286_parser___ReduceAction___init[] = "new ReduceAction1286 parser::ReduceAction::init";
+val_t NEW_ReduceAction1286_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 246;
-  fra.me.meth = LOCATE_NEW_ISuper_icode___icode_base___ISuper___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction1286_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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:246 */
-  fra.me.REG[2] = NEW_icode___icode_base___ISuper();
-  INIT_ATTRIBUTES__icode___icode_base___ISuper(fra.me.REG[2]);
-  icode___icode_base___ISuper___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_icode___icode_base___ISuper(fra.me.REG[2]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction1286();
+  INIT_ATTRIBUTES__parser___ReduceAction1286(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction1286(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_icode___icode_base___INew[78] = {
-  {(bigint) 3215 /* 0: Identity */},
-  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "INew" /* 2: Class Name */},
-  {(bigint) 3 /* 3: INew < Object: superclass typecheck marker */},
-  {(bigint) 239 /* 4: INew < ICode: superclass typecheck marker */},
-  {(bigint) 2235 /* 5: INew < ICodeN: superclass typecheck marker */},
-  {(bigint) 2955 /* 6: INew < IAbsCall: superclass typecheck marker */},
-  {(bigint) 3215 /* 7: INew < INew: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction1287[55] = {
+  {(bigint) 2751 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction1287" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction1287 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction1287 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2751 /* 5: ReduceAction1287 < ReduceAction1287: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -145183,7 +173955,7 @@ const classtable_elt_t VFT_icode___icode_base___INew[78] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 18: INew < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction1287 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -145199,6 +173971,8 @@ const classtable_elt_t VFT_icode___icode_base___INew[78] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -145212,147 +173986,90 @@ const classtable_elt_t VFT_icode___icode_base___INew[78] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) compiling___compiling_icode___IAbsCall___compile_to_c},
-  {(bigint) compiling___compiling_icode___ICode___need_result},
-  {(bigint) compiling___compiling_icode___ICode___store_result},
-  {(bigint) compiling___compiling_icode___ICode___new_result},
-  {(bigint) analysis___icode_dump___ICodeN___dump},
-  {(bigint) analysis___icode_dump___INew___dump_intern},
-  {(bigint) icode___icode_tools___ICode___dup_with},
-  {(bigint) icode___icode_tools___INew___inner_dup_with},
-  {(bigint) 2 /* 55: INew < ICode: superclass init_table position */},
-  {(bigint) icode___icode_base___ICodeN___arity},
-  {(bigint) icode___icode_base___ICode___result},
-  {(bigint) icode___icode_base___ICode___result__eq},
-  {(bigint) icode___icode_base___ICode___location},
-  {(bigint) icode___icode_base___ICode___location__eq},
-  {(bigint) icode___icode_base___ICode___is_pure},
-  {(bigint) icode___icode_base___ICode___init},
-  {(bigint) analysis___icode_dump___ICode___dump},
-  {(bigint) 1 /* 64: INew < ICodeN: superclass init_table position */},
-  {(bigint) icode___icode_base___ICodeN___exprs},
-  {(bigint) icode___icode_base___ICodeN___closure_defs},
-  {(bigint) icode___icode_base___ICodeN___closure_defs__eq},
-  {(bigint) icode___icode_base___ICodeN___init},
-  {(bigint) compiling___compiling_icode___INew___compile_call_to_c},
-  {(bigint) 0 /* 70: INew < IAbsCall: superclass init_table position */},
-  {(bigint) icode___icode_base___IAbsCall___property},
-  {(bigint) icode___icode_base___IAbsCall___is_explicit_from_extern},
-  {(bigint) icode___icode_base___IAbsCall___is_explicit_from_extern__eq},
-  {(bigint) icode___icode_base___IAbsCall___init},
-  {(bigint) 4 /* 75: INew < INew: superclass init_table position */},
-  {(bigint) icode___icode_base___INew___stype},
-  {(bigint) icode___icode_base___INew___init},
+  {(bigint) 0 /* 50: ReduceAction1287 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction1287___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction1287 < ReduceAction1287: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 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::@is_explicit_from_extern */
-/* 8: Attribute INew::_stype */
-void INIT_ATTRIBUTES__icode___icode_base___INew(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction1287::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1287[] = "init var of ReduceAction1287";
+void INIT_ATTRIBUTES__parser___ReduceAction1287(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__icode___icode_base___INew;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1287;
   fra.me.has_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:226 */
-  REGB0 = TAG_Bool(false);
-  ATTR_icode___icode_base___IAbsCall_____atis_explicit_from_extern(fra.me.REG[0]) = REGB0;
-  /* ./icode//icode_base.nit:95 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:98 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_icode___icode_base___INew(void)
+val_t NEW_parser___ReduceAction1287(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 9);
-  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___INew;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction1287;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_icode___icode_base___INew(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction1287[] = "check new ReduceAction1287";
+void CHECKNEW_parser___ReduceAction1287(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_icode___icode_base___INew;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction1287;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_icode___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___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___icode_base___IAbsCall_____atis_explicit_from_extern(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "@is_explicit_from_extern", LOCATE_nitc, 0);
-  }
-  REGB0 = TAG_Bool(ATTR_icode___icode_base___ICodeN____exprs(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_exprs", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_INew_icode___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;
+static const char LOCATE_NEW_ReduceAction1287_parser___ReduceAction___init[] = "new ReduceAction1287 parser::ReduceAction::init";
+val_t NEW_ReduceAction1287_parser___ReduceAction___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};
+  int init_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_INew_icode___icode_base___INew___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction1287_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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:260 */
-  fra.me.REG[3] = NEW_icode___icode_base___INew();
-  INIT_ATTRIBUTES__icode___icode_base___INew(fra.me.REG[3]);
-  icode___icode_base___INew___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
-  CHECKNEW_icode___icode_base___INew(fra.me.REG[3]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction1287();
+  INIT_ATTRIBUTES__parser___ReduceAction1287(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction1287(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[3];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_icode___icode_base___IAllocateInstance[67] = {
-  {(bigint) 2951 /* 0: Identity */},
-  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "IAllocateInstance" /* 2: Class Name */},
-  {(bigint) 3 /* 3: IAllocateInstance < Object: superclass typecheck marker */},
-  {(bigint) 239 /* 4: IAllocateInstance < ICode: superclass typecheck marker */},
-  {(bigint) 2247 /* 5: IAllocateInstance < ICode0: superclass typecheck marker */},
-  {(bigint) 2951 /* 6: IAllocateInstance < IAllocateInstance: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction1288[55] = {
+  {(bigint) 2747 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction1288" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction1288 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction1288 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2747 /* 5: ReduceAction1288 < ReduceAction1288: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -145364,7 +174081,7 @@ const classtable_elt_t VFT_icode___icode_base___IAllocateInstance[67] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: IAllocateInstance < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction1288 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -145380,6 +174097,8 @@ const classtable_elt_t VFT_icode___icode_base___IAllocateInstance[67] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -145393,110 +174112,91 @@ const classtable_elt_t VFT_icode___icode_base___IAllocateInstance[67] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) compiling___compiling_icode___IAllocateInstance___compile_to_c},
-  {(bigint) compiling___compiling_icode___ICode___need_result},
-  {(bigint) compiling___compiling_icode___ICode___store_result},
-  {(bigint) compiling___compiling_icode___ICode___new_result},
-  {(bigint) analysis___icode_dump___ICode___dump},
-  {(bigint) analysis___icode_dump___IAllocateInstance___dump_intern},
-  {(bigint) icode___icode_tools___ICode___dup_with},
-  {(bigint) icode___icode_tools___IAllocateInstance___inner_dup_with},
-  {(bigint) 1 /* 55: IAllocateInstance < ICode: superclass init_table position */},
-  {(bigint) icode___icode_base___ICode0___arity},
-  {(bigint) icode___icode_base___ICode___result},
-  {(bigint) icode___icode_base___ICode___result__eq},
-  {(bigint) icode___icode_base___ICode___location},
-  {(bigint) icode___icode_base___ICode___location__eq},
-  {(bigint) icode___icode_base___ICode___is_pure},
-  {(bigint) icode___icode_base___ICode___init},
-  {(bigint) 0 /* 63: IAllocateInstance < ICode0: superclass init_table position */},
-  {(bigint) 3 /* 64: IAllocateInstance < IAllocateInstance: superclass init_table position */},
-  {(bigint) icode___icode_base___IAllocateInstance___stype},
-  {(bigint) icode___icode_base___IAllocateInstance___init},
+  {(bigint) 0 /* 50: ReduceAction1288 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction1288___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction1288 < ReduceAction1288: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute IAllocateInstance::_result */
-/* 3: Attribute IAllocateInstance::_location */
-/* 4: Attribute IAllocateInstance::_stype */
-void INIT_ATTRIBUTES__icode___icode_base___IAllocateInstance(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+/* 2: Attribute ReduceAction1288::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1288[] = "init var of ReduceAction1288";
+void INIT_ATTRIBUTES__parser___ReduceAction1288(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__icode___icode_base___IAllocateInstance;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1288;
   fra.me.has_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:95 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:98 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_icode___icode_base___IAllocateInstance(void)
+val_t NEW_parser___ReduceAction1288(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___IAllocateInstance;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction1288;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_icode___icode_base___IAllocateInstance(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction1288[] = "check new ReduceAction1288";
+void CHECKNEW_parser___ReduceAction1288(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_icode___icode_base___IAllocateInstance;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction1288;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_icode___icode_base___IAllocateInstance____stype(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_stype", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_IAllocateInstance_icode___icode_base___IAllocateInstance___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ReduceAction1288_parser___ReduceAction___init[] = "new ReduceAction1288 parser::ReduceAction::init";
+val_t NEW_ReduceAction1288_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 274;
-  fra.me.meth = LOCATE_NEW_IAllocateInstance_icode___icode_base___IAllocateInstance___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction1288_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:274 */
-  fra.me.REG[1] = NEW_icode___icode_base___IAllocateInstance();
-  INIT_ATTRIBUTES__icode___icode_base___IAllocateInstance(fra.me.REG[1]);
-  icode___icode_base___IAllocateInstance___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_icode___icode_base___IAllocateInstance(fra.me.REG[1]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction1288();
+  INIT_ATTRIBUTES__parser___ReduceAction1288(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction1288(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_icode___icode_base___IStaticCall[77] = {
-  {(bigint) 3207 /* 0: Identity */},
-  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "IStaticCall" /* 2: Class Name */},
-  {(bigint) 3 /* 3: IStaticCall < Object: superclass typecheck marker */},
-  {(bigint) 239 /* 4: IStaticCall < ICode: superclass typecheck marker */},
-  {(bigint) 2235 /* 5: IStaticCall < ICodeN: superclass typecheck marker */},
-  {(bigint) 2955 /* 6: IStaticCall < IAbsCall: superclass typecheck marker */},
-  {(bigint) 3207 /* 7: IStaticCall < IStaticCall: superclass typecheck marker */},
+const classtable_elt_t VFT_parser___ReduceAction1289[55] = {
+  {(bigint) 2743 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReduceAction1289" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReduceAction1289 < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 4: ReduceAction1289 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 2743 /* 5: ReduceAction1289 < ReduceAction1289: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -145507,7 +174207,7 @@ const classtable_elt_t VFT_icode___icode_base___IStaticCall[77] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 18: IStaticCall < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReduceAction1289 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -145523,6 +174223,8 @@ const classtable_elt_t VFT_icode___icode_base___IStaticCall[77] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -145536,138 +174238,90 @@ const classtable_elt_t VFT_icode___icode_base___IStaticCall[77] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) compiling___compiling_icode___IAbsCall___compile_to_c},
-  {(bigint) compiling___compiling_icode___ICode___need_result},
-  {(bigint) compiling___compiling_icode___ICode___store_result},
-  {(bigint) compiling___compiling_icode___ICode___new_result},
-  {(bigint) analysis___icode_dump___ICodeN___dump},
-  {(bigint) analysis___icode_dump___IStaticCall___dump_intern},
-  {(bigint) icode___icode_tools___ICode___dup_with},
-  {(bigint) icode___icode_tools___IStaticCall___inner_dup_with},
-  {(bigint) 2 /* 55: IStaticCall < ICode: superclass init_table position */},
-  {(bigint) icode___icode_base___ICodeN___arity},
-  {(bigint) icode___icode_base___ICode___result},
-  {(bigint) icode___icode_base___ICode___result__eq},
-  {(bigint) icode___icode_base___ICode___location},
-  {(bigint) icode___icode_base___ICode___location__eq},
-  {(bigint) icode___icode_base___ICode___is_pure},
-  {(bigint) icode___icode_base___ICode___init},
-  {(bigint) analysis___icode_dump___ICode___dump},
-  {(bigint) 1 /* 64: IStaticCall < ICodeN: superclass init_table position */},
-  {(bigint) icode___icode_base___ICodeN___exprs},
-  {(bigint) icode___icode_base___ICodeN___closure_defs},
-  {(bigint) icode___icode_base___ICodeN___closure_defs__eq},
-  {(bigint) icode___icode_base___ICodeN___init},
-  {(bigint) compiling___compiling_icode___IStaticCall___compile_call_to_c},
-  {(bigint) 0 /* 70: IStaticCall < IAbsCall: superclass init_table position */},
-  {(bigint) icode___icode_base___IAbsCall___property},
-  {(bigint) icode___icode_base___IAbsCall___is_explicit_from_extern},
-  {(bigint) icode___icode_base___IAbsCall___is_explicit_from_extern__eq},
-  {(bigint) icode___icode_base___IAbsCall___init},
-  {(bigint) 4 /* 75: IStaticCall < IStaticCall: superclass init_table position */},
-  {(bigint) icode___icode_base___IStaticCall___init},
+  {(bigint) 0 /* 50: ReduceAction1289 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction1289___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 54: ReduceAction1289 < ReduceAction1289: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute IStaticCall::_result */
-/* 3: Attribute IStaticCall::_location */
-/* 4: Attribute IStaticCall::_exprs */
-/* 5: Attribute IStaticCall::_closure_defs */
-/* 6: Attribute IStaticCall::_property */
-/* 7: Attribute IStaticCall::@is_explicit_from_extern */
-void INIT_ATTRIBUTES__icode___icode_base___IStaticCall(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute ReduceAction1289::_goto */
+static const char LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1289[] = "init var of ReduceAction1289";
+void INIT_ATTRIBUTES__parser___ReduceAction1289(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__icode___icode_base___IStaticCall;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__parser___ReduceAction1289;
   fra.me.has_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:226 */
-  REGB0 = TAG_Bool(false);
-  ATTR_icode___icode_base___IAbsCall_____atis_explicit_from_extern(fra.me.REG[0]) = REGB0;
-  /* ./icode//icode_base.nit:95 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:98 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_icode___icode_base___IStaticCall(void)
+val_t NEW_parser___ReduceAction1289(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 8);
-  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___IStaticCall;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_parser___ReduceAction1289;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_icode___icode_base___IStaticCall(val_t p0){
+static const char LOCATE_CHECKNEW_parser___ReduceAction1289[] = "check new ReduceAction1289";
+void CHECKNEW_parser___ReduceAction1289(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_icode___icode_base___IStaticCall;
+  fra.me.meth = LOCATE_CHECKNEW_parser___ReduceAction1289;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_icode___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___icode_base___IAbsCall_____atis_explicit_from_extern(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "@is_explicit_from_extern", LOCATE_nitc, 0);
-  }
-  REGB0 = TAG_Bool(ATTR_icode___icode_base___ICodeN____exprs(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_exprs", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_IStaticCall_icode___icode_base___IStaticCall___init(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_ReduceAction1289_parser___ReduceAction___init[] = "new ReduceAction1289 parser::ReduceAction::init";
+val_t NEW_ReduceAction1289_parser___ReduceAction___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};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 283;
-  fra.me.meth = LOCATE_NEW_IStaticCall_icode___icode_base___IStaticCall___init;
+  fra.me.line = 1566;
+  fra.me.meth = LOCATE_NEW_ReduceAction1289_parser___ReduceAction___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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:283 */
-  fra.me.REG[2] = NEW_icode___icode_base___IStaticCall();
-  INIT_ATTRIBUTES__icode___icode_base___IStaticCall(fra.me.REG[2]);
-  icode___icode_base___IStaticCall___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_icode___icode_base___IStaticCall(fra.me.REG[2]);
+  REGB0 = p0;
+  /* parser/parser.nit:1566 */
+  fra.me.REG[0] = NEW_parser___ReduceAction1289();
+  INIT_ATTRIBUTES__parser___ReduceAction1289(fra.me.REG[0]);
+  parser___ReduceAction___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_parser___ReduceAction1289(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_icode___icode_base___ICheckInstance[69] = {
-  {(bigint) 2927 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ICheckInstance" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ICheckInstance < Object: superclass typecheck marker */},
-  {(bigint) 239 /* 4: ICheckInstance < ICode: superclass typecheck marker */},
-  {(bigint) 2243 /* 5: ICheckInstance < ICode1: superclass typecheck marker */},
-  {(bigint) 2927 /* 6: ICheckInstance < ICheckInstance: superclass typecheck marker */},
+const classtable_elt_t VFT_opts___OptionText[70] = {
+  {(bigint) 3035 /* 0: Identity */},
+  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "OptionText" /* 2: Class Name */},
+  {(bigint) 3 /* 3: OptionText < Object: superclass typecheck marker */},
+  {(bigint) 115 /* 4: OptionText < Option: superclass typecheck marker */},
+  {(bigint) 3035 /* 5: OptionText < OptionText: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -145679,7 +174333,7 @@ const classtable_elt_t VFT_icode___icode_base___ICheckInstance[69] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: ICheckInstance < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: OptionText < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -145695,7 +174349,9 @@ const classtable_elt_t VFT_icode___icode_base___ICheckInstance[69] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) opts___OptionText___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -145708,119 +174364,131 @@ const classtable_elt_t VFT_icode___icode_base___ICheckInstance[69] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) compiling___compiling_icode___ICheckInstance___compile_to_c},
-  {(bigint) compiling___compiling_icode___ICode___need_result},
-  {(bigint) compiling___compiling_icode___ICode___store_result},
-  {(bigint) compiling___compiling_icode___ICode___new_result},
-  {(bigint) analysis___icode_dump___ICode___dump},
-  {(bigint) analysis___icode_dump___ICheckInstance___dump_intern},
-  {(bigint) icode___icode_tools___ICode___dup_with},
-  {(bigint) icode___icode_tools___ICheckInstance___inner_dup_with},
-  {(bigint) 1 /* 55: ICheckInstance < ICode: superclass init_table position */},
-  {(bigint) icode___icode_base___ICode1___arity},
-  {(bigint) icode___icode_base___ICode___result},
-  {(bigint) icode___icode_base___ICode___result__eq},
-  {(bigint) icode___icode_base___ICode___location},
-  {(bigint) icode___icode_base___ICode___location__eq},
-  {(bigint) icode___icode_base___ICode___is_pure},
-  {(bigint) icode___icode_base___ICode___init},
-  {(bigint) 0 /* 63: ICheckInstance < ICode1: superclass init_table position */},
-  {(bigint) icode___icode_base___ICode1___expr},
-  {(bigint) icode___icode_base___ICode1___init},
-  {(bigint) 3 /* 66: ICheckInstance < ICheckInstance: superclass init_table position */},
-  {(bigint) icode___icode_base___ICheckInstance___stype},
-  {(bigint) icode___icode_base___ICheckInstance___init},
+  {(bigint) 0 /* 50: OptionText < Option: superclass init_table position */},
+  {(bigint) opts___Option___names},
+  {(bigint) 3 /* 52: VT OptionText::VALUE : id of Object */},
+  {(bigint) 3 /* 53: VT OptionText::VALUE : color of Object */},
+  {(bigint) opts___Option___helptext},
+  {(bigint) opts___Option___errors},
+  {(bigint) opts___Option___mandatory},
+  {(bigint) opts___Option___mandatory__eq},
+  {(bigint) opts___Option___read},
+  {(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 /* 68: OptionText < OptionText: superclass init_table position */},
+  {(bigint) opts___OptionText___init},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ICheckInstance::_result */
-/* 3: Attribute ICheckInstance::_location */
-/* 4: Attribute ICheckInstance::_expr */
-/* 5: Attribute ICheckInstance::_stype */
-void INIT_ATTRIBUTES__icode___icode_base___ICheckInstance(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+/* 2: Attribute OptionText::_names */
+/* 3: Attribute OptionText::_helptext */
+/* 4: Attribute OptionText::_errors */
+/* 5: Attribute OptionText::_mandatory */
+/* 6: Attribute OptionText::_read */
+/* 7: Attribute OptionText::_value */
+/* 8: Attribute OptionText::_default_value */
+static const char LOCATE_INIT_ATTRIBUTES__opts___OptionText[] = "init var of OptionText";
+void INIT_ATTRIBUTES__opts___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__icode___icode_base___ICheckInstance;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__opts___OptionText;
   fra.me.has_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:95 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:98 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_icode___icode_base___ICheckInstance(void)
+val_t NEW_opts___OptionText(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___ICheckInstance;
+  obj = alloc(sizeof(val_t) * 9);
+  obj->vft = (classtable_elt_t*)VFT_opts___OptionText;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_icode___icode_base___ICheckInstance(val_t p0){
+static const char LOCATE_CHECKNEW_opts___OptionText[] = "check new OptionText";
+void CHECKNEW_opts___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_icode___icode_base___ICheckInstance;
+  fra.me.meth = LOCATE_CHECKNEW_opts___OptionText;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_icode___icode_base___ICheckInstance____stype(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_opts___Option____names(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_stype", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_names", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_icode___icode_base___ICode1____expr(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_opts___Option____helptext(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_expr", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_helptext", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_opts___Option____errors(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_errors", 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);
+  }
+  REGB0 = TAG_Bool(ATTR_opts___Option____read(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_read", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ICheckInstance_icode___icode_base___ICheckInstance___init(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_OptionText_opts___OptionText___init[] = "new OptionText opts::OptionText::init";
+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[4] = {0, 0, 0, 0};
+  int init_table[3] = {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_ICheckInstance_icode___icode_base___ICheckInstance___init;
+  fra.me.line = 97;
+  fra.me.meth = LOCATE_NEW_OptionText_opts___OptionText___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   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:291 */
-  fra.me.REG[2] = NEW_icode___icode_base___ICheckInstance();
-  INIT_ATTRIBUTES__icode___icode_base___ICheckInstance(fra.me.REG[2]);
-  icode___icode_base___ICheckInstance___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_icode___icode_base___ICheckInstance(fra.me.REG[2]);
+  /* ../lib/opts.nit:97 */
+  fra.me.REG[1] = NEW_opts___OptionText();
+  INIT_ATTRIBUTES__opts___OptionText(fra.me.REG[1]);
+  opts___OptionText___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_opts___OptionText(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[1];
 }
-const classtable_elt_t VFT_icode___icode_base___IInitAttributes[69] = {
-  {(bigint) 2903 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "IInitAttributes" /* 2: Class Name */},
-  {(bigint) 3 /* 3: IInitAttributes < Object: superclass typecheck marker */},
-  {(bigint) 239 /* 4: IInitAttributes < ICode: superclass typecheck marker */},
-  {(bigint) 2243 /* 5: IInitAttributes < ICode1: superclass typecheck marker */},
-  {(bigint) 2903 /* 6: IInitAttributes < IInitAttributes: superclass typecheck marker */},
+const classtable_elt_t VFT_opts___OptionBool[71] = {
+  {(bigint) 3047 /* 0: Identity */},
+  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "OptionBool" /* 2: Class Name */},
+  {(bigint) 3 /* 3: OptionBool < Object: superclass typecheck marker */},
+  {(bigint) 115 /* 4: OptionBool < Option: superclass typecheck marker */},
+  {(bigint) 3047 /* 5: OptionBool < OptionBool: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -145832,7 +174500,7 @@ const classtable_elt_t VFT_icode___icode_base___IInitAttributes[69] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: IInitAttributes < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: OptionBool < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -145848,7 +174516,9 @@ const classtable_elt_t VFT_icode___icode_base___IInitAttributes[69] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) opts___Option___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -145861,119 +174531,134 @@ const classtable_elt_t VFT_icode___icode_base___IInitAttributes[69] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) compiling___compiling_icode___IInitAttributes___compile_to_c},
-  {(bigint) compiling___compiling_icode___ICode___need_result},
-  {(bigint) compiling___compiling_icode___ICode___store_result},
-  {(bigint) compiling___compiling_icode___ICode___new_result},
-  {(bigint) analysis___icode_dump___ICode___dump},
-  {(bigint) analysis___icode_dump___IInitAttributes___dump_intern},
-  {(bigint) icode___icode_tools___ICode___dup_with},
-  {(bigint) icode___icode_tools___IInitAttributes___inner_dup_with},
-  {(bigint) 1 /* 55: IInitAttributes < ICode: superclass init_table position */},
-  {(bigint) icode___icode_base___ICode1___arity},
-  {(bigint) icode___icode_base___ICode___result},
-  {(bigint) icode___icode_base___ICode___result__eq},
-  {(bigint) icode___icode_base___ICode___location},
-  {(bigint) icode___icode_base___ICode___location__eq},
-  {(bigint) icode___icode_base___ICode___is_pure},
-  {(bigint) icode___icode_base___ICode___init},
-  {(bigint) 0 /* 63: IInitAttributes < ICode1: superclass init_table position */},
-  {(bigint) icode___icode_base___ICode1___expr},
-  {(bigint) icode___icode_base___ICode1___init},
-  {(bigint) 3 /* 66: IInitAttributes < IInitAttributes: superclass init_table position */},
-  {(bigint) icode___icode_base___IInitAttributes___stype},
-  {(bigint) icode___icode_base___IInitAttributes___init},
+  {(bigint) 0 /* 50: OptionBool < Option: superclass init_table position */},
+  {(bigint) opts___Option___names},
+  {(bigint) -13 /* 52: VT OptionBool::VALUE : id of Bool */},
+  {(bigint) 4 /* 53: VT OptionBool::VALUE : color of Bool */},
+  {(bigint) opts___Option___helptext},
+  {(bigint) opts___Option___errors},
+  {(bigint) opts___Option___mandatory},
+  {(bigint) opts___Option___mandatory__eq},
+  {(bigint) opts___Option___read},
+  {(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 /* 68: OptionBool < OptionBool: superclass init_table position */},
+  {(bigint) opts___OptionBool___init},
+  {(bigint) opts___Option___read_param},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute IInitAttributes::_result */
-/* 3: Attribute IInitAttributes::_location */
-/* 4: Attribute IInitAttributes::_expr */
-/* 5: Attribute IInitAttributes::_stype */
-void INIT_ATTRIBUTES__icode___icode_base___IInitAttributes(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+/* 2: Attribute OptionBool::_names */
+/* 3: Attribute OptionBool::_helptext */
+/* 4: Attribute OptionBool::_errors */
+/* 5: Attribute OptionBool::_mandatory */
+/* 6: Attribute OptionBool::_read */
+/* 7: Attribute OptionBool::_value */
+/* 8: Attribute OptionBool::_default_value */
+static const char LOCATE_INIT_ATTRIBUTES__opts___OptionBool[] = "init var of OptionBool";
+void INIT_ATTRIBUTES__opts___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__icode___icode_base___IInitAttributes;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__opts___OptionBool;
   fra.me.has_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:95 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:98 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_icode___icode_base___IInitAttributes(void)
+val_t NEW_opts___OptionBool(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___IInitAttributes;
+  obj = alloc(sizeof(val_t) * 9);
+  obj->vft = (classtable_elt_t*)VFT_opts___OptionBool;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_icode___icode_base___IInitAttributes(val_t p0){
+static const char LOCATE_CHECKNEW_opts___OptionBool[] = "check new OptionBool";
+void CHECKNEW_opts___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_icode___icode_base___IInitAttributes;
+  fra.me.meth = LOCATE_CHECKNEW_opts___OptionBool;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_icode___icode_base___IInitAttributes____stype(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_opts___Option____names(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_stype", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_names", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_icode___icode_base___ICode1____expr(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_opts___Option____helptext(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_expr", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_helptext", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_opts___Option____errors(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_errors", 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);
+  }
+  REGB0 = TAG_Bool(ATTR_opts___Option____read(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_read", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_IInitAttributes_icode___icode_base___IInitAttributes___init(val_t p0, val_t p1){
+static const char LOCATE_NEW_OptionBool_opts___OptionBool___init[] = "new OptionBool opts::OptionBool::init";
+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[4] = {0, 0, 0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 303;
-  fra.me.meth = LOCATE_NEW_IInitAttributes_icode___icode_base___IInitAttributes___init;
+  fra.me.line = 108;
+  fra.me.meth = LOCATE_NEW_OptionBool_opts___OptionBool___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   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:303 */
-  fra.me.REG[2] = NEW_icode___icode_base___IInitAttributes();
-  INIT_ATTRIBUTES__icode___icode_base___IInitAttributes(fra.me.REG[2]);
-  icode___icode_base___IInitAttributes___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_icode___icode_base___IInitAttributes(fra.me.REG[2]);
+  /* ../lib/opts.nit:108 */
+  fra.me.REG[2] = NEW_opts___OptionBool();
+  INIT_ATTRIBUTES__opts___OptionBool(fra.me.REG[2]);
+  opts___OptionBool___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_opts___OptionBool(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_icode___icode_base___IClosCall[75] = {
-  {(bigint) 2923 /* 0: Identity */},
-  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "IClosCall" /* 2: Class Name */},
-  {(bigint) 3 /* 3: IClosCall < Object: superclass typecheck marker */},
-  {(bigint) 239 /* 4: IClosCall < ICode: superclass typecheck marker */},
-  {(bigint) 2235 /* 5: IClosCall < ICodeN: superclass typecheck marker */},
-  {(bigint) 2923 /* 6: IClosCall < IClosCall: superclass typecheck marker */},
+const classtable_elt_t VFT_opts___OptionCount[71] = {
+  {(bigint) 3043 /* 0: Identity */},
+  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "OptionCount" /* 2: Class Name */},
+  {(bigint) 3 /* 3: OptionCount < Object: superclass typecheck marker */},
+  {(bigint) 115 /* 4: OptionCount < Option: superclass typecheck marker */},
+  {(bigint) 3043 /* 5: OptionCount < OptionCount: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -145985,7 +174670,7 @@ const classtable_elt_t VFT_icode___icode_base___IClosCall[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: IClosCall < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: OptionCount < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -146001,7 +174686,9 @@ const classtable_elt_t VFT_icode___icode_base___IClosCall[75] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) opts___Option___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -146014,130 +174701,134 @@ const classtable_elt_t VFT_icode___icode_base___IClosCall[75] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) compiling___compiling_icode___IClosCall___compile_to_c},
-  {(bigint) compiling___compiling_icode___ICode___need_result},
-  {(bigint) compiling___compiling_icode___ICode___store_result},
-  {(bigint) compiling___compiling_icode___ICode___new_result},
-  {(bigint) analysis___icode_dump___ICodeN___dump},
-  {(bigint) analysis___icode_dump___IClosCall___dump_intern},
-  {(bigint) icode___icode_tools___IClosCall___dup_with},
-  {(bigint) icode___icode_tools___IClosCall___inner_dup_with},
-  {(bigint) 1 /* 55: IClosCall < ICode: superclass init_table position */},
-  {(bigint) icode___icode_base___ICodeN___arity},
-  {(bigint) icode___icode_base___ICode___result},
-  {(bigint) icode___icode_base___ICode___result__eq},
-  {(bigint) icode___icode_base___ICode___location},
-  {(bigint) icode___icode_base___ICode___location__eq},
-  {(bigint) icode___icode_base___ICode___is_pure},
-  {(bigint) icode___icode_base___ICode___init},
-  {(bigint) analysis___icode_dump___ICode___dump},
-  {(bigint) 0 /* 64: IClosCall < ICodeN: superclass init_table position */},
-  {(bigint) icode___icode_base___ICodeN___exprs},
-  {(bigint) icode___icode_base___ICodeN___closure_defs},
-  {(bigint) icode___icode_base___ICodeN___closure_defs__eq},
-  {(bigint) icode___icode_base___ICodeN___init},
-  {(bigint) icode___icode_tools___ICode___dup_with},
-  {(bigint) 3 /* 70: IClosCall < IClosCall: superclass init_table position */},
-  {(bigint) icode___icode_base___IClosCall___closure_decl},
-  {(bigint) icode___icode_base___IClosCall___break_seq},
-  {(bigint) icode___icode_base___IClosCall___break_seq__eq},
-  {(bigint) icode___icode_base___IClosCall___init},
+  {(bigint) 0 /* 50: OptionCount < Option: superclass init_table position */},
+  {(bigint) opts___Option___names},
+  {(bigint) -29 /* 52: VT OptionCount::VALUE : id of Int */},
+  {(bigint) 7 /* 53: VT OptionCount::VALUE : color of Int */},
+  {(bigint) opts___Option___helptext},
+  {(bigint) opts___Option___errors},
+  {(bigint) opts___Option___mandatory},
+  {(bigint) opts___Option___mandatory__eq},
+  {(bigint) opts___Option___read},
+  {(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 /* 68: OptionCount < OptionCount: superclass init_table position */},
+  {(bigint) opts___OptionCount___init},
+  {(bigint) opts___Option___read_param},
 };
 /* 0: Pointer to the classtable */
 /* 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__icode___icode_base___IClosCall(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+/* 2: Attribute OptionCount::_names */
+/* 3: Attribute OptionCount::_helptext */
+/* 4: Attribute OptionCount::_errors */
+/* 5: Attribute OptionCount::_mandatory */
+/* 6: Attribute OptionCount::_read */
+/* 7: Attribute OptionCount::_value */
+/* 8: Attribute OptionCount::_default_value */
+static const char LOCATE_INIT_ATTRIBUTES__opts___OptionCount[] = "init var of OptionCount";
+void INIT_ATTRIBUTES__opts___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__icode___icode_base___IClosCall;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__opts___OptionCount;
   fra.me.has_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:317 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___IClosCall____break_seq(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:95 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:98 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_icode___icode_base___IClosCall(void)
+val_t NEW_opts___OptionCount(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 8);
-  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___IClosCall;
+  obj = alloc(sizeof(val_t) * 9);
+  obj->vft = (classtable_elt_t*)VFT_opts___OptionCount;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_icode___icode_base___IClosCall(val_t p0){
+static const char LOCATE_CHECKNEW_opts___OptionCount[] = "check new OptionCount";
+void CHECKNEW_opts___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_icode___icode_base___IClosCall;
+  fra.me.meth = LOCATE_CHECKNEW_opts___OptionCount;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_icode___icode_base___IClosCall____closure_decl(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_opts___Option____names(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_closure_decl", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_names", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_icode___icode_base___ICodeN____exprs(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_opts___Option____helptext(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_exprs", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_helptext", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_opts___Option____errors(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_errors", 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);
+  }
+  REGB0 = TAG_Bool(ATTR_opts___Option____read(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_read", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_IClosCall_icode___icode_base___IClosCall___init(val_t p0, val_t p1){
+static const char LOCATE_NEW_OptionCount_opts___OptionCount___init[] = "new OptionCount opts::OptionCount::init";
+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[4] = {0, 0, 0, 0};
+  int init_table[3] = {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_IClosCall_icode___icode_base___IClosCall___init;
+  fra.me.line = 121;
+  fra.me.meth = LOCATE_NEW_OptionCount_opts___OptionCount___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   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:320 */
-  fra.me.REG[2] = NEW_icode___icode_base___IClosCall();
-  INIT_ATTRIBUTES__icode___icode_base___IClosCall(fra.me.REG[2]);
-  icode___icode_base___IClosCall___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_icode___icode_base___IClosCall(fra.me.REG[2]);
+  /* ../lib/opts.nit:121 */
+  fra.me.REG[2] = NEW_opts___OptionCount();
+  INIT_ATTRIBUTES__opts___OptionCount(fra.me.REG[2]);
+  opts___OptionCount___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_opts___OptionCount(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_icode___icode_base___INative[75] = {
-  {(bigint) 2887 /* 0: Identity */},
-  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "INative" /* 2: Class Name */},
-  {(bigint) 3 /* 3: INative < Object: superclass typecheck marker */},
-  {(bigint) 239 /* 4: INative < ICode: superclass typecheck marker */},
-  {(bigint) 2235 /* 5: INative < ICodeN: superclass typecheck marker */},
-  {(bigint) 2887 /* 6: INative < INative: superclass typecheck marker */},
+const classtable_elt_t VFT_opts___OptionString[76] = {
+  {(bigint) 3471 /* 0: Identity */},
+  {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "OptionString" /* 2: Class Name */},
+  {(bigint) 3 /* 3: OptionString < Object: superclass typecheck marker */},
+  {(bigint) 115 /* 4: OptionString < Option: superclass typecheck marker */},
+  {(bigint) 3039 /* 5: OptionString < OptionParameter: superclass typecheck marker */},
+  {(bigint) 3471 /* 6: OptionString < OptionString: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -146149,7 +174840,7 @@ const classtable_elt_t VFT_icode___icode_base___INative[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: INative < Object: superclass init_table position */},
+  {(bigint) 2 /* 19: OptionString < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -146165,7 +174856,9 @@ const classtable_elt_t VFT_icode___icode_base___INative[75] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) opts___Option___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -146178,136 +174871,145 @@ const classtable_elt_t VFT_icode___icode_base___INative[75] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) compiling___compiling_icode___INative___compile_to_c},
-  {(bigint) compiling___compiling_icode___ICode___need_result},
-  {(bigint) compiling___compiling_icode___ICode___store_result},
-  {(bigint) compiling___compiling_icode___ICode___new_result},
-  {(bigint) analysis___icode_dump___ICodeN___dump},
-  {(bigint) analysis___icode_dump___INative___dump_intern},
-  {(bigint) icode___icode_tools___ICode___dup_with},
-  {(bigint) icode___icode_tools___INative___inner_dup_with},
-  {(bigint) 1 /* 55: INative < ICode: superclass init_table position */},
-  {(bigint) icode___icode_base___ICodeN___arity},
-  {(bigint) icode___icode_base___ICode___result},
-  {(bigint) icode___icode_base___ICode___result__eq},
-  {(bigint) icode___icode_base___ICode___location},
-  {(bigint) icode___icode_base___ICode___location__eq},
-  {(bigint) icode___icode_base___INative___is_pure},
-  {(bigint) icode___icode_base___ICode___init},
-  {(bigint) analysis___icode_dump___ICode___dump},
-  {(bigint) 0 /* 64: INative < ICodeN: superclass init_table position */},
-  {(bigint) icode___icode_base___ICodeN___exprs},
-  {(bigint) icode___icode_base___ICodeN___closure_defs},
-  {(bigint) icode___icode_base___ICodeN___closure_defs__eq},
-  {(bigint) icode___icode_base___ICodeN___init},
-  {(bigint) compiling___compiling_icode___INative___compile_extern_method_to_c},
-  {(bigint) compiling___compiling_icode___INative___compile_intern_method_to_c},
-  {(bigint) 3 /* 71: INative < INative: superclass init_table position */},
-  {(bigint) icode___icode_base___INative___method},
-  {(bigint) icode___icode_base___INative___init},
-  {(bigint) icode___icode_base___INative___is_pure__eq},
+  {(bigint) 1 /* 50: OptionString < Option: superclass init_table position */},
+  {(bigint) opts___Option___names},
+  {(bigint) 4603 /* 52: VT OptionString::VALUE : id of String */},
+  {(bigint) 9 /* 53: VT OptionString::VALUE : color of String */},
+  {(bigint) opts___Option___helptext},
+  {(bigint) opts___Option___errors},
+  {(bigint) opts___Option___mandatory},
+  {(bigint) opts___Option___mandatory__eq},
+  {(bigint) opts___Option___read},
+  {(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) 0 /* 68: OptionString < OptionParameter: superclass init_table position */},
+  {(bigint) opts___OptionString___convert},
+  {(bigint) opts___OptionParameter___parameter_mandatory},
+  {(bigint) opts___OptionParameter___parameter_mandatory__eq},
+  {(bigint) opts___Option___read_param},
+  {(bigint) opts___OptionParameter___init_opt},
+  {(bigint) 3 /* 74: OptionString < OptionString: superclass init_table position */},
+  {(bigint) opts___OptionString___init},
 };
 /* 0: Pointer to the classtable */
 /* 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__icode___icode_base___INative(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute OptionString::_names */
+/* 3: Attribute OptionString::_helptext */
+/* 4: Attribute OptionString::_errors */
+/* 5: Attribute OptionString::_mandatory */
+/* 6: Attribute OptionString::_read */
+/* 7: Attribute OptionString::_value */
+/* 8: Attribute OptionString::_default_value */
+/* 9: Attribute OptionString::_parameter_mandatory */
+static const char LOCATE_INIT_ATTRIBUTES__opts___OptionString[] = "init var of OptionString";
+void INIT_ATTRIBUTES__opts___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__icode___icode_base___INative;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__opts___OptionString;
   fra.me.has_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:344 */
-  REGB0 = TAG_Bool(false);
-  ATTR_icode___icode_base___INative____is_pure(fra.me.REG[0]) = REGB0;
-  /* ./icode//icode_base.nit:95 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:98 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_icode___icode_base___INative(void)
+val_t NEW_opts___OptionString(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 8);
-  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___INative;
+  obj = alloc(sizeof(val_t) * 10);
+  obj->vft = (classtable_elt_t*)VFT_opts___OptionString;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_icode___icode_base___INative(val_t p0){
+static const char LOCATE_CHECKNEW_opts___OptionString[] = "check new OptionString";
+void CHECKNEW_opts___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_icode___icode_base___INative;
+  fra.me.meth = LOCATE_CHECKNEW_opts___OptionString;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_icode___icode_base___INative____method(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_opts___Option____names(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_method", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_names", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_icode___icode_base___INative____is_pure(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_opts___Option____helptext(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_pure", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_helptext", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_icode___icode_base___ICodeN____exprs(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_opts___Option____errors(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_exprs", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_errors", 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);
+  }
+  REGB0 = TAG_Bool(ATTR_opts___Option____read(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_read", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_opts___OptionParameter____parameter_mandatory(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_parameter_mandatory", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_INative_icode___icode_base___INative___init(val_t p0, val_t p1){
+static const char LOCATE_NEW_OptionString_opts___OptionString___init[] = "new OptionString opts::OptionString::init";
+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 = 335;
-  fra.me.meth = LOCATE_NEW_INative_icode___icode_base___INative___init;
+  fra.me.line = 162;
+  fra.me.meth = LOCATE_NEW_OptionString_opts___OptionString___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   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:335 */
-  fra.me.REG[2] = NEW_icode___icode_base___INative();
-  INIT_ATTRIBUTES__icode___icode_base___INative(fra.me.REG[2]);
-  icode___icode_base___INative___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_icode___icode_base___INative(fra.me.REG[2]);
+  /* ../lib/opts.nit:162 */
+  fra.me.REG[2] = NEW_opts___OptionString();
+  INIT_ATTRIBUTES__opts___OptionString(fra.me.REG[2]);
+  opts___OptionString___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_opts___OptionString(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_icode___icode_base___IIntValue[67] = {
-  {(bigint) 2899 /* 0: Identity */},
-  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "IIntValue" /* 2: Class Name */},
-  {(bigint) 3 /* 3: IIntValue < Object: superclass typecheck marker */},
-  {(bigint) 239 /* 4: IIntValue < ICode: superclass typecheck marker */},
-  {(bigint) 2247 /* 5: IIntValue < ICode0: superclass typecheck marker */},
-  {(bigint) 2899 /* 6: IIntValue < IIntValue: superclass typecheck marker */},
+const classtable_elt_t VFT_opts___OptionEnum[77] = {
+  {(bigint) 3479 /* 0: Identity */},
+  {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "OptionEnum" /* 2: Class Name */},
+  {(bigint) 3 /* 3: OptionEnum < Object: superclass typecheck marker */},
+  {(bigint) 115 /* 4: OptionEnum < Option: superclass typecheck marker */},
+  {(bigint) 3039 /* 5: OptionEnum < OptionParameter: superclass typecheck marker */},
+  {(bigint) 3479 /* 6: OptionEnum < OptionEnum: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -146319,7 +175021,7 @@ const classtable_elt_t VFT_icode___icode_base___IIntValue[67] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: IIntValue < Object: superclass init_table position */},
+  {(bigint) 2 /* 19: OptionEnum < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -146335,7 +175037,9 @@ const classtable_elt_t VFT_icode___icode_base___IIntValue[67] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) opts___Option___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -146348,109 +175052,156 @@ const classtable_elt_t VFT_icode___icode_base___IIntValue[67] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) compiling___compiling_icode___IIntValue___compile_to_c},
-  {(bigint) compiling___compiling_icode___ICode___need_result},
-  {(bigint) compiling___compiling_icode___ICode___store_result},
-  {(bigint) compiling___compiling_icode___ICode___new_result},
-  {(bigint) analysis___icode_dump___ICode___dump},
-  {(bigint) analysis___icode_dump___IIntValue___dump_intern},
-  {(bigint) icode___icode_tools___ICode___dup_with},
-  {(bigint) icode___icode_tools___IIntValue___inner_dup_with},
-  {(bigint) 1 /* 55: IIntValue < ICode: superclass init_table position */},
-  {(bigint) icode___icode_base___ICode0___arity},
-  {(bigint) icode___icode_base___ICode___result},
-  {(bigint) icode___icode_base___ICode___result__eq},
-  {(bigint) icode___icode_base___ICode___location},
-  {(bigint) icode___icode_base___ICode___location__eq},
-  {(bigint) icode___icode_base___IIntValue___is_pure},
-  {(bigint) icode___icode_base___ICode___init},
-  {(bigint) 0 /* 63: IIntValue < ICode0: superclass init_table position */},
-  {(bigint) 3 /* 64: IIntValue < IIntValue: superclass init_table position */},
-  {(bigint) icode___icode_base___IIntValue___value},
-  {(bigint) icode___icode_base___IIntValue___init},
+  {(bigint) 1 /* 50: OptionEnum < Option: superclass init_table position */},
+  {(bigint) opts___Option___names},
+  {(bigint) -29 /* 52: VT OptionEnum::VALUE : id of Int */},
+  {(bigint) 7 /* 53: VT OptionEnum::VALUE : color of Int */},
+  {(bigint) opts___Option___helptext},
+  {(bigint) opts___Option___errors},
+  {(bigint) opts___Option___mandatory},
+  {(bigint) opts___Option___mandatory__eq},
+  {(bigint) opts___Option___read},
+  {(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) 0 /* 68: OptionEnum < OptionParameter: superclass init_table position */},
+  {(bigint) opts___OptionEnum___convert},
+  {(bigint) opts___OptionParameter___parameter_mandatory},
+  {(bigint) opts___OptionParameter___parameter_mandatory__eq},
+  {(bigint) opts___Option___read_param},
+  {(bigint) opts___OptionParameter___init_opt},
+  {(bigint) 3 /* 74: OptionEnum < OptionEnum: superclass init_table position */},
+  {(bigint) opts___OptionEnum___init},
+  {(bigint) opts___OptionEnum___value_name},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute IIntValue::_result */
-/* 3: Attribute IIntValue::_location */
-/* 4: Attribute IIntValue::_value */
-void INIT_ATTRIBUTES__icode___icode_base___IIntValue(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+/* 2: Attribute OptionEnum::_names */
+/* 3: Attribute OptionEnum::_helptext */
+/* 4: Attribute OptionEnum::_errors */
+/* 5: Attribute OptionEnum::_mandatory */
+/* 6: Attribute OptionEnum::_read */
+/* 7: Attribute OptionEnum::_value */
+/* 8: Attribute OptionEnum::_default_value */
+/* 9: Attribute OptionEnum::_parameter_mandatory */
+/* 10: Attribute OptionEnum::_values */
+static const char LOCATE_INIT_ATTRIBUTES__opts___OptionEnum[] = "init var of OptionEnum";
+void INIT_ATTRIBUTES__opts___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__icode___icode_base___IIntValue;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__opts___OptionEnum;
   fra.me.has_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:95 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:98 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_icode___icode_base___IIntValue(void)
+val_t NEW_opts___OptionEnum(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___IIntValue;
+  obj = alloc(sizeof(val_t) * 11);
+  obj->vft = (classtable_elt_t*)VFT_opts___OptionEnum;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_icode___icode_base___IIntValue(val_t p0){
+static const char LOCATE_CHECKNEW_opts___OptionEnum[] = "check new OptionEnum";
+void CHECKNEW_opts___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_icode___icode_base___IIntValue;
+  fra.me.meth = LOCATE_CHECKNEW_opts___OptionEnum;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_icode___icode_base___IIntValue____value(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_opts___Option____names(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_value", LOCATE_nitc, 0);
+    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____errors(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_errors", 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);
+  }
+  REGB0 = TAG_Bool(ATTR_opts___Option____read(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_read", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_opts___OptionParameter____parameter_mandatory(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_parameter_mandatory", LOCATE_nitc, 0);
+  }
+  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);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_IIntValue_icode___icode_base___IIntValue___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char 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){
+  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 = 353;
-  fra.me.meth = LOCATE_NEW_IIntValue_icode___icode_base___IIntValue___init;
+  fra.me.line = 172;
+  fra.me.meth = LOCATE_NEW_OptionEnum_opts___OptionEnum___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   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;
-  /* ./icode//icode_base.nit:353 */
-  fra.me.REG[1] = NEW_icode___icode_base___IIntValue();
-  INIT_ATTRIBUTES__icode___icode_base___IIntValue(fra.me.REG[1]);
-  icode___icode_base___IIntValue___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_icode___icode_base___IIntValue(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  REGB0 = p2;
+  fra.me.REG[2] = p3;
+  /* ../lib/opts.nit:172 */
+  fra.me.REG[3] = NEW_opts___OptionEnum();
+  INIT_ATTRIBUTES__opts___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_opts___OptionEnum(fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[3];
 }
-const classtable_elt_t VFT_icode___icode_base___IBoolValue[67] = {
-  {(bigint) 2935 /* 0: Identity */},
-  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "IBoolValue" /* 2: Class Name */},
-  {(bigint) 3 /* 3: IBoolValue < Object: superclass typecheck marker */},
-  {(bigint) 239 /* 4: IBoolValue < ICode: superclass typecheck marker */},
-  {(bigint) 2247 /* 5: IBoolValue < ICode0: superclass typecheck marker */},
-  {(bigint) 2935 /* 6: IBoolValue < IBoolValue: superclass typecheck marker */},
+const classtable_elt_t VFT_opts___OptionInt[76] = {
+  {(bigint) 3475 /* 0: Identity */},
+  {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "OptionInt" /* 2: Class Name */},
+  {(bigint) 3 /* 3: OptionInt < Object: superclass typecheck marker */},
+  {(bigint) 115 /* 4: OptionInt < Option: superclass typecheck marker */},
+  {(bigint) 3039 /* 5: OptionInt < OptionParameter: superclass typecheck marker */},
+  {(bigint) 3475 /* 6: OptionInt < OptionInt: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -146462,7 +175213,7 @@ const classtable_elt_t VFT_icode___icode_base___IBoolValue[67] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: IBoolValue < Object: superclass init_table position */},
+  {(bigint) 2 /* 19: OptionInt < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -146478,7 +175229,9 @@ const classtable_elt_t VFT_icode___icode_base___IBoolValue[67] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) opts___Option___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -146491,109 +175244,147 @@ const classtable_elt_t VFT_icode___icode_base___IBoolValue[67] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) compiling___compiling_icode___IBoolValue___compile_to_c},
-  {(bigint) compiling___compiling_icode___ICode___need_result},
-  {(bigint) compiling___compiling_icode___ICode___store_result},
-  {(bigint) compiling___compiling_icode___ICode___new_result},
-  {(bigint) analysis___icode_dump___ICode___dump},
-  {(bigint) analysis___icode_dump___IBoolValue___dump_intern},
-  {(bigint) icode___icode_tools___ICode___dup_with},
-  {(bigint) icode___icode_tools___IBoolValue___inner_dup_with},
-  {(bigint) 1 /* 55: IBoolValue < ICode: superclass init_table position */},
-  {(bigint) icode___icode_base___ICode0___arity},
-  {(bigint) icode___icode_base___ICode___result},
-  {(bigint) icode___icode_base___ICode___result__eq},
-  {(bigint) icode___icode_base___ICode___location},
-  {(bigint) icode___icode_base___ICode___location__eq},
-  {(bigint) icode___icode_base___IBoolValue___is_pure},
-  {(bigint) icode___icode_base___ICode___init},
-  {(bigint) 0 /* 63: IBoolValue < ICode0: superclass init_table position */},
-  {(bigint) 3 /* 64: IBoolValue < IBoolValue: superclass init_table position */},
-  {(bigint) icode___icode_base___IBoolValue___value},
-  {(bigint) icode___icode_base___IBoolValue___init},
+  {(bigint) 1 /* 50: OptionInt < Option: superclass init_table position */},
+  {(bigint) opts___Option___names},
+  {(bigint) -29 /* 52: VT OptionInt::VALUE : id of Int */},
+  {(bigint) 7 /* 53: VT OptionInt::VALUE : color of Int */},
+  {(bigint) opts___Option___helptext},
+  {(bigint) opts___Option___errors},
+  {(bigint) opts___Option___mandatory},
+  {(bigint) opts___Option___mandatory__eq},
+  {(bigint) opts___Option___read},
+  {(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) 0 /* 68: OptionInt < OptionParameter: superclass init_table position */},
+  {(bigint) opts___OptionInt___convert},
+  {(bigint) opts___OptionParameter___parameter_mandatory},
+  {(bigint) opts___OptionParameter___parameter_mandatory__eq},
+  {(bigint) opts___Option___read_param},
+  {(bigint) opts___OptionParameter___init_opt},
+  {(bigint) 3 /* 74: OptionInt < OptionInt: superclass init_table position */},
+  {(bigint) opts___OptionInt___init},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute IBoolValue::_result */
-/* 3: Attribute IBoolValue::_location */
-/* 4: Attribute IBoolValue::_value */
-void INIT_ATTRIBUTES__icode___icode_base___IBoolValue(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+/* 2: Attribute OptionInt::_names */
+/* 3: Attribute OptionInt::_helptext */
+/* 4: Attribute OptionInt::_errors */
+/* 5: Attribute OptionInt::_mandatory */
+/* 6: Attribute OptionInt::_read */
+/* 7: Attribute OptionInt::_value */
+/* 8: Attribute OptionInt::_default_value */
+/* 9: Attribute OptionInt::_parameter_mandatory */
+static const char LOCATE_INIT_ATTRIBUTES__opts___OptionInt[] = "init var of OptionInt";
+void INIT_ATTRIBUTES__opts___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__icode___icode_base___IBoolValue;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__opts___OptionInt;
   fra.me.has_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:95 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:98 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_icode___icode_base___IBoolValue(void)
+val_t NEW_opts___OptionInt(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___IBoolValue;
+  obj = alloc(sizeof(val_t) * 10);
+  obj->vft = (classtable_elt_t*)VFT_opts___OptionInt;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_icode___icode_base___IBoolValue(val_t p0){
+static const char LOCATE_CHECKNEW_opts___OptionInt[] = "check new OptionInt";
+void CHECKNEW_opts___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_icode___icode_base___IBoolValue;
+  fra.me.meth = LOCATE_CHECKNEW_opts___OptionInt;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_icode___icode_base___IBoolValue____value(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_opts___Option____names(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_value", LOCATE_nitc, 0);
+    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____errors(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_errors", 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);
+  }
+  REGB0 = TAG_Bool(ATTR_opts___Option____read(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_read", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_opts___OptionParameter____parameter_mandatory(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_parameter_mandatory", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_IBoolValue_icode___icode_base___IBoolValue___init(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+static const char 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){
+  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 = 364;
-  fra.me.meth = LOCATE_NEW_IBoolValue_icode___icode_base___IBoolValue___init;
+  fra.me.line = 206;
+  fra.me.meth = LOCATE_NEW_OptionInt_opts___OptionInt___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  REGB0 = p0;
-  /* ./icode//icode_base.nit:364 */
-  fra.me.REG[0] = NEW_icode___icode_base___IBoolValue();
-  INIT_ATTRIBUTES__icode___icode_base___IBoolValue(fra.me.REG[0]);
-  icode___icode_base___IBoolValue___init(fra.me.REG[0], REGB0, init_table);
-  CHECKNEW_icode___icode_base___IBoolValue(fra.me.REG[0]);
+  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:206 */
+  fra.me.REG[2] = NEW_opts___OptionInt();
+  INIT_ATTRIBUTES__opts___OptionInt(fra.me.REG[2]);
+  opts___OptionInt___init(fra.me.REG[2], fra.me.REG[0], REGB0, fra.me.REG[1], init_table);
+  CHECKNEW_opts___OptionInt(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[2];
 }
-const classtable_elt_t VFT_icode___icode_base___IStringValue[67] = {
-  {(bigint) 2863 /* 0: Identity */},
-  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "IStringValue" /* 2: Class Name */},
-  {(bigint) 3 /* 3: IStringValue < Object: superclass typecheck marker */},
-  {(bigint) 239 /* 4: IStringValue < ICode: superclass typecheck marker */},
-  {(bigint) 2247 /* 5: IStringValue < ICode0: superclass typecheck marker */},
-  {(bigint) 2863 /* 6: IStringValue < IStringValue: superclass typecheck marker */},
+const classtable_elt_t VFT_opts___OptionArray[76] = {
+  {(bigint) 3483 /* 0: Identity */},
+  {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "OptionArray" /* 2: Class Name */},
+  {(bigint) 3 /* 3: OptionArray < Object: superclass typecheck marker */},
+  {(bigint) 115 /* 4: OptionArray < Option: superclass typecheck marker */},
+  {(bigint) 3039 /* 5: OptionArray < OptionParameter: superclass typecheck marker */},
+  {(bigint) 3483 /* 6: OptionArray < OptionArray: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -146605,7 +175396,7 @@ const classtable_elt_t VFT_icode___icode_base___IStringValue[67] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: IStringValue < Object: superclass init_table position */},
+  {(bigint) 2 /* 19: OptionArray < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -146621,7 +175412,9 @@ const classtable_elt_t VFT_icode___icode_base___IStringValue[67] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) opts___Option___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -146634,109 +175427,151 @@ const classtable_elt_t VFT_icode___icode_base___IStringValue[67] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) compiling___compiling_icode___IStringValue___compile_to_c},
-  {(bigint) compiling___compiling_icode___ICode___need_result},
-  {(bigint) compiling___compiling_icode___ICode___store_result},
-  {(bigint) compiling___compiling_icode___ICode___new_result},
-  {(bigint) analysis___icode_dump___ICode___dump},
-  {(bigint) analysis___icode_dump___IStringValue___dump_intern},
-  {(bigint) icode___icode_tools___ICode___dup_with},
-  {(bigint) icode___icode_tools___IStringValue___inner_dup_with},
-  {(bigint) 1 /* 55: IStringValue < ICode: superclass init_table position */},
-  {(bigint) icode___icode_base___ICode0___arity},
-  {(bigint) icode___icode_base___ICode___result},
-  {(bigint) icode___icode_base___ICode___result__eq},
-  {(bigint) icode___icode_base___ICode___location},
-  {(bigint) icode___icode_base___ICode___location__eq},
-  {(bigint) icode___icode_base___IStringValue___is_pure},
-  {(bigint) icode___icode_base___ICode___init},
-  {(bigint) 0 /* 63: IStringValue < ICode0: superclass init_table position */},
-  {(bigint) 3 /* 64: IStringValue < IStringValue: superclass init_table position */},
-  {(bigint) icode___icode_base___IStringValue___value},
-  {(bigint) icode___icode_base___IStringValue___init},
+  {(bigint) 1 /* 50: OptionArray < Option: superclass init_table position */},
+  {(bigint) opts___Option___names},
+  {(bigint) 4827 /* 52: VT OptionArray::VALUE : id of Array */},
+  {(bigint) 4 /* 53: VT OptionArray::VALUE : color of Array */},
+  {(bigint) opts___Option___helptext},
+  {(bigint) opts___Option___errors},
+  {(bigint) opts___Option___mandatory},
+  {(bigint) opts___Option___mandatory__eq},
+  {(bigint) opts___Option___read},
+  {(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) 0 /* 68: OptionArray < OptionParameter: superclass init_table position */},
+  {(bigint) opts___OptionArray___convert},
+  {(bigint) opts___OptionParameter___parameter_mandatory},
+  {(bigint) opts___OptionParameter___parameter_mandatory__eq},
+  {(bigint) opts___Option___read_param},
+  {(bigint) opts___OptionParameter___init_opt},
+  {(bigint) 3 /* 74: OptionArray < OptionArray: superclass init_table position */},
+  {(bigint) opts___OptionArray___init},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute IStringValue::_result */
-/* 3: Attribute IStringValue::_location */
-/* 4: Attribute IStringValue::_value */
-void INIT_ATTRIBUTES__icode___icode_base___IStringValue(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+/* 2: Attribute OptionArray::_names */
+/* 3: Attribute OptionArray::_helptext */
+/* 4: Attribute OptionArray::_errors */
+/* 5: Attribute OptionArray::_mandatory */
+/* 6: Attribute OptionArray::_read */
+/* 7: Attribute OptionArray::_value */
+/* 8: Attribute OptionArray::_default_value */
+/* 9: Attribute OptionArray::_parameter_mandatory */
+/* 10: Attribute OptionArray::_values */
+static const char LOCATE_INIT_ATTRIBUTES__opts___OptionArray[] = "init var of OptionArray";
+void INIT_ATTRIBUTES__opts___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__icode___icode_base___IStringValue;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__opts___OptionArray;
   fra.me.has_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:95 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:98 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_icode___icode_base___IStringValue(void)
+val_t NEW_opts___OptionArray(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___IStringValue;
+  obj = alloc(sizeof(val_t) * 11);
+  obj->vft = (classtable_elt_t*)VFT_opts___OptionArray;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_icode___icode_base___IStringValue(val_t p0){
+static const char LOCATE_CHECKNEW_opts___OptionArray[] = "check new OptionArray";
+void CHECKNEW_opts___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_icode___icode_base___IStringValue;
+  fra.me.meth = LOCATE_CHECKNEW_opts___OptionArray;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_icode___icode_base___IStringValue____value(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_opts___Option____names(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_value", LOCATE_nitc, 0);
+    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____errors(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_errors", 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);
+  }
+  REGB0 = TAG_Bool(ATTR_opts___Option____read(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_read", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_opts___OptionParameter____parameter_mandatory(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_parameter_mandatory", LOCATE_nitc, 0);
+  }
+  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);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_IStringValue_icode___icode_base___IStringValue___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_OptionArray_opts___OptionArray___init[] = "new OptionArray opts::OptionArray::init";
+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 = 375;
-  fra.me.meth = LOCATE_NEW_IStringValue_icode___icode_base___IStringValue___init;
+  fra.me.line = 215;
+  fra.me.meth = LOCATE_NEW_OptionArray_opts___OptionArray___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:375 */
-  fra.me.REG[1] = NEW_icode___icode_base___IStringValue();
-  INIT_ATTRIBUTES__icode___icode_base___IStringValue(fra.me.REG[1]);
-  icode___icode_base___IStringValue___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_icode___icode_base___IStringValue(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  /* ../lib/opts.nit:215 */
+  fra.me.REG[2] = NEW_opts___OptionArray();
+  INIT_ATTRIBUTES__opts___OptionArray(fra.me.REG[2]);
+  opts___OptionArray___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_opts___OptionArray(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[2];
 }
-const classtable_elt_t VFT_icode___icode_base___IFloatValue[67] = {
-  {(bigint) 2915 /* 0: Identity */},
-  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "IFloatValue" /* 2: Class Name */},
-  {(bigint) 3 /* 3: IFloatValue < Object: superclass typecheck marker */},
-  {(bigint) 239 /* 4: IFloatValue < ICode: superclass typecheck marker */},
-  {(bigint) 2247 /* 5: IFloatValue < ICode0: superclass typecheck marker */},
-  {(bigint) 2915 /* 6: IFloatValue < IFloatValue: superclass typecheck marker */},
+const classtable_elt_t VFT_opts___OptionContext[61] = {
+  {(bigint) 111 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "OptionContext" /* 2: Class Name */},
+  {(bigint) 3 /* 3: OptionContext < Object: superclass typecheck marker */},
+  {(bigint) 111 /* 4: OptionContext < OptionContext: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -146748,7 +175583,7 @@ const classtable_elt_t VFT_icode___icode_base___IFloatValue[67] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: IFloatValue < Object: superclass init_table position */},
+  {(bigint) 0 /* 19: OptionContext < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -146764,6 +175599,8 @@ const classtable_elt_t VFT_icode___icode_base___IFloatValue[67] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -146777,109 +175614,112 @@ const classtable_elt_t VFT_icode___icode_base___IFloatValue[67] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) compiling___compiling_icode___IFloatValue___compile_to_c},
-  {(bigint) compiling___compiling_icode___ICode___need_result},
-  {(bigint) compiling___compiling_icode___ICode___store_result},
-  {(bigint) compiling___compiling_icode___ICode___new_result},
-  {(bigint) analysis___icode_dump___ICode___dump},
-  {(bigint) analysis___icode_dump___IFloatValue___dump_intern},
-  {(bigint) icode___icode_tools___ICode___dup_with},
-  {(bigint) icode___icode_tools___IFloatValue___inner_dup_with},
-  {(bigint) 1 /* 55: IFloatValue < ICode: superclass init_table position */},
-  {(bigint) icode___icode_base___ICode0___arity},
-  {(bigint) icode___icode_base___ICode___result},
-  {(bigint) icode___icode_base___ICode___result__eq},
-  {(bigint) icode___icode_base___ICode___location},
-  {(bigint) icode___icode_base___ICode___location__eq},
-  {(bigint) icode___icode_base___IFloatValue___is_pure},
-  {(bigint) icode___icode_base___ICode___init},
-  {(bigint) 0 /* 63: IFloatValue < ICode0: superclass init_table position */},
-  {(bigint) 3 /* 64: IFloatValue < IFloatValue: superclass init_table position */},
-  {(bigint) icode___icode_base___IFloatValue___value},
-  {(bigint) icode___icode_base___IFloatValue___init},
+  {(bigint) 1 /* 50: OptionContext < OptionContext: superclass init_table position */},
+  {(bigint) opts___OptionContext___options},
+  {(bigint) opts___OptionContext___rest},
+  {(bigint) opts___OptionContext___errors},
+  {(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) opts___OptionContext___get_errors},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute IFloatValue::_result */
-/* 3: Attribute IFloatValue::_location */
-/* 4: Attribute IFloatValue::_value */
-void INIT_ATTRIBUTES__icode___icode_base___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__icode___icode_base___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:95 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:98 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+/* 2: Attribute OptionContext::_options */
+/* 3: Attribute OptionContext::_rest */
+/* 4: Attribute OptionContext::_errors */
+/* 5: Attribute OptionContext::_optmap */
+static const char LOCATE_INIT_ATTRIBUTES__opts___OptionContext[] = "init var of OptionContext";
+void INIT_ATTRIBUTES__opts___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__opts___OptionContext;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_icode___icode_base___IFloatValue(void)
+val_t NEW_opts___OptionContext(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___IFloatValue;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_opts___OptionContext;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_icode___icode_base___IFloatValue(val_t p0){
+static const char LOCATE_CHECKNEW_opts___OptionContext[] = "check new OptionContext";
+void CHECKNEW_opts___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_icode___icode_base___IFloatValue;
+  fra.me.meth = LOCATE_CHECKNEW_opts___OptionContext;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_icode___icode_base___IFloatValue____value(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_opts___OptionContext____options(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_value", LOCATE_nitc, 0);
+    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____errors(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_errors", 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;
 }
-val_t NEW_IFloatValue_icode___icode_base___IFloatValue___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_OptionContext_opts___OptionContext___init[] = "new OptionContext opts::OptionContext::init";
+val_t NEW_OptionContext_opts___OptionContext___init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  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 = 386;
-  fra.me.meth = LOCATE_NEW_IFloatValue_icode___icode_base___IFloatValue___init;
+  fra.me.line = 314;
+  fra.me.meth = LOCATE_NEW_OptionContext_opts___OptionContext___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:386 */
-  fra.me.REG[1] = NEW_icode___icode_base___IFloatValue();
-  INIT_ATTRIBUTES__icode___icode_base___IFloatValue(fra.me.REG[1]);
-  icode___icode_base___IFloatValue___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_icode___icode_base___IFloatValue(fra.me.REG[1]);
+  /* ../lib/opts.nit:314 */
+  fra.me.REG[0] = NEW_opts___OptionContext();
+  INIT_ATTRIBUTES__opts___OptionContext(fra.me.REG[0]);
+  opts___OptionContext___init(fra.me.REG[0], init_table);
+  CHECKNEW_opts___OptionContext(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_icode___icode_base___ICharValue[67] = {
-  {(bigint) 2931 /* 0: Identity */},
-  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ICharValue" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ICharValue < Object: superclass typecheck marker */},
-  {(bigint) 239 /* 4: ICharValue < ICode: superclass typecheck marker */},
-  {(bigint) 2247 /* 5: ICharValue < ICode0: superclass typecheck marker */},
-  {(bigint) 2931 /* 6: ICharValue < ICharValue: superclass typecheck marker */},
+const classtable_elt_t VFT_toolcontext___Message[73] = {
+  {(bigint) 3067 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "Message" /* 2: Class Name */},
+  {(bigint) 3 /* 3: Message < Object: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 275 /* 6: Message < Comparable: superclass typecheck marker */},
+  {(bigint) 3067 /* 7: Message < Message: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -146891,7 +175731,7 @@ const classtable_elt_t VFT_icode___icode_base___ICharValue[67] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: ICharValue < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: Message < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -146907,7 +175747,9 @@ const classtable_elt_t VFT_icode___icode_base___ICharValue[67] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) toolcontext___Message___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -146920,109 +175762,110 @@ const classtable_elt_t VFT_icode___icode_base___ICharValue[67] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) compiling___compiling_icode___ICharValue___compile_to_c},
-  {(bigint) compiling___compiling_icode___ICode___need_result},
-  {(bigint) compiling___compiling_icode___ICode___store_result},
-  {(bigint) compiling___compiling_icode___ICode___new_result},
-  {(bigint) analysis___icode_dump___ICode___dump},
-  {(bigint) analysis___icode_dump___ICharValue___dump_intern},
-  {(bigint) icode___icode_tools___ICode___dup_with},
-  {(bigint) icode___icode_tools___ICharValue___inner_dup_with},
-  {(bigint) 1 /* 55: ICharValue < ICode: superclass init_table position */},
-  {(bigint) icode___icode_base___ICode0___arity},
-  {(bigint) icode___icode_base___ICode___result},
-  {(bigint) icode___icode_base___ICode___result__eq},
-  {(bigint) icode___icode_base___ICode___location},
-  {(bigint) icode___icode_base___ICode___location__eq},
-  {(bigint) icode___icode_base___ICharValue___is_pure},
-  {(bigint) icode___icode_base___ICode___init},
-  {(bigint) 0 /* 63: ICharValue < ICode0: superclass init_table position */},
-  {(bigint) 3 /* 64: ICharValue < ICharValue: superclass init_table position */},
-  {(bigint) icode___icode_base___ICharValue___value},
-  {(bigint) icode___icode_base___ICharValue___init},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 0 /* 57: Message < Comparable: superclass init_table position */},
+  {(bigint) 3067 /* 58: VT Message::OTHER : id of Message */},
+  {(bigint) 7 /* 59: VT Message::OTHER : color of Message */},
+  {(bigint) toolcontext___Message_____l},
+  {(bigint) standard___kernel___Comparable_____leq},
+  {(bigint) standard___kernel___Comparable_____geq},
+  {(bigint) standard___kernel___Comparable_____g},
+  {(bigint) standard___kernel___Comparable_____leqg},
+  {(bigint) standard___kernel___Comparable___is_between},
+  {(bigint) standard___kernel___Comparable___max},
+  {(bigint) standard___kernel___Comparable___min},
+  {(bigint) 2 /* 68: Message < Message: superclass init_table position */},
+  {(bigint) toolcontext___Message___location},
+  {(bigint) toolcontext___Message___text},
+  {(bigint) toolcontext___Message___to_color_string},
+  {(bigint) toolcontext___Message___init},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ICharValue::_result */
-/* 3: Attribute ICharValue::_location */
-/* 4: Attribute ICharValue::_value */
-void INIT_ATTRIBUTES__icode___icode_base___ICharValue(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+/* 2: Attribute Message::_location */
+/* 3: Attribute Message::_text */
+static const char LOCATE_INIT_ATTRIBUTES__toolcontext___Message[] = "init var of Message";
+void INIT_ATTRIBUTES__toolcontext___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__icode___icode_base___ICharValue;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__toolcontext___Message;
   fra.me.has_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:95 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:98 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_icode___icode_base___ICharValue(void)
+val_t NEW_toolcontext___Message(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___ICharValue;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_toolcontext___Message;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_icode___icode_base___ICharValue(val_t p0){
+static const char LOCATE_CHECKNEW_toolcontext___Message[] = "check new Message";
+void CHECKNEW_toolcontext___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_icode___icode_base___ICharValue;
+  fra.me.meth = LOCATE_CHECKNEW_toolcontext___Message;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_icode___icode_base___ICharValue____value(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_toolcontext___Message____text(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_value", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ICharValue_icode___icode_base___ICharValue___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_Message_toolcontext___Message___init[] = "new Message toolcontext::Message::init";
+val_t NEW_Message_toolcontext___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[4] = {0, 0, 0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 397;
-  fra.me.meth = LOCATE_NEW_ICharValue_icode___icode_base___ICharValue___init;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_Message_toolcontext___Message___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:397 */
-  fra.me.REG[1] = NEW_icode___icode_base___ICharValue();
-  INIT_ATTRIBUTES__icode___icode_base___ICharValue(fra.me.REG[1]);
-  icode___icode_base___ICharValue___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_icode___icode_base___ICharValue(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = NEW_toolcontext___Message();
+  INIT_ATTRIBUTES__toolcontext___Message(fra.me.REG[2]);
+  toolcontext___Message___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_toolcontext___Message(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[2];
 }
-const classtable_elt_t VFT_icode___icode_base___IMove[68] = {
-  {(bigint) 2891 /* 0: Identity */},
-  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "IMove" /* 2: Class Name */},
-  {(bigint) 3 /* 3: IMove < Object: superclass typecheck marker */},
-  {(bigint) 239 /* 4: IMove < ICode: superclass typecheck marker */},
-  {(bigint) 2243 /* 5: IMove < ICode1: superclass typecheck marker */},
-  {(bigint) 2891 /* 6: IMove < IMove: superclass typecheck marker */},
+const classtable_elt_t VFT_syntax___syntax_base___MMSrcModule[132] = {
+  {(bigint) 3519 /* 0: Identity */},
+  {(bigint) 25 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "MMSrcModule" /* 2: Class Name */},
+  {(bigint) 3 /* 3: MMSrcModule < Object: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {(bigint) 259 /* 5: MMSrcModule < FFIVisited: superclass typecheck marker */},
+  {(bigint) 3123 /* 6: MMSrcModule < MMModule: superclass typecheck marker */},
+  {(bigint) 3519 /* 7: MMSrcModule < MMSrcModule: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -147034,7 +175877,7 @@ const classtable_elt_t VFT_icode___icode_base___IMove[68] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: IMove < Object: superclass init_table position */},
+  {(bigint) 2 /* 19: MMSrcModule < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -147050,7 +175893,9 @@ const classtable_elt_t VFT_icode___icode_base___IMove[68] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) metamodel___abstractmetamodel___MMModule___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -147063,113 +175908,344 @@ const classtable_elt_t VFT_icode___icode_base___IMove[68] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) compiling___compiling_icode___IMove___compile_to_c},
-  {(bigint) compiling___compiling_icode___ICode___need_result},
-  {(bigint) compiling___compiling_icode___ICode___store_result},
-  {(bigint) compiling___compiling_icode___ICode___new_result},
-  {(bigint) analysis___icode_dump___ICode___dump},
-  {(bigint) analysis___icode_dump___IMove___dump_intern},
-  {(bigint) icode___icode_tools___ICode___dup_with},
-  {(bigint) icode___icode_tools___IMove___inner_dup_with},
-  {(bigint) 1 /* 55: IMove < ICode: superclass init_table position */},
-  {(bigint) icode___icode_base___ICode1___arity},
-  {(bigint) icode___icode_base___ICode___result},
-  {(bigint) icode___icode_base___ICode___result__eq},
-  {(bigint) icode___icode_base___ICode___location},
-  {(bigint) icode___icode_base___ICode___location__eq},
-  {(bigint) icode___icode_base___IMove___is_pure},
-  {(bigint) icode___icode_base___ICode___init},
-  {(bigint) 0 /* 63: IMove < ICode1: superclass init_table position */},
-  {(bigint) icode___icode_base___ICode1___expr},
-  {(bigint) icode___icode_base___ICode1___init},
-  {(bigint) 3 /* 66: IMove < IMove: superclass init_table position */},
-  {(bigint) icode___icode_base___IMove___init},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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 /* 72: MMSrcModule < FFIVisited: superclass init_table position */},
+  {(bigint) ffi___ffi_base___MMModule___accept_ffi_visitor},
+  {(bigint) abstracttool___MMModule___dump_module_info},
+  {(bigint) syntax___extern_inline___MMModule___extern_code_blocks},
+  {(bigint) syntax___extern_inline___MMModule___extern_code_blocks__eq},
+  {(bigint) syntax___extern_inline___MMModule___uses_ffi__eq},
+  {(bigint) syntax___syntax_base___MMSrcModule___nodes},
+  {(bigint) syntax___syntax_base___MMSrcModule___nodes__eq},
+  {(bigint) metamodel___inheritance___MMModule___type_any},
+  {(bigint) metamodel___inheritance___MMModule___type_any_extern},
+  {(bigint) metamodel___inheritance___MMModule___import_global_classes},
+  {(bigint) metamodel___inheritance___MMModule___import_local_classes},
+  {(bigint) metamodel___static_type___MMModule___type_none},
+  {(bigint) metamodel___static_type___MMModule___type_bool},
+  {(bigint) 0 /* 86: MMSrcModule < MMModule: superclass init_table position */},
+  {(bigint) metamodel___abstractmetamodel___MMModule___context},
+  {(bigint) metamodel___abstractmetamodel___MMModule___name},
+  {(bigint) metamodel___abstractmetamodel___MMModule___full_name},
+  {(bigint) metamodel___abstractmetamodel___MMModule___directory},
+  {(bigint) metamodel___abstractmetamodel___MMModule___location},
+  {(bigint) metamodel___abstractmetamodel___MMModule___mhe},
+  {(bigint) metamodel___abstractmetamodel___MMModule___global_classes},
+  {(bigint) metamodel___abstractmetamodel___MMModule___local_classes},
+  {(bigint) metamodel___abstractmetamodel___MMModule___class_specialization_hierarchy},
+  {(bigint) metamodel___abstractmetamodel___MMModule___explicit_imported_modules},
+  {(bigint) metamodel___abstractmetamodel___MMModule___is_extern_hybrid},
+  {(bigint) metamodel___abstractmetamodel___MMModule___is_extern_hybrid__eq},
+  {(bigint) syntax___extern_inline___MMModule___uses_ffi},
+  {(bigint) metamodel___abstractmetamodel___MMModule___init},
+  {(bigint) metamodel___abstractmetamodel___MMModule___add_super_module},
+  {(bigint) metamodel___abstractmetamodel___MMModule___visibility_for},
+  {(bigint) metamodel___abstractmetamodel___MMModule_____bra},
+  {(bigint) metamodel___abstractmetamodel___MMModule___class_by_name},
+  {(bigint) metamodel___abstractmetamodel___MMModule___has_global_class_named},
+  {(bigint) metamodel___abstractmetamodel___MMModule___global_class_named},
+  {(bigint) metamodel___abstractmetamodel___MMModule___set_supers_class},
+  {(bigint) metamodel___abstractmetamodel___MMModule___register_global_class},
+  {(bigint) separate_options___MMSrcModule___compile_separate_module},
+  {(bigint) compiling___compiling_global___MMModule___declare_class_tables_to_c},
+  {(bigint) compiling___compiling_global___MMModule___compile_mod_to_c},
+  {(bigint) compiling___compiling_global___MMModule___compile_local_table_to_c},
+  {(bigint) compiling___table_computation___MMModule___local_table},
+  {(bigint) compiling___table_computation___MMModule___local_analysis},
+  {(bigint) compiling___compiling_base___MMModule___cname},
+  {(bigint) ffi___MMSrcModule___compile_separate_module},
+  {(bigint) native_interface___MMSrcModule___compile_separate_module},
+  {(bigint) compiling___MMModule___compile_separate_module},
+  {(bigint) native_interface___frontier___MMSrcModule___compile_frontier},
+  {(bigint) syntax___MMSrcModule___process_supermodules},
+  {(bigint) syntax___MMSrcModule___process_syntax},
+  {(bigint) syntax___icode_generation___MMSrcModule___generate_icode},
+  {(bigint) syntax___typing___MMSrcModule___do_typing},
+  {(bigint) 3 /* 124: MMSrcModule < MMSrcModule: superclass init_table position */},
+  {(bigint) syntax___syntax_base___MMSrcModule___clear_ast},
+  {(bigint) syntax___syntax_base___MMSrcModule___node},
+  {(bigint) syntax___syntax_base___MMSrcModule___src_local_classes},
+  {(bigint) syntax___syntax_base___MMSrcModule___init},
+  {(bigint) syntax___mmbuilder___MMSrcModule___do_mmbuilder},
+  {(bigint) syntax___extern_inline___MMSrcModule___do_mmbuilder},
+  {(bigint) syntax___mmbuilder___MMSrcModule___process_default_classes},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute IMove::_result */
-/* 3: Attribute IMove::_location */
-/* 4: Attribute IMove::_expr */
-void INIT_ATTRIBUTES__icode___icode_base___IMove(val_t p0){
+/* 2: Attribute MMSrcModule::@extern_code_blocks */
+/* 3: Attribute MMSrcModule::@uses_ffi */
+/* 4: Attribute MMSrcModule::_type_none */
+/* 5: Attribute MMSrcModule::_context */
+/* 6: Attribute MMSrcModule::_name */
+/* 7: Attribute MMSrcModule::_full_name */
+/* 8: Attribute MMSrcModule::_directory */
+/* 9: Attribute MMSrcModule::_location */
+/* 10: Attribute MMSrcModule::_mhe */
+/* 11: Attribute MMSrcModule::_global_classes */
+/* 12: Attribute MMSrcModule::_local_classes */
+/* 13: Attribute MMSrcModule::_class_specialization_hierarchy */
+/* 14: Attribute MMSrcModule::_intrude_modules */
+/* 15: Attribute MMSrcModule::_public_modules */
+/* 16: Attribute MMSrcModule::_private_modules */
+/* 17: Attribute MMSrcModule::_explicit_imported_modules */
+/* 18: Attribute MMSrcModule::_local_class_by_global */
+/* 19: Attribute MMSrcModule::_global_class_by_name */
+/* 20: Attribute MMSrcModule::@is_extern_hybrid */
+/* 21: Attribute MMSrcModule::_local_table */
+/* 22: Attribute MMSrcModule::_cname_cache */
+/* 23: Attribute MMSrcModule::_nodes */
+/* 24: Attribute MMSrcModule::_src_local_classes */
+static const char LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___MMSrcModule[] = "init var of MMSrcModule";
+void INIT_ATTRIBUTES__syntax___syntax_base___MMSrcModule(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__icode___icode_base___IMove;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___MMSrcModule;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:95 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:98 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* metamodel/abstractmetamodel.nit:131 */
+  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
+  ATTR_metamodel___abstractmetamodel___MMModule____global_classes(fra.me.REG[0]) = fra.me.REG[1];
+  /* metamodel/abstractmetamodel.nit:134 */
+  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
+  ATTR_metamodel___abstractmetamodel___MMModule____local_classes(fra.me.REG[0]) = fra.me.REG[1];
+  /* metamodel/abstractmetamodel.nit:137 */
+  fra.me.REG[1] = NEW_PartialOrder_metamodel___partial_order___PartialOrder___init();
+  ATTR_metamodel___abstractmetamodel___MMModule____class_specialization_hierarchy(fra.me.REG[0]) = fra.me.REG[1];
+  /* metamodel/abstractmetamodel.nit:140 */
+  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
+  ATTR_metamodel___abstractmetamodel___MMModule____intrude_modules(fra.me.REG[0]) = fra.me.REG[1];
+  /* metamodel/abstractmetamodel.nit:143 */
+  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
+  ATTR_metamodel___abstractmetamodel___MMModule____public_modules(fra.me.REG[0]) = fra.me.REG[1];
+  /* metamodel/abstractmetamodel.nit:146 */
+  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
+  ATTR_metamodel___abstractmetamodel___MMModule____private_modules(fra.me.REG[0]) = fra.me.REG[1];
+  /* metamodel/abstractmetamodel.nit:149 */
+  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
+  ATTR_metamodel___abstractmetamodel___MMModule____explicit_imported_modules(fra.me.REG[0]) = fra.me.REG[1];
+  /* metamodel/abstractmetamodel.nit:152 */
+  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
+  ATTR_metamodel___abstractmetamodel___MMModule____local_class_by_global(fra.me.REG[0]) = fra.me.REG[1];
+  /* metamodel/abstractmetamodel.nit:155 */
+  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
+  ATTR_metamodel___abstractmetamodel___MMModule____global_class_by_name(fra.me.REG[0]) = fra.me.REG[1];
+  /* metamodel/abstractmetamodel.nit:160 */
+  REGB0 = TAG_Bool(0);
+  ATTR_metamodel___abstractmetamodel___MMModule_____atis_extern_hybrid(fra.me.REG[0]) = REGB0;
+  /* metamodel/static_type.nit:534 */
+  fra.me.REG[1] = fra.me.REG[0];
+  /* metamodel/static_type.nit:535 */
+  fra.me.REG[1] = NEW_MMTypeNone_metamodel___static_type___MMTypeNone___init(fra.me.REG[1]);
+  ATTR_metamodel___static_type___MMModule____type_none(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/extern_inline.nit:33 */
+  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
+  ATTR_syntax___extern_inline___MMModule_____atextern_code_blocks(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/extern_inline.nit:34 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___extern_inline___MMModule_____atuses_ffi(fra.me.REG[0]) = REGB0;
+  /* compiling/table_computation.nit:398 */
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
+  ATTR_compiling___table_computation___MMModule____local_table(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/syntax_base.nit:29 */
+  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
+  ATTR_syntax___syntax_base___MMSrcModule____nodes(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_icode___icode_base___IMove(void)
+val_t NEW_syntax___syntax_base___MMSrcModule(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___IMove;
+  obj = alloc(sizeof(val_t) * 25);
+  obj->vft = (classtable_elt_t*)VFT_syntax___syntax_base___MMSrcModule;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_icode___icode_base___IMove(val_t p0){
+static const char LOCATE_CHECKNEW_syntax___syntax_base___MMSrcModule[] = "check new MMSrcModule";
+void CHECKNEW_syntax___syntax_base___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_icode___icode_base___IMove;
+  fra.me.meth = LOCATE_CHECKNEW_syntax___syntax_base___MMSrcModule;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_icode___icode_base___ICode1____expr(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMModule____context(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_expr", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_context", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___abstractmetamodel___MMModule_____atis_extern_hybrid(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@is_extern_hybrid", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_metamodel___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_syntax___extern_inline___MMModule_____atextern_code_blocks(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@extern_code_blocks", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_syntax___extern_inline___MMModule_____atuses_ffi(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@uses_ffi", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_compiling___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);
+  }
+  REGB0 = TAG_Bool(ATTR_syntax___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);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_IMove_icode___icode_base___IMove___init(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_MMSrcModule_syntax___syntax_base___MMSrcModule___init[] = "new MMSrcModule syntax_base::MMSrcModule::init";
+val_t NEW_MMSrcModule_syntax___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[4] = {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_IMove_icode___icode_base___IMove___init;
+  fra.me.line = 40;
+  fra.me.meth = LOCATE_NEW_MMSrcModule_syntax___syntax_base___MMSrcModule___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
   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;
-  /* ./icode//icode_base.nit:407 */
-  fra.me.REG[2] = NEW_icode___icode_base___IMove();
-  INIT_ATTRIBUTES__icode___icode_base___IMove(fra.me.REG[2]);
-  icode___icode_base___IMove___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_icode___icode_base___IMove(fra.me.REG[2]);
+  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_syntax___syntax_base___MMSrcModule();
+  INIT_ATTRIBUTES__syntax___syntax_base___MMSrcModule(fra.me.REG[5]);
+  syntax___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_syntax___syntax_base___MMSrcModule(fra.me.REG[5]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[5];
 }
-const classtable_elt_t VFT_icode___icode_base___IAttrRead[69] = {
-  {(bigint) 2943 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "IAttrRead" /* 2: Class Name */},
-  {(bigint) 3 /* 3: IAttrRead < Object: superclass typecheck marker */},
-  {(bigint) 239 /* 4: IAttrRead < ICode: superclass typecheck marker */},
-  {(bigint) 2243 /* 5: IAttrRead < ICode1: superclass typecheck marker */},
-  {(bigint) 2943 /* 6: IAttrRead < IAttrRead: superclass typecheck marker */},
+const classtable_elt_t VFT_syntax___syntax_base___MMSrcLocalClass[164] = {
+  {(bigint) 4207 /* 0: Identity */},
+  {(bigint) 33 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "MMSrcLocalClass" /* 2: Class Name */},
+  {(bigint) 3 /* 3: MMSrcLocalClass < Object: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 259 /* 5: MMSrcLocalClass < FFIVisited: superclass typecheck marker */},
+  {(bigint) 3131 /* 6: MMSrcLocalClass < MMLocalClass: superclass typecheck marker */},
+  {(bigint) 3535 /* 7: MMSrcLocalClass < MMConcreteClass: superclass typecheck marker */},
+  {(bigint) 4207 /* 8: MMSrcLocalClass < MMSrcLocalClass: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -147180,7 +176256,7 @@ const classtable_elt_t VFT_icode___icode_base___IAttrRead[69] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: IAttrRead < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: MMSrcLocalClass < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -147196,7 +176272,9 @@ const classtable_elt_t VFT_icode___icode_base___IAttrRead[69] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) metamodel___abstractmetamodel___MMLocalClass___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -147209,119 +176287,384 @@ const classtable_elt_t VFT_icode___icode_base___IAttrRead[69] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) compiling___compiling_icode___IAttrRead___compile_to_c},
-  {(bigint) compiling___compiling_icode___ICode___need_result},
-  {(bigint) compiling___compiling_icode___ICode___store_result},
-  {(bigint) compiling___compiling_icode___ICode___new_result},
-  {(bigint) analysis___icode_dump___ICode___dump},
-  {(bigint) analysis___icode_dump___IAttrRead___dump_intern},
-  {(bigint) icode___icode_tools___ICode___dup_with},
-  {(bigint) icode___icode_tools___IAttrRead___inner_dup_with},
-  {(bigint) 1 /* 55: IAttrRead < ICode: superclass init_table position */},
-  {(bigint) icode___icode_base___ICode1___arity},
-  {(bigint) icode___icode_base___ICode___result},
-  {(bigint) icode___icode_base___ICode___result__eq},
-  {(bigint) icode___icode_base___ICode___location},
-  {(bigint) icode___icode_base___ICode___location__eq},
-  {(bigint) icode___icode_base___IAttrRead___is_pure},
-  {(bigint) icode___icode_base___ICode___init},
-  {(bigint) 0 /* 63: IAttrRead < ICode1: superclass init_table position */},
-  {(bigint) icode___icode_base___ICode1___expr},
-  {(bigint) icode___icode_base___ICode1___init},
-  {(bigint) 3 /* 66: IAttrRead < IAttrRead: superclass init_table position */},
-  {(bigint) icode___icode_base___IAttrRead___property},
-  {(bigint) icode___icode_base___IAttrRead___init},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 2 /* 72: MMSrcLocalClass < FFIVisited: superclass init_table position */},
+  {(bigint) ffi___ffi_base___FFIVisited___accept_ffi_visitor},
+  {(bigint) abstracttool___MMLocalClass___dump_properties},
+  {(bigint) syntax___extern_type_inheritance___MMLocalClass___extern_type_origin},
+  {(bigint) syntax___extern_type_inheritance___MMLocalClass___extern_type_origin_cache},
+  {(bigint) syntax___extern_type_inheritance___MMLocalClass___extern_type_origin_cache__eq},
+  {(bigint) syntax___extern_type_inheritance___MMLocalClass___extern_type_cache},
+  {(bigint) syntax___extern_type_inheritance___MMLocalClass___extern_type_cache__eq},
+  {(bigint) syntax___extern_type_inheritance___MMLocalClass___extern_type},
+  {(bigint) syntax___extern_type_inheritance___MMLocalClass___extern_type__eq},
+  {(bigint) syntax___mmbuilder___MMSrcLocalClass___accept_class_visitor},
+  {(bigint) syntax___mmbuilder___MMSrcLocalClass___accept_properties_visitor},
+  {(bigint) syntax___extern_type_inheritance___MMLocalClass___extern_c_type},
+  {(bigint) primitive_info___MMLocalClass___primitive_info},
+  {(bigint) primitive_info___MMLocalClass___primitive_ctypes},
+  {(bigint) metamodel___genericity___MMLocalClass___get_formal},
+  {(bigint) metamodel___genericity___MMLocalClass___register_formal},
+  {(bigint) metamodel___genericity___MMLocalClass___get_instantiate_type},
+  {(bigint) metamodel___genericity___MMLocalClass___formals_types},
+  {(bigint) metamodel___static_type___MMLocalClass___get_type},
+  {(bigint) metamodel___genericity___MMLocalClass___is_generic},
+  {(bigint) metamodel___inheritance___MMLocalClass___compute_super_classes},
+  {(bigint) metamodel___inheritance___MMLocalClass___compute_ancestors},
+  {(bigint) metamodel___inheritance___MMLocalClass___inherit_global_properties},
+  {(bigint) metamodel___inheritance___MMLocalClass___make_visible_an_inherited_global_property},
+  {(bigint) metamodel___inheritance___MMLocalClass___add_direct_parent},
+  {(bigint) metamodel___inheritance___MMLocalClass___computed_super_classes},
+  {(bigint) metamodel___inheritance___MMLocalClass___computed_ancestors},
+  {(bigint) metamodel___inheritance___MMLocalClass___ancestor_for},
+  {(bigint) metamodel___inheritance___MMLocalClass___add_default_any_class},
+  {(bigint) metamodel___inheritance___MMLocalClass___add_super_classes},
+  {(bigint) metamodel___inheritance___MMLocalClass___add_explicit_classes},
+  {(bigint) metamodel___inheritance___MMLocalClass___compute_super_parents},
+  {(bigint) metamodel___inheritance___MMLocalClass___build_ancestors},
+  {(bigint) metamodel___inheritance___MMLocalClass___group_ancestors},
+  {(bigint) metamodel___inheritance___MMLocalClass___merge_ancestors},
+  {(bigint) metamodel___inheritance___MMLocalClass___inherit_local_property},
+  {(bigint) metamodel___genericity___MMLocalClass___get_type},
+  {(bigint) metamodel___static_type___MMLocalClass___add_ancestor},
+  {(bigint) metamodel___static_type___MMLocalClass___ancestors},
+  {(bigint) metamodel___static_type___MMLocalClass___ancestor},
+  {(bigint) 1 /* 113: MMSrcLocalClass < MMLocalClass: superclass init_table position */},
+  {(bigint) metamodel___abstractmetamodel___MMLocalClass___name},
+  {(bigint) metamodel___abstractmetamodel___MMLocalClass___arity},
+  {(bigint) metamodel___abstractmetamodel___MMLocalClass___mmmodule},
+  {(bigint) metamodel___abstractmetamodel___MMLocalClass___global},
+  {(bigint) metamodel___abstractmetamodel___MMLocalClass___crhe},
+  {(bigint) metamodel___abstractmetamodel___MMLocalClass___cshe},
+  {(bigint) metamodel___abstractmetamodel___MMLocalClass___che},
+  {(bigint) metamodel___inheritance___MMLocalClass___global_properties},
+  {(bigint) metamodel___abstractmetamodel___MMLocalClass___local_local_properties},
+  {(bigint) metamodel___abstractmetamodel___MMLocalClass___init},
+  {(bigint) metamodel___abstractmetamodel___MMLocalClass___for_module},
+  {(bigint) metamodel___abstractmetamodel___MMLocalClass___new_global},
+  {(bigint) metamodel___abstractmetamodel___MMLocalClass___set_global},
+  {(bigint) metamodel___inheritance___MMLocalClass___has_global_property_by_name},
+  {(bigint) metamodel___abstractmetamodel___MMLocalClass___get_property_by_name},
+  {(bigint) metamodel___abstractmetamodel___MMLocalClass___attribute},
+  {(bigint) metamodel___abstractmetamodel___MMLocalClass___method},
+  {(bigint) metamodel___abstractmetamodel___MMLocalClass___select_method},
+  {(bigint) metamodel___abstractmetamodel___MMLocalClass___select_attribute},
+  {(bigint) metamodel___abstractmetamodel___MMLocalClass___super_methods_named},
+  {(bigint) metamodel___abstractmetamodel___MMLocalClass___register_local_property},
+  {(bigint) metamodel___abstractmetamodel___MMLocalClass___register_global_property},
+  {(bigint) metamodel___inheritance___MMLocalClass___has_global_property},
+  {(bigint) metamodel___inheritance___MMLocalClass_____bra},
+  {(bigint) metamodel___abstractmetamodel___MMLocalClass___context},
+  {(bigint) metamodel___abstractmetamodel___MMLocalClass___total_order_compare},
+  {(bigint) metamodel___virtualtype___MMLocalClass___virtual_type},
+  {(bigint) metamodel___virtualtype___MMLocalClass___select_virtual_type},
+  {(bigint) ffi___ffi_base___MMLocalClass___c_type},
+  {(bigint) compiling___icode_generator___MMLocalClass___generate_icode_file},
+  {(bigint) compiling___compiling_base___MMLocalClass___cname},
+  {(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___compiling_global___MMLocalClass___declare_tables_to_c},
+  {(bigint) compiling___compiling_global___MMLocalClass___compile_tables_to_c},
+  {(bigint) compiling___table_computation___MMConcreteClass___class_color_pos},
+  {(bigint) compiling___table_computation___MMConcreteClass___class_layout},
+  {(bigint) compiling___table_computation___MMConcreteClass___instance_layout},
+  {(bigint) compiling___table_computation___MMConcreteClass___build_layout_in},
+  {(bigint) 0 /* 156: MMSrcLocalClass < MMConcreteClass: superclass init_table position */},
+  {(bigint) syntax___mmbuilder___MMSrcLocalClass___process_default_constructors},
+  {(bigint) syntax___mmbuilder___MMSrcLocalClass___add_src_local_property},
+  {(bigint) 4 /* 159: MMSrcLocalClass < MMSrcLocalClass: superclass init_table position */},
+  {(bigint) syntax___syntax_base___MMSrcLocalClass___node},
+  {(bigint) syntax___syntax_base___MMSrcLocalClass___formal_dict},
+  {(bigint) syntax___syntax_base___MMSrcLocalClass___src_local_properties},
+  {(bigint) syntax___syntax_base___MMSrcLocalClass___init},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute IAttrRead::_result */
-/* 3: Attribute IAttrRead::_location */
-/* 4: Attribute IAttrRead::_expr */
-/* 5: Attribute IAttrRead::_property */
-void INIT_ATTRIBUTES__icode___icode_base___IAttrRead(val_t p0){
+/* 2: Attribute MMSrcLocalClass::@extern_type_origin_cache */
+/* 3: Attribute MMSrcLocalClass::@extern_type_cache */
+/* 4: Attribute MMSrcLocalClass::@extern_type */
+/* 5: Attribute MMSrcLocalClass::_primitive_info_cache */
+/* 6: Attribute MMSrcLocalClass::_primitive_info_b */
+/* 7: Attribute MMSrcLocalClass::_types */
+/* 8: Attribute MMSrcLocalClass::_formals_types */
+/* 9: Attribute MMSrcLocalClass::_direct_parents */
+/* 10: Attribute MMSrcLocalClass::_computing_super */
+/* 11: Attribute MMSrcLocalClass::_are_global_properties_inherited */
+/* 12: Attribute MMSrcLocalClass::_base_type_cache */
+/* 13: Attribute MMSrcLocalClass::_ancestors */
+/* 14: Attribute MMSrcLocalClass::_name */
+/* 15: Attribute MMSrcLocalClass::_arity */
+/* 16: Attribute MMSrcLocalClass::_mmmodule */
+/* 17: Attribute MMSrcLocalClass::_global */
+/* 18: Attribute MMSrcLocalClass::_crhe */
+/* 19: Attribute MMSrcLocalClass::_cshe */
+/* 20: Attribute MMSrcLocalClass::_che */
+/* 21: Attribute MMSrcLocalClass::_local_property_by_global */
+/* 22: Attribute MMSrcLocalClass::_global_properties */
+/* 23: Attribute MMSrcLocalClass::_local_local_properties */
+/* 24: Attribute MMSrcLocalClass::_properties_by_name */
+/* 25: Attribute MMSrcLocalClass::_init_var_iroutine */
+/* 26: Attribute MMSrcLocalClass::_checknew_iroutine */
+/* 27: Attribute MMSrcLocalClass::_new_instance_iroutine */
+/* 28: Attribute MMSrcLocalClass::_class_color_pos */
+/* 29: Attribute MMSrcLocalClass::_class_layout */
+/* 30: Attribute MMSrcLocalClass::_instance_layout */
+/* 31: Attribute MMSrcLocalClass::_formal_dict */
+/* 32: Attribute MMSrcLocalClass::_src_local_properties */
+static const char LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___MMSrcLocalClass[] = "init var of MMSrcLocalClass";
+void INIT_ATTRIBUTES__syntax___syntax_base___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__icode___icode_base___IAttrRead;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___MMSrcLocalClass;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:95 */
+  /* metamodel/abstractmetamodel.nit:365 */
+  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
+  ATTR_metamodel___abstractmetamodel___MMLocalClass____local_property_by_global(fra.me.REG[0]) = fra.me.REG[1];
+  /* metamodel/abstractmetamodel.nit:368 */
+  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
+  ATTR_metamodel___abstractmetamodel___MMLocalClass____global_properties(fra.me.REG[0]) = fra.me.REG[1];
+  /* metamodel/abstractmetamodel.nit:371 */
+  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
+  ATTR_metamodel___abstractmetamodel___MMLocalClass____local_local_properties(fra.me.REG[0]) = fra.me.REG[1];
+  /* metamodel/abstractmetamodel.nit:374 */
+  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
+  ATTR_metamodel___abstractmetamodel___MMLocalClass____properties_by_name(fra.me.REG[0]) = fra.me.REG[1];
+  /* metamodel/inheritance.nit:82 */
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
+  ATTR_metamodel___inheritance___MMLocalClass____direct_parents(fra.me.REG[0]) = fra.me.REG[1];
+  /* metamodel/inheritance.nit:86 */
+  REGB0 = TAG_Bool(0);
+  ATTR_metamodel___inheritance___MMLocalClass____computing_super(fra.me.REG[0]) = REGB0;
+  /* metamodel/inheritance.nit:133 */
+  REGB0 = TAG_Bool(0);
+  ATTR_metamodel___inheritance___MMLocalClass____are_global_properties_inherited(fra.me.REG[0]) = REGB0;
+  /* metamodel/genericity.nit:41 */
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
+  ATTR_metamodel___genericity___MMLocalClass____types(fra.me.REG[0]) = fra.me.REG[1];
+  /* metamodel/genericity.nit:55 */
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
+  ATTR_metamodel___genericity___MMLocalClass____formals_types(fra.me.REG[0]) = fra.me.REG[1];
+  /* primitive_info.nit:28 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:98 */
+  ATTR_primitive_info___MMLocalClass____primitive_info_cache(fra.me.REG[0]) = fra.me.REG[1];
+  /* primitive_info.nit:32 */
+  REGB0 = TAG_Bool(0);
+  ATTR_primitive_info___MMLocalClass____primitive_info_b(fra.me.REG[0]) = REGB0;
+  /* program.nit:230 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_program___MMLocalClass____init_var_iroutine(fra.me.REG[0]) = fra.me.REG[1];
+  /* program.nit:232 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_program___MMLocalClass____checknew_iroutine(fra.me.REG[0]) = fra.me.REG[1];
+  /* program.nit:237 */
+  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
+  ATTR_program___MMLocalClass____new_instance_iroutine(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/extern_inline.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_syntax___extern_inline___MMLocalClass_____atextern_type(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/extern_type_inheritance.nit:35 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_syntax___extern_type_inheritance___MMLocalClass_____atextern_type_origin_cache(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/extern_type_inheritance.nit:38 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_syntax___extern_type_inheritance___MMLocalClass_____atextern_type_cache(fra.me.REG[0]) = fra.me.REG[1];
+  /* compiling/table_computation.nit:90 */
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
+  ATTR_compiling___table_computation___MMConcreteClass____class_layout(fra.me.REG[0]) = fra.me.REG[1];
+  /* compiling/table_computation.nit:93 */
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
+  ATTR_compiling___table_computation___MMConcreteClass____instance_layout(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/syntax_base.nit:91 */
+  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
+  ATTR_syntax___syntax_base___MMSrcLocalClass____formal_dict(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_icode___icode_base___IAttrRead(void)
+val_t NEW_syntax___syntax_base___MMSrcLocalClass(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___IAttrRead;
+  obj = alloc(sizeof(val_t) * 33);
+  obj->vft = (classtable_elt_t*)VFT_syntax___syntax_base___MMSrcLocalClass;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_icode___icode_base___IAttrRead(val_t p0){
+static const char LOCATE_CHECKNEW_syntax___syntax_base___MMSrcLocalClass[] = "check new MMSrcLocalClass";
+void CHECKNEW_syntax___syntax_base___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_icode___icode_base___IAttrRead;
+  fra.me.meth = LOCATE_CHECKNEW_syntax___syntax_base___MMSrcLocalClass;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_icode___icode_base___IAttrRead____property(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMLocalClass____name(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_property", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_name", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_icode___icode_base___ICode1____expr(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMLocalClass____arity(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_expr", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_arity", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_metamodel___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);
+  }
+  REGB0 = TAG_Bool(ATTR_compiling___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_compiling___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_syntax___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___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);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_IAttrRead_icode___icode_base___IAttrRead___init(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_MMSrcLocalClass_syntax___syntax_base___MMSrcLocalClass___init[] = "new MMSrcLocalClass syntax_base::MMSrcLocalClass::init";
+val_t NEW_MMSrcLocalClass_syntax___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};
+  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 = 423;
-  fra.me.meth = LOCATE_NEW_IAttrRead_icode___icode_base___IAttrRead___init;
+  fra.me.line = 96;
+  fra.me.meth = LOCATE_NEW_MMSrcLocalClass_syntax___syntax_base___MMSrcLocalClass___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   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;
-  /* ./icode//icode_base.nit:423 */
-  fra.me.REG[2] = NEW_icode___icode_base___IAttrRead();
-  INIT_ATTRIBUTES__icode___icode_base___IAttrRead(fra.me.REG[2]);
-  icode___icode_base___IAttrRead___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_icode___icode_base___IAttrRead(fra.me.REG[2]);
+  fra.me.REG[2] = p2;
+  REGB0 = p3;
+  /* syntax/syntax_base.nit:96 */
+  fra.me.REG[3] = NEW_syntax___syntax_base___MMSrcLocalClass();
+  INIT_ATTRIBUTES__syntax___syntax_base___MMSrcLocalClass(fra.me.REG[3]);
+  syntax___syntax_base___MMSrcLocalClass___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], REGB0, init_table);
+  CHECKNEW_syntax___syntax_base___MMSrcLocalClass(fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[3];
 }
-const classtable_elt_t VFT_icode___icode_base___IAttrWrite[70] = {
-  {(bigint) 2939 /* 0: Identity */},
-  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "IAttrWrite" /* 2: Class Name */},
-  {(bigint) 3 /* 3: IAttrWrite < Object: superclass typecheck marker */},
-  {(bigint) 239 /* 4: IAttrWrite < ICode: superclass typecheck marker */},
-  {(bigint) 2239 /* 5: IAttrWrite < ICode2: superclass typecheck marker */},
-  {(bigint) 2939 /* 6: IAttrWrite < IAttrWrite: superclass typecheck marker */},
+const classtable_elt_t VFT_syntax___syntax_base___MMSrcAttribute[78] = {
+  {(bigint) 3527 /* 0: Identity */},
+  {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "MMSrcAttribute" /* 2: Class Name */},
+  {(bigint) 3 /* 3: MMSrcAttribute < Object: superclass typecheck marker */},
+  {(bigint) 151 /* 4: MMSrcAttribute < MMLocalProperty: superclass typecheck marker */},
+  {(bigint) 3139 /* 5: MMSrcAttribute < MMAttribute: superclass typecheck marker */},
+  {(bigint) 3527 /* 6: MMSrcAttribute < MMSrcAttribute: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -147333,7 +176676,7 @@ const classtable_elt_t VFT_icode___icode_base___IAttrWrite[70] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: IAttrWrite < Object: superclass init_table position */},
+  {(bigint) 2 /* 19: MMSrcAttribute < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -147349,7 +176692,9 @@ const classtable_elt_t VFT_icode___icode_base___IAttrWrite[70] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -147362,105 +176707,126 @@ const classtable_elt_t VFT_icode___icode_base___IAttrWrite[70] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) compiling___compiling_icode___IAttrWrite___compile_to_c},
-  {(bigint) compiling___compiling_icode___ICode___need_result},
-  {(bigint) compiling___compiling_icode___ICode___store_result},
-  {(bigint) compiling___compiling_icode___ICode___new_result},
-  {(bigint) analysis___icode_dump___ICode___dump},
-  {(bigint) analysis___icode_dump___IAttrWrite___dump_intern},
-  {(bigint) icode___icode_tools___ICode___dup_with},
-  {(bigint) icode___icode_tools___IAttrWrite___inner_dup_with},
-  {(bigint) 1 /* 55: IAttrWrite < ICode: superclass init_table position */},
-  {(bigint) icode___icode_base___ICode2___arity},
-  {(bigint) icode___icode_base___ICode___result},
-  {(bigint) icode___icode_base___ICode___result__eq},
-  {(bigint) icode___icode_base___ICode___location},
-  {(bigint) icode___icode_base___ICode___location__eq},
-  {(bigint) icode___icode_base___ICode___is_pure},
-  {(bigint) icode___icode_base___ICode___init},
-  {(bigint) 0 /* 63: IAttrWrite < ICode2: superclass init_table position */},
-  {(bigint) icode___icode_base___ICode2___expr1},
-  {(bigint) icode___icode_base___ICode2___expr2},
-  {(bigint) icode___icode_base___ICode2___init},
-  {(bigint) 3 /* 67: IAttrWrite < IAttrWrite: superclass init_table position */},
-  {(bigint) icode___icode_base___IAttrWrite___property},
-  {(bigint) icode___icode_base___IAttrWrite___init},
+  {(bigint) syntax___mmbuilder___MMLocalProperty___accept_property_visitor},
+  {(bigint) syntax___syntax_base___MMSrcAttribute___node},
+  {(bigint) syntax___syntax_base___MMLocalProperty___is_init},
+  {(bigint) metamodel___inheritance___MMLocalProperty___inherit_global},
+  {(bigint) metamodel___static_type___MMLocalProperty___signature},
+  {(bigint) metamodel___static_type___MMLocalProperty___signature__eq},
+  {(bigint) metamodel___static_type___MMLocalProperty___signature_for},
+  {(bigint) 1 /* 57: MMSrcAttribute < MMLocalProperty: superclass init_table position */},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___name},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___local_class},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___global},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___is_global_set},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___prhe},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___mmmodule},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___full_name},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___set_global},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___new_global},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___need_super},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___need_super__eq},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___init},
+  {(bigint) compiling___compiling_base___MMLocalProperty___cname},
+  {(bigint) compiling___compiling_base___MMLocalProperty___super_meth_call},
+  {(bigint) syntax___icode_generation___MMSrcAttribute___iroutine},
+  {(bigint) 0 /* 73: MMSrcAttribute < MMAttribute: superclass init_table position */},
+  {(bigint) syntax___icode_generation___MMSrcAttribute___iroutine__eq},
+  {(bigint) syntax___icode_generation___MMSrcAttribute___generate_iroutine},
+  {(bigint) 3 /* 76: MMSrcAttribute < MMSrcAttribute: superclass init_table position */},
+  {(bigint) syntax___syntax_base___MMSrcAttribute___init},
 };
 /* 0: Pointer to the classtable */
 /* 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__icode___icode_base___IAttrWrite(val_t p0){
+/* 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 */
+static const char LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___MMSrcAttribute[] = "init var of MMSrcAttribute";
+void INIT_ATTRIBUTES__syntax___syntax_base___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__icode___icode_base___IAttrWrite;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___MMSrcAttribute;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:95 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:98 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* metamodel/abstractmetamodel.nit:653 */
+  REGB0 = TAG_Bool(0);
+  ATTR_metamodel___abstractmetamodel___MMLocalProperty____need_super(fra.me.REG[0]) = REGB0;
+  /* metamodel/static_type.nit:56 */
+  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
+  ATTR_metamodel___static_type___MMLocalProperty____signatures_cache(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_icode___icode_base___IAttrWrite(void)
+val_t NEW_syntax___syntax_base___MMSrcAttribute(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___IAttrWrite;
+  obj = alloc(sizeof(val_t) * 11);
+  obj->vft = (classtable_elt_t*)VFT_syntax___syntax_base___MMSrcAttribute;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_icode___icode_base___IAttrWrite(val_t p0){
+static const char LOCATE_CHECKNEW_syntax___syntax_base___MMSrcAttribute[] = "check new MMSrcAttribute";
+void CHECKNEW_syntax___syntax_base___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_icode___icode_base___IAttrWrite;
+  fra.me.meth = LOCATE_CHECKNEW_syntax___syntax_base___MMSrcAttribute;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_icode___icode_base___IAttrWrite____property(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMLocalProperty____name(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_property", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_name", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_icode___icode_base___ICode2____expr1(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMLocalProperty____local_class(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_expr1", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_icode___icode_base___ICode2____expr2(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMLocalProperty____need_super(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_expr2", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_need_super", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_metamodel___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_IAttrWrite_icode___icode_base___IAttrWrite___init(val_t p0, val_t p1, val_t p2){
+static const char LOCATE_NEW_MMSrcAttribute_syntax___syntax_base___MMSrcAttribute___init[] = "new MMSrcAttribute syntax_base::MMSrcAttribute::init";
+val_t NEW_MMSrcAttribute_syntax___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 = 439;
-  fra.me.meth = LOCATE_NEW_IAttrWrite_icode___icode_base___IAttrWrite___init;
+  fra.me.line = 139;
+  fra.me.meth = LOCATE_NEW_MMSrcAttribute_syntax___syntax_base___MMSrcAttribute___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -147468,24 +176834,25 @@ val_t NEW_IAttrWrite_icode___icode_base___IAttrWrite___init(val_t p0, val_t p1,
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./icode//icode_base.nit:439 */
-  fra.me.REG[3] = NEW_icode___icode_base___IAttrWrite();
-  INIT_ATTRIBUTES__icode___icode_base___IAttrWrite(fra.me.REG[3]);
-  icode___icode_base___IAttrWrite___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
-  CHECKNEW_icode___icode_base___IAttrWrite(fra.me.REG[3]);
+  /* syntax/syntax_base.nit:139 */
+  fra.me.REG[3] = NEW_syntax___syntax_base___MMSrcAttribute();
+  INIT_ATTRIBUTES__syntax___syntax_base___MMSrcAttribute(fra.me.REG[3]);
+  syntax___syntax_base___MMSrcAttribute___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_syntax___syntax_base___MMSrcAttribute(fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[3];
 }
-const classtable_elt_t VFT_icode___icode_base___IAttrIsset[69] = {
-  {(bigint) 2947 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "IAttrIsset" /* 2: Class Name */},
-  {(bigint) 3 /* 3: IAttrIsset < Object: superclass typecheck marker */},
-  {(bigint) 239 /* 4: IAttrIsset < ICode: superclass typecheck marker */},
-  {(bigint) 2243 /* 5: IAttrIsset < ICode1: superclass typecheck marker */},
-  {(bigint) 2947 /* 6: IAttrIsset < IAttrIsset: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_syntax___syntax_base___MMReadImplementationMethod[113] = {
+  {(bigint) 4615 /* 0: Identity */},
+  {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "MMReadImplementationMethod" /* 2: Class Name */},
+  {(bigint) 3 /* 3: MMReadImplementationMethod < Object: superclass typecheck marker */},
+  {(bigint) 151 /* 4: MMReadImplementationMethod < MMLocalProperty: superclass typecheck marker */},
+  {(bigint) 259 /* 5: MMReadImplementationMethod < FFIVisited: superclass typecheck marker */},
+  {(bigint) 3127 /* 6: MMReadImplementationMethod < MMMethod: superclass typecheck marker */},
+  {(bigint) 3523 /* 7: MMReadImplementationMethod < MMSrcMethod: superclass typecheck marker */},
+  {(bigint) 4215 /* 8: MMReadImplementationMethod < MMAttrImplementationMethod: superclass typecheck marker */},
+  {(bigint) 4615 /* 9: MMReadImplementationMethod < MMReadImplementationMethod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -147495,7 +176862,7 @@ const classtable_elt_t VFT_icode___icode_base___IAttrIsset[69] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: IAttrIsset < Object: superclass init_table position */},
+  {(bigint) 5 /* 19: MMReadImplementationMethod < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -147511,7 +176878,9 @@ const classtable_elt_t VFT_icode___icode_base___IAttrIsset[69] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -147524,121 +176893,191 @@ const classtable_elt_t VFT_icode___icode_base___IAttrIsset[69] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) compiling___compiling_icode___IAttrIsset___compile_to_c},
-  {(bigint) compiling___compiling_icode___ICode___need_result},
-  {(bigint) compiling___compiling_icode___ICode___store_result},
-  {(bigint) compiling___compiling_icode___ICode___new_result},
-  {(bigint) analysis___icode_dump___ICode___dump},
-  {(bigint) analysis___icode_dump___IAttrIsset___dump_intern},
-  {(bigint) icode___icode_tools___ICode___dup_with},
-  {(bigint) icode___icode_tools___IAttrIsset___inner_dup_with},
-  {(bigint) 1 /* 55: IAttrIsset < ICode: superclass init_table position */},
-  {(bigint) icode___icode_base___ICode1___arity},
-  {(bigint) icode___icode_base___ICode___result},
-  {(bigint) icode___icode_base___ICode___result__eq},
-  {(bigint) icode___icode_base___ICode___location},
-  {(bigint) icode___icode_base___ICode___location__eq},
-  {(bigint) icode___icode_base___IAttrIsset___is_pure},
-  {(bigint) icode___icode_base___ICode___init},
-  {(bigint) 0 /* 63: IAttrIsset < ICode1: superclass init_table position */},
-  {(bigint) icode___icode_base___ICode1___expr},
-  {(bigint) icode___icode_base___ICode1___init},
-  {(bigint) 3 /* 66: IAttrIsset < IAttrIsset: superclass init_table position */},
-  {(bigint) icode___icode_base___IAttrIsset___property},
-  {(bigint) icode___icode_base___IAttrIsset___init},
+  {(bigint) syntax___mmbuilder___MMLocalProperty___accept_property_visitor},
+  {(bigint) syntax___syntax_base___MMAttrImplementationMethod___node},
+  {(bigint) syntax___syntax_base___MMLocalProperty___is_init},
+  {(bigint) metamodel___inheritance___MMLocalProperty___inherit_global},
+  {(bigint) metamodel___static_type___MMLocalProperty___signature},
+  {(bigint) metamodel___static_type___MMLocalProperty___signature__eq},
+  {(bigint) metamodel___static_type___MMLocalProperty___signature_for},
+  {(bigint) 4 /* 57: MMReadImplementationMethod < MMLocalProperty: superclass init_table position */},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___name},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___local_class},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___global},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___is_global_set},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___prhe},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___mmmodule},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___full_name},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___set_global},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___new_global},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___need_super},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___need_super__eq},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___init},
+  {(bigint) compiling___compiling_base___MMLocalProperty___cname},
+  {(bigint) compiling___compiling_base___MMLocalProperty___super_meth_call},
+  {(bigint) 3 /* 72: MMReadImplementationMethod < FFIVisited: superclass init_table position */},
+  {(bigint) ffi___c___MMMethod___accept_ffi_visitor},
+  {(bigint) ffi___ffi_base___MMMethod___accept_ffi_visitor},
+  {(bigint) syntax___extern_inline___MMMethod___extern_implementation},
+  {(bigint) syntax___extern_inline___MMMethod___extern_implementation__eq},
+  {(bigint) primitive_info___MMMethod___default_extern_name},
+  {(bigint) primitive_info___MMMethod___friendly_extern_name},
+  {(bigint) metamodel___static_type___MMMethod___explicit_casts},
+  {(bigint) 2 /* 80: MMReadImplementationMethod < MMMethod: superclass init_table position */},
+  {(bigint) syntax___syntax_base___MMSrcMethod___is_intern},
+  {(bigint) syntax___syntax_base___MMSrcMethod___is_abstract},
+  {(bigint) syntax___syntax_base___MMSrcMethod___is_extern},
+  {(bigint) syntax___syntax_base___MMSrcMethod___extern_name},
+  {(bigint) metamodel___abstractmetamodel___MMMethod___explicit_imports},
+  {(bigint) native_interface___ni_metamodel___MMMethod___local_friendly_name_from},
+  {(bigint) native_interface___ni_metamodel___MMMethod___friendly_super_cname},
+  {(bigint) native_interface___ni_metamodel___MMMethod___local_friendly_super_name_from},
+  {(bigint) native_interface___ni_metamodel___MMMethod___friendly_cparams},
+  {(bigint) native_interface___ni_metamodel___MMMethod___csignature_with_suffix},
+  {(bigint) native_interface___ni_metamodel___MMMethod___csignature_with_name},
+  {(bigint) native_interface___ni_metamodel___MMMethod___friendly_csignature},
+  {(bigint) native_interface___ni_metamodel___MMMethod___frontier_csignature_from},
+  {(bigint) native_interface___ni_metamodel___MMMethod___friendly_super_csignature},
+  {(bigint) native_interface___ni_metamodel___MMMethod___frontier_super_csignature_from},
+  {(bigint) native_interface___ni_metamodel___MMMethod___impl_csignature},
+  {(bigint) native_interface___ni_metamodel___MMMethod___cparams},
+  {(bigint) native_interface___ni_metamodel___MMMethod___out_csignature},
+  {(bigint) compiling___icode_generator___MMMethod___generate_icode},
+  {(bigint) syntax___icode_generation___MMSrcMethod___iroutine},
+  {(bigint) compiling___compiling_global___MMMethod___compile_property_to_c},
+  {(bigint) native_interface___frontier___MMSrcMethod___compile_extern_to_frontier},
+  {(bigint) native_interface___frontier___MMSrcMethod___compile_super_to_frontier},
+  {(bigint) native_interface___frontier___MMSrcMethod___compile_out_to_frontier},
+  {(bigint) syntax___icode_generation___MMSrcMethod___iroutine__eq},
+  {(bigint) syntax___icode_generation___MMSrcMethod___generate_iroutine},
+  {(bigint) syntax___icode_generation___MMReadImplementationMethod___inner_generate_iroutine},
+  {(bigint) 1 /* 108: MMReadImplementationMethod < MMSrcMethod: superclass init_table position */},
+  {(bigint) 0 /* 109: MMReadImplementationMethod < MMAttrImplementationMethod: superclass init_table position */},
+  {(bigint) syntax___syntax_base___MMAttrImplementationMethod___init},
+  {(bigint) 6 /* 111: MMReadImplementationMethod < MMReadImplementationMethod: superclass init_table position */},
+  {(bigint) syntax___syntax_base___MMReadImplementationMethod___init},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute IAttrIsset::_result */
-/* 3: Attribute IAttrIsset::_location */
-/* 4: Attribute IAttrIsset::_expr */
-/* 5: Attribute IAttrIsset::_property */
-void INIT_ATTRIBUTES__icode___icode_base___IAttrIsset(val_t p0){
+/* 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::@extern_implementation */
+/* 11: Attribute MMReadImplementationMethod::_iroutine */
+static const char LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___MMReadImplementationMethod[] = "init var of MMReadImplementationMethod";
+void INIT_ATTRIBUTES__syntax___syntax_base___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__icode___icode_base___IAttrIsset;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___MMReadImplementationMethod;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:95 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:98 */
+  /* metamodel/abstractmetamodel.nit:653 */
+  REGB0 = TAG_Bool(0);
+  ATTR_metamodel___abstractmetamodel___MMLocalProperty____need_super(fra.me.REG[0]) = REGB0;
+  /* metamodel/static_type.nit:56 */
+  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
+  ATTR_metamodel___static_type___MMLocalProperty____signatures_cache(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/extern_inline.nit:43 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_syntax___extern_inline___MMMethod_____atextern_implementation(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_icode___icode_base___IAttrIsset(void)
+val_t NEW_syntax___syntax_base___MMReadImplementationMethod(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___IAttrIsset;
+  obj = alloc(sizeof(val_t) * 12);
+  obj->vft = (classtable_elt_t*)VFT_syntax___syntax_base___MMReadImplementationMethod;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_icode___icode_base___IAttrIsset(val_t p0){
+static const char LOCATE_CHECKNEW_syntax___syntax_base___MMReadImplementationMethod[] = "check new MMReadImplementationMethod";
+void CHECKNEW_syntax___syntax_base___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_icode___icode_base___IAttrIsset;
+  fra.me.meth = LOCATE_CHECKNEW_syntax___syntax_base___MMReadImplementationMethod;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_icode___icode_base___IAttrIsset____property(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMLocalProperty____name(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_property", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_name", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_icode___icode_base___ICode1____expr(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMLocalProperty____local_class(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_expr", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_metamodel___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_metamodel___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_IAttrIsset_icode___icode_base___IAttrIsset___init(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_MMReadImplementationMethod_syntax___syntax_base___MMReadImplementationMethod___init[] = "new MMReadImplementationMethod syntax_base::MMReadImplementationMethod::init";
+val_t NEW_MMReadImplementationMethod_syntax___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[4] = {0, 0, 0, 0};
+  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 = 454;
-  fra.me.meth = LOCATE_NEW_IAttrIsset_icode___icode_base___IAttrIsset___init;
+  fra.me.line = 169;
+  fra.me.meth = LOCATE_NEW_MMReadImplementationMethod_syntax___syntax_base___MMReadImplementationMethod___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   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;
-  /* ./icode//icode_base.nit:454 */
-  fra.me.REG[2] = NEW_icode___icode_base___IAttrIsset();
-  INIT_ATTRIBUTES__icode___icode_base___IAttrIsset(fra.me.REG[2]);
-  icode___icode_base___IAttrIsset___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_icode___icode_base___IAttrIsset(fra.me.REG[2]);
+  fra.me.REG[2] = p2;
+  /* syntax/syntax_base.nit:169 */
+  fra.me.REG[3] = NEW_syntax___syntax_base___MMReadImplementationMethod();
+  INIT_ATTRIBUTES__syntax___syntax_base___MMReadImplementationMethod(fra.me.REG[3]);
+  syntax___syntax_base___MMReadImplementationMethod___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_syntax___syntax_base___MMReadImplementationMethod(fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[3];
 }
-const classtable_elt_t VFT_icode___icode_base___ITypeCheck[70] = {
-  {(bigint) 2859 /* 0: Identity */},
-  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ITypeCheck" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ITypeCheck < Object: superclass typecheck marker */},
-  {(bigint) 239 /* 4: ITypeCheck < ICode: superclass typecheck marker */},
-  {(bigint) 2239 /* 5: ITypeCheck < ICode2: superclass typecheck marker */},
-  {(bigint) 2859 /* 6: ITypeCheck < ITypeCheck: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_syntax___syntax_base___MMWriteImplementationMethod[113] = {
+  {(bigint) 4611 /* 0: Identity */},
+  {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "MMWriteImplementationMethod" /* 2: Class Name */},
+  {(bigint) 3 /* 3: MMWriteImplementationMethod < Object: superclass typecheck marker */},
+  {(bigint) 151 /* 4: MMWriteImplementationMethod < MMLocalProperty: superclass typecheck marker */},
+  {(bigint) 259 /* 5: MMWriteImplementationMethod < FFIVisited: superclass typecheck marker */},
+  {(bigint) 3127 /* 6: MMWriteImplementationMethod < MMMethod: superclass typecheck marker */},
+  {(bigint) 3523 /* 7: MMWriteImplementationMethod < MMSrcMethod: superclass typecheck marker */},
+  {(bigint) 4215 /* 8: MMWriteImplementationMethod < MMAttrImplementationMethod: superclass typecheck marker */},
+  {(bigint) 4611 /* 9: MMWriteImplementationMethod < MMWriteImplementationMethod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -147648,7 +177087,7 @@ const classtable_elt_t VFT_icode___icode_base___ITypeCheck[70] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: ITypeCheck < Object: superclass init_table position */},
+  {(bigint) 5 /* 19: MMWriteImplementationMethod < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -147664,7 +177103,9 @@ const classtable_elt_t VFT_icode___icode_base___ITypeCheck[70] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -147677,105 +177118,165 @@ const classtable_elt_t VFT_icode___icode_base___ITypeCheck[70] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) compiling___compiling_icode___ITypeCheck___compile_to_c},
-  {(bigint) compiling___compiling_icode___ICode___need_result},
-  {(bigint) compiling___compiling_icode___ICode___store_result},
-  {(bigint) compiling___compiling_icode___ICode___new_result},
-  {(bigint) analysis___icode_dump___ICode___dump},
-  {(bigint) analysis___icode_dump___ITypeCheck___dump_intern},
-  {(bigint) icode___icode_tools___ICode___dup_with},
-  {(bigint) icode___icode_tools___ITypeCheck___inner_dup_with},
-  {(bigint) 1 /* 55: ITypeCheck < ICode: superclass init_table position */},
-  {(bigint) icode___icode_base___ICode2___arity},
-  {(bigint) icode___icode_base___ICode___result},
-  {(bigint) icode___icode_base___ICode___result__eq},
-  {(bigint) icode___icode_base___ICode___location},
-  {(bigint) icode___icode_base___ICode___location__eq},
-  {(bigint) icode___icode_base___ITypeCheck___is_pure},
-  {(bigint) icode___icode_base___ICode___init},
-  {(bigint) 0 /* 63: ITypeCheck < ICode2: superclass init_table position */},
-  {(bigint) icode___icode_base___ICode2___expr1},
-  {(bigint) icode___icode_base___ICode2___expr2},
-  {(bigint) icode___icode_base___ICode2___init},
-  {(bigint) 3 /* 67: ITypeCheck < ITypeCheck: superclass init_table position */},
-  {(bigint) icode___icode_base___ITypeCheck___stype},
-  {(bigint) icode___icode_base___ITypeCheck___init},
+  {(bigint) syntax___mmbuilder___MMLocalProperty___accept_property_visitor},
+  {(bigint) syntax___syntax_base___MMAttrImplementationMethod___node},
+  {(bigint) syntax___syntax_base___MMLocalProperty___is_init},
+  {(bigint) metamodel___inheritance___MMLocalProperty___inherit_global},
+  {(bigint) metamodel___static_type___MMLocalProperty___signature},
+  {(bigint) metamodel___static_type___MMLocalProperty___signature__eq},
+  {(bigint) metamodel___static_type___MMLocalProperty___signature_for},
+  {(bigint) 4 /* 57: MMWriteImplementationMethod < MMLocalProperty: superclass init_table position */},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___name},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___local_class},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___global},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___is_global_set},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___prhe},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___mmmodule},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___full_name},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___set_global},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___new_global},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___need_super},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___need_super__eq},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___init},
+  {(bigint) compiling___compiling_base___MMLocalProperty___cname},
+  {(bigint) compiling___compiling_base___MMLocalProperty___super_meth_call},
+  {(bigint) 3 /* 72: MMWriteImplementationMethod < FFIVisited: superclass init_table position */},
+  {(bigint) ffi___c___MMMethod___accept_ffi_visitor},
+  {(bigint) ffi___ffi_base___MMMethod___accept_ffi_visitor},
+  {(bigint) syntax___extern_inline___MMMethod___extern_implementation},
+  {(bigint) syntax___extern_inline___MMMethod___extern_implementation__eq},
+  {(bigint) primitive_info___MMMethod___default_extern_name},
+  {(bigint) primitive_info___MMMethod___friendly_extern_name},
+  {(bigint) metamodel___static_type___MMMethod___explicit_casts},
+  {(bigint) 2 /* 80: MMWriteImplementationMethod < MMMethod: superclass init_table position */},
+  {(bigint) syntax___syntax_base___MMSrcMethod___is_intern},
+  {(bigint) syntax___syntax_base___MMSrcMethod___is_abstract},
+  {(bigint) syntax___syntax_base___MMSrcMethod___is_extern},
+  {(bigint) syntax___syntax_base___MMSrcMethod___extern_name},
+  {(bigint) metamodel___abstractmetamodel___MMMethod___explicit_imports},
+  {(bigint) native_interface___ni_metamodel___MMMethod___local_friendly_name_from},
+  {(bigint) native_interface___ni_metamodel___MMMethod___friendly_super_cname},
+  {(bigint) native_interface___ni_metamodel___MMMethod___local_friendly_super_name_from},
+  {(bigint) native_interface___ni_metamodel___MMMethod___friendly_cparams},
+  {(bigint) native_interface___ni_metamodel___MMMethod___csignature_with_suffix},
+  {(bigint) native_interface___ni_metamodel___MMMethod___csignature_with_name},
+  {(bigint) native_interface___ni_metamodel___MMMethod___friendly_csignature},
+  {(bigint) native_interface___ni_metamodel___MMMethod___frontier_csignature_from},
+  {(bigint) native_interface___ni_metamodel___MMMethod___friendly_super_csignature},
+  {(bigint) native_interface___ni_metamodel___MMMethod___frontier_super_csignature_from},
+  {(bigint) native_interface___ni_metamodel___MMMethod___impl_csignature},
+  {(bigint) native_interface___ni_metamodel___MMMethod___cparams},
+  {(bigint) native_interface___ni_metamodel___MMMethod___out_csignature},
+  {(bigint) compiling___icode_generator___MMMethod___generate_icode},
+  {(bigint) syntax___icode_generation___MMSrcMethod___iroutine},
+  {(bigint) compiling___compiling_global___MMMethod___compile_property_to_c},
+  {(bigint) native_interface___frontier___MMSrcMethod___compile_extern_to_frontier},
+  {(bigint) native_interface___frontier___MMSrcMethod___compile_super_to_frontier},
+  {(bigint) native_interface___frontier___MMSrcMethod___compile_out_to_frontier},
+  {(bigint) syntax___icode_generation___MMSrcMethod___iroutine__eq},
+  {(bigint) syntax___icode_generation___MMSrcMethod___generate_iroutine},
+  {(bigint) syntax___icode_generation___MMWriteImplementationMethod___inner_generate_iroutine},
+  {(bigint) 1 /* 108: MMWriteImplementationMethod < MMSrcMethod: superclass init_table position */},
+  {(bigint) 0 /* 109: MMWriteImplementationMethod < MMAttrImplementationMethod: superclass init_table position */},
+  {(bigint) syntax___syntax_base___MMAttrImplementationMethod___init},
+  {(bigint) 6 /* 111: MMWriteImplementationMethod < MMWriteImplementationMethod: superclass init_table position */},
+  {(bigint) syntax___syntax_base___MMWriteImplementationMethod___init},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ITypeCheck::_result */
-/* 3: Attribute ITypeCheck::_location */
-/* 4: Attribute ITypeCheck::_expr1 */
-/* 5: Attribute ITypeCheck::_expr2 */
-/* 6: Attribute ITypeCheck::_stype */
-void INIT_ATTRIBUTES__icode___icode_base___ITypeCheck(val_t p0){
+/* 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::@extern_implementation */
+/* 11: Attribute MMWriteImplementationMethod::_iroutine */
+static const char LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___MMWriteImplementationMethod[] = "init var of MMWriteImplementationMethod";
+void INIT_ATTRIBUTES__syntax___syntax_base___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__icode___icode_base___ITypeCheck;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___MMWriteImplementationMethod;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:95 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:98 */
+  /* metamodel/abstractmetamodel.nit:653 */
+  REGB0 = TAG_Bool(0);
+  ATTR_metamodel___abstractmetamodel___MMLocalProperty____need_super(fra.me.REG[0]) = REGB0;
+  /* metamodel/static_type.nit:56 */
+  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
+  ATTR_metamodel___static_type___MMLocalProperty____signatures_cache(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/extern_inline.nit:43 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_syntax___extern_inline___MMMethod_____atextern_implementation(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_icode___icode_base___ITypeCheck(void)
+val_t NEW_syntax___syntax_base___MMWriteImplementationMethod(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___ITypeCheck;
+  obj = alloc(sizeof(val_t) * 12);
+  obj->vft = (classtable_elt_t*)VFT_syntax___syntax_base___MMWriteImplementationMethod;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_icode___icode_base___ITypeCheck(val_t p0){
+static const char LOCATE_CHECKNEW_syntax___syntax_base___MMWriteImplementationMethod[] = "check new MMWriteImplementationMethod";
+void CHECKNEW_syntax___syntax_base___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_icode___icode_base___ITypeCheck;
+  fra.me.meth = LOCATE_CHECKNEW_syntax___syntax_base___MMWriteImplementationMethod;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_icode___icode_base___ITypeCheck____stype(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMLocalProperty____name(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_stype", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_name", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_icode___icode_base___ICode2____expr1(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMLocalProperty____local_class(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_expr1", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_icode___icode_base___ICode2____expr2(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMLocalProperty____need_super(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_expr2", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_need_super", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_metamodel___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_ITypeCheck_icode___icode_base___ITypeCheck___init(val_t p0, val_t p1, val_t p2){
+static const char LOCATE_NEW_MMWriteImplementationMethod_syntax___syntax_base___MMWriteImplementationMethod___init[] = "new MMWriteImplementationMethod syntax_base::MMWriteImplementationMethod::init";
+val_t NEW_MMWriteImplementationMethod_syntax___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[4] = {0, 0, 0, 0};
+  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 = 471;
-  fra.me.meth = LOCATE_NEW_ITypeCheck_icode___icode_base___ITypeCheck___init;
+  fra.me.line = 178;
+  fra.me.meth = LOCATE_NEW_MMWriteImplementationMethod_syntax___syntax_base___MMWriteImplementationMethod___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -147783,23 +177284,24 @@ val_t NEW_ITypeCheck_icode___icode_base___ITypeCheck___init(val_t p0, val_t p1,
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./icode//icode_base.nit:471 */
-  fra.me.REG[3] = NEW_icode___icode_base___ITypeCheck();
-  INIT_ATTRIBUTES__icode___icode_base___ITypeCheck(fra.me.REG[3]);
-  icode___icode_base___ITypeCheck___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
-  CHECKNEW_icode___icode_base___ITypeCheck(fra.me.REG[3]);
+  /* syntax/syntax_base.nit:178 */
+  fra.me.REG[3] = NEW_syntax___syntax_base___MMWriteImplementationMethod();
+  INIT_ATTRIBUTES__syntax___syntax_base___MMWriteImplementationMethod(fra.me.REG[3]);
+  syntax___syntax_base___MMWriteImplementationMethod___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_syntax___syntax_base___MMWriteImplementationMethod(fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[3];
 }
-const classtable_elt_t VFT_icode___icode_base___IIs[69] = {
-  {(bigint) 2895 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "IIs" /* 2: Class Name */},
-  {(bigint) 3 /* 3: IIs < Object: superclass typecheck marker */},
-  {(bigint) 239 /* 4: IIs < ICode: superclass typecheck marker */},
-  {(bigint) 2239 /* 5: IIs < ICode2: superclass typecheck marker */},
-  {(bigint) 2895 /* 6: IIs < IIs: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_syntax___syntax_base___MMMethSrcMethod[112] = {
+  {(bigint) 4211 /* 0: Identity */},
+  {(bigint) 19 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "MMMethSrcMethod" /* 2: Class Name */},
+  {(bigint) 3 /* 3: MMMethSrcMethod < Object: superclass typecheck marker */},
+  {(bigint) 151 /* 4: MMMethSrcMethod < MMLocalProperty: superclass typecheck marker */},
+  {(bigint) 259 /* 5: MMMethSrcMethod < FFIVisited: superclass typecheck marker */},
+  {(bigint) 3127 /* 6: MMMethSrcMethod < MMMethod: superclass typecheck marker */},
+  {(bigint) 3523 /* 7: MMMethSrcMethod < MMSrcMethod: superclass typecheck marker */},
+  {(bigint) 4211 /* 8: MMMethSrcMethod < MMMethSrcMethod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -147810,7 +177312,7 @@ const classtable_elt_t VFT_icode___icode_base___IIs[69] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: IIs < Object: superclass init_table position */},
+  {(bigint) 4 /* 19: MMMethSrcMethod < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -147826,7 +177328,9 @@ const classtable_elt_t VFT_icode___icode_base___IIs[69] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -147839,119 +177343,231 @@ const classtable_elt_t VFT_icode___icode_base___IIs[69] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) compiling___compiling_icode___IIs___compile_to_c},
-  {(bigint) compiling___compiling_icode___ICode___need_result},
-  {(bigint) compiling___compiling_icode___ICode___store_result},
-  {(bigint) compiling___compiling_icode___ICode___new_result},
-  {(bigint) analysis___icode_dump___ICode___dump},
-  {(bigint) analysis___icode_dump___IIs___dump_intern},
-  {(bigint) icode___icode_tools___ICode___dup_with},
-  {(bigint) icode___icode_tools___IIs___inner_dup_with},
-  {(bigint) 1 /* 55: IIs < ICode: superclass init_table position */},
-  {(bigint) icode___icode_base___ICode2___arity},
-  {(bigint) icode___icode_base___ICode___result},
-  {(bigint) icode___icode_base___ICode___result__eq},
-  {(bigint) icode___icode_base___ICode___location},
-  {(bigint) icode___icode_base___ICode___location__eq},
-  {(bigint) icode___icode_base___IIs___is_pure},
-  {(bigint) icode___icode_base___ICode___init},
-  {(bigint) 0 /* 63: IIs < ICode2: superclass init_table position */},
-  {(bigint) icode___icode_base___ICode2___expr1},
-  {(bigint) icode___icode_base___ICode2___expr2},
-  {(bigint) icode___icode_base___ICode2___init},
-  {(bigint) 3 /* 67: IIs < IIs: superclass init_table position */},
-  {(bigint) icode___icode_base___IIs___init},
+  {(bigint) syntax___mmbuilder___MMLocalProperty___accept_property_visitor},
+  {(bigint) syntax___syntax_base___MMMethSrcMethod___node},
+  {(bigint) syntax___syntax_base___MMMethSrcMethod___is_init},
+  {(bigint) metamodel___inheritance___MMLocalProperty___inherit_global},
+  {(bigint) metamodel___static_type___MMLocalProperty___signature},
+  {(bigint) metamodel___static_type___MMLocalProperty___signature__eq},
+  {(bigint) metamodel___static_type___MMLocalProperty___signature_for},
+  {(bigint) 3 /* 57: MMMethSrcMethod < MMLocalProperty: superclass init_table position */},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___name},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___local_class},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___global},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___is_global_set},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___prhe},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___mmmodule},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___full_name},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___set_global},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___new_global},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___need_super},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___need_super__eq},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___init},
+  {(bigint) compiling___compiling_base___MMLocalProperty___cname},
+  {(bigint) compiling___compiling_base___MMLocalProperty___super_meth_call},
+  {(bigint) 2 /* 72: MMMethSrcMethod < FFIVisited: superclass init_table position */},
+  {(bigint) ffi___c___MMMethod___accept_ffi_visitor},
+  {(bigint) ffi___ffi_base___MMMethod___accept_ffi_visitor},
+  {(bigint) syntax___extern_inline___MMMethod___extern_implementation},
+  {(bigint) syntax___extern_inline___MMMethod___extern_implementation__eq},
+  {(bigint) primitive_info___MMMethod___default_extern_name},
+  {(bigint) primitive_info___MMMethod___friendly_extern_name},
+  {(bigint) syntax___syntax_base___MMMethSrcMethod___explicit_casts},
+  {(bigint) 1 /* 80: MMMethSrcMethod < MMMethod: superclass init_table position */},
+  {(bigint) syntax___syntax_base___MMMethSrcMethod___is_intern},
+  {(bigint) syntax___syntax_base___MMMethSrcMethod___is_abstract},
+  {(bigint) syntax___syntax_base___MMMethSrcMethod___is_extern},
+  {(bigint) syntax___syntax_base___MMMethSrcMethod___extern_name},
+  {(bigint) syntax___syntax_base___MMMethSrcMethod___explicit_imports},
+  {(bigint) native_interface___ni_metamodel___MMMethod___local_friendly_name_from},
+  {(bigint) native_interface___ni_metamodel___MMMethod___friendly_super_cname},
+  {(bigint) native_interface___ni_metamodel___MMMethod___local_friendly_super_name_from},
+  {(bigint) native_interface___ni_metamodel___MMMethod___friendly_cparams},
+  {(bigint) native_interface___ni_metamodel___MMMethod___csignature_with_suffix},
+  {(bigint) native_interface___ni_metamodel___MMMethod___csignature_with_name},
+  {(bigint) native_interface___ni_metamodel___MMMethod___friendly_csignature},
+  {(bigint) native_interface___ni_metamodel___MMMethod___frontier_csignature_from},
+  {(bigint) native_interface___ni_metamodel___MMMethod___friendly_super_csignature},
+  {(bigint) native_interface___ni_metamodel___MMMethod___frontier_super_csignature_from},
+  {(bigint) native_interface___ni_metamodel___MMMethod___impl_csignature},
+  {(bigint) native_interface___ni_metamodel___MMMethod___cparams},
+  {(bigint) native_interface___ni_metamodel___MMMethod___out_csignature},
+  {(bigint) compiling___icode_generator___MMMethod___generate_icode},
+  {(bigint) syntax___icode_generation___MMSrcMethod___iroutine},
+  {(bigint) compiling___compiling_global___MMMethod___compile_property_to_c},
+  {(bigint) native_interface___frontier___MMSrcMethod___compile_extern_to_frontier},
+  {(bigint) native_interface___frontier___MMSrcMethod___compile_super_to_frontier},
+  {(bigint) native_interface___frontier___MMSrcMethod___compile_out_to_frontier},
+  {(bigint) syntax___icode_generation___MMSrcMethod___iroutine__eq},
+  {(bigint) syntax___icode_generation___MMSrcMethod___generate_iroutine},
+  {(bigint) syntax___icode_generation___MMMethSrcMethod___inner_generate_iroutine},
+  {(bigint) 0 /* 108: MMMethSrcMethod < MMSrcMethod: superclass init_table position */},
+  {(bigint) 5 /* 109: MMMethSrcMethod < MMMethSrcMethod: superclass init_table position */},
+  {(bigint) syntax___syntax_base___MMMethSrcMethod___extern_name__eq},
+  {(bigint) syntax___syntax_base___MMMethSrcMethod___init},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute IIs::_result */
-/* 3: Attribute IIs::_location */
-/* 4: Attribute IIs::_expr1 */
-/* 5: Attribute IIs::_expr2 */
-void INIT_ATTRIBUTES__icode___icode_base___IIs(val_t p0){
+/* 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::@extern_implementation */
+/* 11: Attribute MMMethSrcMethod::_iroutine */
+/* 12: Attribute MMMethSrcMethod::_is_init */
+/* 13: Attribute MMMethSrcMethod::_is_intern */
+/* 14: Attribute MMMethSrcMethod::_is_extern */
+/* 15: Attribute MMMethSrcMethod::_is_abstract */
+/* 16: Attribute MMMethSrcMethod::_extern_name */
+/* 17: Attribute MMMethSrcMethod::_explicit_casts */
+/* 18: Attribute MMMethSrcMethod::_explicit_imports */
+static const char LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___MMMethSrcMethod[] = "init var of MMMethSrcMethod";
+void INIT_ATTRIBUTES__syntax___syntax_base___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__icode___icode_base___IIs;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___MMMethSrcMethod;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:95 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:98 */
+  /* metamodel/abstractmetamodel.nit:653 */
+  REGB0 = TAG_Bool(0);
+  ATTR_metamodel___abstractmetamodel___MMLocalProperty____need_super(fra.me.REG[0]) = REGB0;
+  /* metamodel/static_type.nit:56 */
+  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
+  ATTR_metamodel___static_type___MMLocalProperty____signatures_cache(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/extern_inline.nit:43 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_syntax___extern_inline___MMMethod_____atextern_implementation(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/syntax_base.nit:192 */
+  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
+  ATTR_syntax___syntax_base___MMMethSrcMethod____explicit_casts(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/syntax_base.nit:193 */
+  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
+  ATTR_syntax___syntax_base___MMMethSrcMethod____explicit_imports(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_icode___icode_base___IIs(void)
+val_t NEW_syntax___syntax_base___MMMethSrcMethod(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___IIs;
+  obj = alloc(sizeof(val_t) * 19);
+  obj->vft = (classtable_elt_t*)VFT_syntax___syntax_base___MMMethSrcMethod;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_icode___icode_base___IIs(val_t p0){
+static const char LOCATE_CHECKNEW_syntax___syntax_base___MMMethSrcMethod[] = "check new MMMethSrcMethod";
+void CHECKNEW_syntax___syntax_base___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_icode___icode_base___IIs;
+  fra.me.meth = LOCATE_CHECKNEW_syntax___syntax_base___MMMethSrcMethod;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_icode___icode_base___ICode2____expr1(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMLocalProperty____name(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_expr1", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_name", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_icode___icode_base___ICode2____expr2(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMLocalProperty____local_class(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_expr2", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_metamodel___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_metamodel___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_syntax___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___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___syntax_base___MMMethSrcMethod____is_extern(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_extern", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_syntax___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_syntax___syntax_base___MMMethSrcMethod____explicit_casts(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_explicit_casts", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_syntax___syntax_base___MMMethSrcMethod____explicit_imports(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_explicit_imports", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_IIs_icode___icode_base___IIs___init(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_MMMethSrcMethod_syntax___syntax_base___MMMethSrcMethod___init[] = "new MMMethSrcMethod syntax_base::MMMethSrcMethod::init";
+val_t NEW_MMMethSrcMethod_syntax___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[4] = {0, 0, 0, 0};
+  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 = 484;
-  fra.me.meth = LOCATE_NEW_IIs_icode___icode_base___IIs___init;
+  fra.me.line = 195;
+  fra.me.meth = LOCATE_NEW_MMMethSrcMethod_syntax___syntax_base___MMMethSrcMethod___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   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;
-  /* ./icode//icode_base.nit:484 */
-  fra.me.REG[2] = NEW_icode___icode_base___IIs();
-  INIT_ATTRIBUTES__icode___icode_base___IIs(fra.me.REG[2]);
-  icode___icode_base___IIs___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_icode___icode_base___IIs(fra.me.REG[2]);
+  fra.me.REG[2] = p2;
+  /* syntax/syntax_base.nit:195 */
+  fra.me.REG[3] = NEW_syntax___syntax_base___MMMethSrcMethod();
+  INIT_ATTRIBUTES__syntax___syntax_base___MMMethSrcMethod(fra.me.REG[3]);
+  syntax___syntax_base___MMMethSrcMethod___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_syntax___syntax_base___MMMethSrcMethod(fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[3];
 }
-const classtable_elt_t VFT_icode___icode_base___INot[68] = {
-  {(bigint) 2883 /* 0: Identity */},
-  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "INot" /* 2: Class Name */},
-  {(bigint) 3 /* 3: INot < Object: superclass typecheck marker */},
-  {(bigint) 239 /* 4: INot < ICode: superclass typecheck marker */},
-  {(bigint) 2243 /* 5: INot < ICode1: superclass typecheck marker */},
-  {(bigint) 2883 /* 6: INot < INot: superclass typecheck marker */},
+const classtable_elt_t VFT_syntax___syntax_base___MMSrcTypeProperty[77] = {
+  {(bigint) 3515 /* 0: Identity */},
+  {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "MMSrcTypeProperty" /* 2: Class Name */},
+  {(bigint) 3 /* 3: MMSrcTypeProperty < Object: superclass typecheck marker */},
+  {(bigint) 151 /* 4: MMSrcTypeProperty < MMLocalProperty: superclass typecheck marker */},
+  {(bigint) 3087 /* 5: MMSrcTypeProperty < MMTypeProperty: superclass typecheck marker */},
+  {(bigint) 3515 /* 6: MMSrcTypeProperty < MMSrcTypeProperty: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -147963,7 +177579,7 @@ const classtable_elt_t VFT_icode___icode_base___INot[68] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: INot < Object: superclass init_table position */},
+  {(bigint) 2 /* 19: MMSrcTypeProperty < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -147979,7 +177595,9 @@ const classtable_elt_t VFT_icode___icode_base___INot[68] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -147992,112 +177610,159 @@ const classtable_elt_t VFT_icode___icode_base___INot[68] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) compiling___compiling_icode___INot___compile_to_c},
-  {(bigint) compiling___compiling_icode___ICode___need_result},
-  {(bigint) compiling___compiling_icode___ICode___store_result},
-  {(bigint) compiling___compiling_icode___ICode___new_result},
-  {(bigint) analysis___icode_dump___ICode___dump},
-  {(bigint) analysis___icode_dump___INot___dump_intern},
-  {(bigint) icode___icode_tools___ICode___dup_with},
-  {(bigint) icode___icode_tools___INot___inner_dup_with},
-  {(bigint) 1 /* 55: INot < ICode: superclass init_table position */},
-  {(bigint) icode___icode_base___ICode1___arity},
-  {(bigint) icode___icode_base___ICode___result},
-  {(bigint) icode___icode_base___ICode___result__eq},
-  {(bigint) icode___icode_base___ICode___location},
-  {(bigint) icode___icode_base___ICode___location__eq},
-  {(bigint) icode___icode_base___INot___is_pure},
-  {(bigint) icode___icode_base___ICode___init},
-  {(bigint) 0 /* 63: INot < ICode1: superclass init_table position */},
-  {(bigint) icode___icode_base___ICode1___expr},
-  {(bigint) icode___icode_base___ICode1___init},
-  {(bigint) 3 /* 66: INot < INot: superclass init_table position */},
-  {(bigint) icode___icode_base___INot___init},
+  {(bigint) syntax___mmbuilder___MMLocalProperty___accept_property_visitor},
+  {(bigint) syntax___syntax_base___MMLocalProperty___node},
+  {(bigint) syntax___syntax_base___MMLocalProperty___is_init},
+  {(bigint) metamodel___inheritance___MMLocalProperty___inherit_global},
+  {(bigint) metamodel___static_type___MMLocalProperty___signature},
+  {(bigint) metamodel___static_type___MMLocalProperty___signature__eq},
+  {(bigint) metamodel___static_type___MMLocalProperty___signature_for},
+  {(bigint) 1 /* 57: MMSrcTypeProperty < MMLocalProperty: superclass init_table position */},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___name},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___local_class},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___global},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___is_global_set},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___prhe},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___mmmodule},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___full_name},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___set_global},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___new_global},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___need_super},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___need_super__eq},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___init},
+  {(bigint) compiling___compiling_base___MMLocalProperty___cname},
+  {(bigint) compiling___compiling_base___MMLocalProperty___super_meth_call},
+  {(bigint) 0 /* 72: MMSrcTypeProperty < MMTypeProperty: superclass init_table position */},
+  {(bigint) metamodel___virtualtype___MMTypeProperty___stype_for},
+  {(bigint) metamodel___virtualtype___MMTypeProperty___real_stype_for},
+  {(bigint) 3 /* 75: MMSrcTypeProperty < MMSrcTypeProperty: superclass init_table position */},
+  {(bigint) syntax___syntax_base___MMSrcTypeProperty___init},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute INot::_result */
-/* 3: Attribute INot::_location */
-/* 4: Attribute INot::_expr */
-void INIT_ATTRIBUTES__icode___icode_base___INot(val_t p0){
+/* 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 */
+static const char LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___MMSrcTypeProperty[] = "init var of MMSrcTypeProperty";
+void INIT_ATTRIBUTES__syntax___syntax_base___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__icode___icode_base___INot;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___MMSrcTypeProperty;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:95 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:98 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* metamodel/abstractmetamodel.nit:653 */
+  REGB0 = TAG_Bool(0);
+  ATTR_metamodel___abstractmetamodel___MMLocalProperty____need_super(fra.me.REG[0]) = REGB0;
+  /* metamodel/static_type.nit:56 */
+  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
+  ATTR_metamodel___static_type___MMLocalProperty____signatures_cache(fra.me.REG[0]) = fra.me.REG[1];
+  /* metamodel/virtualtype.nit:40 */
+  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
+  ATTR_metamodel___virtualtype___MMTypeProperty____stypes_cache(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_icode___icode_base___INot(void)
+val_t NEW_syntax___syntax_base___MMSrcTypeProperty(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___INot;
+  obj = alloc(sizeof(val_t) * 11);
+  obj->vft = (classtable_elt_t*)VFT_syntax___syntax_base___MMSrcTypeProperty;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_icode___icode_base___INot(val_t p0){
+static const char LOCATE_CHECKNEW_syntax___syntax_base___MMSrcTypeProperty[] = "check new MMSrcTypeProperty";
+void CHECKNEW_syntax___syntax_base___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_icode___icode_base___INot;
+  fra.me.meth = LOCATE_CHECKNEW_syntax___syntax_base___MMSrcTypeProperty;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_icode___icode_base___ICode1____expr(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMLocalProperty____name(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_expr", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_name", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_metamodel___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_metamodel___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_metamodel___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_metamodel___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);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_INot_icode___icode_base___INot___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_MMSrcTypeProperty_syntax___syntax_base___MMSrcTypeProperty___init[] = "new MMSrcTypeProperty syntax_base::MMSrcTypeProperty::init";
+val_t NEW_MMSrcTypeProperty_syntax___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 = 496;
-  fra.me.meth = LOCATE_NEW_INot_icode___icode_base___INot___init;
+  fra.me.line = 215;
+  fra.me.meth = LOCATE_NEW_MMSrcTypeProperty_syntax___syntax_base___MMSrcTypeProperty___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   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;
-  /* ./icode//icode_base.nit:496 */
-  fra.me.REG[1] = NEW_icode___icode_base___INot();
-  INIT_ATTRIBUTES__icode___icode_base___INot(fra.me.REG[1]);
-  icode___icode_base___INot___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_icode___icode_base___INot(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* syntax/syntax_base.nit:215 */
+  fra.me.REG[3] = NEW_syntax___syntax_base___MMSrcTypeProperty();
+  INIT_ATTRIBUTES__syntax___syntax_base___MMSrcTypeProperty(fra.me.REG[3]);
+  syntax___syntax_base___MMSrcTypeProperty___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_syntax___syntax_base___MMSrcTypeProperty(fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[3];
 }
-const classtable_elt_t VFT_icode___icode_base___IOnce[67] = {
-  {(bigint) 2875 /* 0: Identity */},
-  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "IOnce" /* 2: Class Name */},
-  {(bigint) 3 /* 3: IOnce < Object: superclass typecheck marker */},
-  {(bigint) 239 /* 4: IOnce < ICode: superclass typecheck marker */},
-  {(bigint) 2247 /* 5: IOnce < ICode0: superclass typecheck marker */},
-  {(bigint) 2875 /* 6: IOnce < IOnce: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_syntax___syntax_base___MMImplicitInit[117] = {
+  {(bigint) 4619 /* 0: Identity */},
+  {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "MMImplicitInit" /* 2: Class Name */},
+  {(bigint) 3 /* 3: MMImplicitInit < Object: superclass typecheck marker */},
+  {(bigint) 151 /* 4: MMImplicitInit < MMLocalProperty: superclass typecheck marker */},
+  {(bigint) 259 /* 5: MMImplicitInit < FFIVisited: superclass typecheck marker */},
+  {(bigint) 3127 /* 6: MMImplicitInit < MMMethod: superclass typecheck marker */},
+  {(bigint) 3523 /* 7: MMImplicitInit < MMSrcMethod: superclass typecheck marker */},
+  {(bigint) 4211 /* 8: MMImplicitInit < MMMethSrcMethod: superclass typecheck marker */},
+  {(bigint) 4619 /* 9: MMImplicitInit < MMImplicitInit: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -148107,7 +177772,7 @@ const classtable_elt_t VFT_icode___icode_base___IOnce[67] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: IOnce < Object: superclass init_table position */},
+  {(bigint) 4 /* 19: MMImplicitInit < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -148123,7 +177788,9 @@ const classtable_elt_t VFT_icode___icode_base___IOnce[67] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -148136,110 +177803,252 @@ const classtable_elt_t VFT_icode___icode_base___IOnce[67] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) compiling___compiling_icode___IOnce___compile_to_c},
-  {(bigint) compiling___compiling_icode___ICode___need_result},
-  {(bigint) compiling___compiling_icode___ICode___store_result},
-  {(bigint) compiling___compiling_icode___ICode___new_result},
-  {(bigint) analysis___icode_dump___IOnce___dump},
-  {(bigint) analysis___icode_dump___ICode___dump_intern},
-  {(bigint) icode___icode_tools___ICode___dup_with},
-  {(bigint) icode___icode_tools___IOnce___inner_dup_with},
-  {(bigint) 1 /* 55: IOnce < ICode: superclass init_table position */},
-  {(bigint) icode___icode_base___ICode0___arity},
-  {(bigint) icode___icode_base___ICode___result},
-  {(bigint) icode___icode_base___ICode___result__eq},
-  {(bigint) icode___icode_base___ICode___location},
-  {(bigint) icode___icode_base___ICode___location__eq},
-  {(bigint) icode___icode_base___ICode___is_pure},
-  {(bigint) icode___icode_base___ICode___init},
-  {(bigint) 0 /* 63: IOnce < ICode0: superclass init_table position */},
-  {(bigint) 3 /* 64: IOnce < IOnce: superclass init_table position */},
-  {(bigint) icode___icode_base___IOnce___body},
-  {(bigint) icode___icode_base___IOnce___init},
+  {(bigint) syntax___mmbuilder___MMImplicitInit___accept_property_visitor},
+  {(bigint) syntax___syntax_base___MMMethSrcMethod___node},
+  {(bigint) syntax___syntax_base___MMImplicitInit___is_init},
+  {(bigint) metamodel___inheritance___MMLocalProperty___inherit_global},
+  {(bigint) metamodel___static_type___MMLocalProperty___signature},
+  {(bigint) metamodel___static_type___MMLocalProperty___signature__eq},
+  {(bigint) metamodel___static_type___MMLocalProperty___signature_for},
+  {(bigint) 3 /* 57: MMImplicitInit < MMLocalProperty: superclass init_table position */},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___name},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___local_class},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___global},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___is_global_set},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___prhe},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___mmmodule},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___full_name},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___set_global},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___new_global},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___need_super},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___need_super__eq},
+  {(bigint) metamodel___abstractmetamodel___MMLocalProperty___init},
+  {(bigint) compiling___compiling_base___MMLocalProperty___cname},
+  {(bigint) compiling___compiling_base___MMLocalProperty___super_meth_call},
+  {(bigint) 2 /* 72: MMImplicitInit < FFIVisited: superclass init_table position */},
+  {(bigint) ffi___c___MMMethod___accept_ffi_visitor},
+  {(bigint) ffi___ffi_base___MMMethod___accept_ffi_visitor},
+  {(bigint) syntax___extern_inline___MMMethod___extern_implementation},
+  {(bigint) syntax___extern_inline___MMMethod___extern_implementation__eq},
+  {(bigint) primitive_info___MMMethod___default_extern_name},
+  {(bigint) primitive_info___MMMethod___friendly_extern_name},
+  {(bigint) syntax___syntax_base___MMMethSrcMethod___explicit_casts},
+  {(bigint) 1 /* 80: MMImplicitInit < MMMethod: superclass init_table position */},
+  {(bigint) syntax___syntax_base___MMMethSrcMethod___is_intern},
+  {(bigint) syntax___syntax_base___MMMethSrcMethod___is_abstract},
+  {(bigint) syntax___syntax_base___MMMethSrcMethod___is_extern},
+  {(bigint) syntax___syntax_base___MMMethSrcMethod___extern_name},
+  {(bigint) syntax___syntax_base___MMMethSrcMethod___explicit_imports},
+  {(bigint) native_interface___ni_metamodel___MMMethod___local_friendly_name_from},
+  {(bigint) native_interface___ni_metamodel___MMMethod___friendly_super_cname},
+  {(bigint) native_interface___ni_metamodel___MMMethod___local_friendly_super_name_from},
+  {(bigint) native_interface___ni_metamodel___MMMethod___friendly_cparams},
+  {(bigint) native_interface___ni_metamodel___MMMethod___csignature_with_suffix},
+  {(bigint) native_interface___ni_metamodel___MMMethod___csignature_with_name},
+  {(bigint) native_interface___ni_metamodel___MMMethod___friendly_csignature},
+  {(bigint) native_interface___ni_metamodel___MMMethod___frontier_csignature_from},
+  {(bigint) native_interface___ni_metamodel___MMMethod___friendly_super_csignature},
+  {(bigint) native_interface___ni_metamodel___MMMethod___frontier_super_csignature_from},
+  {(bigint) native_interface___ni_metamodel___MMMethod___impl_csignature},
+  {(bigint) native_interface___ni_metamodel___MMMethod___cparams},
+  {(bigint) native_interface___ni_metamodel___MMMethod___out_csignature},
+  {(bigint) compiling___icode_generator___MMMethod___generate_icode},
+  {(bigint) syntax___icode_generation___MMSrcMethod___iroutine},
+  {(bigint) compiling___compiling_global___MMMethod___compile_property_to_c},
+  {(bigint) native_interface___frontier___MMSrcMethod___compile_extern_to_frontier},
+  {(bigint) native_interface___frontier___MMSrcMethod___compile_super_to_frontier},
+  {(bigint) native_interface___frontier___MMSrcMethod___compile_out_to_frontier},
+  {(bigint) syntax___icode_generation___MMSrcMethod___iroutine__eq},
+  {(bigint) syntax___icode_generation___MMSrcMethod___generate_iroutine},
+  {(bigint) syntax___icode_generation___MMImplicitInit___inner_generate_iroutine},
+  {(bigint) 0 /* 108: MMImplicitInit < MMSrcMethod: superclass init_table position */},
+  {(bigint) 5 /* 109: MMImplicitInit < MMMethSrcMethod: superclass init_table position */},
+  {(bigint) syntax___syntax_base___MMMethSrcMethod___extern_name__eq},
+  {(bigint) syntax___syntax_base___MMMethSrcMethod___init},
+  {(bigint) 6 /* 112: MMImplicitInit < MMImplicitInit: superclass init_table position */},
+  {(bigint) syntax___mmbuilder___MMImplicitInit___super_init},
+  {(bigint) syntax___syntax_base___MMImplicitInit___unassigned_attributes},
+  {(bigint) syntax___syntax_base___MMImplicitInit___super_inits},
+  {(bigint) syntax___syntax_base___MMImplicitInit___init},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute IOnce::_result */
-/* 3: Attribute IOnce::_location */
-/* 4: Attribute IOnce::_body */
-void INIT_ATTRIBUTES__icode___icode_base___IOnce(val_t p0){
+/* 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::@extern_implementation */
+/* 11: Attribute MMImplicitInit::_iroutine */
+/* 12: Attribute MMImplicitInit::_is_init */
+/* 13: Attribute MMImplicitInit::_is_intern */
+/* 14: Attribute MMImplicitInit::_is_extern */
+/* 15: Attribute MMImplicitInit::_is_abstract */
+/* 16: Attribute MMImplicitInit::_extern_name */
+/* 17: Attribute MMImplicitInit::_explicit_casts */
+/* 18: Attribute MMImplicitInit::_explicit_imports */
+/* 19: Attribute MMImplicitInit::_super_init */
+/* 20: Attribute MMImplicitInit::_unassigned_attributes */
+/* 21: Attribute MMImplicitInit::_super_inits */
+static const char LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___MMImplicitInit[] = "init var of MMImplicitInit";
+void INIT_ATTRIBUTES__syntax___syntax_base___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__icode___icode_base___IOnce;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___MMImplicitInit;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:508 */
-  fra.me.REG[1] = NEW_ISeq_icode___icode_base___ISeq___init();
-  ATTR_icode___icode_base___IOnce____body(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:95 */
+  /* metamodel/abstractmetamodel.nit:653 */
+  REGB0 = TAG_Bool(0);
+  ATTR_metamodel___abstractmetamodel___MMLocalProperty____need_super(fra.me.REG[0]) = REGB0;
+  /* metamodel/static_type.nit:56 */
+  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
+  ATTR_metamodel___static_type___MMLocalProperty____signatures_cache(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/extern_inline.nit:43 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:98 */
+  ATTR_syntax___extern_inline___MMMethod_____atextern_implementation(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/syntax_base.nit:192 */
+  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
+  ATTR_syntax___syntax_base___MMMethSrcMethod____explicit_casts(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/syntax_base.nit:193 */
+  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
+  ATTR_syntax___syntax_base___MMMethSrcMethod____explicit_imports(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/mmbuilder.nit:297 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_syntax___mmbuilder___MMImplicitInit____super_init(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_icode___icode_base___IOnce(void)
+val_t NEW_syntax___syntax_base___MMImplicitInit(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___IOnce;
+  obj = alloc(sizeof(val_t) * 22);
+  obj->vft = (classtable_elt_t*)VFT_syntax___syntax_base___MMImplicitInit;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_icode___icode_base___IOnce(val_t p0){
+static const char LOCATE_CHECKNEW_syntax___syntax_base___MMImplicitInit[] = "check new MMImplicitInit";
+void CHECKNEW_syntax___syntax_base___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_icode___icode_base___IOnce;
+  fra.me.meth = LOCATE_CHECKNEW_syntax___syntax_base___MMImplicitInit;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_icode___icode_base___IOnce____body(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMLocalProperty____name(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_body", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_name", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_metamodel___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_metamodel___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_metamodel___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_syntax___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___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___syntax_base___MMMethSrcMethod____is_extern(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_extern", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_syntax___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_syntax___syntax_base___MMMethSrcMethod____explicit_casts(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_explicit_casts", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_syntax___syntax_base___MMMethSrcMethod____explicit_imports(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_explicit_imports", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_syntax___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___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);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_IOnce_icode___icode_base___IOnce___init(void){
-  struct {struct stack_frame_t me;} fra;
+static const char LOCATE_NEW_MMImplicitInit_syntax___syntax_base___MMImplicitInit___init[] = "new MMImplicitInit syntax_base::MMImplicitInit::init";
+val_t NEW_MMImplicitInit_syntax___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[4] = {0, 0, 0, 0};
+  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 = 509;
-  fra.me.meth = LOCATE_NEW_IOnce_icode___icode_base___IOnce___init;
+  fra.me.line = 228;
+  fra.me.meth = LOCATE_NEW_MMImplicitInit_syntax___syntax_base___MMImplicitInit___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./icode//icode_base.nit:509 */
-  fra.me.REG[0] = NEW_icode___icode_base___IOnce();
-  INIT_ATTRIBUTES__icode___icode_base___IOnce(fra.me.REG[0]);
-  icode___icode_base___IOnce___init(fra.me.REG[0], init_table);
-  CHECKNEW_icode___icode_base___IOnce(fra.me.REG[0]);
+  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:228 */
+  fra.me.REG[3] = NEW_syntax___syntax_base___MMImplicitInit();
+  INIT_ATTRIBUTES__syntax___syntax_base___MMImplicitInit(fra.me.REG[3]);
+  syntax___syntax_base___MMImplicitInit___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_syntax___syntax_base___MMImplicitInit(fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[3];
 }
-const classtable_elt_t VFT_icode___icode_base___IHasClos[67] = {
-  {(bigint) 2911 /* 0: Identity */},
+const classtable_elt_t VFT_syntax___syntax_base___VarVariable[60] = {
+  {(bigint) 327 /* 0: Identity */},
   {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "IHasClos" /* 2: Class Name */},
-  {(bigint) 3 /* 3: IHasClos < Object: superclass typecheck marker */},
-  {(bigint) 239 /* 4: IHasClos < ICode: superclass typecheck marker */},
-  {(bigint) 2247 /* 5: IHasClos < ICode0: superclass typecheck marker */},
-  {(bigint) 2911 /* 6: IHasClos < IHasClos: superclass typecheck marker */},
+  {(bigint) "VarVariable" /* 2: Class Name */},
+  {(bigint) 3 /* 3: VarVariable < Object: superclass typecheck marker */},
+  {(bigint) 19 /* 4: VarVariable < Variable: superclass typecheck marker */},
+  {(bigint) 327 /* 5: VarVariable < VarVariable: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -148251,7 +178060,7 @@ const classtable_elt_t VFT_icode___icode_base___IHasClos[67] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: IHasClos < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: VarVariable < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -148267,7 +178076,9 @@ const classtable_elt_t VFT_icode___icode_base___IHasClos[67] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) syntax___syntax_base___Variable___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -148280,107 +178091,97 @@ const classtable_elt_t VFT_icode___icode_base___IHasClos[67] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) compiling___compiling_icode___IHasClos___compile_to_c},
-  {(bigint) compiling___compiling_icode___ICode___need_result},
-  {(bigint) compiling___compiling_icode___ICode___store_result},
-  {(bigint) compiling___compiling_icode___ICode___new_result},
-  {(bigint) analysis___icode_dump___ICode___dump},
-  {(bigint) analysis___icode_dump___IHasClos___dump_intern},
-  {(bigint) icode___icode_tools___ICode___dup_with},
-  {(bigint) icode___icode_tools___IHasClos___inner_dup_with},
-  {(bigint) 1 /* 55: IHasClos < ICode: superclass init_table position */},
-  {(bigint) icode___icode_base___ICode0___arity},
-  {(bigint) icode___icode_base___ICode___result},
-  {(bigint) icode___icode_base___ICode___result__eq},
-  {(bigint) icode___icode_base___ICode___location},
-  {(bigint) icode___icode_base___ICode___location__eq},
-  {(bigint) icode___icode_base___IHasClos___is_pure},
-  {(bigint) icode___icode_base___ICode___init},
-  {(bigint) 0 /* 63: IHasClos < ICode0: superclass init_table position */},
-  {(bigint) 3 /* 64: IHasClos < IHasClos: superclass init_table position */},
-  {(bigint) icode___icode_base___IHasClos___closure_decl},
-  {(bigint) icode___icode_base___IHasClos___init},
+  {(bigint) syntax___flow___VarVariable___must_be_set},
+  {(bigint) 0 /* 51: VarVariable < Variable: superclass init_table position */},
+  {(bigint) syntax___syntax_base___Variable___name},
+  {(bigint) syntax___syntax_base___Variable___decl},
+  {(bigint) syntax___syntax_base___Variable___stype},
+  {(bigint) syntax___syntax_base___Variable___stype__eq},
+  {(bigint) syntax___syntax_base___VarVariable___kind},
+  {(bigint) syntax___syntax_base___Variable___init},
+  {(bigint) 2 /* 58: VarVariable < VarVariable: superclass init_table position */},
+  {(bigint) syntax___syntax_base___VarVariable___init},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute IHasClos::_result */
-/* 3: Attribute IHasClos::_location */
-/* 4: Attribute IHasClos::_closure_decl */
-void INIT_ATTRIBUTES__icode___icode_base___IHasClos(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+/* 2: Attribute VarVariable::_name */
+/* 3: Attribute VarVariable::_decl */
+/* 4: Attribute VarVariable::_stype */
+static const char LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___VarVariable[] = "init var of VarVariable";
+void INIT_ATTRIBUTES__syntax___syntax_base___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__icode___icode_base___IHasClos;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___VarVariable;
   fra.me.has_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:95 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:98 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_icode___icode_base___IHasClos(void)
+val_t NEW_syntax___syntax_base___VarVariable(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_icode___icode_base___IHasClos;
+  obj->vft = (classtable_elt_t*)VFT_syntax___syntax_base___VarVariable;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_icode___icode_base___IHasClos(val_t p0){
+static const char LOCATE_CHECKNEW_syntax___syntax_base___VarVariable[] = "check new VarVariable";
+void CHECKNEW_syntax___syntax_base___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_icode___icode_base___IHasClos;
+  fra.me.meth = LOCATE_CHECKNEW_syntax___syntax_base___VarVariable;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_icode___icode_base___IHasClos____closure_decl(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___syntax_base___Variable____name(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_closure_decl", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_name", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_IHasClos_icode___icode_base___IHasClos___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_VarVariable_syntax___syntax_base___VarVariable___init[] = "new VarVariable syntax_base::VarVariable::init";
+val_t NEW_VarVariable_syntax___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[4] = {0, 0, 0, 0};
+  int init_table[3] = {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_IHasClos_icode___icode_base___IHasClos___init;
+  fra.me.line = 262;
+  fra.me.meth = LOCATE_NEW_VarVariable_syntax___syntax_base___VarVariable___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:518 */
-  fra.me.REG[1] = NEW_icode___icode_base___IHasClos();
-  INIT_ATTRIBUTES__icode___icode_base___IHasClos(fra.me.REG[1]);
-  icode___icode_base___IHasClos___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_icode___icode_base___IHasClos(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  /* syntax/syntax_base.nit:262 */
+  fra.me.REG[2] = NEW_syntax___syntax_base___VarVariable();
+  INIT_ATTRIBUTES__syntax___syntax_base___VarVariable(fra.me.REG[2]);
+  syntax___syntax_base___VarVariable___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_syntax___syntax_base___VarVariable(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[2];
 }
-const classtable_elt_t VFT_icode___icode_builder___ICodeBuilder[71] = {
-  {(bigint) 235 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ICodeBuilder" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ICodeBuilder < Object: superclass typecheck marker */},
-  {(bigint) 235 /* 4: ICodeBuilder < ICodeBuilder: superclass typecheck marker */},
+const classtable_elt_t VFT_syntax___syntax_base___ParamVariable[60] = {
+  {(bigint) 3031 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ParamVariable" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ParamVariable < Object: superclass typecheck marker */},
+  {(bigint) 19 /* 4: ParamVariable < Variable: superclass typecheck marker */},
+  {(bigint) 3031 /* 5: ParamVariable < ParamVariable: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -148394,7 +178195,7 @@ const classtable_elt_t VFT_icode___icode_builder___ICodeBuilder[71] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: ICodeBuilder < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ParamVariable < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -148410,7 +178211,9 @@ const classtable_elt_t VFT_icode___icode_builder___ICodeBuilder[71] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) syntax___syntax_base___Variable___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -148423,121 +178226,97 @@ const classtable_elt_t VFT_icode___icode_builder___ICodeBuilder[71] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) icode___icode_tools___ICodeBuilder___inline_routine},
-  {(bigint) 1 /* 48: ICodeBuilder < ICodeBuilder: superclass init_table position */},
-  {(bigint) icode___icode_builder___ICodeBuilder___stmt},
-  {(bigint) icode___icode_builder___ICodeBuilder___expr},
-  {(bigint) icode___icode_builder___ICodeBuilder___add_assignment},
-  {(bigint) icode___icode_builder___ICodeBuilder___add_null_reciever_check},
-  {(bigint) icode___icode_builder___ICodeBuilder___add_type_cast},
-  {(bigint) icode___icode_builder___ICodeBuilder___add_attr_check},
-  {(bigint) icode___icode_builder___ICodeBuilder___add_attr_read},
-  {(bigint) icode___icode_builder___ICodeBuilder___add_abort},
-  {(bigint) icode___icode_builder___ICodeBuilder___add_return_value},
-  {(bigint) icode___icode_builder___ICodeBuilder___add_call},
-  {(bigint) icode___icode_builder___ICodeBuilder___add_escape},
-  {(bigint) icode___icode_builder___ICodeBuilder___lit_null_reg},
-  {(bigint) icode___icode_builder___ICodeBuilder___lit_true_reg},
-  {(bigint) icode___icode_builder___ICodeBuilder___lit_false_reg},
-  {(bigint) icode___icode_builder___ICodeBuilder___new_register},
-  {(bigint) icode___icode_builder___ICodeBuilder___mmmodule},
-  {(bigint) icode___icode_builder___ICodeBuilder___iroutine},
-  {(bigint) icode___icode_builder___ICodeBuilder___seq},
-  {(bigint) icode___icode_builder___ICodeBuilder___seq__eq},
-  {(bigint) icode___icode_builder___ICodeBuilder___init},
-  {(bigint) icode___icode_builder___ICodeBuilder___current_location},
-  {(bigint) icode___icode_builder___ICodeBuilder___current_location__eq},
+  {(bigint) syntax___flow___Variable___must_be_set},
+  {(bigint) 0 /* 51: ParamVariable < Variable: superclass init_table position */},
+  {(bigint) syntax___syntax_base___Variable___name},
+  {(bigint) syntax___syntax_base___Variable___decl},
+  {(bigint) syntax___syntax_base___Variable___stype},
+  {(bigint) syntax___syntax_base___Variable___stype__eq},
+  {(bigint) syntax___syntax_base___ParamVariable___kind},
+  {(bigint) syntax___syntax_base___Variable___init},
+  {(bigint) 2 /* 58: ParamVariable < ParamVariable: superclass init_table position */},
+  {(bigint) syntax___syntax_base___ParamVariable___init},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ICodeBuilder::_mmmodule */
-/* 3: Attribute ICodeBuilder::_iroutine */
-/* 4: Attribute ICodeBuilder::_seq */
-/* 5: Attribute ICodeBuilder::_current_location */
-void INIT_ATTRIBUTES__icode___icode_builder___ICodeBuilder(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+/* 2: Attribute ParamVariable::_name */
+/* 3: Attribute ParamVariable::_decl */
+/* 4: Attribute ParamVariable::_stype */
+static const char LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___ParamVariable[] = "init var of ParamVariable";
+void INIT_ATTRIBUTES__syntax___syntax_base___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__icode___icode_builder___ICodeBuilder;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___ParamVariable;
   fra.me.has_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___icode_builder___ICodeBuilder____current_location(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_icode___icode_builder___ICodeBuilder(void)
+val_t NEW_syntax___syntax_base___ParamVariable(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_icode___icode_builder___ICodeBuilder;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_syntax___syntax_base___ParamVariable;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_icode___icode_builder___ICodeBuilder(val_t p0){
+static const char LOCATE_CHECKNEW_syntax___syntax_base___ParamVariable[] = "check new ParamVariable";
+void CHECKNEW_syntax___syntax_base___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_icode___icode_builder___ICodeBuilder;
+  fra.me.meth = LOCATE_CHECKNEW_syntax___syntax_base___ParamVariable;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_icode___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___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___icode_builder___ICodeBuilder____seq(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___syntax_base___Variable____name(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_seq", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_name", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ICodeBuilder_icode___icode_builder___ICodeBuilder___init(val_t p0, val_t p1){
+static const char LOCATE_NEW_ParamVariable_syntax___syntax_base___ParamVariable___init[] = "new ParamVariable syntax_base::ParamVariable::init";
+val_t NEW_ParamVariable_syntax___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[2] = {0, 0};
+  int init_table[3] = {0, 0, 0};
   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___icode_builder___ICodeBuilder___init;
+  fra.me.line = 269;
+  fra.me.meth = LOCATE_NEW_ParamVariable_syntax___syntax_base___ParamVariable___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   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_icode___icode_builder___ICodeBuilder();
-  INIT_ATTRIBUTES__icode___icode_builder___ICodeBuilder(fra.me.REG[2]);
-  icode___icode_builder___ICodeBuilder___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_icode___icode_builder___ICodeBuilder(fra.me.REG[2]);
+  /* syntax/syntax_base.nit:269 */
+  fra.me.REG[2] = NEW_syntax___syntax_base___ParamVariable();
+  INIT_ATTRIBUTES__syntax___syntax_base___ParamVariable(fra.me.REG[2]);
+  syntax___syntax_base___ParamVariable___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_syntax___syntax_base___ParamVariable(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_icode___icode_tools___ICodeVisitor[55] = {
-  {(bigint) 223 /* 0: Identity */},
-  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ICodeVisitor" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ICodeVisitor < Object: superclass typecheck marker */},
-  {(bigint) 223 /* 4: ICodeVisitor < ICodeVisitor: superclass typecheck marker */},
+const classtable_elt_t VFT_syntax___syntax_base___AutoVariable[60] = {
+  {(bigint) 3307 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "AutoVariable" /* 2: Class Name */},
+  {(bigint) 3 /* 3: AutoVariable < Object: superclass typecheck marker */},
+  {(bigint) 19 /* 4: AutoVariable < Variable: superclass typecheck marker */},
+  {(bigint) 3307 /* 5: AutoVariable < AutoVariable: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -148551,7 +178330,7 @@ const classtable_elt_t VFT_icode___icode_tools___ICodeVisitor[55] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: ICodeVisitor < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: AutoVariable < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -148567,7 +178346,9 @@ const classtable_elt_t VFT_icode___icode_tools___ICodeVisitor[55] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) syntax___syntax_base___Variable___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -148580,79 +178361,97 @@ const classtable_elt_t VFT_icode___icode_tools___ICodeVisitor[55] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: ICodeVisitor < ICodeVisitor: superclass init_table position */},
-  {(bigint) icode___icode_tools___ICodeVisitor___visit_iregister_read},
-  {(bigint) icode___icode_tools___ICodeVisitor___visit_iregister_write},
-  {(bigint) icode___icode_tools___ICodeVisitor___current_icode},
-  {(bigint) icode___icode_tools___ICodeVisitor___visit_icode},
-  {(bigint) icode___icode_tools___ICodeVisitor___visit_closure_defs},
-  {(bigint) icode___icode_tools___ICodeVisitor___visit_iroutine},
-  {(bigint) icode___icode_tools___ICodeVisitor___init},
+  {(bigint) syntax___flow___Variable___must_be_set},
+  {(bigint) 0 /* 51: AutoVariable < Variable: superclass init_table position */},
+  {(bigint) syntax___syntax_base___Variable___name},
+  {(bigint) syntax___syntax_base___Variable___decl},
+  {(bigint) syntax___syntax_base___Variable___stype},
+  {(bigint) syntax___syntax_base___Variable___stype__eq},
+  {(bigint) syntax___syntax_base___AutoVariable___kind},
+  {(bigint) syntax___syntax_base___Variable___init},
+  {(bigint) 2 /* 58: AutoVariable < AutoVariable: superclass init_table position */},
+  {(bigint) syntax___syntax_base___AutoVariable___init},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ICodeVisitor::_current_icode */
-void INIT_ATTRIBUTES__icode___icode_tools___ICodeVisitor(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+/* 2: Attribute AutoVariable::_name */
+/* 3: Attribute AutoVariable::_decl */
+/* 4: Attribute AutoVariable::_stype */
+static const char LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___AutoVariable[] = "init var of AutoVariable";
+void INIT_ATTRIBUTES__syntax___syntax_base___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__icode___icode_tools___ICodeVisitor;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___AutoVariable;
   fra.me.has_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:29 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_tools___ICodeVisitor____current_icode(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_icode___icode_tools___ICodeVisitor(void)
+val_t NEW_syntax___syntax_base___AutoVariable(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_icode___icode_tools___ICodeVisitor;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_syntax___syntax_base___AutoVariable;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_icode___icode_tools___ICodeVisitor(val_t p0){
+static const char LOCATE_CHECKNEW_syntax___syntax_base___AutoVariable[] = "check new AutoVariable";
+void CHECKNEW_syntax___syntax_base___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_icode___icode_tools___ICodeVisitor;
+  fra.me.meth = LOCATE_CHECKNEW_syntax___syntax_base___AutoVariable;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_syntax___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_ICodeVisitor_icode___icode_tools___ICodeVisitor___init(void){
-  struct {struct stack_frame_t me;} fra;
+static const char LOCATE_NEW_AutoVariable_syntax___syntax_base___AutoVariable___init[] = "new AutoVariable syntax_base::AutoVariable::init";
+val_t NEW_AutoVariable_syntax___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[2] = {0, 0};
+  int init_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_ICodeVisitor_icode___icode_tools___ICodeVisitor___init;
+  fra.me.line = 276;
+  fra.me.meth = LOCATE_NEW_AutoVariable_syntax___syntax_base___AutoVariable___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = NEW_icode___icode_tools___ICodeVisitor();
-  INIT_ATTRIBUTES__icode___icode_tools___ICodeVisitor(fra.me.REG[0]);
-  icode___icode_tools___ICodeVisitor___init(fra.me.REG[0], init_table);
-  CHECKNEW_icode___icode_tools___ICodeVisitor(fra.me.REG[0]);
+  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:276 */
+  fra.me.REG[2] = NEW_syntax___syntax_base___AutoVariable();
+  INIT_ATTRIBUTES__syntax___syntax_base___AutoVariable(fra.me.REG[2]);
+  syntax___syntax_base___AutoVariable___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_syntax___syntax_base___AutoVariable(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[2];
 }
-const classtable_elt_t VFT_icode___icode_tools___ICodeDupContext[52] = {
-  {(bigint) 227 /* 0: Identity */},
+const classtable_elt_t VFT_syntax___syntax_base___ClosureVariable[61] = {
+  {(bigint) 3287 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ICodeDupContext" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ICodeDupContext < Object: superclass typecheck marker */},
-  {(bigint) 227 /* 4: ICodeDupContext < ICodeDupContext: superclass typecheck marker */},
+  {(bigint) "ClosureVariable" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ClosureVariable < Object: superclass typecheck marker */},
+  {(bigint) 19 /* 4: ClosureVariable < Variable: superclass typecheck marker */},
+  {(bigint) 3287 /* 5: ClosureVariable < ClosureVariable: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -148666,7 +178465,7 @@ const classtable_elt_t VFT_icode___icode_tools___ICodeDupContext[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: ICodeDupContext < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ClosureVariable < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -148682,7 +178481,9 @@ const classtable_elt_t VFT_icode___icode_tools___ICodeDupContext[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) syntax___syntax_base___Variable___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -148695,112 +178496,107 @@ const classtable_elt_t VFT_icode___icode_tools___ICodeDupContext[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: ICodeDupContext < ICodeDupContext: superclass init_table position */},
-  {(bigint) icode___icode_tools___ICodeDupContext___dup_ireg},
-  {(bigint) icode___icode_tools___ICodeDupContext___dup_iregs},
-  {(bigint) icode___icode_tools___ICodeDupContext___dup_mark},
-  {(bigint) icode___icode_tools___ICodeDupContext___init},
+  {(bigint) syntax___flow___Variable___must_be_set},
+  {(bigint) 0 /* 51: ClosureVariable < Variable: superclass init_table position */},
+  {(bigint) syntax___syntax_base___Variable___name},
+  {(bigint) syntax___syntax_base___Variable___decl},
+  {(bigint) syntax___syntax_base___Variable___stype},
+  {(bigint) syntax___syntax_base___Variable___stype__eq},
+  {(bigint) syntax___syntax_base___ClosureVariable___kind},
+  {(bigint) syntax___syntax_base___Variable___init},
+  {(bigint) 2 /* 58: ClosureVariable < ClosureVariable: superclass init_table position */},
+  {(bigint) syntax___syntax_base___ClosureVariable___closure},
+  {(bigint) syntax___syntax_base___ClosureVariable___init},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ICodeDupContext::_registers */
-/* 3: Attribute ICodeDupContext::_marks */
-/* 4: Attribute ICodeDupContext::_closures */
-/* 5: Attribute ICodeDupContext::_icb */
-void INIT_ATTRIBUTES__icode___icode_tools___ICodeDupContext(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+/* 2: Attribute ClosureVariable::_name */
+/* 3: Attribute ClosureVariable::_decl */
+/* 4: Attribute ClosureVariable::_stype */
+/* 5: Attribute ClosureVariable::_closure */
+static const char LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___ClosureVariable[] = "init var of ClosureVariable";
+void INIT_ATTRIBUTES__syntax___syntax_base___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__icode___icode_tools___ICodeDupContext;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___syntax_base___ClosureVariable;
   fra.me.has_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:178 */
-  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
-  ATTR_icode___icode_tools___ICodeDupContext____registers(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_tools.nit:195 */
-  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
-  ATTR_icode___icode_tools___ICodeDupContext____marks(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_tools.nit:198 */
-  fra.me.REG[1] = NEW_ArrayMap_standard___collection___array___ArrayMap___init();
-  ATTR_icode___icode_tools___ICodeDupContext____closures(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_icode___icode_tools___ICodeDupContext(void)
+val_t NEW_syntax___syntax_base___ClosureVariable(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_icode___icode_tools___ICodeDupContext;
+  obj->vft = (classtable_elt_t*)VFT_syntax___syntax_base___ClosureVariable;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_icode___icode_tools___ICodeDupContext(val_t p0){
+static const char LOCATE_CHECKNEW_syntax___syntax_base___ClosureVariable[] = "check new ClosureVariable";
+void CHECKNEW_syntax___syntax_base___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_icode___icode_tools___ICodeDupContext;
+  fra.me.meth = LOCATE_CHECKNEW_syntax___syntax_base___ClosureVariable;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_icode___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___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___icode_tools___ICodeDupContext____closures(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___syntax_base___Variable____name(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_closures", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_name", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_icode___icode_tools___ICodeDupContext____icb(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___syntax_base___ClosureVariable____closure(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_icb", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_closure", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ICodeDupContext_icode___icode_tools___ICodeDupContext___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ClosureVariable_syntax___syntax_base___ClosureVariable___init[] = "new ClosureVariable syntax_base::ClosureVariable::init";
+val_t NEW_ClosureVariable_syntax___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[2] = {0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 203;
-  fra.me.meth = LOCATE_NEW_ICodeDupContext_icode___icode_tools___ICodeDupContext___init;
+  fra.me.line = 288;
+  fra.me.meth = LOCATE_NEW_ClosureVariable_syntax___syntax_base___ClosureVariable___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   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;
-  /* ./icode//icode_tools.nit:203 */
-  fra.me.REG[1] = NEW_icode___icode_tools___ICodeDupContext();
-  INIT_ATTRIBUTES__icode___icode_tools___ICodeDupContext(fra.me.REG[1]);
-  icode___icode_tools___ICodeDupContext___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_icode___icode_tools___ICodeDupContext(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* syntax/syntax_base.nit:288 */
+  fra.me.REG[3] = NEW_syntax___syntax_base___ClosureVariable();
+  INIT_ATTRIBUTES__syntax___syntax_base___ClosureVariable(fra.me.REG[3]);
+  syntax___syntax_base___ClosureVariable___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_syntax___syntax_base___ClosureVariable(fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[3];
 }
-const classtable_elt_t VFT_syntax___flow___RootFlowContext[64] = {
-  {(bigint) 363 /* 0: Identity */},
+const classtable_elt_t VFT_syntax___flow___RootFlowContext[67] = {
+  {(bigint) 367 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "RootFlowContext" /* 2: Class Name */},
   {(bigint) 3 /* 3: RootFlowContext < Object: superclass typecheck marker */},
-  {(bigint) 263 /* 4: RootFlowContext < FlowContext: superclass typecheck marker */},
-  {(bigint) 363 /* 5: RootFlowContext < RootFlowContext: superclass typecheck marker */},
+  {(bigint) 251 /* 4: RootFlowContext < FlowContext: superclass typecheck marker */},
+  {(bigint) 367 /* 5: RootFlowContext < RootFlowContext: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -148813,7 +178609,7 @@ const classtable_elt_t VFT_syntax___flow___RootFlowContext[64] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: RootFlowContext < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: RootFlowContext < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -148829,6 +178625,8 @@ const classtable_elt_t VFT_syntax___flow___RootFlowContext[64] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -148842,7 +178640,7 @@ const classtable_elt_t VFT_syntax___flow___RootFlowContext[64] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: RootFlowContext < FlowContext: superclass init_table position */},
+  {(bigint) 0 /* 50: RootFlowContext < FlowContext: superclass init_table position */},
   {(bigint) syntax___flow___FlowContext___check_is_set},
   {(bigint) syntax___flow___FlowContext___stype},
   {(bigint) syntax___flow___FlowContext___sub_setvariable},
@@ -148857,7 +178655,7 @@ const classtable_elt_t VFT_syntax___flow___RootFlowContext[64] = {
   {(bigint) syntax___flow___FlowContext___already_unreash__eq},
   {(bigint) syntax___flow___FlowContext___set_variables},
   {(bigint) syntax___flow___FlowContext___is_set},
-  {(bigint) 2 /* 62: RootFlowContext < RootFlowContext: superclass init_table position */},
+  {(bigint) 2 /* 65: RootFlowContext < RootFlowContext: superclass init_table position */},
   {(bigint) syntax___flow___RootFlowContext___init},
 };
 /* 0: Pointer to the classtable */
@@ -148867,6 +178665,7 @@ const classtable_elt_t VFT_syntax___flow___RootFlowContext[64] = {
 /* 4: Attribute RootFlowContext::_unreash */
 /* 5: Attribute RootFlowContext::_already_unreash */
 /* 6: Attribute RootFlowContext::_set_variables */
+static const char LOCATE_INIT_ATTRIBUTES__syntax___flow___RootFlowContext[] = "init var of RootFlowContext";
 void INIT_ATTRIBUTES__syntax___flow___RootFlowContext(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t REGB0;
@@ -148877,16 +178676,17 @@ void INIT_ATTRIBUTES__syntax___flow___RootFlowContext(val_t p0){
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___flow___RootFlowContext;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   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);
+  /* syntax/flow.nit:121 */
+  REGB0 = TAG_Bool(0);
   ATTR_syntax___flow___FlowContext____unreash(fra.me.REG[0]) = REGB0;
-  /* ./syntax//flow.nit:125 */
-  REGB0 = TAG_Bool(false);
+  /* syntax/flow.nit:125 */
+  REGB0 = TAG_Bool(0);
   ATTR_syntax___flow___FlowContext____already_unreash(fra.me.REG[0]) = REGB0;
-  /* ./syntax//flow.nit:128 */
+  /* syntax/flow.nit:128 */
   fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
   ATTR_syntax___flow___FlowContext____set_variables(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -148900,6 +178700,7 @@ val_t NEW_syntax___flow___RootFlowContext(void)
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
+static const char LOCATE_CHECKNEW_syntax___flow___RootFlowContext[] = "check new RootFlowContext";
 void CHECKNEW_syntax___flow___RootFlowContext(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
@@ -148910,6 +178711,7 @@ void CHECKNEW_syntax___flow___RootFlowContext(val_t p0){
   fra.me.meth = LOCATE_CHECKNEW_syntax___flow___RootFlowContext;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_syntax___flow___FlowContext____visitor(fra.me.REG[0])!=NIT_NULL);
@@ -148939,6 +178741,7 @@ void CHECKNEW_syntax___flow___RootFlowContext(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
+static const char LOCATE_NEW_RootFlowContext_syntax___flow___RootFlowContext___init[] = "new RootFlowContext flow::RootFlowContext::init";
 val_t NEW_RootFlowContext_syntax___flow___RootFlowContext___init(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t tmp;
@@ -148949,12 +178752,13 @@ val_t NEW_RootFlowContext_syntax___flow___RootFlowContext___init(val_t p0, val_t
   fra.me.meth = LOCATE_NEW_RootFlowContext_syntax___flow___RootFlowContext___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   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 */
+  /* syntax/flow.nit:140 */
   fra.me.REG[2] = NEW_syntax___flow___RootFlowContext();
   INIT_ATTRIBUTES__syntax___flow___RootFlowContext(fra.me.REG[2]);
   syntax___flow___RootFlowContext___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -148962,13 +178766,14 @@ val_t NEW_RootFlowContext_syntax___flow___RootFlowContext___init(val_t p0, val_t
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_syntax___flow___SubFlowContext[65] = {
-  {(bigint) 343 /* 0: Identity */},
+const classtable_elt_t VFT_syntax___flow___SubFlowContext[68] = {
+  {(bigint) 347 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "SubFlowContext" /* 2: Class Name */},
   {(bigint) 3 /* 3: SubFlowContext < Object: superclass typecheck marker */},
-  {(bigint) 263 /* 4: SubFlowContext < FlowContext: superclass typecheck marker */},
-  {(bigint) 343 /* 5: SubFlowContext < SubFlowContext: superclass typecheck marker */},
+  {(bigint) 251 /* 4: SubFlowContext < FlowContext: superclass typecheck marker */},
+  {(bigint) 347 /* 5: SubFlowContext < SubFlowContext: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -148981,7 +178786,7 @@ const classtable_elt_t VFT_syntax___flow___SubFlowContext[65] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: SubFlowContext < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: SubFlowContext < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -148997,6 +178802,8 @@ const classtable_elt_t VFT_syntax___flow___SubFlowContext[65] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -149010,7 +178817,7 @@ const classtable_elt_t VFT_syntax___flow___SubFlowContext[65] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: SubFlowContext < FlowContext: superclass init_table position */},
+  {(bigint) 0 /* 50: SubFlowContext < FlowContext: superclass init_table position */},
   {(bigint) syntax___flow___FlowContext___check_is_set},
   {(bigint) syntax___flow___SubFlowContext___stype},
   {(bigint) syntax___flow___FlowContext___sub_setvariable},
@@ -149025,7 +178832,7 @@ const classtable_elt_t VFT_syntax___flow___SubFlowContext[65] = {
   {(bigint) syntax___flow___FlowContext___already_unreash__eq},
   {(bigint) syntax___flow___FlowContext___set_variables},
   {(bigint) syntax___flow___SubFlowContext___is_set},
-  {(bigint) 2 /* 62: SubFlowContext < SubFlowContext: superclass init_table position */},
+  {(bigint) 2 /* 65: SubFlowContext < SubFlowContext: superclass init_table position */},
   {(bigint) syntax___flow___SubFlowContext___prev},
   {(bigint) syntax___flow___SubFlowContext___with_prev},
 };
@@ -149037,6 +178844,7 @@ const classtable_elt_t VFT_syntax___flow___SubFlowContext[65] = {
 /* 5: Attribute SubFlowContext::_already_unreash */
 /* 6: Attribute SubFlowContext::_set_variables */
 /* 7: Attribute SubFlowContext::_prev */
+static const char LOCATE_INIT_ATTRIBUTES__syntax___flow___SubFlowContext[] = "init var of SubFlowContext";
 void INIT_ATTRIBUTES__syntax___flow___SubFlowContext(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t REGB0;
@@ -149047,16 +178855,17 @@ void INIT_ATTRIBUTES__syntax___flow___SubFlowContext(val_t p0){
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___flow___SubFlowContext;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   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);
+  /* syntax/flow.nit:121 */
+  REGB0 = TAG_Bool(0);
   ATTR_syntax___flow___FlowContext____unreash(fra.me.REG[0]) = REGB0;
-  /* ./syntax//flow.nit:125 */
-  REGB0 = TAG_Bool(false);
+  /* syntax/flow.nit:125 */
+  REGB0 = TAG_Bool(0);
   ATTR_syntax___flow___FlowContext____already_unreash(fra.me.REG[0]) = REGB0;
-  /* ./syntax//flow.nit:128 */
+  /* syntax/flow.nit:128 */
   fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
   ATTR_syntax___flow___FlowContext____set_variables(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -149070,6 +178879,7 @@ val_t NEW_syntax___flow___SubFlowContext(void)
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
+static const char LOCATE_CHECKNEW_syntax___flow___SubFlowContext[] = "check new SubFlowContext";
 void CHECKNEW_syntax___flow___SubFlowContext(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
@@ -149080,13 +178890,9 @@ void CHECKNEW_syntax___flow___SubFlowContext(val_t p0){
   fra.me.meth = LOCATE_CHECKNEW_syntax___flow___SubFlowContext;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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_syntax___flow___FlowContext____visitor(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -149112,8 +178918,14 @@ void CHECKNEW_syntax___flow___SubFlowContext(val_t p0){
   } else {
     nit_abort("Uninitialized attribute %s", "_set_variables", LOCATE_nitc, 0);
   }
+  REGB0 = TAG_Bool(ATTR_syntax___flow___SubFlowContext____prev(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_prev", LOCATE_nitc, 0);
+  }
   stack_frame_head = fra.me.prev;
 }
+static const char LOCATE_NEW_SubFlowContext_syntax___flow___SubFlowContext___with_prev[] = "new SubFlowContext flow::SubFlowContext::with_prev";
 val_t NEW_SubFlowContext_syntax___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;
@@ -149124,12 +178936,13 @@ val_t NEW_SubFlowContext_syntax___flow___SubFlowContext___with_prev(val_t p0, va
   fra.me.meth = LOCATE_NEW_SubFlowContext_syntax___flow___SubFlowContext___with_prev;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   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 */
+  /* syntax/flow.nit:161 */
   fra.me.REG[2] = NEW_syntax___flow___SubFlowContext();
   INIT_ATTRIBUTES__syntax___flow___SubFlowContext(fra.me.REG[2]);
   syntax___flow___SubFlowContext___with_prev(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -149137,14 +178950,15 @@ val_t NEW_SubFlowContext_syntax___flow___SubFlowContext___with_prev(val_t p0, va
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_syntax___flow___CastFlowContext[67] = {
-  {(bigint) 3011 /* 0: Identity */},
+const classtable_elt_t VFT_syntax___flow___CastFlowContext[70] = {
+  {(bigint) 3699 /* 0: Identity */},
   {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "CastFlowContext" /* 2: Class Name */},
   {(bigint) 3 /* 3: CastFlowContext < Object: superclass typecheck marker */},
-  {(bigint) 263 /* 4: CastFlowContext < FlowContext: superclass typecheck marker */},
-  {(bigint) 343 /* 5: CastFlowContext < SubFlowContext: superclass typecheck marker */},
-  {(bigint) 3011 /* 6: CastFlowContext < CastFlowContext: superclass typecheck marker */},
+  {(bigint) 251 /* 4: CastFlowContext < FlowContext: superclass typecheck marker */},
+  {(bigint) 347 /* 5: CastFlowContext < SubFlowContext: superclass typecheck marker */},
+  {(bigint) 3699 /* 6: CastFlowContext < CastFlowContext: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -149156,7 +178970,7 @@ const classtable_elt_t VFT_syntax___flow___CastFlowContext[67] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: CastFlowContext < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: CastFlowContext < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -149172,6 +178986,8 @@ const classtable_elt_t VFT_syntax___flow___CastFlowContext[67] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -149185,7 +179001,7 @@ const classtable_elt_t VFT_syntax___flow___CastFlowContext[67] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: CastFlowContext < FlowContext: superclass init_table position */},
+  {(bigint) 0 /* 50: CastFlowContext < FlowContext: superclass init_table position */},
   {(bigint) syntax___flow___FlowContext___check_is_set},
   {(bigint) syntax___flow___CastFlowContext___stype},
   {(bigint) syntax___flow___FlowContext___sub_setvariable},
@@ -149200,10 +179016,10 @@ const classtable_elt_t VFT_syntax___flow___CastFlowContext[67] = {
   {(bigint) syntax___flow___FlowContext___already_unreash__eq},
   {(bigint) syntax___flow___FlowContext___set_variables},
   {(bigint) syntax___flow___SubFlowContext___is_set},
-  {(bigint) 2 /* 62: CastFlowContext < SubFlowContext: superclass init_table position */},
+  {(bigint) 2 /* 65: CastFlowContext < SubFlowContext: superclass init_table position */},
   {(bigint) syntax___flow___SubFlowContext___prev},
   {(bigint) syntax___flow___SubFlowContext___with_prev},
-  {(bigint) 3 /* 65: CastFlowContext < CastFlowContext: superclass init_table position */},
+  {(bigint) 3 /* 68: CastFlowContext < CastFlowContext: superclass init_table position */},
   {(bigint) syntax___flow___CastFlowContext___init},
 };
 /* 0: Pointer to the classtable */
@@ -149216,6 +179032,7 @@ const classtable_elt_t VFT_syntax___flow___CastFlowContext[67] = {
 /* 7: Attribute CastFlowContext::_prev */
 /* 8: Attribute CastFlowContext::_variable */
 /* 9: Attribute CastFlowContext::_stype */
+static const char LOCATE_INIT_ATTRIBUTES__syntax___flow___CastFlowContext[] = "init var of CastFlowContext";
 void INIT_ATTRIBUTES__syntax___flow___CastFlowContext(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t REGB0;
@@ -149226,16 +179043,17 @@ void INIT_ATTRIBUTES__syntax___flow___CastFlowContext(val_t p0){
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___flow___CastFlowContext;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   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);
+  /* syntax/flow.nit:121 */
+  REGB0 = TAG_Bool(0);
   ATTR_syntax___flow___FlowContext____unreash(fra.me.REG[0]) = REGB0;
-  /* ./syntax//flow.nit:125 */
-  REGB0 = TAG_Bool(false);
+  /* syntax/flow.nit:125 */
+  REGB0 = TAG_Bool(0);
   ATTR_syntax___flow___FlowContext____already_unreash(fra.me.REG[0]) = REGB0;
-  /* ./syntax//flow.nit:128 */
+  /* syntax/flow.nit:128 */
   fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
   ATTR_syntax___flow___FlowContext____set_variables(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -149249,6 +179067,7 @@ val_t NEW_syntax___flow___CastFlowContext(void)
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
+static const char LOCATE_CHECKNEW_syntax___flow___CastFlowContext[] = "check new CastFlowContext";
 void CHECKNEW_syntax___flow___CastFlowContext(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
@@ -149259,18 +179078,9 @@ void CHECKNEW_syntax___flow___CastFlowContext(val_t p0){
   fra.me.meth = LOCATE_CHECKNEW_syntax___flow___CastFlowContext;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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_syntax___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_syntax___flow___FlowContext____visitor(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -149296,8 +179106,19 @@ void CHECKNEW_syntax___flow___CastFlowContext(val_t p0){
   } else {
     nit_abort("Uninitialized attribute %s", "_set_variables", LOCATE_nitc, 0);
   }
+  REGB0 = TAG_Bool(ATTR_syntax___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_syntax___flow___CastFlowContext____variable(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_variable", LOCATE_nitc, 0);
+  }
   stack_frame_head = fra.me.prev;
 }
+static const char LOCATE_NEW_CastFlowContext_syntax___flow___CastFlowContext___init[] = "new CastFlowContext flow::CastFlowContext::init";
 val_t NEW_CastFlowContext_syntax___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;
@@ -149308,6 +179129,7 @@ val_t NEW_CastFlowContext_syntax___flow___CastFlowContext___init(val_t p0, val_t
   fra.me.meth = LOCATE_NEW_CastFlowContext_syntax___flow___CastFlowContext___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -149317,7 +179139,7 @@ val_t NEW_CastFlowContext_syntax___flow___CastFlowContext___init(val_t p0, val_t
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* ./syntax//flow.nit:186 */
+  /* syntax/flow.nit:186 */
   fra.me.REG[4] = NEW_syntax___flow___CastFlowContext();
   INIT_ATTRIBUTES__syntax___flow___CastFlowContext(fra.me.REG[4]);
   syntax___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);
@@ -149325,13 +179147,14 @@ val_t NEW_CastFlowContext_syntax___flow___CastFlowContext___init(val_t p0, val_t
   stack_frame_head = fra.me.prev;
   return fra.me.REG[4];
 }
-const classtable_elt_t VFT_syntax___flow___MergeFlowContext[65] = {
-  {(bigint) 2127 /* 0: Identity */},
+const classtable_elt_t VFT_syntax___flow___MergeFlowContext[68] = {
+  {(bigint) 3071 /* 0: Identity */},
   {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "MergeFlowContext" /* 2: Class Name */},
   {(bigint) 3 /* 3: MergeFlowContext < Object: superclass typecheck marker */},
-  {(bigint) 263 /* 4: MergeFlowContext < FlowContext: superclass typecheck marker */},
-  {(bigint) 2127 /* 5: MergeFlowContext < MergeFlowContext: superclass typecheck marker */},
+  {(bigint) 251 /* 4: MergeFlowContext < FlowContext: superclass typecheck marker */},
+  {(bigint) 3071 /* 5: MergeFlowContext < MergeFlowContext: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -149344,7 +179167,7 @@ const classtable_elt_t VFT_syntax___flow___MergeFlowContext[65] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: MergeFlowContext < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: MergeFlowContext < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -149360,6 +179183,8 @@ const classtable_elt_t VFT_syntax___flow___MergeFlowContext[65] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -149373,7 +179198,7 @@ const classtable_elt_t VFT_syntax___flow___MergeFlowContext[65] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: MergeFlowContext < FlowContext: superclass init_table position */},
+  {(bigint) 0 /* 50: MergeFlowContext < FlowContext: superclass init_table position */},
   {(bigint) syntax___flow___FlowContext___check_is_set},
   {(bigint) syntax___flow___MergeFlowContext___stype},
   {(bigint) syntax___flow___FlowContext___sub_setvariable},
@@ -149388,7 +179213,7 @@ const classtable_elt_t VFT_syntax___flow___MergeFlowContext[65] = {
   {(bigint) syntax___flow___FlowContext___already_unreash__eq},
   {(bigint) syntax___flow___FlowContext___set_variables},
   {(bigint) syntax___flow___MergeFlowContext___is_set},
-  {(bigint) 2 /* 62: MergeFlowContext < MergeFlowContext: superclass init_table position */},
+  {(bigint) 2 /* 65: MergeFlowContext < MergeFlowContext: superclass init_table position */},
   {(bigint) syntax___flow___MergeFlowContext___init},
   {(bigint) syntax___flow___MergeFlowContext___merge_stype},
 };
@@ -149402,6 +179227,7 @@ const classtable_elt_t VFT_syntax___flow___MergeFlowContext[65] = {
 /* 7: Attribute MergeFlowContext::_base */
 /* 8: Attribute MergeFlowContext::_alts */
 /* 9: Attribute MergeFlowContext::_stypes */
+static const char LOCATE_INIT_ATTRIBUTES__syntax___flow___MergeFlowContext[] = "init var of MergeFlowContext";
 void INIT_ATTRIBUTES__syntax___flow___MergeFlowContext(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t REGB0;
@@ -149412,21 +179238,22 @@ void INIT_ATTRIBUTES__syntax___flow___MergeFlowContext(val_t p0){
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___flow___MergeFlowContext;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   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_standard___collection___hash_collection___HashMap___init();
-  ATTR_syntax___flow___MergeFlowContext____stypes(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//flow.nit:121 */
-  REGB0 = TAG_Bool(false);
+  /* syntax/flow.nit:121 */
+  REGB0 = TAG_Bool(0);
   ATTR_syntax___flow___FlowContext____unreash(fra.me.REG[0]) = REGB0;
-  /* ./syntax//flow.nit:125 */
-  REGB0 = TAG_Bool(false);
+  /* syntax/flow.nit:125 */
+  REGB0 = TAG_Bool(0);
   ATTR_syntax___flow___FlowContext____already_unreash(fra.me.REG[0]) = REGB0;
-  /* ./syntax//flow.nit:128 */
+  /* syntax/flow.nit:128 */
   fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
   ATTR_syntax___flow___FlowContext____set_variables(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/flow.nit:202 */
+  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
+  ATTR_syntax___flow___MergeFlowContext____stypes(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_syntax___flow___MergeFlowContext(void)
@@ -149438,6 +179265,7 @@ val_t NEW_syntax___flow___MergeFlowContext(void)
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
+static const char LOCATE_CHECKNEW_syntax___flow___MergeFlowContext[] = "check new MergeFlowContext";
 void CHECKNEW_syntax___flow___MergeFlowContext(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
@@ -149448,23 +179276,9 @@ void CHECKNEW_syntax___flow___MergeFlowContext(val_t p0){
   fra.me.meth = LOCATE_CHECKNEW_syntax___flow___MergeFlowContext;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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_syntax___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_syntax___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_syntax___flow___FlowContext____visitor(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -149490,8 +179304,24 @@ void CHECKNEW_syntax___flow___MergeFlowContext(val_t p0){
   } else {
     nit_abort("Uninitialized attribute %s", "_set_variables", LOCATE_nitc, 0);
   }
+  REGB0 = TAG_Bool(ATTR_syntax___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_syntax___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_syntax___flow___MergeFlowContext____stypes(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_stypes", LOCATE_nitc, 0);
+  }
   stack_frame_head = fra.me.prev;
 }
+static const char LOCATE_NEW_MergeFlowContext_syntax___flow___MergeFlowContext___init[] = "new MergeFlowContext flow::MergeFlowContext::init";
 val_t NEW_MergeFlowContext_syntax___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;
@@ -149502,6 +179332,7 @@ val_t NEW_MergeFlowContext_syntax___flow___MergeFlowContext___init(val_t p0, val
   fra.me.meth = LOCATE_NEW_MergeFlowContext_syntax___flow___MergeFlowContext___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -149509,7 +179340,7 @@ val_t NEW_MergeFlowContext_syntax___flow___MergeFlowContext___init(val_t p0, val
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./syntax//flow.nit:204 */
+  /* syntax/flow.nit:204 */
   fra.me.REG[3] = NEW_syntax___flow___MergeFlowContext();
   INIT_ATTRIBUTES__syntax___flow___MergeFlowContext(fra.me.REG[3]);
   syntax___flow___MergeFlowContext___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
@@ -149517,9 +179348,9 @@ val_t NEW_MergeFlowContext_syntax___flow___MergeFlowContext___init(val_t p0, val
   stack_frame_head = fra.me.prev;
   return fra.me.REG[3];
 }
-const classtable_elt_t VFT_syntax___scope___ScopeContext[57] = {
+const classtable_elt_t VFT_syntax___scope___ScopeContext[60] = {
   {(bigint) 55 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ScopeContext" /* 2: Class Name */},
   {(bigint) 3 /* 3: ScopeContext < Object: superclass typecheck marker */},
   {(bigint) 55 /* 4: ScopeContext < ScopeContext: superclass typecheck marker */},
@@ -149534,9 +179365,10 @@ const classtable_elt_t VFT_syntax___scope___ScopeContext[57] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: ScopeContext < Object: superclass init_table position */},
+  {(bigint) 0 /* 19: ScopeContext < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -149552,6 +179384,8 @@ const classtable_elt_t VFT_syntax___scope___ScopeContext[57] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -149565,7 +179399,7 @@ const classtable_elt_t VFT_syntax___scope___ScopeContext[57] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: ScopeContext < ScopeContext: superclass init_table position */},
+  {(bigint) 1 /* 50: ScopeContext < ScopeContext: superclass init_table position */},
   {(bigint) syntax___scope___ScopeContext_____bra},
   {(bigint) syntax___scope___ScopeContext___add_variable},
   {(bigint) syntax___scope___ScopeContext___push},
@@ -149580,8 +179414,8 @@ const classtable_elt_t VFT_syntax___scope___ScopeContext[57] = {
 /* 1: Object_id */
 /* 2: Attribute ScopeContext::_stack */
 /* 3: Attribute ScopeContext::_variables */
-/* 4: Attribute ScopeContext::_labels */
-/* 5: Attribute ScopeContext::_visitor */
+/* 4: Attribute ScopeContext::_visitor */
+static const char LOCATE_INIT_ATTRIBUTES__syntax___scope___ScopeContext[] = "init var of ScopeContext";
 void INIT_ATTRIBUTES__syntax___scope___ScopeContext(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
@@ -149591,29 +179425,28 @@ void INIT_ATTRIBUTES__syntax___scope___ScopeContext(val_t p0){
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___scope___ScopeContext;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//scope.nit:33 */
+  /* syntax/scope.nit:33 */
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
   ATTR_syntax___scope___ScopeContext____stack(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//scope.nit:38 */
+  /* syntax/scope.nit:38 */
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
   ATTR_syntax___scope___ScopeContext____variables(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//scope.nit:43 */
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-  ATTR_syntax___scope___ScopeContext____labels(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_syntax___scope___ScopeContext(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
+  obj = alloc(sizeof(val_t) * 5);
   obj->vft = (classtable_elt_t*)VFT_syntax___scope___ScopeContext;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
+static const char LOCATE_CHECKNEW_syntax___scope___ScopeContext[] = "check new ScopeContext";
 void CHECKNEW_syntax___scope___ScopeContext(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
@@ -149624,6 +179457,7 @@ void CHECKNEW_syntax___scope___ScopeContext(val_t p0){
   fra.me.meth = LOCATE_CHECKNEW_syntax___scope___ScopeContext;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_syntax___scope___ScopeContext____stack(fra.me.REG[0])!=NIT_NULL);
@@ -149636,11 +179470,6 @@ void CHECKNEW_syntax___scope___ScopeContext(val_t p0){
   } else {
     nit_abort("Uninitialized attribute %s", "_variables", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_syntax___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_syntax___scope___ScopeContext____visitor(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -149648,20 +179477,22 @@ void CHECKNEW_syntax___scope___ScopeContext(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
+static const char LOCATE_NEW_ScopeContext_syntax___scope___ScopeContext___init[] = "new ScopeContext scope::ScopeContext::init";
 val_t NEW_ScopeContext_syntax___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.line = 127;
   fra.me.meth = LOCATE_NEW_ScopeContext_syntax___scope___ScopeContext___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//scope.nit:129 */
+  /* syntax/scope.nit:127 */
   fra.me.REG[1] = NEW_syntax___scope___ScopeContext();
   INIT_ATTRIBUTES__syntax___scope___ScopeContext(fra.me.REG[1]);
   syntax___scope___ScopeContext___init(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -149669,7 +179500,7 @@ val_t NEW_ScopeContext_syntax___scope___ScopeContext___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_syntax___scope___ScopeBlock[52] = {
+const classtable_elt_t VFT_syntax___scope___ScopeBlock[55] = {
   {(bigint) 59 /* 0: Identity */},
   {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ScopeBlock" /* 2: Class Name */},
@@ -149686,9 +179517,10 @@ const classtable_elt_t VFT_syntax___scope___ScopeBlock[52] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: ScopeBlock < Object: superclass init_table position */},
+  {(bigint) 0 /* 19: ScopeBlock < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -149704,6 +179536,8 @@ const classtable_elt_t VFT_syntax___scope___ScopeBlock[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -149717,7 +179551,7 @@ const classtable_elt_t VFT_syntax___scope___ScopeBlock[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: ScopeBlock < ScopeBlock: superclass init_table position */},
+  {(bigint) 1 /* 50: ScopeBlock < ScopeBlock: superclass init_table position */},
   {(bigint) syntax___scope___ScopeBlock___node},
   {(bigint) syntax___scope___ScopeBlock___add_variable},
   {(bigint) syntax___scope___ScopeBlock___get_variable},
@@ -149727,6 +179561,7 @@ const classtable_elt_t VFT_syntax___scope___ScopeBlock[52] = {
 /* 1: Object_id */
 /* 2: Attribute ScopeBlock::_node */
 /* 3: Attribute ScopeBlock::_dico */
+static const char LOCATE_INIT_ATTRIBUTES__syntax___scope___ScopeBlock[] = "init var of ScopeBlock";
 void INIT_ATTRIBUTES__syntax___scope___ScopeBlock(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
@@ -149736,10 +179571,11 @@ void INIT_ATTRIBUTES__syntax___scope___ScopeBlock(val_t p0){
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___scope___ScopeBlock;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//scope.nit:143 */
+  /* syntax/scope.nit:141 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_syntax___scope___ScopeBlock____dico(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -149753,6 +179589,7 @@ val_t NEW_syntax___scope___ScopeBlock(void)
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
+static const char LOCATE_CHECKNEW_syntax___scope___ScopeBlock[] = "check new ScopeBlock";
 void CHECKNEW_syntax___scope___ScopeBlock(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
@@ -149763,6 +179600,7 @@ void CHECKNEW_syntax___scope___ScopeBlock(val_t p0){
   fra.me.meth = LOCATE_CHECKNEW_syntax___scope___ScopeBlock;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_syntax___scope___ScopeBlock____node(fra.me.REG[0])!=NIT_NULL);
@@ -149772,20 +179610,22 @@ void CHECKNEW_syntax___scope___ScopeBlock(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
+static const char LOCATE_NEW_ScopeBlock_syntax___scope___ScopeBlock___init[] = "new ScopeBlock scope::ScopeBlock::init";
 val_t NEW_ScopeBlock_syntax___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.line = 163;
   fra.me.meth = LOCATE_NEW_ScopeBlock_syntax___scope___ScopeBlock___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//scope.nit:165 */
+  /* syntax/scope.nit:163 */
   fra.me.REG[1] = NEW_syntax___scope___ScopeBlock();
   INIT_ATTRIBUTES__syntax___scope___ScopeBlock(fra.me.REG[1]);
   syntax___scope___ScopeBlock___init(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -149793,13 +179633,14 @@ val_t NEW_ScopeBlock_syntax___scope___ScopeBlock___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_syntax___scope___EscapableBlock[67] = {
-  {(bigint) 2291 /* 0: Identity */},
-  {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
+const classtable_elt_t VFT_syntax___scope___EscapableBlock[71] = {
+  {(bigint) 3239 /* 0: Identity */},
+  {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "EscapableBlock" /* 2: Class Name */},
   {(bigint) 3 /* 3: EscapableBlock < Object: superclass typecheck marker */},
   {(bigint) 59 /* 4: EscapableBlock < ScopeBlock: superclass typecheck marker */},
-  {(bigint) 2291 /* 5: EscapableBlock < EscapableBlock: superclass typecheck marker */},
+  {(bigint) 3239 /* 5: EscapableBlock < EscapableBlock: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -149812,7 +179653,7 @@ const classtable_elt_t VFT_syntax___scope___EscapableBlock[67] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: EscapableBlock < Object: superclass init_table position */},
+  {(bigint) 0 /* 19: EscapableBlock < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -149828,6 +179669,8 @@ const classtable_elt_t VFT_syntax___scope___EscapableBlock[67] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -149841,7 +179684,7 @@ const classtable_elt_t VFT_syntax___scope___EscapableBlock[67] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: EscapableBlock < ScopeBlock: superclass init_table position */},
+  {(bigint) 1 /* 50: EscapableBlock < ScopeBlock: superclass init_table position */},
   {(bigint) syntax___scope___ScopeBlock___node},
   {(bigint) syntax___scope___ScopeBlock___add_variable},
   {(bigint) syntax___scope___ScopeBlock___get_variable},
@@ -149854,8 +179697,9 @@ const classtable_elt_t VFT_syntax___scope___EscapableBlock[67] = {
   {(bigint) syntax___icode_generation___EscapableBlock___break_value__eq},
   {(bigint) syntax___icode_generation___EscapableBlock___continue_value},
   {(bigint) syntax___icode_generation___EscapableBlock___continue_value__eq},
-  {(bigint) 2 /* 60: EscapableBlock < EscapableBlock: superclass init_table position */},
+  {(bigint) 2 /* 63: EscapableBlock < EscapableBlock: superclass init_table position */},
   {(bigint) syntax___scope___EscapableBlock___lab},
+  {(bigint) syntax___scope___EscapableBlock___lab_location},
   {(bigint) syntax___scope___EscapableBlock___is_break_block},
   {(bigint) syntax___scope___EscapableBlock___break_list},
   {(bigint) syntax___scope___EscapableBlock___continue_stype},
@@ -149871,7 +179715,9 @@ const classtable_elt_t VFT_syntax___scope___EscapableBlock[67] = {
 /* 6: Attribute EscapableBlock::_break_value */
 /* 7: Attribute EscapableBlock::_continue_value */
 /* 8: Attribute EscapableBlock::_lab */
-/* 9: Attribute EscapableBlock::_break_flow_contexts */
+/* 9: Attribute EscapableBlock::_lab_location */
+/* 10: Attribute EscapableBlock::_break_flow_contexts */
+static const char LOCATE_INIT_ATTRIBUTES__syntax___scope___EscapableBlock[] = "init var of EscapableBlock";
 void INIT_ATTRIBUTES__syntax___scope___EscapableBlock(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
@@ -149881,26 +179727,28 @@ void INIT_ATTRIBUTES__syntax___scope___EscapableBlock(val_t p0){
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___scope___EscapableBlock;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   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_standard___collection___array___Array___init();
-  ATTR_syntax___scope___EscapableBlock____break_flow_contexts(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//scope.nit:143 */
+  /* syntax/scope.nit:141 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_syntax___scope___ScopeBlock____dico(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/scope.nit:195 */
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
+  ATTR_syntax___scope___EscapableBlock____break_flow_contexts(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_syntax___scope___EscapableBlock(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 10);
+  obj = alloc(sizeof(val_t) * 11);
   obj->vft = (classtable_elt_t*)VFT_syntax___scope___EscapableBlock;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
+static const char LOCATE_CHECKNEW_syntax___scope___EscapableBlock[] = "check new EscapableBlock";
 void CHECKNEW_syntax___scope___EscapableBlock(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
@@ -149911,34 +179759,37 @@ void CHECKNEW_syntax___scope___EscapableBlock(val_t p0){
   fra.me.meth = LOCATE_CHECKNEW_syntax___scope___EscapableBlock;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___scope___EscapableBlock____break_flow_contexts(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___scope___ScopeBlock____node(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_break_flow_contexts", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_node", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_syntax___scope___ScopeBlock____node(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___scope___EscapableBlock____break_flow_contexts(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_node", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_break_flow_contexts", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
+static const char LOCATE_NEW_EscapableBlock_syntax___scope___EscapableBlock___init[] = "new EscapableBlock scope::EscapableBlock::init";
 val_t NEW_EscapableBlock_syntax___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.line = 197;
   fra.me.meth = LOCATE_NEW_EscapableBlock_syntax___scope___EscapableBlock___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//scope.nit:196 */
+  /* syntax/scope.nit:197 */
   fra.me.REG[1] = NEW_syntax___scope___EscapableBlock();
   INIT_ATTRIBUTES__syntax___scope___EscapableBlock(fra.me.REG[1]);
   syntax___scope___EscapableBlock___init(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -149946,14 +179797,15 @@ val_t NEW_EscapableBlock_syntax___scope___EscapableBlock___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_syntax___scope___BreakOnlyEscapableBlock[69] = {
-  {(bigint) 3019 /* 0: Identity */},
-  {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
+const classtable_elt_t VFT_syntax___scope___BreakOnlyEscapableBlock[73] = {
+  {(bigint) 3707 /* 0: Identity */},
+  {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "BreakOnlyEscapableBlock" /* 2: Class Name */},
   {(bigint) 3 /* 3: BreakOnlyEscapableBlock < Object: superclass typecheck marker */},
   {(bigint) 59 /* 4: BreakOnlyEscapableBlock < ScopeBlock: superclass typecheck marker */},
-  {(bigint) 2291 /* 5: BreakOnlyEscapableBlock < EscapableBlock: superclass typecheck marker */},
-  {(bigint) 3019 /* 6: BreakOnlyEscapableBlock < BreakOnlyEscapableBlock: superclass typecheck marker */},
+  {(bigint) 3239 /* 5: BreakOnlyEscapableBlock < EscapableBlock: superclass typecheck marker */},
+  {(bigint) 3707 /* 6: BreakOnlyEscapableBlock < BreakOnlyEscapableBlock: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -149965,7 +179817,7 @@ const classtable_elt_t VFT_syntax___scope___BreakOnlyEscapableBlock[69] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: BreakOnlyEscapableBlock < Object: superclass init_table position */},
+  {(bigint) 0 /* 19: BreakOnlyEscapableBlock < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -149981,6 +179833,8 @@ const classtable_elt_t VFT_syntax___scope___BreakOnlyEscapableBlock[69] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -149994,7 +179848,7 @@ const classtable_elt_t VFT_syntax___scope___BreakOnlyEscapableBlock[69] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: BreakOnlyEscapableBlock < ScopeBlock: superclass init_table position */},
+  {(bigint) 1 /* 50: BreakOnlyEscapableBlock < ScopeBlock: superclass init_table position */},
   {(bigint) syntax___scope___ScopeBlock___node},
   {(bigint) syntax___scope___ScopeBlock___add_variable},
   {(bigint) syntax___scope___ScopeBlock___get_variable},
@@ -150007,14 +179861,15 @@ const classtable_elt_t VFT_syntax___scope___BreakOnlyEscapableBlock[69] = {
   {(bigint) syntax___icode_generation___EscapableBlock___break_value__eq},
   {(bigint) syntax___icode_generation___EscapableBlock___continue_value},
   {(bigint) syntax___icode_generation___EscapableBlock___continue_value__eq},
-  {(bigint) 2 /* 60: BreakOnlyEscapableBlock < EscapableBlock: superclass init_table position */},
+  {(bigint) 2 /* 63: BreakOnlyEscapableBlock < EscapableBlock: superclass init_table position */},
   {(bigint) syntax___scope___EscapableBlock___lab},
+  {(bigint) syntax___scope___EscapableBlock___lab_location},
   {(bigint) syntax___scope___BreakOnlyEscapableBlock___is_break_block},
   {(bigint) syntax___scope___EscapableBlock___break_list},
   {(bigint) syntax___scope___EscapableBlock___continue_stype},
   {(bigint) syntax___scope___EscapableBlock___break_flow_contexts},
   {(bigint) syntax___scope___EscapableBlock___init},
-  {(bigint) 3 /* 67: BreakOnlyEscapableBlock < BreakOnlyEscapableBlock: superclass init_table position */},
+  {(bigint) 3 /* 71: BreakOnlyEscapableBlock < BreakOnlyEscapableBlock: superclass init_table position */},
   {(bigint) syntax___scope___BreakOnlyEscapableBlock___init},
 };
 /* 0: Pointer to the classtable */
@@ -150026,7 +179881,9 @@ const classtable_elt_t VFT_syntax___scope___BreakOnlyEscapableBlock[69] = {
 /* 6: Attribute BreakOnlyEscapableBlock::_break_value */
 /* 7: Attribute BreakOnlyEscapableBlock::_continue_value */
 /* 8: Attribute BreakOnlyEscapableBlock::_lab */
-/* 9: Attribute BreakOnlyEscapableBlock::_break_flow_contexts */
+/* 9: Attribute BreakOnlyEscapableBlock::_lab_location */
+/* 10: Attribute BreakOnlyEscapableBlock::_break_flow_contexts */
+static const char LOCATE_INIT_ATTRIBUTES__syntax___scope___BreakOnlyEscapableBlock[] = "init var of BreakOnlyEscapableBlock";
 void INIT_ATTRIBUTES__syntax___scope___BreakOnlyEscapableBlock(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
@@ -150036,26 +179893,28 @@ void INIT_ATTRIBUTES__syntax___scope___BreakOnlyEscapableBlock(val_t p0){
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___scope___BreakOnlyEscapableBlock;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   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_standard___collection___array___Array___init();
-  ATTR_syntax___scope___EscapableBlock____break_flow_contexts(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//scope.nit:143 */
+  /* syntax/scope.nit:141 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_syntax___scope___ScopeBlock____dico(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/scope.nit:195 */
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
+  ATTR_syntax___scope___EscapableBlock____break_flow_contexts(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_syntax___scope___BreakOnlyEscapableBlock(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 10);
+  obj = alloc(sizeof(val_t) * 11);
   obj->vft = (classtable_elt_t*)VFT_syntax___scope___BreakOnlyEscapableBlock;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
+static const char LOCATE_CHECKNEW_syntax___scope___BreakOnlyEscapableBlock[] = "check new BreakOnlyEscapableBlock";
 void CHECKNEW_syntax___scope___BreakOnlyEscapableBlock(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
@@ -150066,34 +179925,37 @@ void CHECKNEW_syntax___scope___BreakOnlyEscapableBlock(val_t p0){
   fra.me.meth = LOCATE_CHECKNEW_syntax___scope___BreakOnlyEscapableBlock;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___scope___EscapableBlock____break_flow_contexts(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___scope___ScopeBlock____node(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_break_flow_contexts", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_node", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_syntax___scope___ScopeBlock____node(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___scope___EscapableBlock____break_flow_contexts(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_node", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_break_flow_contexts", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
+static const char LOCATE_NEW_BreakOnlyEscapableBlock_syntax___scope___BreakOnlyEscapableBlock___init[] = "new BreakOnlyEscapableBlock scope::BreakOnlyEscapableBlock::init";
 val_t NEW_BreakOnlyEscapableBlock_syntax___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.line = 208;
   fra.me.meth = LOCATE_NEW_BreakOnlyEscapableBlock_syntax___scope___BreakOnlyEscapableBlock___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//scope.nit:207 */
+  /* syntax/scope.nit:208 */
   fra.me.REG[1] = NEW_syntax___scope___BreakOnlyEscapableBlock();
   INIT_ATTRIBUTES__syntax___scope___BreakOnlyEscapableBlock(fra.me.REG[1]);
   syntax___scope___BreakOnlyEscapableBlock___init(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -150101,14 +179963,15 @@ val_t NEW_BreakOnlyEscapableBlock_syntax___scope___BreakOnlyEscapableBlock___ini
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_syntax___scope___EscapableClosure[70] = {
-  {(bigint) 2983 /* 0: Identity */},
-  {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
+const classtable_elt_t VFT_syntax___scope___EscapableClosure[74] = {
+  {(bigint) 3671 /* 0: Identity */},
+  {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "EscapableClosure" /* 2: Class Name */},
   {(bigint) 3 /* 3: EscapableClosure < Object: superclass typecheck marker */},
   {(bigint) 59 /* 4: EscapableClosure < ScopeBlock: superclass typecheck marker */},
-  {(bigint) 2291 /* 5: EscapableClosure < EscapableBlock: superclass typecheck marker */},
-  {(bigint) 2983 /* 6: EscapableClosure < EscapableClosure: superclass typecheck marker */},
+  {(bigint) 3239 /* 5: EscapableClosure < EscapableBlock: superclass typecheck marker */},
+  {(bigint) 3671 /* 6: EscapableClosure < EscapableClosure: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -150120,7 +179983,7 @@ const classtable_elt_t VFT_syntax___scope___EscapableClosure[70] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: EscapableClosure < Object: superclass init_table position */},
+  {(bigint) 0 /* 19: EscapableClosure < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -150136,6 +179999,8 @@ const classtable_elt_t VFT_syntax___scope___EscapableClosure[70] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -150149,7 +180014,7 @@ const classtable_elt_t VFT_syntax___scope___EscapableClosure[70] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: EscapableClosure < ScopeBlock: superclass init_table position */},
+  {(bigint) 1 /* 50: EscapableClosure < ScopeBlock: superclass init_table position */},
   {(bigint) syntax___scope___ScopeBlock___node},
   {(bigint) syntax___scope___ScopeBlock___add_variable},
   {(bigint) syntax___scope___ScopeBlock___get_variable},
@@ -150162,14 +180027,15 @@ const classtable_elt_t VFT_syntax___scope___EscapableClosure[70] = {
   {(bigint) syntax___icode_generation___EscapableBlock___break_value__eq},
   {(bigint) syntax___icode_generation___EscapableBlock___continue_value},
   {(bigint) syntax___icode_generation___EscapableBlock___continue_value__eq},
-  {(bigint) 2 /* 60: EscapableClosure < EscapableBlock: superclass init_table position */},
+  {(bigint) 2 /* 63: EscapableClosure < EscapableBlock: superclass init_table position */},
   {(bigint) syntax___scope___EscapableBlock___lab},
+  {(bigint) syntax___scope___EscapableBlock___lab_location},
   {(bigint) syntax___scope___EscapableClosure___is_break_block},
   {(bigint) syntax___scope___EscapableClosure___break_list},
   {(bigint) syntax___scope___EscapableClosure___continue_stype},
   {(bigint) syntax___scope___EscapableBlock___break_flow_contexts},
   {(bigint) syntax___scope___EscapableBlock___init},
-  {(bigint) 3 /* 67: EscapableClosure < EscapableClosure: superclass init_table position */},
+  {(bigint) 3 /* 71: EscapableClosure < EscapableClosure: superclass init_table position */},
   {(bigint) syntax___scope___EscapableClosure___closure},
   {(bigint) syntax___scope___EscapableClosure___init},
 };
@@ -150182,9 +180048,11 @@ const classtable_elt_t VFT_syntax___scope___EscapableClosure[70] = {
 /* 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 */
+/* 9: Attribute EscapableClosure::_lab_location */
+/* 10: Attribute EscapableClosure::_break_flow_contexts */
+/* 11: Attribute EscapableClosure::_closure */
+/* 12: Attribute EscapableClosure::_break_list */
+static const char LOCATE_INIT_ATTRIBUTES__syntax___scope___EscapableClosure[] = "init var of EscapableClosure";
 void INIT_ATTRIBUTES__syntax___scope___EscapableClosure(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
@@ -150194,26 +180062,28 @@ void INIT_ATTRIBUTES__syntax___scope___EscapableClosure(val_t p0){
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___scope___EscapableClosure;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   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_standard___collection___array___Array___init();
-  ATTR_syntax___scope___EscapableBlock____break_flow_contexts(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//scope.nit:143 */
+  /* syntax/scope.nit:141 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_syntax___scope___ScopeBlock____dico(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/scope.nit:195 */
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
+  ATTR_syntax___scope___EscapableBlock____break_flow_contexts(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_syntax___scope___EscapableClosure(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 12);
+  obj = alloc(sizeof(val_t) * 13);
   obj->vft = (classtable_elt_t*)VFT_syntax___scope___EscapableClosure;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
+static const char LOCATE_CHECKNEW_syntax___scope___EscapableClosure[] = "check new EscapableClosure";
 void CHECKNEW_syntax___scope___EscapableClosure(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
@@ -150224,35 +180094,38 @@ void CHECKNEW_syntax___scope___EscapableClosure(val_t p0){
   fra.me.meth = LOCATE_CHECKNEW_syntax___scope___EscapableClosure;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___scope___EscapableClosure____closure(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___scope___ScopeBlock____node(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_closure", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_node", LOCATE_nitc, 0);
   }
   REGB0 = TAG_Bool(ATTR_syntax___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_syntax___scope___ScopeBlock____node(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___scope___EscapableClosure____closure(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_node", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_closure", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
+static const char LOCATE_NEW_EscapableClosure_syntax___scope___EscapableClosure___init[] = "new EscapableClosure scope::EscapableClosure::init";
 val_t NEW_EscapableClosure_syntax___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};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 222;
+  fra.me.line = 223;
   fra.me.meth = LOCATE_NEW_EscapableClosure_syntax___scope___EscapableClosure___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -150260,7 +180133,7 @@ val_t NEW_EscapableClosure_syntax___scope___EscapableClosure___init(val_t p0, va
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./syntax//scope.nit:222 */
+  /* syntax/scope.nit:223 */
   fra.me.REG[3] = NEW_syntax___scope___EscapableClosure();
   INIT_ATTRIBUTES__syntax___scope___EscapableClosure(fra.me.REG[3]);
   syntax___scope___EscapableClosure___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
@@ -150268,171 +180141,15 @@ val_t NEW_EscapableClosure_syntax___scope___EscapableClosure___init(val_t p0, va
   stack_frame_head = fra.me.prev;
   return fra.me.REG[3];
 }
-const classtable_elt_t VFT_syntax___scope___AEscapeExpr[86] = {
-  {(bigint) 3439 /* 0: Identity */},
-  {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AEscapeExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AEscapeExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AEscapeExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3087 /* 5: AEscapeExpr < ALabelable: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: AEscapeExpr < Prod: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3439 /* 8: AEscapeExpr < AEscapeExpr: 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) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AEscapeExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
-  {(bigint) standard___file___Object___printn},
-  {(bigint) standard___file___Object___print},
-  {(bigint) standard___file___Object___getc},
-  {(bigint) standard___file___Object___gets},
-  {(bigint) standard___file___Object___stdin},
-  {(bigint) standard___file___Object___stdout},
-  {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
-  {(bigint) standard___string___Object___native_class_name},
-  {(bigint) standard___string___Object___class_name},
-  {(bigint) standard___string___Object___inspect},
-  {(bigint) standard___string___Object___inspect_head},
-  {(bigint) standard___string___Object___args},
-  {(bigint) standard___hash___Object___hash},
-  {(bigint) standard___math___Object___atan2},
-  {(bigint) standard___math___Object___pi},
-  {(bigint) standard___math___Object___srand_from},
-  {(bigint) standard___math___Object___srand},
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ANode___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ANode___visit_all},
-  {(bigint) 1 /* 60: AEscapeExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) 3 /* 67: AEscapeExpr < ALabelable: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ALabelable___n_label},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AEscapeExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__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 :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 4 /* 82: AEscapeExpr < AEscapeExpr: superclass init_table position */},
-  {(bigint) syntax___scope___AEscapeExpr___escapable},
-  {(bigint) syntax___scope___AEscapeExpr___kwname},
-  {(bigint) syntax___scope___AEscapeExpr___compute_escapable_block},
-};
-/* 0: Pointer to the classtable */
-/* 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__syntax___scope___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__syntax___scope___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:689 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[1];
-  stack_frame_head = fra.me.prev;
-}
-val_t NEW_syntax___scope___AEscapeExpr(void)
-{
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 12);
-  obj->vft = (classtable_elt_t*)VFT_syntax___scope___AEscapeExpr;
-  obj[1].object_id = object_id_counter;
-  object_id_counter = object_id_counter + 1;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_syntax___scope___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_syntax___scope___AEscapeExpr;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
-  stack_frame_head = fra.me.prev;
-}
-val_t NEW_AEscapeExpr_parser___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___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_syntax___scope___AEscapeExpr();
-  INIT_ATTRIBUTES__syntax___scope___AEscapeExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_syntax___scope___AEscapeExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_syntax___typing___TypingVisitor[106] = {
-  {(bigint) 2379 /* 0: Identity */},
+const classtable_elt_t VFT_syntax___typing___TypingVisitor[109] = {
+  {(bigint) 3327 /* 0: Identity */},
   {(bigint) 16 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TypingVisitor" /* 2: Class Name */},
   {(bigint) 3 /* 3: TypingVisitor < Object: superclass typecheck marker */},
   {(bigint) 15 /* 4: TypingVisitor < Visitor: superclass typecheck marker */},
-  {(bigint) 2371 /* 5: TypingVisitor < AbsSyntaxVisitor: superclass typecheck marker */},
-  {(bigint) 2379 /* 6: TypingVisitor < TypingVisitor: superclass typecheck marker */},
+  {(bigint) 3319 /* 5: TypingVisitor < AbsSyntaxVisitor: superclass typecheck marker */},
+  {(bigint) 3327 /* 6: TypingVisitor < TypingVisitor: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -150444,7 +180161,7 @@ const classtable_elt_t VFT_syntax___typing___TypingVisitor[106] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: TypingVisitor < Object: superclass init_table position */},
+  {(bigint) 2 /* 19: TypingVisitor < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -150460,6 +180177,8 @@ const classtable_elt_t VFT_syntax___typing___TypingVisitor[106] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -150473,12 +180192,12 @@ const classtable_elt_t VFT_syntax___typing___TypingVisitor[106] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: TypingVisitor < Visitor: superclass init_table position */},
+  {(bigint) 1 /* 50: TypingVisitor < Visitor: superclass init_table position */},
   {(bigint) syntax___typing___TypingVisitor___visit},
   {(bigint) parser___parser_prod___Visitor___enter_visit},
   {(bigint) parser___parser_prod___Visitor___current_node},
   {(bigint) parser___parser_prod___Visitor___init},
-  {(bigint) 2 /* 52: TypingVisitor < AbsSyntaxVisitor: superclass init_table position */},
+  {(bigint) 0 /* 55: TypingVisitor < AbsSyntaxVisitor: superclass init_table position */},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_type_by_name},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_instantiated_type_by_name},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_object},
@@ -150507,7 +180226,7 @@ const classtable_elt_t VFT_syntax___typing___TypingVisitor[106] = {
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_multiexpr},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___init},
-  {(bigint) 3 /* 81: TypingVisitor < TypingVisitor: superclass init_table position */},
+  {(bigint) 3 /* 84: TypingVisitor < TypingVisitor: superclass init_table position */},
   {(bigint) syntax___typing___TypingVisitor___scope_ctx},
   {(bigint) syntax___typing___TypingVisitor___flow_ctx},
   {(bigint) syntax___typing___TypingVisitor___flow_ctx__eq},
@@ -150549,6 +180268,7 @@ const classtable_elt_t VFT_syntax___typing___TypingVisitor[106] = {
 /* 13: Attribute TypingVisitor::_explicit_other_init_call */
 /* 14: Attribute TypingVisitor::_is_default_closure_definition */
 /* 15: Attribute TypingVisitor::_once_count */
+static const char LOCATE_INIT_ATTRIBUTES__syntax___typing___TypingVisitor[] = "init var of TypingVisitor";
 void INIT_ATTRIBUTES__syntax___typing___TypingVisitor(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t REGB0;
@@ -150559,26 +180279,27 @@ void INIT_ATTRIBUTES__syntax___typing___TypingVisitor(val_t p0){
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___typing___TypingVisitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//typing.nit:46 */
+  /* parser/parser_prod.nit:66 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_prod___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/typing.nit:46 */
   fra.me.REG[1] = fra.me.REG[0];
-  /* ./syntax//typing.nit:47 */
+  /* syntax/typing.nit:47 */
   fra.me.REG[1] = NEW_ScopeContext_syntax___scope___ScopeContext___init(fra.me.REG[1]);
   ATTR_syntax___typing___TypingVisitor____scope_ctx(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//typing.nit:90 */
-  REGB0 = TAG_Bool(false);
+  /* syntax/typing.nit:90 */
+  REGB0 = TAG_Bool(0);
   ATTR_syntax___typing___TypingVisitor____explicit_other_init_call(fra.me.REG[0]) = REGB0;
-  /* ./syntax//typing.nit:107 */
-  REGB0 = TAG_Bool(false);
+  /* syntax/typing.nit:107 */
+  REGB0 = TAG_Bool(0);
   ATTR_syntax___typing___TypingVisitor____is_default_closure_definition(fra.me.REG[0]) = REGB0;
-  /* ./syntax//typing.nit:110 */
+  /* syntax/typing.nit:110 */
   REGB0 = TAG_Int(0);
   ATTR_syntax___typing___TypingVisitor____once_count(fra.me.REG[0]) = REGB0;
-  /* ./parser//parser_prod.nit:66 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_parser___parser_prod___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_syntax___typing___TypingVisitor(void)
@@ -150590,6 +180311,7 @@ val_t NEW_syntax___typing___TypingVisitor(void)
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
+static const char LOCATE_CHECKNEW_syntax___typing___TypingVisitor[] = "check new TypingVisitor";
 void CHECKNEW_syntax___typing___TypingVisitor(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
@@ -150600,8 +180322,19 @@ void CHECKNEW_syntax___typing___TypingVisitor(val_t p0){
   fra.me.meth = LOCATE_CHECKNEW_syntax___typing___TypingVisitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_syntax___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___syntax_base___AbsSyntaxVisitor____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_syntax___typing___TypingVisitor____scope_ctx(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -150622,18 +180355,9 @@ void CHECKNEW_syntax___typing___TypingVisitor(val_t p0){
   } else {
     nit_abort("Uninitialized attribute %s", "_once_count", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_syntax___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___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;
 }
+static const char LOCATE_NEW_TypingVisitor_syntax___typing___TypingVisitor___init[] = "new TypingVisitor typing::TypingVisitor::init";
 val_t NEW_TypingVisitor_syntax___typing___TypingVisitor___init(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t tmp;
@@ -150644,12 +180368,13 @@ val_t NEW_TypingVisitor_syntax___typing___TypingVisitor___init(val_t p0, val_t p
   fra.me.meth = LOCATE_NEW_TypingVisitor_syntax___typing___TypingVisitor___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   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 */
+  /* syntax/typing.nit:112 */
   fra.me.REG[2] = NEW_syntax___typing___TypingVisitor();
   INIT_ATTRIBUTES__syntax___typing___TypingVisitor(fra.me.REG[2]);
   syntax___typing___TypingVisitor___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -150657,16 +180382,17 @@ val_t NEW_TypingVisitor_syntax___typing___TypingVisitor___init(val_t p0, val_t p
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_syntax___typing___AAbsControl[86] = {
-  {(bigint) 3523 /* 0: Identity */},
-  {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AAbsControl" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AAbsControl < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: AAbsControl < ANode: superclass typecheck marker */},
+const classtable_elt_t VFT_primitive_info___PrimitiveInfo[55] = {
+  {(bigint) 99 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "PrimitiveInfo" /* 2: Class Name */},
+  {(bigint) 3 /* 3: PrimitiveInfo < Object: superclass typecheck marker */},
+  {(bigint) 99 /* 4: PrimitiveInfo < PrimitiveInfo: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2075 /* 6: AAbsControl < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: AAbsControl < AExpr: superclass typecheck marker */},
-  {(bigint) 3523 /* 8: AAbsControl < AAbsControl: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -150676,7 +180402,7 @@ const classtable_elt_t VFT_syntax___typing___AAbsControl[86] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: AAbsControl < Object: superclass init_table position */},
+  {(bigint) 0 /* 19: PrimitiveInfo < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -150692,6 +180418,8 @@ const classtable_elt_t VFT_syntax___typing___AAbsControl[86] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -150705,132 +180433,502 @@ const classtable_elt_t VFT_syntax___typing___AAbsControl[86] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ANode___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ANode___visit_all},
-  {(bigint) 1 /* 60: AAbsControl < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___AExpr___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: AAbsControl < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 75: AAbsControl < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___AExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) 4 /* 82: AAbsControl < AAbsControl: superclass init_table position */},
-  {(bigint) syntax___typing___AAbsControl___escapable},
-  {(bigint) syntax___typing___AAbsControl___process_control},
-  {(bigint) syntax___typing___AAbsControl___process_control_inside},
+  {(bigint) 1 /* 50: 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: 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__syntax___typing___AAbsControl(val_t p0){
+/* 2: Attribute PrimitiveInfo::_name */
+/* 3: Attribute PrimitiveInfo::_tagged */
+/* 4: Attribute PrimitiveInfo::_cname */
+static const char LOCATE_INIT_ATTRIBUTES__primitive_info___PrimitiveInfo[] = "init var of PrimitiveInfo";
+void INIT_ATTRIBUTES__primitive_info___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__primitive_info___PrimitiveInfo;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_primitive_info___PrimitiveInfo(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_primitive_info___PrimitiveInfo;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_primitive_info___PrimitiveInfo[] = "check new PrimitiveInfo";
+void CHECKNEW_primitive_info___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_INIT_ATTRIBUTES__syntax___typing___AAbsControl;
+  fra.me.meth = LOCATE_CHECKNEW_primitive_info___PrimitiveInfo;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  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;
+}
+static const char 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){
+  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 = 96;
+  fra.me.meth = LOCATE_NEW_PrimitiveInfo_primitive_info___PrimitiveInfo___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  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:96 */
+  fra.me.REG[2] = NEW_primitive_info___PrimitiveInfo();
+  INIT_ATTRIBUTES__primitive_info___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_primitive_info___PrimitiveInfo(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
 }
-val_t NEW_syntax___typing___AAbsControl(void)
+const classtable_elt_t VFT_syntax___icode_generation___A2IContext[92] = {
+  {(bigint) 3323 /* 0: Identity */},
+  {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "A2IContext" /* 2: Class Name */},
+  {(bigint) 3 /* 3: A2IContext < Object: superclass typecheck marker */},
+  {(bigint) 223 /* 4: A2IContext < ICodeBuilder: superclass typecheck marker */},
+  {(bigint) 3323 /* 5: A2IContext < A2IContext: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 0 /* 19: A2IContext < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) icode___icode_tools___ICodeBuilder___inline_routine},
+  {(bigint) 1 /* 51: A2IContext < ICodeBuilder: superclass init_table position */},
+  {(bigint) syntax___icode_generation___A2IContext___stmt},
+  {(bigint) icode___icode_builder___ICodeBuilder___expr},
+  {(bigint) icode___icode_builder___ICodeBuilder___add_assignment},
+  {(bigint) icode___icode_builder___ICodeBuilder___add_null_reciever_check},
+  {(bigint) icode___icode_builder___ICodeBuilder___add_type_cast},
+  {(bigint) icode___icode_builder___ICodeBuilder___add_attr_check},
+  {(bigint) icode___icode_builder___ICodeBuilder___add_attr_read},
+  {(bigint) icode___icode_builder___ICodeBuilder___add_abort},
+  {(bigint) icode___icode_builder___ICodeBuilder___add_return_value},
+  {(bigint) icode___icode_builder___ICodeBuilder___add_call},
+  {(bigint) icode___icode_builder___ICodeBuilder___add_escape},
+  {(bigint) icode___icode_builder___ICodeBuilder___lit_null_reg},
+  {(bigint) icode___icode_builder___ICodeBuilder___lit_true_reg},
+  {(bigint) icode___icode_builder___ICodeBuilder___lit_false_reg},
+  {(bigint) icode___icode_builder___ICodeBuilder___new_register},
+  {(bigint) icode___icode_builder___ICodeBuilder___mmmodule},
+  {(bigint) icode___icode_builder___ICodeBuilder___iroutine},
+  {(bigint) icode___icode_builder___ICodeBuilder___seq},
+  {(bigint) icode___icode_builder___ICodeBuilder___seq__eq},
+  {(bigint) icode___icode_builder___ICodeBuilder___init},
+  {(bigint) icode___icode_builder___ICodeBuilder___current_location},
+  {(bigint) icode___icode_builder___ICodeBuilder___current_location__eq},
+  {(bigint) 2 /* 74: A2IContext < A2IContext: superclass init_table position */},
+  {(bigint) icode___icode_builder___ICodeBuilder___stmt},
+  {(bigint) syntax___icode_generation___A2IContext___add_new_array},
+  {(bigint) syntax___icode_generation___A2IContext___add_call_array_add},
+  {(bigint) syntax___icode_generation___A2IContext___variable},
+  {(bigint) syntax___icode_generation___A2IContext___closurevariables},
+  {(bigint) syntax___icode_generation___A2IContext___visitor},
+  {(bigint) syntax___icode_generation___A2IContext___return_seq},
+  {(bigint) syntax___icode_generation___A2IContext___return_seq__eq},
+  {(bigint) syntax___icode_generation___A2IContext___return_value},
+  {(bigint) syntax___icode_generation___A2IContext___return_value__eq},
+  {(bigint) syntax___icode_generation___A2IContext___method},
+  {(bigint) syntax___icode_generation___A2IContext___selfreg},
+  {(bigint) syntax___icode_generation___A2IContext___selfreg__eq},
+  {(bigint) syntax___icode_generation___A2IContext___init},
+  {(bigint) syntax___icode_generation___A2IContext___invoke_super_init_calls_after},
+  {(bigint) syntax___icode_generation___A2IContext___generate_stmt},
+  {(bigint) syntax___icode_generation___A2IContext___generate_expr},
+};
+/* 0: Pointer to the classtable */
+/* 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::@selfreg */
+/* 13: Attribute A2IContext::_current_node */
+static const char LOCATE_INIT_ATTRIBUTES__syntax___icode_generation___A2IContext[] = "init var of A2IContext";
+void INIT_ATTRIBUTES__syntax___icode_generation___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__syntax___icode_generation___A2IContext;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  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___icode_builder___ICodeBuilder____current_location(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/icode_generation.nit:68 */
+  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
+  ATTR_syntax___icode_generation___A2IContext____variables(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/icode_generation.nit:71 */
+  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
+  ATTR_syntax___icode_generation___A2IContext____closurevariables(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/icode_generation.nit:140 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_syntax___icode_generation___A2IContext____current_node(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_syntax___icode_generation___A2IContext(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 12);
-  obj->vft = (classtable_elt_t*)VFT_syntax___typing___AAbsControl;
+  obj = alloc(sizeof(val_t) * 14);
+  obj->vft = (classtable_elt_t*)VFT_syntax___icode_generation___A2IContext;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_syntax___typing___AAbsControl(val_t p0){
+static const char LOCATE_CHECKNEW_syntax___icode_generation___A2IContext[] = "check new A2IContext";
+void CHECKNEW_syntax___icode_generation___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_syntax___typing___AAbsControl;
+  fra.me.meth = LOCATE_CHECKNEW_syntax___icode_generation___A2IContext;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_icode___icode_builder___ICodeBuilder____mmmodule(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_mmmodule", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode___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___icode_builder___ICodeBuilder____seq(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_seq", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_syntax___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_syntax___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_syntax___icode_generation___A2IContext____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;
+}
+static const char LOCATE_NEW_A2IContext_syntax___icode_generation___A2IContext___init[] = "new A2IContext icode_generation::A2IContext::init";
+val_t NEW_A2IContext_syntax___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 = 88;
+  fra.me.meth = LOCATE_NEW_A2IContext_syntax___icode_generation___A2IContext___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  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:88 */
+  fra.me.REG[3] = NEW_syntax___icode_generation___A2IContext();
+  INIT_ATTRIBUTES__syntax___icode_generation___A2IContext(fra.me.REG[3]);
+  syntax___icode_generation___A2IContext___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_syntax___icode_generation___A2IContext(fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
 }
-val_t NEW_AAbsControl_parser___parser_nodes___ANode___init(val_t p0){
+const classtable_elt_t VFT_syntax___icode_generation___A2IVisitor[88] = {
+  {(bigint) 3859 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "A2IVisitor" /* 2: Class Name */},
+  {(bigint) 3 /* 3: A2IVisitor < Object: superclass typecheck marker */},
+  {(bigint) 15 /* 4: A2IVisitor < Visitor: superclass typecheck marker */},
+  {(bigint) 3319 /* 5: A2IVisitor < AbsSyntaxVisitor: superclass typecheck marker */},
+  {(bigint) 3859 /* 6: A2IVisitor < A2IVisitor: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 2 /* 19: A2IVisitor < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 50: A2IVisitor < Visitor: superclass init_table position */},
+  {(bigint) syntax___icode_generation___A2IVisitor___visit},
+  {(bigint) parser___parser_prod___Visitor___enter_visit},
+  {(bigint) parser___parser_prod___Visitor___current_node},
+  {(bigint) parser___parser_prod___Visitor___init},
+  {(bigint) 0 /* 55: A2IVisitor < AbsSyntaxVisitor: superclass init_table position */},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_type_by_name},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_instantiated_type_by_name},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_object},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_bool},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_int},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_float},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_char},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_string},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_nativestring},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_array},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_discrete},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_range},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_none},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_method},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___mmmodule},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___local_class},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___local_class__eq},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___local_property},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___local_property__eq},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___tc},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___error},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___fatal_error},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___warning},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_expr},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_multiexpr},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___init},
+  {(bigint) 3 /* 84: A2IVisitor < A2IVisitor: superclass init_table position */},
+  {(bigint) syntax___icode_generation___A2IVisitor___icode_ctx__eq},
+  {(bigint) syntax___icode_generation___A2IVisitor___icode_ctx},
+  {(bigint) syntax___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 */
+static const char LOCATE_INIT_ATTRIBUTES__syntax___icode_generation___A2IVisitor[] = "init var of A2IVisitor";
+void INIT_ATTRIBUTES__syntax___icode_generation___A2IVisitor(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___parser_nodes___ANode___init;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___icode_generation___A2IVisitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_syntax___typing___AAbsControl();
-  INIT_ATTRIBUTES__syntax___typing___AAbsControl(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_syntax___typing___AAbsControl(fra.me.REG[1]);
+  /* parser/parser_prod.nit:66 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___parser_prod___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
 }
-const classtable_elt_t VFT_syntax___typing___ATypeCheckExpr[82] = {
-  {(bigint) 3259 /* 0: Identity */},
-  {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ATypeCheckExpr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ATypeCheckExpr < Object: superclass typecheck marker */},
-  {(bigint) 307 /* 4: ATypeCheckExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3259 /* 5: ATypeCheckExpr < ATypeCheckExpr: superclass typecheck marker */},
-  {(bigint) 2075 /* 6: ATypeCheckExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3111 /* 7: ATypeCheckExpr < AExpr: superclass typecheck marker */},
+val_t NEW_syntax___icode_generation___A2IVisitor(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_syntax___icode_generation___A2IVisitor;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_syntax___icode_generation___A2IVisitor[] = "check new A2IVisitor";
+void CHECKNEW_syntax___icode_generation___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_syntax___icode_generation___A2IVisitor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_syntax___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___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;
+}
+static const char LOCATE_NEW_A2IVisitor_syntax___icode_generation___A2IVisitor___init[] = "new A2IVisitor icode_generation::A2IVisitor::init";
+val_t NEW_A2IVisitor_syntax___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 = 289;
+  fra.me.meth = LOCATE_NEW_A2IVisitor_syntax___icode_generation___A2IVisitor___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  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:289 */
+  fra.me.REG[2] = NEW_syntax___icode_generation___A2IVisitor();
+  INIT_ATTRIBUTES__syntax___icode_generation___A2IVisitor(fra.me.REG[2]);
+  syntax___icode_generation___A2IVisitor___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_syntax___icode_generation___A2IVisitor(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_syntax___mmbuilder___CSHSorter[58] = {
+  {(bigint) 3299 /* 0: Identity */},
+  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "CSHSorter" /* 2: Class Name */},
+  {(bigint) 3 /* 3: CSHSorter < Object: superclass typecheck marker */},
+  {(bigint) 307 /* 4: CSHSorter < AbstractSorter: superclass typecheck marker */},
+  {(bigint) 3299 /* 5: CSHSorter < CSHSorter: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -150841,7 +180939,7 @@ const classtable_elt_t VFT_syntax___typing___ATypeCheckExpr[82] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: ATypeCheckExpr < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: CSHSorter < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -150857,6 +180955,8 @@ const classtable_elt_t VFT_syntax___typing___ATypeCheckExpr[82] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -150870,125 +180970,225 @@ const classtable_elt_t VFT_syntax___typing___ATypeCheckExpr[82] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_builder},
-  {(bigint) syntax___mmbuilder___AExpr___accept_property_verifier},
-  {(bigint) syntax___syntax_base___ANode___accept_abs_syntax_visitor},
-  {(bigint) parser___parser_prod___ANode___parent},
-  {(bigint) parser___parser_prod___ANode___parent__eq},
-  {(bigint) parser___parser_prod___ANode___remove_child},
-  {(bigint) parser___parser_prod___ANode___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ANode___visit_all},
-  {(bigint) 1 /* 60: ATypeCheckExpr < ANode: superclass init_table position */},
-  {(bigint) parser___parser_nodes___ANode___location},
-  {(bigint) parser___parser_nodes___ANode___hot_location},
-  {(bigint) parser___parser_nodes___ANode___init},
-  {(bigint) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___AExpr___after_typing},
-  {(bigint) 4 /* 67: ATypeCheckExpr < ATypeCheckExpr: superclass init_table position */},
-  {(bigint) syntax___typing___ATypeCheckExpr___check_expr_cast},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 70: ATypeCheckExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 75: ATypeCheckExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___AExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
+  {(bigint) 0 /* 50: CSHSorter < AbstractSorter: superclass init_table position */},
+  {(bigint) syntax___mmbuilder___CSHSorter___compare},
+  {(bigint) standard___collection___sorter___AbstractSorter___sort},
+  {(bigint) standard___collection___sorter___AbstractSorter___sub_sort},
+  {(bigint) standard___collection___sorter___AbstractSorter___quick_sort},
+  {(bigint) standard___collection___sorter___AbstractSorter___bubble_sort},
+  {(bigint) 2 /* 56: CSHSorter < CSHSorter: superclass init_table position */},
+  {(bigint) syntax___mmbuilder___CSHSorter___init},
 };
 /* 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__syntax___typing___ATypeCheckExpr(val_t p0){
+static const char LOCATE_INIT_ATTRIBUTES__syntax___mmbuilder___CSHSorter[] = "init var of CSHSorter";
+void INIT_ATTRIBUTES__syntax___mmbuilder___CSHSorter(val_t p0){
   struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___typing___ATypeCheckExpr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___mmbuilder___CSHSorter;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_syntax___mmbuilder___CSHSorter(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 2);
+  obj->vft = (classtable_elt_t*)VFT_syntax___mmbuilder___CSHSorter;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_syntax___mmbuilder___CSHSorter[] = "check new CSHSorter";
+void CHECKNEW_syntax___mmbuilder___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_syntax___mmbuilder___CSHSorter;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_CSHSorter_syntax___mmbuilder___CSHSorter___init[] = "new CSHSorter mmbuilder::CSHSorter::init";
+val_t NEW_CSHSorter_syntax___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 = 50;
+  fra.me.meth = LOCATE_NEW_CSHSorter_syntax___mmbuilder___CSHSorter___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
+  /* syntax/mmbuilder.nit:50 */
+  fra.me.REG[0] = NEW_syntax___mmbuilder___CSHSorter();
+  INIT_ATTRIBUTES__syntax___mmbuilder___CSHSorter(fra.me.REG[0]);
+  syntax___mmbuilder___CSHSorter___init(fra.me.REG[0], init_table);
+  CHECKNEW_syntax___mmbuilder___CSHSorter(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_syntax___mmbuilder___MMSrcAncestor[62] = {
+  {(bigint) 3103 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "MMSrcAncestor" /* 2: Class Name */},
+  {(bigint) 3 /* 3: MMSrcAncestor < Object: superclass typecheck marker */},
+  {(bigint) 183 /* 4: MMSrcAncestor < MMAncestor: superclass typecheck marker */},
+  {(bigint) 3103 /* 5: MMSrcAncestor < MMSrcAncestor: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: MMSrcAncestor < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) metamodel___static_type___MMAncestor___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) metamodel___inheritance___MMAncestor___add_in},
+  {(bigint) 0 /* 51: MMSrcAncestor < MMAncestor: superclass init_table position */},
+  {(bigint) metamodel___static_type___MMAncestor___stype__eq},
+  {(bigint) metamodel___static_type___MMAncestor___stype},
+  {(bigint) metamodel___static_type___MMAncestor___inheriter__eq},
+  {(bigint) metamodel___static_type___MMAncestor___inheriter},
+  {(bigint) metamodel___static_type___MMAncestor___is_reffinement},
+  {(bigint) metamodel___static_type___MMAncestor___is_specialisation},
+  {(bigint) syntax___mmbuilder___MMSrcAncestor___local_class},
+  {(bigint) metamodel___static_type___MMAncestor___init},
+  {(bigint) 2 /* 60: MMSrcAncestor < MMSrcAncestor: superclass init_table position */},
+  {(bigint) syntax___mmbuilder___MMSrcAncestor___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute MMSrcAncestor::_stype */
+/* 3: Attribute MMSrcAncestor::_inheriter */
+/* 4: Attribute MMSrcAncestor::_local_class */
+static const char LOCATE_INIT_ATTRIBUTES__syntax___mmbuilder___MMSrcAncestor[] = "init var of MMSrcAncestor";
+void INIT_ATTRIBUTES__syntax___mmbuilder___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__syntax___mmbuilder___MMSrcAncestor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* metamodel/static_type.nit:310 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_metamodel___static_type___MMAncestor____stype(fra.me.REG[0]) = fra.me.REG[1];
+  /* metamodel/static_type.nit:316 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_metamodel___static_type___MMAncestor____inheriter(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_syntax___typing___ATypeCheckExpr(void)
+val_t NEW_syntax___mmbuilder___MMSrcAncestor(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 11);
-  obj->vft = (classtable_elt_t*)VFT_syntax___typing___ATypeCheckExpr;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_syntax___mmbuilder___MMSrcAncestor;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_syntax___typing___ATypeCheckExpr(val_t p0){
+static const char LOCATE_CHECKNEW_syntax___mmbuilder___MMSrcAncestor[] = "check new MMSrcAncestor";
+void CHECKNEW_syntax___mmbuilder___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_syntax___typing___ATypeCheckExpr;
+  fra.me.meth = LOCATE_CHECKNEW_syntax___mmbuilder___MMSrcAncestor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___mmbuilder___MMSrcAncestor____local_class(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ATypeCheckExpr_parser___parser_nodes___ANode___init(val_t p0){
+static const char LOCATE_NEW_MMSrcAncestor_syntax___mmbuilder___MMSrcAncestor___init[] = "new MMSrcAncestor mmbuilder::MMSrcAncestor::init";
+val_t NEW_MMSrcAncestor_syntax___mmbuilder___MMSrcAncestor___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};
+  int init_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_ATypeCheckExpr_parser___parser_nodes___ANode___init;
+  fra.me.line = 339;
+  fra.me.meth = LOCATE_NEW_MMSrcAncestor_syntax___mmbuilder___MMSrcAncestor___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_syntax___typing___ATypeCheckExpr();
-  INIT_ATTRIBUTES__syntax___typing___ATypeCheckExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_syntax___typing___ATypeCheckExpr(fra.me.REG[1]);
+  /* syntax/mmbuilder.nit:339 */
+  fra.me.REG[1] = NEW_syntax___mmbuilder___MMSrcAncestor();
+  INIT_ATTRIBUTES__syntax___mmbuilder___MMSrcAncestor(fra.me.REG[1]);
+  syntax___mmbuilder___MMSrcAncestor___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_syntax___mmbuilder___MMSrcAncestor(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_syntax___icode_generation___A2IContext[89] = {
-  {(bigint) 2375 /* 0: Identity */},
-  {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "A2IContext" /* 2: Class Name */},
-  {(bigint) 3 /* 3: A2IContext < Object: superclass typecheck marker */},
-  {(bigint) 235 /* 4: A2IContext < ICodeBuilder: superclass typecheck marker */},
-  {(bigint) 2375 /* 5: A2IContext < A2IContext: superclass typecheck marker */},
+const classtable_elt_t VFT_syntax___mmbuilder___ClassBuilderVisitor[90] = {
+  {(bigint) 3691 /* 0: Identity */},
+  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ClassBuilderVisitor" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ClassBuilderVisitor < Object: superclass typecheck marker */},
+  {(bigint) 15 /* 4: ClassBuilderVisitor < Visitor: superclass typecheck marker */},
+  {(bigint) 3319 /* 5: ClassBuilderVisitor < AbsSyntaxVisitor: superclass typecheck marker */},
+  {(bigint) 3691 /* 6: ClassBuilderVisitor < ClassBuilderVisitor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -151001,7 +181201,7 @@ const classtable_elt_t VFT_syntax___icode_generation___A2IContext[89] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: A2IContext < Object: superclass init_table position */},
+  {(bigint) 2 /* 19: ClassBuilderVisitor < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -151017,6 +181217,8 @@ const classtable_elt_t VFT_syntax___icode_generation___A2IContext[89] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -151027,178 +181229,156 @@ const classtable_elt_t VFT_syntax___icode_generation___A2IContext[89] = {
   {(bigint) standard___math___Object___atan2},
   {(bigint) standard___math___Object___pi},
   {(bigint) standard___math___Object___srand_from},
-  {(bigint) standard___math___Object___srand},
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) icode___icode_tools___ICodeBuilder___inline_routine},
-  {(bigint) 1 /* 48: A2IContext < ICodeBuilder: superclass init_table position */},
-  {(bigint) syntax___icode_generation___A2IContext___stmt},
-  {(bigint) icode___icode_builder___ICodeBuilder___expr},
-  {(bigint) icode___icode_builder___ICodeBuilder___add_assignment},
-  {(bigint) icode___icode_builder___ICodeBuilder___add_null_reciever_check},
-  {(bigint) icode___icode_builder___ICodeBuilder___add_type_cast},
-  {(bigint) icode___icode_builder___ICodeBuilder___add_attr_check},
-  {(bigint) icode___icode_builder___ICodeBuilder___add_attr_read},
-  {(bigint) icode___icode_builder___ICodeBuilder___add_abort},
-  {(bigint) icode___icode_builder___ICodeBuilder___add_return_value},
-  {(bigint) icode___icode_builder___ICodeBuilder___add_call},
-  {(bigint) icode___icode_builder___ICodeBuilder___add_escape},
-  {(bigint) icode___icode_builder___ICodeBuilder___lit_null_reg},
-  {(bigint) icode___icode_builder___ICodeBuilder___lit_true_reg},
-  {(bigint) icode___icode_builder___ICodeBuilder___lit_false_reg},
-  {(bigint) icode___icode_builder___ICodeBuilder___new_register},
-  {(bigint) icode___icode_builder___ICodeBuilder___mmmodule},
-  {(bigint) icode___icode_builder___ICodeBuilder___iroutine},
-  {(bigint) icode___icode_builder___ICodeBuilder___seq},
-  {(bigint) icode___icode_builder___ICodeBuilder___seq__eq},
-  {(bigint) icode___icode_builder___ICodeBuilder___init},
-  {(bigint) icode___icode_builder___ICodeBuilder___current_location},
-  {(bigint) icode___icode_builder___ICodeBuilder___current_location__eq},
-  {(bigint) 2 /* 71: A2IContext < A2IContext: superclass init_table position */},
-  {(bigint) icode___icode_builder___ICodeBuilder___stmt},
-  {(bigint) syntax___icode_generation___A2IContext___add_new_array},
-  {(bigint) syntax___icode_generation___A2IContext___add_call_array_add},
-  {(bigint) syntax___icode_generation___A2IContext___variable},
-  {(bigint) syntax___icode_generation___A2IContext___closurevariables},
-  {(bigint) syntax___icode_generation___A2IContext___visitor},
-  {(bigint) syntax___icode_generation___A2IContext___return_seq},
-  {(bigint) syntax___icode_generation___A2IContext___return_seq__eq},
-  {(bigint) syntax___icode_generation___A2IContext___return_value},
-  {(bigint) syntax___icode_generation___A2IContext___return_value__eq},
-  {(bigint) syntax___icode_generation___A2IContext___method},
-  {(bigint) syntax___icode_generation___A2IContext___selfreg},
-  {(bigint) syntax___icode_generation___A2IContext___selfreg__eq},
-  {(bigint) syntax___icode_generation___A2IContext___init},
-  {(bigint) syntax___icode_generation___A2IContext___invoke_super_init_calls_after},
-  {(bigint) syntax___icode_generation___A2IContext___generate_stmt},
-  {(bigint) syntax___icode_generation___A2IContext___generate_expr},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 50: ClassBuilderVisitor < Visitor: superclass init_table position */},
+  {(bigint) syntax___mmbuilder___ClassBuilderVisitor___visit},
+  {(bigint) parser___parser_prod___Visitor___enter_visit},
+  {(bigint) parser___parser_prod___Visitor___current_node},
+  {(bigint) parser___parser_prod___Visitor___init},
+  {(bigint) 0 /* 55: ClassBuilderVisitor < AbsSyntaxVisitor: superclass init_table position */},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_type_by_name},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_instantiated_type_by_name},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_object},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_bool},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_int},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_float},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_char},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_string},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_nativestring},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_array},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_discrete},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_range},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_none},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_method},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___mmmodule},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___local_class},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___local_class__eq},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___local_property},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___local_property__eq},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___tc},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___error},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___fatal_error},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___warning},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_expr},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_multiexpr},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___init},
+  {(bigint) 3 /* 84: ClassBuilderVisitor < ClassBuilderVisitor: superclass init_table position */},
+  {(bigint) syntax___mmbuilder___ClassBuilderVisitor___local_class_arity},
+  {(bigint) syntax___mmbuilder___ClassBuilderVisitor___local_class_arity__eq},
+  {(bigint) syntax___mmbuilder___ClassBuilderVisitor___formals},
+  {(bigint) syntax___mmbuilder___ClassBuilderVisitor___formals__eq},
+  {(bigint) syntax___mmbuilder___ClassBuilderVisitor___init},
 };
 /* 0: Pointer to the classtable */
 /* 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::@selfreg */
-/* 13: Attribute A2IContext::_current_node */
-void INIT_ATTRIBUTES__syntax___icode_generation___A2IContext(val_t p0){
+/* 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 */
+static const char LOCATE_INIT_ATTRIBUTES__syntax___mmbuilder___ClassBuilderVisitor[] = "init var of ClassBuilderVisitor";
+void INIT_ATTRIBUTES__syntax___mmbuilder___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__syntax___icode_generation___A2IContext;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___mmbuilder___ClassBuilderVisitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   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_standard___collection___hash_collection___HashMap___init();
-  ATTR_syntax___icode_generation___A2IContext____variables(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//icode_generation.nit:71 */
-  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
-  ATTR_syntax___icode_generation___A2IContext____closurevariables(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//icode_generation.nit:140 */
+  /* parser/parser_prod.nit:66 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_syntax___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___icode_builder___ICodeBuilder____current_location(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_prod___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/mmbuilder.nit:353 */
+  REGB0 = TAG_Int(0);
+  ATTR_syntax___mmbuilder___ClassBuilderVisitor____local_class_arity(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_syntax___icode_generation___A2IContext(void)
+val_t NEW_syntax___mmbuilder___ClassBuilderVisitor(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 14);
-  obj->vft = (classtable_elt_t*)VFT_syntax___icode_generation___A2IContext;
+  obj = alloc(sizeof(val_t) * 9);
+  obj->vft = (classtable_elt_t*)VFT_syntax___mmbuilder___ClassBuilderVisitor;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_syntax___icode_generation___A2IContext(val_t p0){
+static const char LOCATE_CHECKNEW_syntax___mmbuilder___ClassBuilderVisitor[] = "check new ClassBuilderVisitor";
+void CHECKNEW_syntax___mmbuilder___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_syntax___icode_generation___A2IContext;
+  fra.me.meth = LOCATE_CHECKNEW_syntax___mmbuilder___ClassBuilderVisitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___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_syntax___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_syntax___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___icode_builder___ICodeBuilder____mmmodule(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___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_icode___icode_builder___ICodeBuilder____iroutine(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___syntax_base___AbsSyntaxVisitor____tc(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_iroutine", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_tc", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_icode___icode_builder___ICodeBuilder____seq(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___mmbuilder___ClassBuilderVisitor____local_class_arity(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_seq", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_local_class_arity", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_A2IContext_syntax___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;
+static const char LOCATE_NEW_ClassBuilderVisitor_syntax___mmbuilder___ClassBuilderVisitor___init[] = "new ClassBuilderVisitor mmbuilder::ClassBuilderVisitor::init";
+val_t NEW_ClassBuilderVisitor_syntax___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[3] = {0, 0, 0};
+  int init_table[4] = {0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 88;
-  fra.me.meth = LOCATE_NEW_A2IContext_syntax___icode_generation___A2IContext___init;
+  fra.me.line = 359;
+  fra.me.meth = LOCATE_NEW_ClassBuilderVisitor_syntax___mmbuilder___ClassBuilderVisitor___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   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:88 */
-  fra.me.REG[3] = NEW_syntax___icode_generation___A2IContext();
-  INIT_ATTRIBUTES__syntax___icode_generation___A2IContext(fra.me.REG[3]);
-  syntax___icode_generation___A2IContext___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
-  CHECKNEW_syntax___icode_generation___A2IContext(fra.me.REG[3]);
+  /* syntax/mmbuilder.nit:359 */
+  fra.me.REG[2] = NEW_syntax___mmbuilder___ClassBuilderVisitor();
+  INIT_ATTRIBUTES__syntax___mmbuilder___ClassBuilderVisitor(fra.me.REG[2]);
+  syntax___mmbuilder___ClassBuilderVisitor___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_syntax___mmbuilder___ClassBuilderVisitor(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[3];
+  return fra.me.REG[2];
 }
-const classtable_elt_t VFT_syntax___icode_generation___A2IVisitor[85] = {
-  {(bigint) 3143 /* 0: Identity */},
-  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "A2IVisitor" /* 2: Class Name */},
-  {(bigint) 3 /* 3: A2IVisitor < Object: superclass typecheck marker */},
-  {(bigint) 15 /* 4: A2IVisitor < Visitor: superclass typecheck marker */},
-  {(bigint) 2371 /* 5: A2IVisitor < AbsSyntaxVisitor: superclass typecheck marker */},
-  {(bigint) 3143 /* 6: A2IVisitor < A2IVisitor: superclass typecheck marker */},
+const classtable_elt_t VFT_syntax___mmbuilder___ClassSpecializationBuilderVisitor[86] = {
+  {(bigint) 3687 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ClassSpecializationBuilderVisitor" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ClassSpecializationBuilderVisitor < Object: superclass typecheck marker */},
+  {(bigint) 15 /* 4: ClassSpecializationBuilderVisitor < Visitor: superclass typecheck marker */},
+  {(bigint) 3319 /* 5: ClassSpecializationBuilderVisitor < AbsSyntaxVisitor: superclass typecheck marker */},
+  {(bigint) 3687 /* 6: ClassSpecializationBuilderVisitor < ClassSpecializationBuilderVisitor: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -151210,7 +181390,7 @@ const classtable_elt_t VFT_syntax___icode_generation___A2IVisitor[85] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: A2IVisitor < Object: superclass init_table position */},
+  {(bigint) 2 /* 19: ClassSpecializationBuilderVisitor < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -151226,6 +181406,8 @@ const classtable_elt_t VFT_syntax___icode_generation___A2IVisitor[85] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -151239,12 +181421,12 @@ const classtable_elt_t VFT_syntax___icode_generation___A2IVisitor[85] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: A2IVisitor < Visitor: superclass init_table position */},
-  {(bigint) syntax___icode_generation___A2IVisitor___visit},
+  {(bigint) 1 /* 50: ClassSpecializationBuilderVisitor < Visitor: superclass init_table position */},
+  {(bigint) syntax___mmbuilder___ClassSpecializationBuilderVisitor___visit},
   {(bigint) parser___parser_prod___Visitor___enter_visit},
   {(bigint) parser___parser_prod___Visitor___current_node},
   {(bigint) parser___parser_prod___Visitor___init},
-  {(bigint) 2 /* 52: A2IVisitor < AbsSyntaxVisitor: superclass init_table position */},
+  {(bigint) 0 /* 55: ClassSpecializationBuilderVisitor < AbsSyntaxVisitor: superclass init_table position */},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_type_by_name},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_instantiated_type_by_name},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_object},
@@ -151273,55 +181455,56 @@ const classtable_elt_t VFT_syntax___icode_generation___A2IVisitor[85] = {
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_multiexpr},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___init},
-  {(bigint) 3 /* 81: A2IVisitor < A2IVisitor: superclass init_table position */},
-  {(bigint) syntax___icode_generation___A2IVisitor___icode_ctx__eq},
-  {(bigint) syntax___icode_generation___A2IVisitor___icode_ctx},
-  {(bigint) syntax___icode_generation___A2IVisitor___init},
+  {(bigint) 3 /* 84: ClassSpecializationBuilderVisitor < ClassSpecializationBuilderVisitor: superclass init_table position */},
+  {(bigint) syntax___mmbuilder___ClassSpecializationBuilderVisitor___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__syntax___icode_generation___A2IVisitor(val_t p0){
+/* 2: Attribute ClassSpecializationBuilderVisitor::_current_node */
+/* 3: Attribute ClassSpecializationBuilderVisitor::_mmmodule */
+/* 4: Attribute ClassSpecializationBuilderVisitor::_local_class */
+/* 5: Attribute ClassSpecializationBuilderVisitor::_local_property */
+/* 6: Attribute ClassSpecializationBuilderVisitor::_tc */
+static const char LOCATE_INIT_ATTRIBUTES__syntax___mmbuilder___ClassSpecializationBuilderVisitor[] = "init var of ClassSpecializationBuilderVisitor";
+void INIT_ATTRIBUTES__syntax___mmbuilder___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__syntax___icode_generation___A2IVisitor;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___mmbuilder___ClassSpecializationBuilderVisitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./parser//parser_prod.nit:66 */
+  /* parser/parser_prod.nit:66 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___parser_prod___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_syntax___icode_generation___A2IVisitor(void)
+val_t NEW_syntax___mmbuilder___ClassSpecializationBuilderVisitor(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 8);
-  obj->vft = (classtable_elt_t*)VFT_syntax___icode_generation___A2IVisitor;
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_syntax___mmbuilder___ClassSpecializationBuilderVisitor;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_syntax___icode_generation___A2IVisitor(val_t p0){
+static const char LOCATE_CHECKNEW_syntax___mmbuilder___ClassSpecializationBuilderVisitor[] = "check new ClassSpecializationBuilderVisitor";
+void CHECKNEW_syntax___mmbuilder___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_syntax___icode_generation___A2IVisitor;
+  fra.me.meth = LOCATE_CHECKNEW_syntax___mmbuilder___ClassSpecializationBuilderVisitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_syntax___syntax_base___AbsSyntaxVisitor____mmmodule(fra.me.REG[0])!=NIT_NULL);
@@ -151336,36 +181519,39 @@ void CHECKNEW_syntax___icode_generation___A2IVisitor(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_A2IVisitor_syntax___icode_generation___A2IVisitor___init(val_t p0, val_t p1){
+static const char LOCATE_NEW_ClassSpecializationBuilderVisitor_syntax___mmbuilder___ClassSpecializationBuilderVisitor___init[] = "new ClassSpecializationBuilderVisitor mmbuilder::ClassSpecializationBuilderVisitor::init";
+val_t NEW_ClassSpecializationBuilderVisitor_syntax___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 = 289;
-  fra.me.meth = LOCATE_NEW_A2IVisitor_syntax___icode_generation___A2IVisitor___init;
+  fra.me.line = 367;
+  fra.me.meth = LOCATE_NEW_ClassSpecializationBuilderVisitor_syntax___mmbuilder___ClassSpecializationBuilderVisitor___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   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:289 */
-  fra.me.REG[2] = NEW_syntax___icode_generation___A2IVisitor();
-  INIT_ATTRIBUTES__syntax___icode_generation___A2IVisitor(fra.me.REG[2]);
-  syntax___icode_generation___A2IVisitor___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_syntax___icode_generation___A2IVisitor(fra.me.REG[2]);
+  /* syntax/mmbuilder.nit:367 */
+  fra.me.REG[2] = NEW_syntax___mmbuilder___ClassSpecializationBuilderVisitor();
+  INIT_ATTRIBUTES__syntax___mmbuilder___ClassSpecializationBuilderVisitor(fra.me.REG[2]);
+  syntax___mmbuilder___ClassSpecializationBuilderVisitor___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_syntax___mmbuilder___ClassSpecializationBuilderVisitor(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_syntax___SrcModuleLoader[60] = {
-  {(bigint) 347 /* 0: Identity */},
-  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "SrcModuleLoader" /* 2: Class Name */},
-  {(bigint) 3 /* 3: SrcModuleLoader < Object: superclass typecheck marker */},
-  {(bigint) 127 /* 4: SrcModuleLoader < ModuleLoader: superclass typecheck marker */},
-  {(bigint) 347 /* 5: SrcModuleLoader < SrcModuleLoader: superclass typecheck marker */},
+const classtable_elt_t VFT_syntax___mmbuilder___ClassAncestorBuilder[86] = {
+  {(bigint) 3695 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ClassAncestorBuilder" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ClassAncestorBuilder < Object: superclass typecheck marker */},
+  {(bigint) 15 /* 4: ClassAncestorBuilder < Visitor: superclass typecheck marker */},
+  {(bigint) 3319 /* 5: ClassAncestorBuilder < AbsSyntaxVisitor: superclass typecheck marker */},
+  {(bigint) 3695 /* 6: ClassAncestorBuilder < ClassAncestorBuilder: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -151378,7 +181564,7 @@ const classtable_elt_t VFT_syntax___SrcModuleLoader[60] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: SrcModuleLoader < Object: superclass init_table position */},
+  {(bigint) 2 /* 19: ClassAncestorBuilder < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -151394,6 +181580,8 @@ const classtable_elt_t VFT_syntax___SrcModuleLoader[60] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -151407,80 +181595,138 @@ const classtable_elt_t VFT_syntax___SrcModuleLoader[60] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: SrcModuleLoader < ModuleLoader: superclass init_table position */},
-  {(bigint) 2159 /* 48: VT SrcModuleLoader::MODULE : id of MMSrcModule */},
-  {(bigint) 5 /* 49: VT SrcModuleLoader::MODULE : color of MMSrcModule */},
-  {(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 /* 58: SrcModuleLoader < SrcModuleLoader: superclass init_table position */},
-  {(bigint) syntax___SrcModuleLoader___init},
+  {(bigint) 1 /* 50: ClassAncestorBuilder < Visitor: superclass init_table position */},
+  {(bigint) syntax___mmbuilder___ClassAncestorBuilder___visit},
+  {(bigint) parser___parser_prod___Visitor___enter_visit},
+  {(bigint) parser___parser_prod___Visitor___current_node},
+  {(bigint) parser___parser_prod___Visitor___init},
+  {(bigint) 0 /* 55: ClassAncestorBuilder < AbsSyntaxVisitor: superclass init_table position */},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_type_by_name},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_instantiated_type_by_name},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_object},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_bool},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_int},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_float},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_char},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_string},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_nativestring},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_array},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_discrete},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_range},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_none},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_method},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___mmmodule},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___local_class},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___local_class__eq},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___local_property},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___local_property__eq},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___tc},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___error},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___fatal_error},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___warning},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_expr},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_multiexpr},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___init},
+  {(bigint) 3 /* 84: ClassAncestorBuilder < ClassAncestorBuilder: superclass init_table position */},
+  {(bigint) syntax___mmbuilder___ClassAncestorBuilder___init},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-void INIT_ATTRIBUTES__syntax___SrcModuleLoader(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute ClassAncestorBuilder::_current_node */
+/* 3: Attribute ClassAncestorBuilder::_mmmodule */
+/* 4: Attribute ClassAncestorBuilder::_local_class */
+/* 5: Attribute ClassAncestorBuilder::_local_property */
+/* 6: Attribute ClassAncestorBuilder::_tc */
+static const char LOCATE_INIT_ATTRIBUTES__syntax___mmbuilder___ClassAncestorBuilder[] = "init var of ClassAncestorBuilder";
+void INIT_ATTRIBUTES__syntax___mmbuilder___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__syntax___SrcModuleLoader;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___mmbuilder___ClassAncestorBuilder;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  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___parser_prod___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_syntax___SrcModuleLoader(void)
+val_t NEW_syntax___mmbuilder___ClassAncestorBuilder(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 2);
-  obj->vft = (classtable_elt_t*)VFT_syntax___SrcModuleLoader;
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_syntax___mmbuilder___ClassAncestorBuilder;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_syntax___SrcModuleLoader(val_t p0){
+static const char LOCATE_CHECKNEW_syntax___mmbuilder___ClassAncestorBuilder[] = "check new ClassAncestorBuilder";
+void CHECKNEW_syntax___mmbuilder___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_syntax___SrcModuleLoader;
+  fra.me.meth = LOCATE_CHECKNEW_syntax___mmbuilder___ClassAncestorBuilder;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_syntax___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___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_SrcModuleLoader_syntax___SrcModuleLoader___init(void){
-  struct {struct stack_frame_t me;} fra;
+static const char LOCATE_NEW_ClassAncestorBuilder_syntax___mmbuilder___ClassAncestorBuilder___init[] = "new ClassAncestorBuilder mmbuilder::ClassAncestorBuilder::init";
+val_t NEW_ClassAncestorBuilder_syntax___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[3] = {0, 0, 0};
+  int init_table[4] = {0, 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_SrcModuleLoader_syntax___SrcModuleLoader___init;
+  fra.me.line = 375;
+  fra.me.meth = LOCATE_NEW_ClassAncestorBuilder_syntax___mmbuilder___ClassAncestorBuilder___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./syntax//syntax.nit:68 */
-  fra.me.REG[0] = NEW_syntax___SrcModuleLoader();
-  INIT_ATTRIBUTES__syntax___SrcModuleLoader(fra.me.REG[0]);
-  syntax___SrcModuleLoader___init(fra.me.REG[0], init_table);
-  CHECKNEW_syntax___SrcModuleLoader(fra.me.REG[0]);
+  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:375 */
+  fra.me.REG[2] = NEW_syntax___mmbuilder___ClassAncestorBuilder();
+  INIT_ATTRIBUTES__syntax___mmbuilder___ClassAncestorBuilder(fra.me.REG[2]);
+  syntax___mmbuilder___ClassAncestorBuilder___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_syntax___mmbuilder___ClassAncestorBuilder(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[2];
 }
-const classtable_elt_t VFT_abstracttool___AbstractCompiler[140] = {
-  {(bigint) 3035 /* 0: Identity */},
-  {(bigint) 52 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AbstractCompiler" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AbstractCompiler < Object: superclass typecheck marker */},
-  {(bigint) 187 /* 4: AbstractCompiler < MMContext: superclass typecheck marker */},
-  {(bigint) 327 /* 5: AbstractCompiler < ToolContext: superclass typecheck marker */},
-  {(bigint) 3035 /* 6: AbstractCompiler < AbstractCompiler: superclass typecheck marker */},
+const classtable_elt_t VFT_syntax___mmbuilder___ClassVerifierVisitor[86] = {
+  {(bigint) 3683 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ClassVerifierVisitor" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ClassVerifierVisitor < Object: superclass typecheck marker */},
+  {(bigint) 15 /* 4: ClassVerifierVisitor < Visitor: superclass typecheck marker */},
+  {(bigint) 3319 /* 5: ClassVerifierVisitor < AbsSyntaxVisitor: superclass typecheck marker */},
+  {(bigint) 3683 /* 6: ClassVerifierVisitor < ClassVerifierVisitor: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -151492,7 +181738,7 @@ const classtable_elt_t VFT_abstracttool___AbstractCompiler[140] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: AbstractCompiler < Object: superclass init_table position */},
+  {(bigint) 2 /* 19: ClassVerifierVisitor < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -151508,6 +181754,8 @@ const classtable_elt_t VFT_abstracttool___AbstractCompiler[140] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -151521,965 +181769,137 @@ const classtable_elt_t VFT_abstracttool___AbstractCompiler[140] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) syntax___mmbuilder___ToolContext___handle_property_conflict},
-  {(bigint) 1 /* 48: AbstractCompiler < MMContext: superclass init_table position */},
-  {(bigint) metamodel___abstractmetamodel___MMContext___init},
-  {(bigint) metamodel___abstractmetamodel___MMContext___module_hierarchy},
-  {(bigint) metamodel___abstractmetamodel___MMContext___class_hierarchy},
-  {(bigint) metamodel___abstractmetamodel___MMContext___modules},
-  {(bigint) metamodel___abstractmetamodel___MMContext___add_module},
-  {(bigint) metamodel___abstractmetamodel___MMContext___add_global_class},
-  {(bigint) metamodel___abstractmetamodel___MMContext___add_local_class},
-  {(bigint) separate_options___ToolContext___separate_options},
-  {(bigint) separate_options___ToolContext___separate_options__eq},
-  {(bigint) separate_options___ToolContext___opt_cc_lib_paths},
-  {(bigint) separate_options___ToolContext___opt_cc_lib_paths__eq},
-  {(bigint) separate_options___ToolContext___opt_cc_libs},
-  {(bigint) separate_options___ToolContext___opt_cc_libs__eq},
-  {(bigint) separate_options___ToolContext___opt_cc_include_paths},
-  {(bigint) separate_options___ToolContext___opt_cc_include_paths__eq},
-  {(bigint) mmloader___ToolContext___init},
-  {(bigint) separate_options___ToolContext___integrate_separate_options},
-  {(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 /* 78: 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___opt_stop_on_first_error},
-  {(bigint) mmloader___ToolContext___opt_no_color},
-  {(bigint) mmloader___ToolContext___verbose_level},
-  {(bigint) separate_options___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___compiling_base___ToolContext___compdir},
-  {(bigint) compiling___compiling_base___ToolContext___compdir__eq},
-  {(bigint) compiling___compiling_base___ToolContext___clibdir},
-  {(bigint) compiling___compiling_base___ToolContext___clibdir__eq},
-  {(bigint) compiling___compiling_base___ToolContext___bindir},
-  {(bigint) compiling___compiling_base___ToolContext___bindir__eq},
-  {(bigint) compiling___compiling_base___ToolContext___output_file},
-  {(bigint) compiling___compiling_base___ToolContext___output_file__eq},
-  {(bigint) compiling___compiling_base___ToolContext___boost},
-  {(bigint) compiling___compiling_base___ToolContext___boost__eq},
-  {(bigint) compiling___compiling_base___ToolContext___no_cc},
-  {(bigint) compiling___compiling_base___ToolContext___no_cc__eq},
-  {(bigint) compiling___compiling_base___ToolContext___cc_link},
-  {(bigint) compiling___compiling_base___ToolContext___cc_link__eq},
-  {(bigint) compiling___compiling_base___ToolContext___cc_libs},
-  {(bigint) compiling___compiling_base___ToolContext___cc_libs__eq},
-  {(bigint) compiling___compiling_base___ToolContext___cc_lib_paths},
-  {(bigint) compiling___compiling_base___ToolContext___cc_lib_paths__eq},
-  {(bigint) compiling___compiling_base___ToolContext___cc_include_paths},
-  {(bigint) compiling___compiling_base___ToolContext___cc_include_paths__eq},
-  {(bigint) compiling___compiling_base___ToolContext___ext_prefix},
-  {(bigint) compiling___compiling_base___ToolContext___ext_prefix__eq},
-  {(bigint) 3 /* 134: 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},
+  {(bigint) 1 /* 50: ClassVerifierVisitor < Visitor: superclass init_table position */},
+  {(bigint) syntax___mmbuilder___ClassVerifierVisitor___visit},
+  {(bigint) parser___parser_prod___Visitor___enter_visit},
+  {(bigint) parser___parser_prod___Visitor___current_node},
+  {(bigint) parser___parser_prod___Visitor___init},
+  {(bigint) 0 /* 55: ClassVerifierVisitor < AbsSyntaxVisitor: superclass init_table position */},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_type_by_name},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_instantiated_type_by_name},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_object},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_bool},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_int},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_float},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_char},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_string},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_nativestring},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_array},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_discrete},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_range},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_none},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_method},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___mmmodule},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___local_class},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___local_class__eq},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___local_property},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___local_property__eq},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___tc},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___error},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___fatal_error},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___warning},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_expr},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_multiexpr},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___init},
+  {(bigint) 3 /* 84: ClassVerifierVisitor < ClassVerifierVisitor: superclass init_table position */},
+  {(bigint) syntax___mmbuilder___ClassVerifierVisitor___init},
 };
 /* 0: Pointer to the classtable */
 /* 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::@separate_options */
-/* 7: Attribute AbstractCompiler::@opt_cc_lib_paths */
-/* 8: Attribute AbstractCompiler::@opt_cc_libs */
-/* 9: Attribute AbstractCompiler::@opt_cc_include_paths */
-/* 10: Attribute AbstractCompiler::_global_callgraph */
-/* 11: Attribute AbstractCompiler::_no_dead_method_removal */
-/* 12: Attribute AbstractCompiler::_no_inline_get_set */
-/* 13: Attribute AbstractCompiler::_no_callgraph_from_init */
-/* 14: Attribute AbstractCompiler::_no_out_of_init_get_test_removal */
-/* 15: Attribute AbstractCompiler::_keep_ast */
-/* 16: Attribute AbstractCompiler::_error_count */
-/* 17: Attribute AbstractCompiler::_warning_count */
-/* 18: Attribute AbstractCompiler::_log_directory */
-/* 19: Attribute AbstractCompiler::_messages */
-/* 20: Attribute AbstractCompiler::_message_sorter */
-/* 21: Attribute AbstractCompiler::_paths */
-/* 22: Attribute AbstractCompiler::_loaders */
-/* 23: Attribute AbstractCompiler::_option_context */
-/* 24: Attribute AbstractCompiler::_opt_warn */
-/* 25: Attribute AbstractCompiler::_opt_path */
-/* 26: Attribute AbstractCompiler::_opt_log */
-/* 27: Attribute AbstractCompiler::_opt_log_dir */
-/* 28: Attribute AbstractCompiler::_opt_only_metamodel */
-/* 29: Attribute AbstractCompiler::_opt_only_parse */
-/* 30: Attribute AbstractCompiler::_opt_help */
-/* 31: Attribute AbstractCompiler::_opt_version */
-/* 32: Attribute AbstractCompiler::_opt_verbose */
-/* 33: Attribute AbstractCompiler::_opt_stop_on_first_error */
-/* 34: Attribute AbstractCompiler::_opt_no_color */
-/* 35: Attribute AbstractCompiler::_verbose_level */
-/* 36: Attribute AbstractCompiler::_processing_modules */
-/* 37: Attribute AbstractCompiler::_path_dirs */
-/* 38: Attribute AbstractCompiler::_global */
-/* 39: Attribute AbstractCompiler::_use_SFT_optimization */
-/* 40: Attribute AbstractCompiler::_compdir */
-/* 41: Attribute AbstractCompiler::_clibdir */
-/* 42: Attribute AbstractCompiler::_bindir */
-/* 43: Attribute AbstractCompiler::_output_file */
-/* 44: Attribute AbstractCompiler::_boost */
-/* 45: Attribute AbstractCompiler::_no_cc */
-/* 46: Attribute AbstractCompiler::_cc_link */
-/* 47: Attribute AbstractCompiler::_cc_libs */
-/* 48: Attribute AbstractCompiler::_cc_lib_paths */
-/* 49: Attribute AbstractCompiler::_cc_include_paths */
-/* 50: Attribute AbstractCompiler::_ext_prefix */
-/* 51: Attribute AbstractCompiler::_tool_name */
-void INIT_ATTRIBUTES__abstracttool___AbstractCompiler(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
-  val_t REGB0;
+/* 2: Attribute ClassVerifierVisitor::_current_node */
+/* 3: Attribute ClassVerifierVisitor::_mmmodule */
+/* 4: Attribute ClassVerifierVisitor::_local_class */
+/* 5: Attribute ClassVerifierVisitor::_local_property */
+/* 6: Attribute ClassVerifierVisitor::_tc */
+static const char LOCATE_INIT_ATTRIBUTES__syntax___mmbuilder___ClassVerifierVisitor[] = "init var of ClassVerifierVisitor";
+void INIT_ATTRIBUTES__syntax___mmbuilder___ClassVerifierVisitor(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   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 */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__abstracttool___AbstractCompiler;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___mmbuilder___ClassVerifierVisitor;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   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:98 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___ToolContext____keep_ast(fra.me.REG[0]) = REGB0;
-  /* ./mmloader.nit:98 */
-  REGB0 = TAG_Int(0);
-  ATTR_mmloader___ToolContext____error_count(fra.me.REG[0]) = REGB0;
-  /* ./mmloader.nit:101 */
-  REGB0 = TAG_Int(0);
-  ATTR_mmloader___ToolContext____warning_count(fra.me.REG[0]) = REGB0;
-  /* ./mmloader.nit:104 */
-  if (!once_value_1) {
-    fra.me.REG[1] = BOX_NativeString("logs");
-    REGB0 = TAG_Int(4);
-    fra.me.REG[1] = NEW_String_standard___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:107 */
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-  ATTR_mmloader___ToolContext____messages(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./mmloader.nit:108 */
-  fra.me.REG[1] = NEW_ComparableSorter_standard___collection___sorter___ComparableSorter___init();
-  ATTR_mmloader___ToolContext____message_sorter(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./mmloader.nit:166 */
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-  ATTR_mmloader___ToolContext____paths(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./mmloader.nit:169 */
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-  ATTR_mmloader___ToolContext____loaders(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./mmloader.nit:172 */
-  fra.me.REG[1] = NEW_OptionContext_opts___OptionContext___init();
-  ATTR_mmloader___ToolContext____option_context(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./mmloader.nit:175 */
-  if (!once_value_2) {
-    fra.me.REG[1] = BOX_NativeString("Show warnings");
-    REGB0 = TAG_Int(13);
-    fra.me.REG[1] = NEW_String_standard___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_standard___collection___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_standard___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_standard___collection___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_standard___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_standard___collection___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:178 */
-  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_standard___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_standard___collection___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_standard___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_standard___collection___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_standard___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_standard___collection___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:181 */
-  if (!once_value_8) {
-    fra.me.REG[1] = BOX_NativeString("Generate various log files");
-    REGB0 = TAG_Int(26);
-    fra.me.REG[1] = NEW_String_standard___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_standard___collection___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_standard___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_standard___collection___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:184 */
-  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_standard___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_standard___collection___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_standard___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_standard___collection___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:187 */
-  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_standard___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_standard___collection___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_standard___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_standard___collection___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:190 */
-  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_standard___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_standard___collection___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_standard___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_standard___collection___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:193 */
-  if (!once_value_16) {
-    fra.me.REG[1] = BOX_NativeString("Show Help (This screen)");
-    REGB0 = TAG_Int(23);
-    fra.me.REG[1] = NEW_String_standard___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_standard___collection___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_standard___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_standard___collection___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_standard___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_standard___collection___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_standard___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_standard___collection___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:196 */
-  if (!once_value_20) {
-    fra.me.REG[2] = BOX_NativeString("Show version and exit");
-    REGB0 = TAG_Int(21);
-    fra.me.REG[2] = NEW_String_standard___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_standard___collection___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_standard___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_standard___collection___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:199 */
-  if (!once_value_22) {
-    fra.me.REG[1] = BOX_NativeString("Verbose");
-    REGB0 = TAG_Int(7);
-    fra.me.REG[1] = NEW_String_standard___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_standard___collection___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_standard___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_standard___collection___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_standard___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_standard___collection___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:202 */
-  if (!once_value_25) {
-    fra.me.REG[2] = BOX_NativeString("Stop on first error");
-    REGB0 = TAG_Int(19);
-    fra.me.REG[2] = NEW_String_standard___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_standard___collection___array___Array___with_capacity(REGB0);
-  if (!once_value_26) {
-    fra.me.REG[3] = BOX_NativeString("--stop-on-first-error");
-    REGB0 = TAG_Int(21);
-    fra.me.REG[3] = NEW_String_standard___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_standard___collection___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_stop_on_first_error(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./mmloader.nit:205 */
-  if (!once_value_27) {
-    fra.me.REG[1] = BOX_NativeString("Do not use color to display errors and warnings");
-    REGB0 = TAG_Int(47);
-    fra.me.REG[1] = NEW_String_standard___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_standard___collection___array___Array___with_capacity(REGB0);
-  if (!once_value_28) {
-    fra.me.REG[3] = BOX_NativeString("--no-color");
-    REGB0 = TAG_Int(10);
-    fra.me.REG[3] = NEW_String_standard___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_standard___collection___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_no_color(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./mmloader.nit:208 */
-  REGB0 = TAG_Int(0);
-  ATTR_mmloader___ToolContext____verbose_level(fra.me.REG[0]) = REGB0;
-  /* ./mmloader.nit:291 */
-  fra.me.REG[2] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
-  ATTR_mmloader___ToolContext____processing_modules(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./mmloader.nit:358 */
-  fra.me.REG[2] = NEW_HashMap_standard___collection___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_metamodel___partial_order___PartialOrder___init();
-  ATTR_metamodel___abstractmetamodel___MMContext____module_hierarchy(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./metamodel//abstractmetamodel.nit:34 */
-  fra.me.REG[2] = NEW_PartialOrder_metamodel___partial_order___PartialOrder___init();
-  ATTR_metamodel___abstractmetamodel___MMContext____class_hierarchy(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./metamodel//abstractmetamodel.nit:37 */
-  fra.me.REG[2] = NEW_Array_standard___collection___array___Array___init();
-  ATTR_metamodel___abstractmetamodel___MMContext____global_classes(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./metamodel//abstractmetamodel.nit:40 */
-  fra.me.REG[2] = NEW_Array_standard___collection___array___Array___init();
-  ATTR_metamodel___abstractmetamodel___MMContext____modules(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./separate_options.nit:11 */
-  fra.me.REG[2] = NEW_OptionContext_opts___OptionContext___init();
-  ATTR_separate_options___ToolContext_____atseparate_options(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./separate_options.nit:12 */
-  if (!once_value_29) {
-    fra.me.REG[2] = BOX_NativeString("Path to libraries for C compiler");
-    REGB0 = TAG_Int(32);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
-    once_value_29 = fra.me.REG[2];
-    register_static_object(&once_value_29);
-  } else fra.me.REG[2] = once_value_29;
-  fra.me.REG[2] = fra.me.REG[2];
-  REGB0 = TAG_Int(0);
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
-  if (!once_value_30) {
-    fra.me.REG[3] = BOX_NativeString("--cc-lib-path");
-    REGB0 = TAG_Int(13);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
-    once_value_30 = fra.me.REG[3];
-    register_static_object(&once_value_30);
-  } else fra.me.REG[3] = once_value_30;
-  fra.me.REG[3] = fra.me.REG[3];
-  CALL_standard___collection___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_separate_options___ToolContext_____atopt_cc_lib_paths(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./separate_options.nit:13 */
-  if (!once_value_31) {
-    fra.me.REG[1] = BOX_NativeString("Name of library to use for C compiler");
-    REGB0 = TAG_Int(37);
-    fra.me.REG[1] = NEW_String_standard___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];
-  REGB0 = TAG_Int(0);
-  fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
-  if (!once_value_32) {
-    fra.me.REG[3] = BOX_NativeString("--cc-lib-name");
-    REGB0 = TAG_Int(13);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
-    once_value_32 = fra.me.REG[3];
-    register_static_object(&once_value_32);
-  } else fra.me.REG[3] = once_value_32;
-  fra.me.REG[3] = fra.me.REG[3];
-  CALL_standard___collection___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_separate_options___ToolContext_____atopt_cc_libs(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./separate_options.nit:14 */
-  if (!once_value_33) {
-    fra.me.REG[2] = BOX_NativeString("Path to .h files for C compiler");
-    REGB0 = TAG_Int(31);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
-    once_value_33 = fra.me.REG[2];
-    register_static_object(&once_value_33);
-  } else fra.me.REG[2] = once_value_33;
-  fra.me.REG[2] = fra.me.REG[2];
-  REGB0 = TAG_Int(0);
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
-  if (!once_value_34) {
-    fra.me.REG[3] = BOX_NativeString("--cc-header-path");
-    REGB0 = TAG_Int(16);
-    fra.me.REG[3] = NEW_String_standard___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];
-  CALL_standard___collection___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_separate_options___ToolContext_____atopt_cc_include_paths(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./analysis//analysis.nit:48 */
-  if (!once_value_35) {
-    fra.me.REG[1] = BOX_NativeString("rta");
-    REGB0 = TAG_Int(3);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
-    once_value_35 = fra.me.REG[1];
-    register_static_object(&once_value_35);
-  } else fra.me.REG[1] = once_value_35;
-  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 */
+  /* parser/parser_prod.nit:66 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_compiling___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___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___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___compiling_base___ToolContext____output_file(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./compiling//compiling_base.nit:31 */
-  REGB0 = TAG_Bool(false);
-  ATTR_compiling___compiling_base___ToolContext____boost(fra.me.REG[0]) = REGB0;
-  /* ./compiling//compiling_base.nit:32 */
-  REGB0 = TAG_Bool(false);
-  ATTR_compiling___compiling_base___ToolContext____no_cc(fra.me.REG[0]) = REGB0;
-  /* ./compiling//compiling_base.nit:33 */
-  REGB0 = TAG_Bool(false);
-  ATTR_compiling___compiling_base___ToolContext____cc_link(fra.me.REG[0]) = REGB0;
-  /* ./compiling//compiling_base.nit:34 */
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-  ATTR_compiling___compiling_base___ToolContext____cc_libs(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./compiling//compiling_base.nit:35 */
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-  ATTR_compiling___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_standard___collection___array___Array___init();
-  ATTR_compiling___compiling_base___ToolContext____cc_include_paths(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./compiling//compiling_base.nit:37 */
-  if (!once_value_36) {
-    fra.me.REG[1] = BOX_NativeString("");
-    REGB0 = TAG_Int(0);
-    fra.me.REG[1] = NEW_String_standard___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];
-  ATTR_compiling___compiling_base___ToolContext____ext_prefix(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_prod___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_abstracttool___AbstractCompiler(void)
+val_t NEW_syntax___mmbuilder___ClassVerifierVisitor(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 52);
-  obj->vft = (classtable_elt_t*)VFT_abstracttool___AbstractCompiler;
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_syntax___mmbuilder___ClassVerifierVisitor;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_abstracttool___AbstractCompiler(val_t p0){
+static const char LOCATE_CHECKNEW_syntax___mmbuilder___ClassVerifierVisitor[] = "check new ClassVerifierVisitor";
+void CHECKNEW_syntax___mmbuilder___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_abstracttool___AbstractCompiler;
+  fra.me.meth = LOCATE_CHECKNEW_syntax___mmbuilder___ClassVerifierVisitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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____opt_stop_on_first_error(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_opt_stop_on_first_error", LOCATE_nitc, 0);
-  }
-  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____opt_no_color(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_opt_no_color", 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_metamodel___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_metamodel___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_metamodel___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_metamodel___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_separate_options___ToolContext_____atseparate_options(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "@separate_options", LOCATE_nitc, 0);
-  }
-  REGB0 = TAG_Bool(ATTR_separate_options___ToolContext_____atopt_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_separate_options___ToolContext_____atopt_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_separate_options___ToolContext_____atopt_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_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___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___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___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___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___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___compiling_base___ToolContext____cc_include_paths(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___syntax_base___AbsSyntaxVisitor____mmmodule(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_cc_include_paths", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_mmmodule", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_compiling___compiling_base___ToolContext____ext_prefix(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___syntax_base___AbsSyntaxVisitor____tc(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_ext_prefix", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_tc", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AbstractCompiler_abstracttool___AbstractCompiler___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ClassVerifierVisitor_syntax___mmbuilder___ClassVerifierVisitor___init[] = "new ClassVerifierVisitor mmbuilder::ClassVerifierVisitor::init";
+val_t NEW_ClassVerifierVisitor_syntax___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 = 29;
-  fra.me.meth = LOCATE_NEW_AbstractCompiler_abstracttool___AbstractCompiler___init;
+  fra.me.line = 383;
+  fra.me.meth = LOCATE_NEW_ClassVerifierVisitor_syntax___mmbuilder___ClassVerifierVisitor___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./abstracttool.nit:29 */
-  fra.me.REG[1] = NEW_abstracttool___AbstractCompiler();
-  INIT_ATTRIBUTES__abstracttool___AbstractCompiler(fra.me.REG[1]);
-  abstracttool___AbstractCompiler___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_abstracttool___AbstractCompiler(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  /* syntax/mmbuilder.nit:383 */
+  fra.me.REG[2] = NEW_syntax___mmbuilder___ClassVerifierVisitor();
+  INIT_ATTRIBUTES__syntax___mmbuilder___ClassVerifierVisitor(fra.me.REG[2]);
+  syntax___mmbuilder___ClassVerifierVisitor___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_syntax___mmbuilder___ClassVerifierVisitor(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[2];
 }
-const classtable_elt_t VFT_program___Program[104] = {
-  {(bigint) 91 /* 0: Identity */},
-  {(bigint) 17 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "Program" /* 2: Class Name */},
-  {(bigint) 3 /* 3: Program < Object: superclass typecheck marker */},
-  {(bigint) 91 /* 4: Program < Program: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_syntax___mmbuilder___PropertyBuilderVisitor[86] = {
+  {(bigint) 3467 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "PropertyBuilderVisitor" /* 2: Class Name */},
+  {(bigint) 3 /* 3: PropertyBuilderVisitor < Object: superclass typecheck marker */},
+  {(bigint) 15 /* 4: PropertyBuilderVisitor < Visitor: superclass typecheck marker */},
+  {(bigint) 3319 /* 5: PropertyBuilderVisitor < AbsSyntaxVisitor: superclass typecheck marker */},
+  {(bigint) 3467 /* 6: PropertyBuilderVisitor < PropertyBuilderVisitor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -152492,7 +181912,7 @@ const classtable_elt_t VFT_program___Program[104] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: Program < Object: superclass init_table position */},
+  {(bigint) 2 /* 19: PropertyBuilderVisitor < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -152508,6 +181928,8 @@ const classtable_elt_t VFT_program___Program[104] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -152521,241 +181943,137 @@ const classtable_elt_t VFT_program___Program[104] = {
   {(bigint) standard___math___Object___srand},
   {(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) compiling___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) analysis___instantiated_type_analysis___Program___ita},
-  {(bigint) analysis___instantiated_type_analysis___Program___ita__eq},
-  {(bigint) analysis___instantiated_type_analysis___Program___dump_instantiated_types},
-  {(bigint) analysis___instantiated_type_analysis___Program___dump_not_instantiated_types},
-  {(bigint) 1 /* 62: 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) analysis___instantiated_type_analysis___Program___with_each_live_local_classes},
-  {(bigint) program___Program___init},
-  {(bigint) analysis___reachable_as_init___Program___rai},
-  {(bigint) analysis___reachable_as_init___Program___rai__eq},
-  {(bigint) analysis___reachable_as_init___Program___dump_reachable_as_init_methods},
-  {(bigint) analysis___dead_method_removal___Program___nb_removed_iroutines},
-  {(bigint) analysis___dead_method_removal___Program___nb_not_removed_iroutines},
-  {(bigint) analysis___dead_method_removal___Program___optimize_dead_methods},
-  {(bigint) analysis___dead_method_removal___Program___dump_dead_method_optimization},
-  {(bigint) analysis___reachable_method_analysis___Program___rma},
-  {(bigint) analysis___reachable_method_analysis___Program___rma__eq},
-  {(bigint) analysis___reachable_method_analysis___Program___dump_reachable_methods},
-  {(bigint) analysis___reachable_method_analysis___Program___dump_unreachable_methods},
-  {(bigint) analysis___inline_get_and_set___Program___dump_inline_get_set},
-  {(bigint) analysis___inline_get_and_set___Program___inline_get_set},
-  {(bigint) analysis___remove_out_of_init_get_test___Program___nb_optimized_isset},
-  {(bigint) analysis___remove_out_of_init_get_test___Program___optimize_out_of_init_getters},
-  {(bigint) analysis___remove_out_of_init_get_test___Program___dump_out_of_init_information},
-  {(bigint) analysis___reachable_from_init_method_analysis___Program___rfima},
-  {(bigint) analysis___reachable_from_init_method_analysis___Program___rfima__eq},
-  {(bigint) analysis___reachable_from_init_method_analysis___Program___dump_reachable_methods_from_init},
-  {(bigint) analysis___reachable_from_init_method_analysis___Program___dump_unreachable_methods_from_init},
-  {(bigint) compiling___compiling_global___Program___compile_tables_to_c},
-  {(bigint) compiling___compiling_global___Program___compile_main_part},
-  {(bigint) compiling___table_computation___Program___table_information},
-  {(bigint) compiling___table_computation___Program___compiled_classes},
-  {(bigint) compiling___table_computation___Program___do_table_computation},
-  {(bigint) compiling___table_computation___Program___do_global_table_analysis},
-  {(bigint) compiling___table_computation___Program___colorize},
-  {(bigint) compiling___table_computation___Program___free_color},
-  {(bigint) compiling___table_computation___Program___append_to_table},
-  {(bigint) compiling___table_computation___Program___build_tables_in},
+  {(bigint) 1 /* 50: PropertyBuilderVisitor < Visitor: superclass init_table position */},
+  {(bigint) syntax___mmbuilder___PropertyBuilderVisitor___visit},
+  {(bigint) parser___parser_prod___Visitor___enter_visit},
+  {(bigint) parser___parser_prod___Visitor___current_node},
+  {(bigint) parser___parser_prod___Visitor___init},
+  {(bigint) 0 /* 55: PropertyBuilderVisitor < AbsSyntaxVisitor: superclass init_table position */},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_type_by_name},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_instantiated_type_by_name},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_object},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_bool},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_int},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_float},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_char},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_string},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_nativestring},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_array},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_discrete},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_range},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_none},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_method},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___mmmodule},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___local_class},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___local_class__eq},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___local_property},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___local_property__eq},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___tc},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___error},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___fatal_error},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___warning},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_expr},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_multiexpr},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___init},
+  {(bigint) 3 /* 84: PropertyBuilderVisitor < PropertyBuilderVisitor: superclass init_table position */},
+  {(bigint) syntax___mmbuilder___PropertyBuilderVisitor___init},
 };
 /* 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___Program(val_t p0){
+/* 2: Attribute PropertyBuilderVisitor::_current_node */
+/* 3: Attribute PropertyBuilderVisitor::_mmmodule */
+/* 4: Attribute PropertyBuilderVisitor::_local_class */
+/* 5: Attribute PropertyBuilderVisitor::_local_property */
+/* 6: Attribute PropertyBuilderVisitor::_tc */
+static const char LOCATE_INIT_ATTRIBUTES__syntax___mmbuilder___PropertyBuilderVisitor[] = "init var of PropertyBuilderVisitor";
+void INIT_ATTRIBUTES__syntax___mmbuilder___PropertyBuilderVisitor(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___Program;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___mmbuilder___PropertyBuilderVisitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//compiling.nit:29 */
-  if (!once_value_1) {
-    fra.me.REG[1] = BOX_NativeString("none");
-    REGB0 = TAG_Int(4);
-    fra.me.REG[1] = NEW_String_standard___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_analysis___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_analysis___reachable_as_init___Program____rai(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./analysis//dead_method_removal.nit:23 */
-  REGB0 = TAG_Int(0);
-  ATTR_analysis___dead_method_removal___Program____nb_removed_iroutines(fra.me.REG[0]) = REGB0;
-  /* ./analysis//dead_method_removal.nit:24 */
-  REGB0 = TAG_Int(0);
-  ATTR_analysis___dead_method_removal___Program____nb_not_removed_iroutines(fra.me.REG[0]) = REGB0;
-  /* ./analysis//reachable_method_analysis.nit:24 */
+  /* parser/parser_prod.nit:66 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_analysis___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_analysis___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_analysis___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_analysis___reachable_from_init_method_analysis___Program____rfima(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./compiling//table_computation.nit:141 */
-  fra.me.REG[1] = NEW_TableInformation_compiling___table_computation___ColorContext___init();
-  ATTR_compiling___table_computation___Program____table_information(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./compiling//table_computation.nit:144 */
-  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
-  ATTR_compiling___table_computation___Program____compiled_classes(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_prod___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_program___Program(void)
+val_t NEW_syntax___mmbuilder___PropertyBuilderVisitor(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 17);
-  obj->vft = (classtable_elt_t*)VFT_program___Program;
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_syntax___mmbuilder___PropertyBuilderVisitor;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_program___Program(val_t p0){
+static const char LOCATE_CHECKNEW_syntax___mmbuilder___PropertyBuilderVisitor[] = "check new PropertyBuilderVisitor";
+void CHECKNEW_syntax___mmbuilder___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_program___Program;
+  fra.me.meth = LOCATE_CHECKNEW_syntax___mmbuilder___PropertyBuilderVisitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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);
+  REGB0 = TAG_Bool(ATTR_syntax___syntax_base___AbsSyntaxVisitor____mmmodule(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_output_format", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_mmmodule", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_program___Program____tc(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___syntax_base___AbsSyntaxVisitor____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_analysis___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_analysis___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_analysis___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_analysis___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_compiling___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_compiling___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;
 }
-val_t NEW_Program_program___Program___init(val_t p0, val_t p1){
+static const char LOCATE_NEW_PropertyBuilderVisitor_syntax___mmbuilder___PropertyBuilderVisitor___init[] = "new PropertyBuilderVisitor mmbuilder::PropertyBuilderVisitor::init";
+val_t NEW_PropertyBuilderVisitor_syntax___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[2] = {0, 0};
+  int init_table[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_Program_program___Program___init;
+  fra.me.line = 394;
+  fra.me.meth = LOCATE_NEW_PropertyBuilderVisitor_syntax___mmbuilder___PropertyBuilderVisitor___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   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___Program();
-  INIT_ATTRIBUTES__program___Program(fra.me.REG[2]);
-  program___Program___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_program___Program(fra.me.REG[2]);
+  /* syntax/mmbuilder.nit:394 */
+  fra.me.REG[2] = NEW_syntax___mmbuilder___PropertyBuilderVisitor();
+  INIT_ATTRIBUTES__syntax___mmbuilder___PropertyBuilderVisitor(fra.me.REG[2]);
+  syntax___mmbuilder___PropertyBuilderVisitor___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_syntax___mmbuilder___PropertyBuilderVisitor(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_compiling___compiling_writer___Writer[57] = {
-  {(bigint) 11 /* 0: Identity */},
-  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "Writer" /* 2: Class Name */},
-  {(bigint) 3 /* 3: Writer < Object: superclass typecheck marker */},
-  {(bigint) 11 /* 4: Writer < Writer: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_syntax___mmbuilder___PropertyVerifierVisitor[88] = {
+  {(bigint) 3463 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "PropertyVerifierVisitor" /* 2: Class Name */},
+  {(bigint) 3 /* 3: PropertyVerifierVisitor < Object: superclass typecheck marker */},
+  {(bigint) 15 /* 4: PropertyVerifierVisitor < Visitor: superclass typecheck marker */},
+  {(bigint) 3319 /* 5: PropertyVerifierVisitor < AbsSyntaxVisitor: superclass typecheck marker */},
+  {(bigint) 3463 /* 6: PropertyVerifierVisitor < PropertyVerifierVisitor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -152768,7 +182086,7 @@ const classtable_elt_t VFT_compiling___compiling_writer___Writer[57] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: Writer < Object: superclass init_table position */},
+  {(bigint) 2 /* 19: PropertyVerifierVisitor < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -152784,6 +182102,8 @@ const classtable_elt_t VFT_compiling___compiling_writer___Writer[57] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -152797,113 +182117,145 @@ const classtable_elt_t VFT_compiling___compiling_writer___Writer[57] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: Writer < Writer: superclass init_table position */},
-  {(bigint) compiling___compiling_writer___Writer___add},
-  {(bigint) compiling___compiling_writer___Writer___add_all},
-  {(bigint) compiling___compiling_writer___Writer___append},
-  {(bigint) compiling___compiling_writer___Writer___internal_append},
-  {(bigint) compiling___compiling_writer___Writer___sub},
-  {(bigint) compiling___compiling_writer___Writer___write_to_stream},
-  {(bigint) compiling___compiling_writer___Writer___is_frozen},
-  {(bigint) compiling___compiling_writer___Writer___freeze},
-  {(bigint) compiling___compiling_writer___Writer___init},
+  {(bigint) 1 /* 50: PropertyVerifierVisitor < Visitor: superclass init_table position */},
+  {(bigint) syntax___mmbuilder___PropertyVerifierVisitor___visit},
+  {(bigint) parser___parser_prod___Visitor___enter_visit},
+  {(bigint) parser___parser_prod___Visitor___current_node},
+  {(bigint) parser___parser_prod___Visitor___init},
+  {(bigint) 0 /* 55: PropertyVerifierVisitor < AbsSyntaxVisitor: superclass init_table position */},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_type_by_name},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_instantiated_type_by_name},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_object},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_bool},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_int},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_float},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_char},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_string},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_nativestring},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_array},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_discrete},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_range},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___type_none},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___get_method},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___mmmodule},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___local_class},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___local_class__eq},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___local_property},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___local_property__eq},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___tc},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___error},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___fatal_error},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___warning},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_expr},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_multiexpr},
+  {(bigint) syntax___syntax_base___AbsSyntaxVisitor___init},
+  {(bigint) 3 /* 84: PropertyVerifierVisitor < PropertyVerifierVisitor: superclass init_table position */},
+  {(bigint) syntax___mmbuilder___PropertyVerifierVisitor___signature_builder},
+  {(bigint) syntax___mmbuilder___PropertyVerifierVisitor___signature_builder__eq},
+  {(bigint) syntax___mmbuilder___PropertyVerifierVisitor___init},
 };
 /* 0: Pointer to the classtable */
 /* 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__compiling___compiling_writer___Writer(val_t p0){
+/* 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 */
+static const char LOCATE_INIT_ATTRIBUTES__syntax___mmbuilder___PropertyVerifierVisitor[] = "init var of PropertyVerifierVisitor";
+void INIT_ATTRIBUTES__syntax___mmbuilder___PropertyVerifierVisitor(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__compiling___compiling_writer___Writer;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___mmbuilder___PropertyVerifierVisitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   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___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___compiling_writer___Writer____last_sub_writer(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./compiling//compiling_writer.nit:53 */
+  /* parser/parser_prod.nit:66 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_compiling___compiling_writer___Writer____last_string(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./compiling//compiling_writer.nit:82 */
-  REGB0 = TAG_Bool(false);
-  ATTR_compiling___compiling_writer___Writer____is_writing(fra.me.REG[0]) = REGB0;
-  /* ./compiling//compiling_writer.nit:98 */
-  REGB0 = TAG_Bool(false);
-  ATTR_compiling___compiling_writer___Writer____is_frozen(fra.me.REG[0]) = REGB0;
+  ATTR_parser___parser_prod___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_compiling___compiling_writer___Writer(void)
+val_t NEW_syntax___mmbuilder___PropertyVerifierVisitor(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_compiling___compiling_writer___Writer;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_syntax___mmbuilder___PropertyVerifierVisitor;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_compiling___compiling_writer___Writer(val_t p0){
+static const char LOCATE_CHECKNEW_syntax___mmbuilder___PropertyVerifierVisitor[] = "check new PropertyVerifierVisitor";
+void CHECKNEW_syntax___mmbuilder___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_compiling___compiling_writer___Writer;
+  fra.me.meth = LOCATE_CHECKNEW_syntax___mmbuilder___PropertyVerifierVisitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_compiling___compiling_writer___Writer____is_writing(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___syntax_base___AbsSyntaxVisitor____mmmodule(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_writing", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_mmmodule", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_compiling___compiling_writer___Writer____is_frozen(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___syntax_base___AbsSyntaxVisitor____tc(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_frozen", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_tc", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_syntax___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);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_Writer_compiling___compiling_writer___Writer___init(void){
-  struct {struct stack_frame_t me;} fra;
+static const char LOCATE_NEW_PropertyVerifierVisitor_syntax___mmbuilder___PropertyVerifierVisitor___init[] = "new PropertyVerifierVisitor mmbuilder::PropertyVerifierVisitor::init";
+val_t NEW_PropertyVerifierVisitor_syntax___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[2] = {0, 0};
+  int init_table[4] = {0, 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_Writer_compiling___compiling_writer___Writer___init;
+  fra.me.line = 407;
+  fra.me.meth = LOCATE_NEW_PropertyVerifierVisitor_syntax___mmbuilder___PropertyVerifierVisitor___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./compiling//compiling_writer.nit:107 */
-  fra.me.REG[0] = NEW_compiling___compiling_writer___Writer();
-  INIT_ATTRIBUTES__compiling___compiling_writer___Writer(fra.me.REG[0]);
-  compiling___compiling_writer___Writer___init(fra.me.REG[0], init_table);
-  CHECKNEW_compiling___compiling_writer___Writer(fra.me.REG[0]);
+  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:407 */
+  fra.me.REG[2] = NEW_syntax___mmbuilder___PropertyVerifierVisitor();
+  INIT_ATTRIBUTES__syntax___mmbuilder___PropertyVerifierVisitor(fra.me.REG[2]);
+  syntax___mmbuilder___PropertyVerifierVisitor___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_syntax___mmbuilder___PropertyVerifierVisitor(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[2];
 }
-const classtable_elt_t VFT_compiling___compiling_writer___WriterCoreNode[52] = {
-  {(bigint) 319 /* 0: Identity */},
-  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "WriterCoreNode" /* 2: Class Name */},
-  {(bigint) 3 /* 3: WriterCoreNode < Object: superclass typecheck marker */},
-  {(bigint) 7 /* 4: WriterCoreNode < WriterNode: superclass typecheck marker */},
-  {(bigint) 319 /* 5: WriterCoreNode < WriterCoreNode: superclass typecheck marker */},
+const classtable_elt_t VFT_syntax___mmbuilder___SignatureBuilder[64] = {
+  {(bigint) 51 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "SignatureBuilder" /* 2: Class Name */},
+  {(bigint) 3 /* 3: SignatureBuilder < Object: superclass typecheck marker */},
+  {(bigint) 51 /* 4: SignatureBuilder < SignatureBuilder: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -152916,7 +182268,7 @@ const classtable_elt_t VFT_compiling___compiling_writer___WriterCoreNode[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: WriterCoreNode < Object: superclass init_table position */},
+  {(bigint) 0 /* 19: SignatureBuilder < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -152932,6 +182284,8 @@ const classtable_elt_t VFT_compiling___compiling_writer___WriterCoreNode[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -152945,89 +182299,144 @@ const classtable_elt_t VFT_compiling___compiling_writer___WriterCoreNode[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: WriterCoreNode < WriterNode: superclass init_table position */},
-  {(bigint) compiling___compiling_writer___WriterCoreNode___internal_write_to_stream},
-  {(bigint) compiling___compiling_writer___WriterNode___init},
-  {(bigint) 2 /* 50: WriterCoreNode < WriterCoreNode: superclass init_table position */},
-  {(bigint) compiling___compiling_writer___WriterCoreNode___init},
+  {(bigint) 1 /* 50: SignatureBuilder < SignatureBuilder: superclass init_table position */},
+  {(bigint) syntax___mmbuilder___SignatureBuilder___params},
+  {(bigint) syntax___mmbuilder___SignatureBuilder___params__eq},
+  {(bigint) syntax___mmbuilder___SignatureBuilder___untyped_params},
+  {(bigint) syntax___mmbuilder___SignatureBuilder___untyped_params__eq},
+  {(bigint) syntax___mmbuilder___SignatureBuilder___vararg_rank},
+  {(bigint) syntax___mmbuilder___SignatureBuilder___vararg_rank__eq},
+  {(bigint) syntax___mmbuilder___SignatureBuilder___closure_decls},
+  {(bigint) syntax___mmbuilder___SignatureBuilder___closure_decls__eq},
+  {(bigint) syntax___mmbuilder___SignatureBuilder___has_error_occured},
+  {(bigint) syntax___mmbuilder___SignatureBuilder___has_error_occured__eq},
+  {(bigint) syntax___mmbuilder___SignatureBuilder___signature},
+  {(bigint) syntax___mmbuilder___SignatureBuilder___signature__eq},
+  {(bigint) syntax___mmbuilder___SignatureBuilder___init},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute WriterCoreNode::_next_writer */
-/* 3: Attribute WriterCoreNode::_writer */
-void INIT_ATTRIBUTES__compiling___compiling_writer___WriterCoreNode(val_t p0){
+/* 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 */
+static const char LOCATE_INIT_ATTRIBUTES__syntax___mmbuilder___SignatureBuilder[] = "init var of SignatureBuilder";
+void INIT_ATTRIBUTES__syntax___mmbuilder___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__compiling___compiling_writer___WriterCoreNode;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___mmbuilder___SignatureBuilder;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//compiling_writer.nit:112 */
+  /* syntax/mmbuilder.nit:417 */
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
+  ATTR_syntax___mmbuilder___SignatureBuilder____params(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/mmbuilder.nit:420 */
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
+  ATTR_syntax___mmbuilder___SignatureBuilder____untyped_params(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/mmbuilder.nit:423 */
+  REGB0 = TAG_Int(1);
+  /* ../lib/standard/kernel.nit:239 */
+  REGB0 = TAG_Int(-UNTAG_Int(REGB0));
+  ATTR_syntax___mmbuilder___SignatureBuilder____vararg_rank(fra.me.REG[0]) = REGB0;
+  /* syntax/mmbuilder.nit:426 */
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
+  ATTR_syntax___mmbuilder___SignatureBuilder____closure_decls(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/mmbuilder.nit:429 */
+  REGB0 = TAG_Bool(0);
+  ATTR_syntax___mmbuilder___SignatureBuilder____has_error_occured(fra.me.REG[0]) = REGB0;
+  /* syntax/mmbuilder.nit:431 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_compiling___compiling_writer___WriterNode____next_writer(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_syntax___mmbuilder___SignatureBuilder____signature(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_compiling___compiling_writer___WriterCoreNode(void)
+val_t NEW_syntax___mmbuilder___SignatureBuilder(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_compiling___compiling_writer___WriterCoreNode;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_syntax___mmbuilder___SignatureBuilder;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_compiling___compiling_writer___WriterCoreNode(val_t p0){
+static const char LOCATE_CHECKNEW_syntax___mmbuilder___SignatureBuilder[] = "check new SignatureBuilder";
+void CHECKNEW_syntax___mmbuilder___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_compiling___compiling_writer___WriterCoreNode;
+  fra.me.meth = LOCATE_CHECKNEW_syntax___mmbuilder___SignatureBuilder;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_compiling___compiling_writer___WriterCoreNode____writer(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___mmbuilder___SignatureBuilder____params(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_writer", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_params", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_syntax___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_syntax___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_syntax___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_syntax___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_WriterCoreNode_compiling___compiling_writer___WriterCoreNode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_SignatureBuilder_syntax___mmbuilder___SignatureBuilder___init[] = "new SignatureBuilder mmbuilder::SignatureBuilder::init";
+val_t NEW_SignatureBuilder_syntax___mmbuilder___SignatureBuilder___init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[3] = {0, 0, 0};
+  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 = 126;
-  fra.me.meth = LOCATE_NEW_WriterCoreNode_compiling___compiling_writer___WriterCoreNode___init;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_SignatureBuilder_syntax___mmbuilder___SignatureBuilder___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_compiling___compiling_writer___WriterCoreNode();
-  INIT_ATTRIBUTES__compiling___compiling_writer___WriterCoreNode(fra.me.REG[1]);
-  compiling___compiling_writer___WriterCoreNode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_compiling___compiling_writer___WriterCoreNode(fra.me.REG[1]);
+  fra.me.REG[0] = NEW_syntax___mmbuilder___SignatureBuilder();
+  INIT_ATTRIBUTES__syntax___mmbuilder___SignatureBuilder(fra.me.REG[0]);
+  syntax___mmbuilder___SignatureBuilder___init(fra.me.REG[0], init_table);
+  CHECKNEW_syntax___mmbuilder___SignatureBuilder(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_compiling___compiling_writer___WriterStrings[52] = {
-  {(bigint) 315 /* 0: Identity */},
-  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "WriterStrings" /* 2: Class Name */},
-  {(bigint) 3 /* 3: WriterStrings < Object: superclass typecheck marker */},
-  {(bigint) 7 /* 4: WriterStrings < WriterNode: superclass typecheck marker */},
-  {(bigint) 315 /* 5: WriterStrings < WriterStrings: superclass typecheck marker */},
+const classtable_elt_t VFT_syntax___mmbuilder___MethidAccumulator[57] = {
+  {(bigint) 3063 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "MethidAccumulator" /* 2: Class Name */},
+  {(bigint) 3 /* 3: MethidAccumulator < Object: superclass typecheck marker */},
+  {(bigint) 15 /* 4: MethidAccumulator < Visitor: superclass typecheck marker */},
+  {(bigint) 3063 /* 5: MethidAccumulator < MethidAccumulator: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -153040,7 +182449,7 @@ const classtable_elt_t VFT_compiling___compiling_writer___WriterStrings[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: WriterStrings < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: MethidAccumulator < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -153056,6 +182465,8 @@ const classtable_elt_t VFT_compiling___compiling_writer___WriterStrings[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -153069,93 +182480,98 @@ const classtable_elt_t VFT_compiling___compiling_writer___WriterStrings[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 47: WriterStrings < WriterNode: superclass init_table position */},
-  {(bigint) compiling___compiling_writer___WriterStrings___internal_write_to_stream},
-  {(bigint) compiling___compiling_writer___WriterNode___init},
-  {(bigint) 2 /* 50: WriterStrings < WriterStrings: superclass init_table position */},
-  {(bigint) compiling___compiling_writer___WriterStrings___init},
+  {(bigint) 0 /* 50: MethidAccumulator < Visitor: superclass init_table position */},
+  {(bigint) syntax___mmbuilder___MethidAccumulator___visit},
+  {(bigint) parser___parser_prod___Visitor___enter_visit},
+  {(bigint) parser___parser_prod___Visitor___current_node},
+  {(bigint) parser___parser_prod___Visitor___init},
+  {(bigint) 2 /* 55: MethidAccumulator < MethidAccumulator: superclass init_table position */},
+  {(bigint) syntax___mmbuilder___MethidAccumulator___name},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute WriterStrings::_next_writer */
-/* 3: Attribute WriterStrings::_string */
-/* 4: Attribute WriterStrings::_next */
-void INIT_ATTRIBUTES__compiling___compiling_writer___WriterStrings(val_t p0){
+/* 2: Attribute MethidAccumulator::_current_node */
+/* 3: Attribute MethidAccumulator::_name */
+static const char LOCATE_INIT_ATTRIBUTES__syntax___mmbuilder___MethidAccumulator[] = "init var of MethidAccumulator";
+void INIT_ATTRIBUTES__syntax___mmbuilder___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__compiling___compiling_writer___WriterStrings;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___mmbuilder___MethidAccumulator;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//compiling_writer.nit:135 */
+  /* parser/parser_prod.nit:66 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_compiling___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___compiling_writer___WriterNode____next_writer(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_prod___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
+  /* syntax/mmbuilder.nit:1254 */
+  fra.me.REG[1] = NEW_Buffer_standard___string___Buffer___init();
+  ATTR_syntax___mmbuilder___MethidAccumulator____name(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_compiling___compiling_writer___WriterStrings(void)
+val_t NEW_syntax___mmbuilder___MethidAccumulator(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_compiling___compiling_writer___WriterStrings;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_syntax___mmbuilder___MethidAccumulator;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_compiling___compiling_writer___WriterStrings(val_t p0){
+static const char LOCATE_CHECKNEW_syntax___mmbuilder___MethidAccumulator[] = "check new MethidAccumulator";
+void CHECKNEW_syntax___mmbuilder___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_compiling___compiling_writer___WriterStrings;
+  fra.me.meth = LOCATE_CHECKNEW_syntax___mmbuilder___MethidAccumulator;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_compiling___compiling_writer___WriterStrings____string(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___mmbuilder___MethidAccumulator____name(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_string", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_name", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_WriterStrings_compiling___compiling_writer___WriterStrings___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_MethidAccumulator_parser___parser_prod___Visitor___init[] = "new MethidAccumulator parser_prod::Visitor::init";
+val_t NEW_MethidAccumulator_parser___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 = 138;
-  fra.me.meth = LOCATE_NEW_WriterStrings_compiling___compiling_writer___WriterStrings___init;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_MethidAccumulator_parser___parser_prod___Visitor___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_compiling___compiling_writer___WriterStrings();
-  INIT_ATTRIBUTES__compiling___compiling_writer___WriterStrings(fra.me.REG[1]);
-  compiling___compiling_writer___WriterStrings___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_compiling___compiling_writer___WriterStrings(fra.me.REG[1]);
+  fra.me.REG[0] = NEW_syntax___mmbuilder___MethidAccumulator();
+  INIT_ATTRIBUTES__syntax___mmbuilder___MethidAccumulator(fra.me.REG[0]);
+  parser___parser_prod___Visitor___init(fra.me.REG[0], init_table);
+  CHECKNEW_syntax___mmbuilder___MethidAccumulator(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_compiling___compiling_base___CProgram[58] = {
-  {(bigint) 291 /* 0: Identity */},
-  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "CProgram" /* 2: Class Name */},
-  {(bigint) 3 /* 3: CProgram < Object: superclass typecheck marker */},
-  {(bigint) 291 /* 4: CProgram < CProgram: superclass typecheck marker */},
+const classtable_elt_t VFT_syntax___extern_inline___ExternCode[88] = {
+  {(bigint) 3235 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ExternCode" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ExternCode < Object: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 259 /* 5: ExternCode < FFIVisited: superclass typecheck marker */},
+  {(bigint) 3235 /* 6: ExternCode < ExternCode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -153168,7 +182584,7 @@ const classtable_elt_t VFT_compiling___compiling_base___CProgram[58] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: CProgram < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ExternCode < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -153184,6 +182600,8 @@ const classtable_elt_t VFT_compiling___compiling_base___CProgram[58] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -153197,129 +182615,134 @@ const classtable_elt_t VFT_compiling___compiling_base___CProgram[58] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: CProgram < CProgram: superclass init_table position */},
-  {(bigint) compiling___compiling_base___CProgram___init},
-  {(bigint) compiling___compiling_base___CProgram___program},
-  {(bigint) compiling___compiling_base___CProgram___files},
-  {(bigint) compiling___compiling_base___CProgram___include_dirs},
-  {(bigint) compiling___compiling_base___CProgram___build_file},
-  {(bigint) compiling___compiling_base___CProgram___compdir},
-  {(bigint) compiling___compiling_base___CProgram___module_header_name},
-  {(bigint) compiling___compiling_base___CProgram___get_file_ending},
-  {(bigint) compiling___compiling_base___CProgram___generate_build_file},
-  {(bigint) compiling___compiling_base___CProgram___run_c_compiler},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 0 /* 72: ExternCode < FFIVisited: superclass init_table position */},
+  {(bigint) ffi___c___ExternCode___accept_ffi_visitor},
+  {(bigint) ffi___c___ExternCode___is_c},
+  {(bigint) ffi___c___ExternCode___is_c_body},
+  {(bigint) ffi___c___ExternCode___is_c_header},
+  {(bigint) ffi___ffi_base___ExternCode___language_lowered},
+  {(bigint) ffi___ffi_base___ExternCode___language_lowered__eq},
+  {(bigint) syntax___extern_inline___ExternCode___init},
+  {(bigint) 2 /* 80: ExternCode < ExternCode: superclass init_table position */},
+  {(bigint) syntax___extern_inline___ExternCode___language},
+  {(bigint) syntax___extern_inline___ExternCode___language__eq},
+  {(bigint) syntax___extern_inline___ExternCode___code},
+  {(bigint) syntax___extern_inline___ExternCode___code__eq},
+  {(bigint) syntax___extern_inline___ExternCode___location},
+  {(bigint) syntax___extern_inline___ExternCode___location__eq},
+  {(bigint) ffi___ffi_base___ExternCode___init},
 };
 /* 0: Pointer to the classtable */
 /* 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__compiling___compiling_base___CProgram(val_t p0){
+/* 2: Attribute ExternCode::@language_lowered */
+/* 3: Attribute ExternCode::@language */
+/* 4: Attribute ExternCode::@code */
+/* 5: Attribute ExternCode::@location */
+static const char LOCATE_INIT_ATTRIBUTES__syntax___extern_inline___ExternCode[] = "init var of ExternCode";
+void INIT_ATTRIBUTES__syntax___extern_inline___ExternCode(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__compiling___compiling_base___CProgram;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___extern_inline___ExternCode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   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_standard___collection___array___Array___init();
-  ATTR_compiling___compiling_base___CProgram____files(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./compiling//compiling_base.nit:56 */
-  fra.me.REG[1] = NEW_ArraySet_standard___collection___array___ArraySet___init();
-  ATTR_compiling___compiling_base___CProgram____include_dirs(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./compiling//compiling_base.nit:76 */
-  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
-  ATTR_compiling___compiling_base___CProgram____module_include(fra.me.REG[0]) = fra.me.REG[1];
+  /* ffi/ffi_base.nit:43 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_ffi___ffi_base___ExternCode_____atlanguage_lowered(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_compiling___compiling_base___CProgram(void)
+val_t NEW_syntax___extern_inline___ExternCode(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 8);
-  obj->vft = (classtable_elt_t*)VFT_compiling___compiling_base___CProgram;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_syntax___extern_inline___ExternCode;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_compiling___compiling_base___CProgram(val_t p0){
+static const char LOCATE_CHECKNEW_syntax___extern_inline___ExternCode[] = "check new ExternCode";
+void CHECKNEW_syntax___extern_inline___ExternCode(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_compiling___compiling_base___CProgram;
+  fra.me.meth = LOCATE_CHECKNEW_syntax___extern_inline___ExternCode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_compiling___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___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___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___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___compiling_base___CProgram____compdir(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___extern_inline___ExternCode_____atcode(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___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);
+    nit_abort("Uninitialized attribute %s", "@code", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_CProgram_compiling___compiling_base___CProgram___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_ExternCode_syntax___extern_inline___ExternCode___init[] = "new ExternCode ffi_base::ExternCode::(extern_inline::ExternCode::init)";
+val_t NEW_ExternCode_syntax___extern_inline___ExternCode___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};
+  int init_table[3] = {0, 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___compiling_base___CProgram___init;
+  fra.me.line = 45;
+  fra.me.meth = LOCATE_NEW_ExternCode_syntax___extern_inline___ExternCode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   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;
-  /* ./compiling//compiling_base.nit:42 */
-  fra.me.REG[1] = NEW_compiling___compiling_base___CProgram();
-  INIT_ATTRIBUTES__compiling___compiling_base___CProgram(fra.me.REG[1]);
-  compiling___compiling_base___CProgram___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_compiling___compiling_base___CProgram(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ffi/ffi_base.nit:45 */
+  fra.me.REG[3] = NEW_syntax___extern_inline___ExternCode();
+  INIT_ATTRIBUTES__syntax___extern_inline___ExternCode(fra.me.REG[3]);
+  ffi___ffi_base___ExternCode___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_syntax___extern_inline___ExternCode(fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[3];
 }
-const classtable_elt_t VFT_compiling___compiling_base___CompilerVisitor[72] = {
-  {(bigint) 271 /* 0: Identity */},
-  {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "CompilerVisitor" /* 2: Class Name */},
-  {(bigint) 3 /* 3: CompilerVisitor < Object: superclass typecheck marker */},
-  {(bigint) 271 /* 4: CompilerVisitor < CompilerVisitor: superclass typecheck marker */},
+const classtable_elt_t VFT_syntax___SrcModuleLoader[62] = {
+  {(bigint) 351 /* 0: Identity */},
+  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "SrcModuleLoader" /* 2: Class Name */},
+  {(bigint) 3 /* 3: SrcModuleLoader < Object: superclass typecheck marker */},
+  {(bigint) 127 /* 4: SrcModuleLoader < ModuleLoader: superclass typecheck marker */},
+  {(bigint) 351 /* 5: SrcModuleLoader < SrcModuleLoader: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -153333,7 +182756,7 @@ const classtable_elt_t VFT_compiling___compiling_base___CompilerVisitor[72] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: CompilerVisitor < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: SrcModuleLoader < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -153349,6 +182772,8 @@ const classtable_elt_t VFT_compiling___compiling_base___CompilerVisitor[72] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -153362,167 +182787,85 @@ const classtable_elt_t VFT_compiling___compiling_base___CompilerVisitor[72] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: CompilerVisitor < CompilerVisitor: superclass init_table position */},
-  {(bigint) compiling___compiling_base___CompilerVisitor___add_decl},
-  {(bigint) compiling___compiling_base___CompilerVisitor___add_instr},
-  {(bigint) compiling___compiling_base___CompilerVisitor___add_indent},
-  {(bigint) compiling___compiling_base___CompilerVisitor___add_line_to},
-  {(bigint) compiling___compiling_base___CompilerVisitor___add_assignment},
-  {(bigint) compiling___compiling_base___CompilerVisitor___new_number},
-  {(bigint) compiling___compiling_base___CompilerVisitor___indent},
-  {(bigint) compiling___compiling_base___CompilerVisitor___unindent},
-  {(bigint) compiling___compiling_base___CompilerVisitor___mmmodule},
-  {(bigint) compiling___compiling_base___CompilerVisitor___header_writer},
-  {(bigint) compiling___compiling_base___CompilerVisitor___header_writer__eq},
-  {(bigint) compiling___compiling_base___CompilerVisitor___writer},
-  {(bigint) compiling___compiling_base___CompilerVisitor___writer__eq},
-  {(bigint) compiling___compiling_base___CompilerVisitor___decl_writer},
-  {(bigint) compiling___compiling_base___CompilerVisitor___decl_writer__eq},
-  {(bigint) compiling___compiling_base___CompilerVisitor___top_writer},
-  {(bigint) compiling___compiling_base___CompilerVisitor___top_writer__eq},
-  {(bigint) compiling___compiling_base___CompilerVisitor___top_decl_writer},
-  {(bigint) compiling___compiling_base___CompilerVisitor___top_decl_writer__eq},
-  {(bigint) compiling___compiling_base___CompilerVisitor___indent_level},
-  {(bigint) compiling___compiling_base___CompilerVisitor___indent_level__eq},
-  {(bigint) compiling___compiling_base___CompilerVisitor___program},
-  {(bigint) compiling___compiling_base___CompilerVisitor___cprogram},
-  {(bigint) compiling___compiling_base___CompilerVisitor___init},
+  {(bigint) 0 /* 50: SrcModuleLoader < ModuleLoader: superclass init_table position */},
+  {(bigint) 3519 /* 51: VT SrcModuleLoader::MODULE : id of MMSrcModule */},
+  {(bigint) 7 /* 52: VT SrcModuleLoader::MODULE : color of MMSrcModule */},
+  {(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) 2 /* 60: SrcModuleLoader < SrcModuleLoader: superclass init_table position */},
+  {(bigint) syntax___SrcModuleLoader___init},
 };
 /* 0: Pointer to the classtable */
 /* 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__compiling___compiling_base___CompilerVisitor(val_t p0){
+static const char LOCATE_INIT_ATTRIBUTES__syntax___SrcModuleLoader[] = "init var of SrcModuleLoader";
+void INIT_ATTRIBUTES__syntax___SrcModuleLoader(val_t p0){
   struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__compiling___compiling_base___CompilerVisitor;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___SrcModuleLoader;
   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:184 */
-  REGB0 = TAG_Int(0);
-  ATTR_compiling___compiling_base___CompilerVisitor____number_cpt(fra.me.REG[0]) = REGB0;
-  /* ./compiling//compiling_base.nit:216 */
-  REGB0 = TAG_Int(0);
-  ATTR_compiling___compiling_base___CompilerVisitor____indent_level(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_compiling___compiling_base___CompilerVisitor(void)
+val_t NEW_syntax___SrcModuleLoader(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 12);
-  obj->vft = (classtable_elt_t*)VFT_compiling___compiling_base___CompilerVisitor;
+  obj = alloc(sizeof(val_t) * 2);
+  obj->vft = (classtable_elt_t*)VFT_syntax___SrcModuleLoader;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_compiling___compiling_base___CompilerVisitor(val_t p0){
+static const char LOCATE_CHECKNEW_syntax___SrcModuleLoader[] = "check new SrcModuleLoader";
+void CHECKNEW_syntax___SrcModuleLoader(val_t p0){
   struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_compiling___compiling_base___CompilerVisitor;
+  fra.me.meth = LOCATE_CHECKNEW_syntax___SrcModuleLoader;
   fra.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___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___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___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___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___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___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___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___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___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___compiling_base___CompilerVisitor____cprogram(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_cprogram", LOCATE_nitc, 0);
-  }
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_CompilerVisitor_compiling___compiling_base___CompilerVisitor___init(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_SrcModuleLoader_syntax___SrcModuleLoader___init[] = "new SrcModuleLoader syntax::SrcModuleLoader::init";
+val_t NEW_SrcModuleLoader_syntax___SrcModuleLoader___init(void){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[2] = {0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 224;
-  fra.me.meth = LOCATE_NEW_CompilerVisitor_compiling___compiling_base___CompilerVisitor___init;
+  fra.me.line = 70;
+  fra.me.meth = LOCATE_NEW_SrcModuleLoader_syntax___SrcModuleLoader___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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:224 */
-  fra.me.REG[2] = NEW_compiling___compiling_base___CompilerVisitor();
-  INIT_ATTRIBUTES__compiling___compiling_base___CompilerVisitor(fra.me.REG[2]);
-  compiling___compiling_base___CompilerVisitor___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_compiling___compiling_base___CompilerVisitor(fra.me.REG[2]);
+  /* syntax/syntax.nit:70 */
+  fra.me.REG[0] = NEW_syntax___SrcModuleLoader();
+  INIT_ATTRIBUTES__syntax___SrcModuleLoader(fra.me.REG[0]);
+  syntax___SrcModuleLoader___init(fra.me.REG[0], init_table);
+  CHECKNEW_syntax___SrcModuleLoader(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor[65] = {
-  {(bigint) 2231 /* 0: Identity */},
-  {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "IRegisterSlotAllocationVisitor" /* 2: Class Name */},
-  {(bigint) 3 /* 3: IRegisterSlotAllocationVisitor < Object: superclass typecheck marker */},
-  {(bigint) 223 /* 4: IRegisterSlotAllocationVisitor < ICodeVisitor: superclass typecheck marker */},
-  {(bigint) 2231 /* 5: IRegisterSlotAllocationVisitor < IRegisterSlotAllocationVisitor: superclass typecheck marker */},
+const classtable_elt_t VFT_program___Program[105] = {
+  {(bigint) 91 /* 0: Identity */},
+  {(bigint) 17 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "Program" /* 2: Class Name */},
+  {(bigint) 3 /* 3: Program < Object: superclass typecheck marker */},
+  {(bigint) 91 /* 4: Program < Program: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -153535,7 +182878,7 @@ const classtable_elt_t VFT_analysis___allocate_iregister_slots___IRegisterSlotAl
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: IRegisterSlotAllocationVisitor < Object: superclass init_table position */},
+  {(bigint) 0 /* 19: Program < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -153551,6 +182894,8 @@ const classtable_elt_t VFT_analysis___allocate_iregister_slots___IRegisterSlotAl
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -153564,162 +182909,245 @@ const classtable_elt_t VFT_analysis___allocate_iregister_slots___IRegisterSlotAl
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: IRegisterSlotAllocationVisitor < ICodeVisitor: superclass init_table position */},
-  {(bigint) analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_iregister_read},
-  {(bigint) analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_iregister_write},
-  {(bigint) icode___icode_tools___ICodeVisitor___current_icode},
-  {(bigint) analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_icode},
-  {(bigint) analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_closure_defs},
-  {(bigint) analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_iroutine},
-  {(bigint) icode___icode_tools___ICodeVisitor___init},
-  {(bigint) 2 /* 55: IRegisterSlotAllocationVisitor < IRegisterSlotAllocationVisitor: superclass init_table position */},
-  {(bigint) analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___mark_locality},
-  {(bigint) analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___deferred_free},
-  {(bigint) icode___icode_tools___ICodeVisitor___visit_icode},
-  {(bigint) icode___icode_tools___ICodeVisitor___visit_closure_defs},
-  {(bigint) icode___icode_tools___ICodeVisitor___visit_iroutine},
-  {(bigint) analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___register},
-  {(bigint) analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___free},
-  {(bigint) analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___iroutine_slot_allocation},
-  {(bigint) analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___init},
+  {(bigint) global___Program___do_global_analysis},
+  {(bigint) global___Program___dump_global_optimizations_information},
+  {(bigint) global___Program___dump_global_analysis_information},
+  {(bigint) global___instantiated_type_analysis___Program___ita},
+  {(bigint) global___instantiated_type_analysis___Program___ita__eq},
+  {(bigint) global___instantiated_type_analysis___Program___dump_instantiated_types},
+  {(bigint) global___instantiated_type_analysis___Program___dump_not_instantiated_types},
+  {(bigint) 1 /* 57: 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) global___instantiated_type_analysis___Program___with_each_live_local_classes},
+  {(bigint) program___Program___init},
+  {(bigint) global___reachable_as_init___Program___rai},
+  {(bigint) global___reachable_as_init___Program___rai__eq},
+  {(bigint) global___reachable_as_init___Program___dump_reachable_as_init_methods},
+  {(bigint) global___dead_method_removal___Program___nb_removed_iroutines},
+  {(bigint) global___dead_method_removal___Program___nb_not_removed_iroutines},
+  {(bigint) global___dead_method_removal___Program___optimize_dead_methods},
+  {(bigint) global___dead_method_removal___Program___dump_dead_method_optimization},
+  {(bigint) global___reachable_method_analysis___Program___rma},
+  {(bigint) global___reachable_method_analysis___Program___rma__eq},
+  {(bigint) global___reachable_method_analysis___Program___dump_reachable_methods},
+  {(bigint) global___reachable_method_analysis___Program___dump_unreachable_methods},
+  {(bigint) global___inline_get_and_set___Program___dump_inline_get_set},
+  {(bigint) global___inline_get_and_set___Program___inline_get_set},
+  {(bigint) global___remove_out_of_init_get_test___Program___nb_optimized_isset},
+  {(bigint) global___remove_out_of_init_get_test___Program___optimize_out_of_init_getters},
+  {(bigint) global___remove_out_of_init_get_test___Program___dump_out_of_init_information},
+  {(bigint) global___reachable_from_init_method_analysis___Program___rfima},
+  {(bigint) global___reachable_from_init_method_analysis___Program___rfima__eq},
+  {(bigint) global___reachable_from_init_method_analysis___Program___dump_reachable_methods_from_init},
+  {(bigint) global___reachable_from_init_method_analysis___Program___dump_unreachable_methods_from_init},
+  {(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) compiling___icode_generator___Program___generate_icode_files},
+  {(bigint) compiling___compiling_global___Program___compile_tables_to_c},
+  {(bigint) compiling___compiling_global___Program___compile_main_part},
+  {(bigint) compiling___table_computation___Program___table_information},
+  {(bigint) compiling___table_computation___Program___compiled_classes},
+  {(bigint) compiling___table_computation___Program___do_table_computation},
+  {(bigint) compiling___table_computation___Program___do_global_table_analysis},
+  {(bigint) compiling___table_computation___Program___colorize},
+  {(bigint) compiling___table_computation___Program___free_color},
+  {(bigint) compiling___table_computation___Program___append_to_table},
+  {(bigint) compiling___table_computation___Program___build_tables_in},
 };
 /* 0: Pointer to the classtable */
 /* 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__analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor(val_t p0){
+/* 2: Attribute Program::_ita */
+/* 3: Attribute Program::_tc */
+/* 4: Attribute Program::_main_module */
+/* 5: Attribute Program::_main_method */
+/* 6: Attribute Program::_main_class */
+/* 7: Attribute Program::_rai */
+/* 8: Attribute Program::_nb_removed_iroutines */
+/* 9: Attribute Program::_nb_not_removed_iroutines */
+/* 10: Attribute Program::_rma */
+/* 11: Attribute Program::_number_getter_setter_inlined */
+/* 12: Attribute Program::_nb_optimized_isset */
+/* 13: Attribute Program::_rfima */
+/* 14: Attribute Program::_output_format */
+/* 15: Attribute Program::_table_information */
+/* 16: Attribute Program::_compiled_classes */
+static const char LOCATE_INIT_ATTRIBUTES__program___Program[] = "init var of Program";
+void INIT_ATTRIBUTES__program___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__analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__program___Program;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./analysis//allocate_iregister_slots.nit:34 */
+  /* 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];
+  /* compiling/table_computation.nit:141 */
+  fra.me.REG[1] = NEW_TableInformation_compiling___table_computation___ColorContext___init();
+  ATTR_compiling___table_computation___Program____table_information(fra.me.REG[0]) = fra.me.REG[1];
+  /* compiling/table_computation.nit:144 */
+  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
+  ATTR_compiling___table_computation___Program____compiled_classes(fra.me.REG[0]) = fra.me.REG[1];
+  /* compiling/compiling.nit:29 */
+  if (!once_value_1) {
+    fra.me.REG[1] = BOX_NativeString("none");
+    REGB0 = TAG_Int(4);
+    fra.me.REG[1] = NEW_String_standard___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];
+  /* global/reachable_method_analysis.nit:24 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_global___reachable_method_analysis___Program____rma(fra.me.REG[0]) = fra.me.REG[1];
+  /* global/reachable_from_init_method_analysis.nit:25 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_global___reachable_from_init_method_analysis___Program____rfima(fra.me.REG[0]) = fra.me.REG[1];
+  /* global/remove_out_of_init_get_test.nit:24 */
   REGB0 = TAG_Int(0);
-  ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____pass(fra.me.REG[0]) = REGB0;
-  /* ./analysis//allocate_iregister_slots.nit:85 */
+  ATTR_global___remove_out_of_init_get_test___Program____nb_optimized_isset(fra.me.REG[0]) = REGB0;
+  /* global/inline_get_and_set.nit:26 */
   REGB0 = TAG_Int(0);
-  ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_rank(fra.me.REG[0]) = REGB0;
-  /* ./analysis//allocate_iregister_slots.nit:88 */
+  ATTR_global___inline_get_and_set___Program____number_getter_setter_inlined(fra.me.REG[0]) = REGB0;
+  /* global/dead_method_removal.nit:23 */
   REGB0 = TAG_Int(0);
-  ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____max_rank(fra.me.REG[0]) = REGB0;
-  /* ./analysis//allocate_iregister_slots.nit:92 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_analysis___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_analysis___allocate_iregister_slots___SlotGroup___init();
-  ATTR_analysis___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_analysis___allocate_iregister_slots___SlotGroup___init();
-  ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____tag_slots(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_tools.nit:29 */
+  ATTR_global___dead_method_removal___Program____nb_removed_iroutines(fra.me.REG[0]) = REGB0;
+  /* global/dead_method_removal.nit:24 */
+  REGB0 = TAG_Int(0);
+  ATTR_global___dead_method_removal___Program____nb_not_removed_iroutines(fra.me.REG[0]) = REGB0;
+  /* global/reachable_as_init.nit:24 */
   fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_tools___ICodeVisitor____current_icode(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_global___reachable_as_init___Program____rai(fra.me.REG[0]) = fra.me.REG[1];
+  /* global/instantiated_type_analysis.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_global___instantiated_type_analysis___Program____ita(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor(void)
+val_t NEW_program___Program(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 11);
-  obj->vft = (classtable_elt_t*)VFT_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor;
+  obj = alloc(sizeof(val_t) * 17);
+  obj->vft = (classtable_elt_t*)VFT_program___Program;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor(val_t p0){
+static const char LOCATE_CHECKNEW_program___Program[] = "check new Program";
+void CHECKNEW_program___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_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor;
+  fra.me.meth = LOCATE_CHECKNEW_program___Program;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____pass(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_program___Program____tc(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_pass", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_tc", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_rank(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_program___Program____main_module(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_current_rank", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_main_module", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____max_rank(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_compiling___table_computation___Program____table_information(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_max_rank", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_table_information", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____deferred_list(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_compiling___table_computation___Program____compiled_classes(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_deferred_list", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_compiled_classes", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_ir(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_compiling___Program____output_format(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_current_ir", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_output_format", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____global_slots(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_global___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", "_global_slots", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_nb_optimized_isset", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____std_slots(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_global___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", "_std_slots", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_number_getter_setter_inlined", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____tag_slots(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_global___dead_method_removal___Program____nb_removed_iroutines(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_tag_slots", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_nb_removed_iroutines", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_global___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);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_IRegisterSlotAllocationVisitor_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_Program_program___Program___init[] = "new Program program::Program::init";
+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[3] = {0, 0, 0};
+  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 = 233;
-  fra.me.meth = LOCATE_NEW_IRegisterSlotAllocationVisitor_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___init;
+  fra.me.line = 222;
+  fra.me.meth = LOCATE_NEW_Program_program___Program___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./analysis//allocate_iregister_slots.nit:233 */
-  fra.me.REG[1] = NEW_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor();
-  INIT_ATTRIBUTES__analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor(fra.me.REG[1]);
-  analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  /* program.nit:222 */
+  fra.me.REG[2] = NEW_program___Program();
+  INIT_ATTRIBUTES__program___Program(fra.me.REG[2]);
+  program___Program___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_program___Program(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[2];
 }
-const classtable_elt_t VFT_analysis___allocate_iregister_slots___SlotGroup[51] = {
-  {(bigint) 47 /* 0: Identity */},
-  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "SlotGroup" /* 2: Class Name */},
-  {(bigint) 3 /* 3: SlotGroup < Object: superclass typecheck marker */},
-  {(bigint) 47 /* 4: SlotGroup < SlotGroup: superclass typecheck marker */},
+const classtable_elt_t VFT_global___reachable_method_analysis___DefaultReachableMethodAnalysis[55] = {
+  {(bigint) 3247 /* 0: Identity */},
+  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "DefaultReachableMethodAnalysis" /* 2: Class Name */},
+  {(bigint) 3 /* 3: DefaultReachableMethodAnalysis < Object: superclass typecheck marker */},
+  {(bigint) 71 /* 4: DefaultReachableMethodAnalysis < ReachableMethodAnalysis: superclass typecheck marker */},
+  {(bigint) 3247 /* 5: DefaultReachableMethodAnalysis < DefaultReachableMethodAnalysis: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -153733,7 +183161,7 @@ const classtable_elt_t VFT_analysis___allocate_iregister_slots___SlotGroup[51] =
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: SlotGroup < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: DefaultReachableMethodAnalysis < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -153749,6 +183177,8 @@ const classtable_elt_t VFT_analysis___allocate_iregister_slots___SlotGroup[51] =
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -153762,93 +183192,77 @@ const classtable_elt_t VFT_analysis___allocate_iregister_slots___SlotGroup[51] =
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: SlotGroup < SlotGroup: superclass init_table position */},
-  {(bigint) analysis___allocate_iregister_slots___SlotGroup___register},
-  {(bigint) analysis___allocate_iregister_slots___SlotGroup___free},
-  {(bigint) analysis___allocate_iregister_slots___SlotGroup___init},
+  {(bigint) 0 /* 50: DefaultReachableMethodAnalysis < ReachableMethodAnalysis: superclass init_table position */},
+  {(bigint) global___reachable_method_analysis___DefaultReachableMethodAnalysis___is_iroutine_reachable},
+  {(bigint) global___reachable_method_analysis___DefaultReachableMethodAnalysis___is_method_reachable},
+  {(bigint) 2 /* 53: DefaultReachableMethodAnalysis < DefaultReachableMethodAnalysis: superclass init_table position */},
+  {(bigint) global___reachable_method_analysis___DefaultReachableMethodAnalysis___init},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute SlotGroup::_free */
-/* 3: Attribute SlotGroup::_next_index */
-void INIT_ATTRIBUTES__analysis___allocate_iregister_slots___SlotGroup(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+static const char LOCATE_INIT_ATTRIBUTES__global___reachable_method_analysis___DefaultReachableMethodAnalysis[] = "init var of DefaultReachableMethodAnalysis";
+void INIT_ATTRIBUTES__global___reachable_method_analysis___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__analysis___allocate_iregister_slots___SlotGroup;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__global___reachable_method_analysis___DefaultReachableMethodAnalysis;
   fra.me.has_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_standard___collection___list___List___init();
-  ATTR_analysis___allocate_iregister_slots___SlotGroup____free(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./analysis//allocate_iregister_slots.nit:246 */
-  REGB0 = TAG_Int(0);
-  ATTR_analysis___allocate_iregister_slots___SlotGroup____next_index(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_analysis___allocate_iregister_slots___SlotGroup(void)
+val_t NEW_global___reachable_method_analysis___DefaultReachableMethodAnalysis(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_analysis___allocate_iregister_slots___SlotGroup;
+  obj = alloc(sizeof(val_t) * 2);
+  obj->vft = (classtable_elt_t*)VFT_global___reachable_method_analysis___DefaultReachableMethodAnalysis;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_analysis___allocate_iregister_slots___SlotGroup(val_t p0){
+static const char LOCATE_CHECKNEW_global___reachable_method_analysis___DefaultReachableMethodAnalysis[] = "check new DefaultReachableMethodAnalysis";
+void CHECKNEW_global___reachable_method_analysis___DefaultReachableMethodAnalysis(val_t p0){
   struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_analysis___allocate_iregister_slots___SlotGroup;
+  fra.me.meth = LOCATE_CHECKNEW_global___reachable_method_analysis___DefaultReachableMethodAnalysis;
   fra.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___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_analysis___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);
-  }
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_SlotGroup_analysis___allocate_iregister_slots___SlotGroup___init(void){
+static const char LOCATE_NEW_DefaultReachableMethodAnalysis_global___reachable_method_analysis___DefaultReachableMethodAnalysis___init[] = "new DefaultReachableMethodAnalysis reachable_method_analysis::DefaultReachableMethodAnalysis::init";
+val_t NEW_DefaultReachableMethodAnalysis_global___reachable_method_analysis___DefaultReachableMethodAnalysis___init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[2] = {0, 0};
+  int init_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_SlotGroup_analysis___allocate_iregister_slots___SlotGroup___init;
+  fra.me.line = 64;
+  fra.me.meth = LOCATE_NEW_DefaultReachableMethodAnalysis_global___reachable_method_analysis___DefaultReachableMethodAnalysis___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = NEW_analysis___allocate_iregister_slots___SlotGroup();
-  INIT_ATTRIBUTES__analysis___allocate_iregister_slots___SlotGroup(fra.me.REG[0]);
-  analysis___allocate_iregister_slots___SlotGroup___init(fra.me.REG[0], init_table);
-  CHECKNEW_analysis___allocate_iregister_slots___SlotGroup(fra.me.REG[0]);
+  /* global/reachable_method_analysis.nit:64 */
+  fra.me.REG[0] = NEW_global___reachable_method_analysis___DefaultReachableMethodAnalysis();
+  INIT_ATTRIBUTES__global___reachable_method_analysis___DefaultReachableMethodAnalysis(fra.me.REG[0]);
+  global___reachable_method_analysis___DefaultReachableMethodAnalysis___init(fra.me.REG[0], init_table);
+  CHECKNEW_global___reachable_method_analysis___DefaultReachableMethodAnalysis(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_analysis___icode_dump___ICodeDumper[61] = {
-  {(bigint) 231 /* 0: Identity */},
-  {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ICodeDumper" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ICodeDumper < Object: superclass typecheck marker */},
-  {(bigint) 231 /* 4: ICodeDumper < ICodeDumper: superclass typecheck marker */},
+const classtable_elt_t VFT_global___cha_analysis___ChaContext[56] = {
+  {(bigint) 3295 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ChaContext" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ChaContext < Object: superclass typecheck marker */},
+  {(bigint) 71 /* 4: ChaContext < ReachableMethodAnalysis: superclass typecheck marker */},
+  {(bigint) 3295 /* 5: ChaContext < ChaContext: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -153862,7 +183276,7 @@ const classtable_elt_t VFT_analysis___icode_dump___ICodeDumper[61] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: ICodeDumper < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ChaContext < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -153878,6 +183292,8 @@ const classtable_elt_t VFT_analysis___icode_dump___ICodeDumper[61] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -153891,157 +183307,93 @@ const classtable_elt_t VFT_analysis___icode_dump___ICodeDumper[61] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: ICodeDumper < ICodeDumper: superclass init_table position */},
-  {(bigint) analysis___icode_dump___ICodeDumper___dump_locations},
-  {(bigint) analysis___icode_dump___ICodeDumper___dump_line_numbers},
-  {(bigint) analysis___icode_dump___ICodeDumper___init},
-  {(bigint) analysis___icode_dump___ICodeDumper___register},
-  {(bigint) analysis___icode_dump___ICodeDumper___register_all},
-  {(bigint) analysis___icode_dump___ICodeDumper___closdecl},
-  {(bigint) analysis___icode_dump___ICodeDumper___lab},
-  {(bigint) analysis___icode_dump___ICodeDumper___line},
-  {(bigint) analysis___icode_dump___ICodeDumper___has_lab},
-  {(bigint) analysis___icode_dump___ICodeDumper___write},
-  {(bigint) analysis___icode_dump___ICodeDumper___indent_level},
-  {(bigint) analysis___icode_dump___ICodeDumper___indent},
-  {(bigint) analysis___icode_dump___ICodeDumper___unindent},
+  {(bigint) 0 /* 50: ChaContext < ReachableMethodAnalysis: superclass init_table position */},
+  {(bigint) global___cha_analysis___ChaContext___is_iroutine_reachable},
+  {(bigint) global___cha_analysis___ChaContext___is_method_reachable},
+  {(bigint) 2 /* 53: ChaContext < ChaContext: superclass init_table position */},
+  {(bigint) global___cha_analysis___ChaContext___reachable_iroutines},
+  {(bigint) global___cha_analysis___ChaContext___init},
 };
 /* 0: Pointer to the classtable */
 /* 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__analysis___icode_dump___ICodeDumper(val_t p0){
+/* 2: Attribute ChaContext::_reachable_iroutines */
+static const char LOCATE_INIT_ATTRIBUTES__global___cha_analysis___ChaContext[] = "init var of ChaContext";
+void INIT_ATTRIBUTES__global___cha_analysis___ChaContext(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__analysis___icode_dump___ICodeDumper;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__global___cha_analysis___ChaContext;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   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_standard___collection___hash_collection___HashMap___init();
-  ATTR_analysis___icode_dump___ICodeDumper____ids(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./analysis//icode_dump.nit:71 */
-  REGB0 = TAG_Int(0);
-  ATTR_analysis___icode_dump___ICodeDumper____last_value(fra.me.REG[0]) = REGB0;
-  /* ./analysis//icode_dump.nit:118 */
-  REGB0 = TAG_Int(0);
-  ATTR_analysis___icode_dump___ICodeDumper____last_clos(fra.me.REG[0]) = REGB0;
-  /* ./analysis//icode_dump.nit:134 */
-  REGB0 = TAG_Int(0);
-  ATTR_analysis___icode_dump___ICodeDumper____last_label(fra.me.REG[0]) = REGB0;
-  /* ./analysis//icode_dump.nit:149 */
-  REGB0 = TAG_Int(0);
-  ATTR_analysis___icode_dump___ICodeDumper____last_line(fra.me.REG[0]) = REGB0;
-  /* ./analysis//icode_dump.nit:178 */
-  REGB0 = TAG_Int(0);
-  ATTR_analysis___icode_dump___ICodeDumper____indent_level(fra.me.REG[0]) = REGB0;
+  /* global/cha_analysis.nit:26 */
+  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
+  ATTR_global___cha_analysis___ChaContext____reachable_iroutines(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_analysis___icode_dump___ICodeDumper(void)
+val_t NEW_global___cha_analysis___ChaContext(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 10);
-  obj->vft = (classtable_elt_t*)VFT_analysis___icode_dump___ICodeDumper;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_global___cha_analysis___ChaContext;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_analysis___icode_dump___ICodeDumper(val_t p0){
+static const char LOCATE_CHECKNEW_global___cha_analysis___ChaContext[] = "check new ChaContext";
+void CHECKNEW_global___cha_analysis___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_analysis___icode_dump___ICodeDumper;
+  fra.me.meth = LOCATE_CHECKNEW_global___cha_analysis___ChaContext;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_analysis___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_analysis___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_analysis___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_analysis___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_analysis___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_analysis___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_analysis___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_analysis___icode_dump___ICodeDumper____indent_level(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_global___cha_analysis___ChaContext____reachable_iroutines(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_indent_level", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_reachable_iroutines", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ICodeDumper_analysis___icode_dump___ICodeDumper___init(val_t p0, val_t p1){
+static const char LOCATE_NEW_ChaContext_global___cha_analysis___ChaContext___init[] = "new ChaContext cha_analysis::ChaContext::init";
+val_t NEW_ChaContext_global___cha_analysis___ChaContext___init(void){
   struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t REGB1;
   val_t tmp;
-  int init_table[2] = {0, 0};
+  int init_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_ICodeDumper_analysis___icode_dump___ICodeDumper___init;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ChaContext_global___cha_analysis___ChaContext___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  REGB0 = p0;
-  REGB1 = p1;
-  /* ./analysis//icode_dump.nit:73 */
-  fra.me.REG[0] = NEW_analysis___icode_dump___ICodeDumper();
-  INIT_ATTRIBUTES__analysis___icode_dump___ICodeDumper(fra.me.REG[0]);
-  analysis___icode_dump___ICodeDumper___init(fra.me.REG[0], REGB0, REGB1, init_table);
-  CHECKNEW_analysis___icode_dump___ICodeDumper(fra.me.REG[0]);
+  fra.me.REG[0] = NEW_global___cha_analysis___ChaContext();
+  INIT_ATTRIBUTES__global___cha_analysis___ChaContext(fra.me.REG[0]);
+  global___cha_analysis___ChaContext___init(fra.me.REG[0], init_table);
+  CHECKNEW_global___cha_analysis___ChaContext(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_analysis___inline_methods___InlineMethodVisitor[58] = {
-  {(bigint) 2215 /* 0: Identity */},
+const classtable_elt_t VFT_global___cha_analysis___ChaBuilder[57] = {
+  {(bigint) 287 /* 0: Identity */},
   {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "InlineMethodVisitor" /* 2: Class Name */},
-  {(bigint) 3 /* 3: InlineMethodVisitor < Object: superclass typecheck marker */},
-  {(bigint) 223 /* 4: InlineMethodVisitor < ICodeVisitor: superclass typecheck marker */},
-  {(bigint) 2215 /* 5: InlineMethodVisitor < InlineMethodVisitor: superclass typecheck marker */},
+  {(bigint) "ChaBuilder" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ChaBuilder < Object: superclass typecheck marker */},
+  {(bigint) 287 /* 4: ChaBuilder < ChaBuilder: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -154054,7 +183406,7 @@ const classtable_elt_t VFT_analysis___inline_methods___InlineMethodVisitor[58] =
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: InlineMethodVisitor < Object: superclass init_table position */},
+  {(bigint) 0 /* 19: ChaBuilder < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -154070,6 +183422,8 @@ const classtable_elt_t VFT_analysis___inline_methods___InlineMethodVisitor[58] =
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -154083,106 +183437,108 @@ const classtable_elt_t VFT_analysis___inline_methods___InlineMethodVisitor[58] =
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: InlineMethodVisitor < ICodeVisitor: superclass init_table position */},
-  {(bigint) icode___icode_tools___ICodeVisitor___visit_iregister_read},
-  {(bigint) icode___icode_tools___ICodeVisitor___visit_iregister_write},
-  {(bigint) icode___icode_tools___ICodeVisitor___current_icode},
-  {(bigint) analysis___inline_methods___InlineMethodVisitor___visit_icode},
-  {(bigint) icode___icode_tools___ICodeVisitor___visit_closure_defs},
-  {(bigint) icode___icode_tools___ICodeVisitor___visit_iroutine},
-  {(bigint) icode___icode_tools___ICodeVisitor___init},
-  {(bigint) 2 /* 55: InlineMethodVisitor < InlineMethodVisitor: superclass init_table position */},
-  {(bigint) icode___icode_tools___ICodeVisitor___visit_icode},
-  {(bigint) analysis___inline_methods___InlineMethodVisitor___init},
+  {(bigint) 1 /* 50: ChaBuilder < ChaBuilder: superclass init_table position */},
+  {(bigint) global___cha_analysis___ChaBuilder___iroutine_to_search},
+  {(bigint) global___cha_analysis___ChaBuilder___context},
+  {(bigint) global___cha_analysis___ChaBuilder___program},
+  {(bigint) global___cha_analysis___ChaBuilder___init},
+  {(bigint) global___cha_analysis___ChaBuilder___add_search},
+  {(bigint) global___cha_analysis___ChaBuilder___work},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute InlineMethodVisitor::_current_icode */
-/* 3: Attribute InlineMethodVisitor::_pass */
-/* 4: Attribute InlineMethodVisitor::_icb */
-void INIT_ATTRIBUTES__analysis___inline_methods___InlineMethodVisitor(val_t p0){
+/* 2: Attribute ChaBuilder::_iroutine_to_search */
+/* 3: Attribute ChaBuilder::_context */
+/* 4: Attribute ChaBuilder::_program */
+static const char LOCATE_INIT_ATTRIBUTES__global___cha_analysis___ChaBuilder[] = "init var of ChaBuilder";
+void INIT_ATTRIBUTES__global___cha_analysis___ChaBuilder(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__analysis___inline_methods___InlineMethodVisitor;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__global___cha_analysis___ChaBuilder;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   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_analysis___inline_methods___InlineMethodVisitor____pass(fra.me.REG[0]) = REGB0;
-  /* ./icode//icode_tools.nit:29 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_tools___ICodeVisitor____current_icode(fra.me.REG[0]) = fra.me.REG[1];
+  /* global/cha_analysis.nit:38 */
+  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  ATTR_global___cha_analysis___ChaBuilder____iroutine_to_search(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_analysis___inline_methods___InlineMethodVisitor(void)
+val_t NEW_global___cha_analysis___ChaBuilder(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_analysis___inline_methods___InlineMethodVisitor;
+  obj->vft = (classtable_elt_t*)VFT_global___cha_analysis___ChaBuilder;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_analysis___inline_methods___InlineMethodVisitor(val_t p0){
+static const char LOCATE_CHECKNEW_global___cha_analysis___ChaBuilder[] = "check new ChaBuilder";
+void CHECKNEW_global___cha_analysis___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_analysis___inline_methods___InlineMethodVisitor;
+  fra.me.meth = LOCATE_CHECKNEW_global___cha_analysis___ChaBuilder;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_analysis___inline_methods___InlineMethodVisitor____pass(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_global___cha_analysis___ChaBuilder____iroutine_to_search(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_pass", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_iroutine_to_search", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_analysis___inline_methods___InlineMethodVisitor____icb(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_global___cha_analysis___ChaBuilder____context(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_icb", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_context", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_global___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;
 }
-val_t NEW_InlineMethodVisitor_analysis___inline_methods___InlineMethodVisitor___init(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+static const char LOCATE_NEW_ChaBuilder_global___cha_analysis___ChaBuilder___init[] = "new ChaBuilder cha_analysis::ChaBuilder::init";
+val_t NEW_ChaBuilder_global___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[3] = {0, 0, 0};
+  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 = 63;
-  fra.me.meth = LOCATE_NEW_InlineMethodVisitor_analysis___inline_methods___InlineMethodVisitor___init;
+  fra.me.line = 42;
+  fra.me.meth = LOCATE_NEW_ChaBuilder_global___cha_analysis___ChaBuilder___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   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_analysis___inline_methods___InlineMethodVisitor();
-  INIT_ATTRIBUTES__analysis___inline_methods___InlineMethodVisitor(fra.me.REG[2]);
-  analysis___inline_methods___InlineMethodVisitor___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_analysis___inline_methods___InlineMethodVisitor(fra.me.REG[2]);
+  /* global/cha_analysis.nit:42 */
+  fra.me.REG[1] = NEW_global___cha_analysis___ChaBuilder();
+  INIT_ATTRIBUTES__global___cha_analysis___ChaBuilder(fra.me.REG[1]);
+  global___cha_analysis___ChaBuilder___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_global___cha_analysis___ChaBuilder(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[1];
 }
-const classtable_elt_t VFT_analysis___reachable_method_analysis___ReachableMethodAnalysis[51] = {
-  {(bigint) 71 /* 0: Identity */},
-  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReachableMethodAnalysis" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReachableMethodAnalysis < Object: superclass typecheck marker */},
-  {(bigint) 71 /* 4: ReachableMethodAnalysis < ReachableMethodAnalysis: superclass typecheck marker */},
+const classtable_elt_t VFT_global___cha_analysis___ChaVisitor[62] = {
+  {(bigint) 3291 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ChaVisitor" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ChaVisitor < Object: superclass typecheck marker */},
+  {(bigint) 211 /* 4: ChaVisitor < ICodeVisitor: superclass typecheck marker */},
+  {(bigint) 3291 /* 5: ChaVisitor < ChaVisitor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -154196,7 +183552,7 @@ const classtable_elt_t VFT_analysis___reachable_method_analysis___ReachableMetho
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: ReachableMethodAnalysis < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ChaVisitor < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -154212,6 +183568,8 @@ const classtable_elt_t VFT_analysis___reachable_method_analysis___ReachableMetho
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -154225,69 +183583,103 @@ const classtable_elt_t VFT_analysis___reachable_method_analysis___ReachableMetho
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: ReachableMethodAnalysis < ReachableMethodAnalysis: superclass init_table position */},
-  {(bigint) analysis___reachable_method_analysis___ReachableMethodAnalysis___is_iroutine_reachable},
-  {(bigint) analysis___reachable_method_analysis___ReachableMethodAnalysis___is_method_reachable},
-  {(bigint) analysis___reachable_method_analysis___ReachableMethodAnalysis___init},
+  {(bigint) 0 /* 50: ChaVisitor < ICodeVisitor: superclass init_table position */},
+  {(bigint) icode___icode_tools___ICodeVisitor___visit_iregister_read},
+  {(bigint) icode___icode_tools___ICodeVisitor___visit_iregister_write},
+  {(bigint) icode___icode_tools___ICodeVisitor___current_icode},
+  {(bigint) global___cha_analysis___ChaVisitor___visit_icode},
+  {(bigint) icode___icode_tools___ICodeVisitor___visit_closure_defs},
+  {(bigint) icode___icode_tools___ICodeVisitor___visit_iroutine},
+  {(bigint) icode___icode_tools___ICodeVisitor___init},
+  {(bigint) 2 /* 58: ChaVisitor < ChaVisitor: superclass init_table position */},
+  {(bigint) global___cha_analysis___ChaVisitor___builder},
+  {(bigint) icode___icode_tools___ICodeVisitor___visit_icode},
+  {(bigint) global___cha_analysis___ChaVisitor___init},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-void INIT_ATTRIBUTES__analysis___reachable_method_analysis___ReachableMethodAnalysis(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute ChaVisitor::_current_icode */
+/* 3: Attribute ChaVisitor::_builder */
+static const char LOCATE_INIT_ATTRIBUTES__global___cha_analysis___ChaVisitor[] = "init var of ChaVisitor";
+void INIT_ATTRIBUTES__global___cha_analysis___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__analysis___reachable_method_analysis___ReachableMethodAnalysis;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__global___cha_analysis___ChaVisitor;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* icode/icode_tools.nit:29 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_tools___ICodeVisitor____current_icode(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_analysis___reachable_method_analysis___ReachableMethodAnalysis(void)
+val_t NEW_global___cha_analysis___ChaVisitor(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 2);
-  obj->vft = (classtable_elt_t*)VFT_analysis___reachable_method_analysis___ReachableMethodAnalysis;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_global___cha_analysis___ChaVisitor;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_analysis___reachable_method_analysis___ReachableMethodAnalysis(val_t p0){
+static const char LOCATE_CHECKNEW_global___cha_analysis___ChaVisitor[] = "check new ChaVisitor";
+void CHECKNEW_global___cha_analysis___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_analysis___reachable_method_analysis___ReachableMethodAnalysis;
+  fra.me.meth = LOCATE_CHECKNEW_global___cha_analysis___ChaVisitor;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_global___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_ReachableMethodAnalysis_analysis___reachable_method_analysis___ReachableMethodAnalysis___init(void){
-  struct {struct stack_frame_t me;} fra;
+static const char LOCATE_NEW_ChaVisitor_global___cha_analysis___ChaVisitor___init[] = "new ChaVisitor cha_analysis::ChaVisitor::init";
+val_t NEW_ChaVisitor_global___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[2] = {0, 0};
+  int init_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_ReachableMethodAnalysis_analysis___reachable_method_analysis___ReachableMethodAnalysis___init;
+  fra.me.line = 126;
+  fra.me.meth = LOCATE_NEW_ChaVisitor_global___cha_analysis___ChaVisitor___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = NEW_analysis___reachable_method_analysis___ReachableMethodAnalysis();
-  INIT_ATTRIBUTES__analysis___reachable_method_analysis___ReachableMethodAnalysis(fra.me.REG[0]);
-  analysis___reachable_method_analysis___ReachableMethodAnalysis___init(fra.me.REG[0], init_table);
-  CHECKNEW_analysis___reachable_method_analysis___ReachableMethodAnalysis(fra.me.REG[0]);
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* global/cha_analysis.nit:126 */
+  fra.me.REG[1] = NEW_global___cha_analysis___ChaVisitor();
+  INIT_ATTRIBUTES__global___cha_analysis___ChaVisitor(fra.me.REG[1]);
+  global___cha_analysis___ChaVisitor___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_global___cha_analysis___ChaVisitor(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
-const classtable_elt_t VFT_analysis___reachable_method_analysis___DefaultReachableMethodAnalysis[53] = {
-  {(bigint) 2299 /* 0: Identity */},
+const classtable_elt_t VFT_global___instantiated_type_analysis___DefaultInstantiatedTypeAnalysis[57] = {
+  {(bigint) 3259 /* 0: Identity */},
   {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "DefaultReachableMethodAnalysis" /* 2: Class Name */},
-  {(bigint) 3 /* 3: DefaultReachableMethodAnalysis < Object: superclass typecheck marker */},
-  {(bigint) 71 /* 4: DefaultReachableMethodAnalysis < ReachableMethodAnalysis: superclass typecheck marker */},
-  {(bigint) 2299 /* 5: DefaultReachableMethodAnalysis < DefaultReachableMethodAnalysis: superclass typecheck marker */},
+  {(bigint) "DefaultInstantiatedTypeAnalysis" /* 2: Class Name */},
+  {(bigint) 3 /* 3: DefaultInstantiatedTypeAnalysis < Object: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {(bigint) 191 /* 5: DefaultInstantiatedTypeAnalysis < InstantiatedTypeAnalysis: superclass typecheck marker */},
+  {(bigint) 3259 /* 6: DefaultInstantiatedTypeAnalysis < DefaultInstantiatedTypeAnalysis: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -154300,7 +183692,7 @@ const classtable_elt_t VFT_analysis___reachable_method_analysis___DefaultReachab
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: DefaultReachableMethodAnalysis < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: DefaultInstantiatedTypeAnalysis < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -154316,6 +183708,8 @@ const classtable_elt_t VFT_analysis___reachable_method_analysis___DefaultReachab
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -154329,72 +183723,80 @@ const classtable_elt_t VFT_analysis___reachable_method_analysis___DefaultReachab
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: DefaultReachableMethodAnalysis < ReachableMethodAnalysis: superclass init_table position */},
-  {(bigint) analysis___reachable_method_analysis___DefaultReachableMethodAnalysis___is_iroutine_reachable},
-  {(bigint) analysis___reachable_method_analysis___DefaultReachableMethodAnalysis___is_method_reachable},
-  {(bigint) analysis___reachable_method_analysis___ReachableMethodAnalysis___init},
-  {(bigint) 2 /* 51: DefaultReachableMethodAnalysis < DefaultReachableMethodAnalysis: superclass init_table position */},
-  {(bigint) analysis___reachable_method_analysis___DefaultReachableMethodAnalysis___init},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 0 /* 53: DefaultInstantiatedTypeAnalysis < InstantiatedTypeAnalysis: superclass init_table position */},
+  {(bigint) global___instantiated_type_analysis___DefaultInstantiatedTypeAnalysis___is_class_instantiated},
+  {(bigint) 2 /* 55: DefaultInstantiatedTypeAnalysis < DefaultInstantiatedTypeAnalysis: superclass init_table position */},
+  {(bigint) global___instantiated_type_analysis___DefaultInstantiatedTypeAnalysis___init},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-void INIT_ATTRIBUTES__analysis___reachable_method_analysis___DefaultReachableMethodAnalysis(val_t p0){
+static const char LOCATE_INIT_ATTRIBUTES__global___instantiated_type_analysis___DefaultInstantiatedTypeAnalysis[] = "init var of DefaultInstantiatedTypeAnalysis";
+void INIT_ATTRIBUTES__global___instantiated_type_analysis___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__analysis___reachable_method_analysis___DefaultReachableMethodAnalysis;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__global___instantiated_type_analysis___DefaultInstantiatedTypeAnalysis;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_analysis___reachable_method_analysis___DefaultReachableMethodAnalysis(void)
+val_t NEW_global___instantiated_type_analysis___DefaultInstantiatedTypeAnalysis(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 2);
-  obj->vft = (classtable_elt_t*)VFT_analysis___reachable_method_analysis___DefaultReachableMethodAnalysis;
+  obj->vft = (classtable_elt_t*)VFT_global___instantiated_type_analysis___DefaultInstantiatedTypeAnalysis;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_analysis___reachable_method_analysis___DefaultReachableMethodAnalysis(val_t p0){
+static const char LOCATE_CHECKNEW_global___instantiated_type_analysis___DefaultInstantiatedTypeAnalysis[] = "check new DefaultInstantiatedTypeAnalysis";
+void CHECKNEW_global___instantiated_type_analysis___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_analysis___reachable_method_analysis___DefaultReachableMethodAnalysis;
+  fra.me.meth = LOCATE_CHECKNEW_global___instantiated_type_analysis___DefaultInstantiatedTypeAnalysis;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_DefaultReachableMethodAnalysis_analysis___reachable_method_analysis___DefaultReachableMethodAnalysis___init(void){
+static const char LOCATE_NEW_DefaultInstantiatedTypeAnalysis_global___instantiated_type_analysis___DefaultInstantiatedTypeAnalysis___init[] = "new DefaultInstantiatedTypeAnalysis instantiated_type_analysis::DefaultInstantiatedTypeAnalysis::init";
+val_t NEW_DefaultInstantiatedTypeAnalysis_global___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 = 64;
-  fra.me.meth = LOCATE_NEW_DefaultReachableMethodAnalysis_analysis___reachable_method_analysis___DefaultReachableMethodAnalysis___init;
+  fra.me.line = 69;
+  fra.me.meth = LOCATE_NEW_DefaultInstantiatedTypeAnalysis_global___instantiated_type_analysis___DefaultInstantiatedTypeAnalysis___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./analysis//reachable_method_analysis.nit:64 */
-  fra.me.REG[0] = NEW_analysis___reachable_method_analysis___DefaultReachableMethodAnalysis();
-  INIT_ATTRIBUTES__analysis___reachable_method_analysis___DefaultReachableMethodAnalysis(fra.me.REG[0]);
-  analysis___reachable_method_analysis___DefaultReachableMethodAnalysis___init(fra.me.REG[0], init_table);
-  CHECKNEW_analysis___reachable_method_analysis___DefaultReachableMethodAnalysis(fra.me.REG[0]);
+  /* global/instantiated_type_analysis.nit:69 */
+  fra.me.REG[0] = NEW_global___instantiated_type_analysis___DefaultInstantiatedTypeAnalysis();
+  INIT_ATTRIBUTES__global___instantiated_type_analysis___DefaultInstantiatedTypeAnalysis(fra.me.REG[0]);
+  global___instantiated_type_analysis___DefaultInstantiatedTypeAnalysis___init(fra.me.REG[0], init_table);
+  CHECKNEW_global___instantiated_type_analysis___DefaultInstantiatedTypeAnalysis(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_analysis___cha_analysis___ChaContext[53] = {
-  {(bigint) 2347 /* 0: Identity */},
-  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ChaContext" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ChaContext < Object: superclass typecheck marker */},
-  {(bigint) 71 /* 4: ChaContext < ReachableMethodAnalysis: superclass typecheck marker */},
-  {(bigint) 2347 /* 5: ChaContext < ChaContext: superclass typecheck marker */},
+const classtable_elt_t VFT_global___rta_analysis___RtaContext[59] = {
+  {(bigint) 363 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "RtaContext" /* 2: Class Name */},
+  {(bigint) 3 /* 3: RtaContext < Object: superclass typecheck marker */},
+  {(bigint) 71 /* 4: RtaContext < ReachableMethodAnalysis: superclass typecheck marker */},
+  {(bigint) 191 /* 5: RtaContext < InstantiatedTypeAnalysis: superclass typecheck marker */},
+  {(bigint) 363 /* 6: RtaContext < RtaContext: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -154407,7 +183809,7 @@ const classtable_elt_t VFT_analysis___cha_analysis___ChaContext[53] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: ChaContext < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: RtaContext < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -154423,6 +183825,8 @@ const classtable_elt_t VFT_analysis___cha_analysis___ChaContext[53] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -154436,85 +183840,105 @@ const classtable_elt_t VFT_analysis___cha_analysis___ChaContext[53] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: ChaContext < ReachableMethodAnalysis: superclass init_table position */},
-  {(bigint) analysis___cha_analysis___ChaContext___is_iroutine_reachable},
-  {(bigint) analysis___cha_analysis___ChaContext___is_method_reachable},
-  {(bigint) analysis___reachable_method_analysis___ReachableMethodAnalysis___init},
-  {(bigint) 2 /* 51: ChaContext < ChaContext: superclass init_table position */},
-  {(bigint) analysis___cha_analysis___ChaContext___reachable_iroutines},
+  {(bigint) 0 /* 50: RtaContext < ReachableMethodAnalysis: superclass init_table position */},
+  {(bigint) global___rta_analysis___RtaContext___is_iroutine_reachable},
+  {(bigint) global___rta_analysis___RtaContext___is_method_reachable},
+  {(bigint) 2 /* 53: RtaContext < InstantiatedTypeAnalysis: superclass init_table position */},
+  {(bigint) global___rta_analysis___RtaContext___is_class_instantiated},
+  {(bigint) 3 /* 55: RtaContext < RtaContext: superclass init_table position */},
+  {(bigint) global___rta_analysis___RtaContext___init},
+  {(bigint) global___rta_analysis___RtaContext___instanciated_classes},
+  {(bigint) global___rta_analysis___RtaContext___reachable_iroutines},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ChaContext::_reachable_iroutines */
-void INIT_ATTRIBUTES__analysis___cha_analysis___ChaContext(val_t p0){
+/* 2: Attribute RtaContext::_instanciated_classes */
+/* 3: Attribute RtaContext::_reachable_iroutines */
+static const char LOCATE_INIT_ATTRIBUTES__global___rta_analysis___RtaContext[] = "init var of RtaContext";
+void INIT_ATTRIBUTES__global___rta_analysis___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__analysis___cha_analysis___ChaContext;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__global___rta_analysis___RtaContext;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./analysis//cha_analysis.nit:26 */
+  /* global/rta_analysis.nit:29 */
+  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
+  ATTR_global___rta_analysis___RtaContext____instanciated_classes(fra.me.REG[0]) = fra.me.REG[1];
+  /* global/rta_analysis.nit:33 */
   fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
-  ATTR_analysis___cha_analysis___ChaContext____reachable_iroutines(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_global___rta_analysis___RtaContext____reachable_iroutines(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_analysis___cha_analysis___ChaContext(void)
+val_t NEW_global___rta_analysis___RtaContext(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_analysis___cha_analysis___ChaContext;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_global___rta_analysis___RtaContext;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_analysis___cha_analysis___ChaContext(val_t p0){
+static const char LOCATE_CHECKNEW_global___rta_analysis___RtaContext[] = "check new RtaContext";
+void CHECKNEW_global___rta_analysis___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_analysis___cha_analysis___ChaContext;
+  fra.me.meth = LOCATE_CHECKNEW_global___rta_analysis___RtaContext;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_analysis___cha_analysis___ChaContext____reachable_iroutines(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_global___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_global___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;
 }
-val_t NEW_ChaContext_analysis___reachable_method_analysis___ReachableMethodAnalysis___init(void){
+static const char LOCATE_NEW_RtaContext_global___rta_analysis___RtaContext___init[] = "new RtaContext rta_analysis::RtaContext::init";
+val_t NEW_RtaContext_global___rta_analysis___RtaContext___init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[3] = {0, 0, 0};
+  int init_table[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_ChaContext_analysis___reachable_method_analysis___ReachableMethodAnalysis___init;
+  fra.me.line = 28;
+  fra.me.meth = LOCATE_NEW_RtaContext_global___rta_analysis___RtaContext___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = NEW_analysis___cha_analysis___ChaContext();
-  INIT_ATTRIBUTES__analysis___cha_analysis___ChaContext(fra.me.REG[0]);
-  analysis___reachable_method_analysis___ReachableMethodAnalysis___init(fra.me.REG[0], init_table);
-  CHECKNEW_analysis___cha_analysis___ChaContext(fra.me.REG[0]);
+  /* global/rta_analysis.nit:28 */
+  fra.me.REG[0] = NEW_global___rta_analysis___RtaContext();
+  INIT_ATTRIBUTES__global___rta_analysis___RtaContext(fra.me.REG[0]);
+  global___rta_analysis___RtaContext___init(fra.me.REG[0], init_table);
+  CHECKNEW_global___rta_analysis___RtaContext(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_analysis___cha_analysis___ChaBuilder[54] = {
-  {(bigint) 287 /* 0: Identity */},
-  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ChaBuilder" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ChaBuilder < Object: superclass typecheck marker */},
-  {(bigint) 287 /* 4: ChaBuilder < ChaBuilder: superclass typecheck marker */},
+const classtable_elt_t VFT_global___rta_analysis___RtaBuilder[64] = {
+  {(bigint) 63 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "RtaBuilder" /* 2: Class Name */},
+  {(bigint) 3 /* 3: RtaBuilder < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 4: RtaBuilder < RtaBuilder: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -154528,7 +183952,7 @@ const classtable_elt_t VFT_analysis___cha_analysis___ChaBuilder[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: ChaBuilder < Object: superclass init_table position */},
+  {(bigint) 0 /* 19: RtaBuilder < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -154544,6 +183968,8 @@ const classtable_elt_t VFT_analysis___cha_analysis___ChaBuilder[54] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -154557,102 +183983,134 @@ const classtable_elt_t VFT_analysis___cha_analysis___ChaBuilder[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: ChaBuilder < ChaBuilder: superclass init_table position */},
-  {(bigint) analysis___cha_analysis___ChaBuilder___iroutine_to_search},
-  {(bigint) analysis___cha_analysis___ChaBuilder___context},
-  {(bigint) analysis___cha_analysis___ChaBuilder___program},
-  {(bigint) analysis___cha_analysis___ChaBuilder___init},
-  {(bigint) analysis___cha_analysis___ChaBuilder___add_search},
-  {(bigint) analysis___cha_analysis___ChaBuilder___work},
+  {(bigint) 1 /* 50: RtaBuilder < RtaBuilder: superclass init_table position */},
+  {(bigint) global___rta_analysis___RtaBuilder___context},
+  {(bigint) global___rta_analysis___RtaBuilder___program},
+  {(bigint) global___rta_analysis___RtaBuilder___iroutine_to_search},
+  {(bigint) global___rta_analysis___RtaBuilder___call_sites},
+  {(bigint) global___rta_analysis___RtaBuilder___called_methods},
+  {(bigint) global___rta_analysis___RtaBuilder___init},
+  {(bigint) global___rta_analysis___RtaBuilder___check_method},
+  {(bigint) global___rta_analysis___RtaBuilder___check_call_sites},
+  {(bigint) global___rta_analysis___RtaBuilder___add_instantiated_class},
+  {(bigint) global___rta_analysis___RtaBuilder___add_reachable_call},
+  {(bigint) global___rta_analysis___RtaBuilder___add_reachable_iroutine},
+  {(bigint) global___rta_analysis___RtaBuilder___force_some_type_analysis},
+  {(bigint) global___rta_analysis___RtaBuilder___work},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ChaBuilder::_iroutine_to_search */
-/* 3: Attribute ChaBuilder::_context */
-/* 4: Attribute ChaBuilder::_program */
-void INIT_ATTRIBUTES__analysis___cha_analysis___ChaBuilder(val_t p0){
+/* 2: Attribute RtaBuilder::_context */
+/* 3: Attribute RtaBuilder::_program */
+/* 4: Attribute RtaBuilder::_iroutine_to_search */
+/* 5: Attribute RtaBuilder::_call_sites */
+/* 6: Attribute RtaBuilder::_called_methods */
+static const char LOCATE_INIT_ATTRIBUTES__global___rta_analysis___RtaBuilder[] = "init var of RtaBuilder";
+void INIT_ATTRIBUTES__global___rta_analysis___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__analysis___cha_analysis___ChaBuilder;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__global___rta_analysis___RtaBuilder;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./analysis//cha_analysis.nit:38 */
+  /* global/rta_analysis.nit:47 */
   fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  ATTR_analysis___cha_analysis___ChaBuilder____iroutine_to_search(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_global___rta_analysis___RtaBuilder____iroutine_to_search(fra.me.REG[0]) = fra.me.REG[1];
+  /* global/rta_analysis.nit:48 */
+  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
+  ATTR_global___rta_analysis___RtaBuilder____call_sites(fra.me.REG[0]) = fra.me.REG[1];
+  /* global/rta_analysis.nit:49 */
+  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
+  ATTR_global___rta_analysis___RtaBuilder____called_methods(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_analysis___cha_analysis___ChaBuilder(void)
+val_t NEW_global___rta_analysis___RtaBuilder(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_analysis___cha_analysis___ChaBuilder;
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_global___rta_analysis___RtaBuilder;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_analysis___cha_analysis___ChaBuilder(val_t p0){
+static const char LOCATE_CHECKNEW_global___rta_analysis___RtaBuilder[] = "check new RtaBuilder";
+void CHECKNEW_global___rta_analysis___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_analysis___cha_analysis___ChaBuilder;
+  fra.me.meth = LOCATE_CHECKNEW_global___rta_analysis___RtaBuilder;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_analysis___cha_analysis___ChaBuilder____iroutine_to_search(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_global___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_global___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_global___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_analysis___cha_analysis___ChaBuilder____context(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_global___rta_analysis___RtaBuilder____call_sites(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_context", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_call_sites", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_analysis___cha_analysis___ChaBuilder____program(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_global___rta_analysis___RtaBuilder____called_methods(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_program", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_called_methods", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ChaBuilder_analysis___cha_analysis___ChaBuilder___init(val_t p0){
+static const char LOCATE_NEW_RtaBuilder_global___rta_analysis___RtaBuilder___init[] = "new RtaBuilder rta_analysis::RtaBuilder::init";
+val_t NEW_RtaBuilder_global___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 = 42;
-  fra.me.meth = LOCATE_NEW_ChaBuilder_analysis___cha_analysis___ChaBuilder___init;
+  fra.me.line = 51;
+  fra.me.meth = LOCATE_NEW_RtaBuilder_global___rta_analysis___RtaBuilder___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   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_analysis___cha_analysis___ChaBuilder();
-  INIT_ATTRIBUTES__analysis___cha_analysis___ChaBuilder(fra.me.REG[1]);
-  analysis___cha_analysis___ChaBuilder___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_analysis___cha_analysis___ChaBuilder(fra.me.REG[1]);
+  /* global/rta_analysis.nit:51 */
+  fra.me.REG[1] = NEW_global___rta_analysis___RtaBuilder();
+  INIT_ATTRIBUTES__global___rta_analysis___RtaBuilder(fra.me.REG[1]);
+  global___rta_analysis___RtaBuilder___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_global___rta_analysis___RtaBuilder(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_analysis___cha_analysis___ChaVisitor[59] = {
-  {(bigint) 2343 /* 0: Identity */},
+const classtable_elt_t VFT_global___rta_analysis___RtaVisitor[62] = {
+  {(bigint) 359 /* 0: Identity */},
   {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ChaVisitor" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ChaVisitor < Object: superclass typecheck marker */},
-  {(bigint) 223 /* 4: ChaVisitor < ICodeVisitor: superclass typecheck marker */},
-  {(bigint) 2343 /* 5: ChaVisitor < ChaVisitor: superclass typecheck marker */},
+  {(bigint) "RtaVisitor" /* 2: Class Name */},
+  {(bigint) 3 /* 3: RtaVisitor < Object: superclass typecheck marker */},
+  {(bigint) 211 /* 4: RtaVisitor < ICodeVisitor: superclass typecheck marker */},
+  {(bigint) 359 /* 5: RtaVisitor < RtaVisitor: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -154665,7 +184123,7 @@ const classtable_elt_t VFT_analysis___cha_analysis___ChaVisitor[59] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: ChaVisitor < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: RtaVisitor < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -154681,6 +184139,8 @@ const classtable_elt_t VFT_analysis___cha_analysis___ChaVisitor[59] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -154694,96 +184154,103 @@ const classtable_elt_t VFT_analysis___cha_analysis___ChaVisitor[59] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: ChaVisitor < ICodeVisitor: superclass init_table position */},
+  {(bigint) 0 /* 50: RtaVisitor < ICodeVisitor: superclass init_table position */},
   {(bigint) icode___icode_tools___ICodeVisitor___visit_iregister_read},
   {(bigint) icode___icode_tools___ICodeVisitor___visit_iregister_write},
   {(bigint) icode___icode_tools___ICodeVisitor___current_icode},
-  {(bigint) analysis___cha_analysis___ChaVisitor___visit_icode},
+  {(bigint) global___rta_analysis___RtaVisitor___visit_icode},
   {(bigint) icode___icode_tools___ICodeVisitor___visit_closure_defs},
   {(bigint) icode___icode_tools___ICodeVisitor___visit_iroutine},
   {(bigint) icode___icode_tools___ICodeVisitor___init},
-  {(bigint) 2 /* 55: ChaVisitor < ChaVisitor: superclass init_table position */},
-  {(bigint) analysis___cha_analysis___ChaVisitor___builder},
+  {(bigint) 2 /* 58: RtaVisitor < RtaVisitor: superclass init_table position */},
+  {(bigint) global___rta_analysis___RtaVisitor___builder},
   {(bigint) icode___icode_tools___ICodeVisitor___visit_icode},
-  {(bigint) analysis___cha_analysis___ChaVisitor___init},
+  {(bigint) global___rta_analysis___RtaVisitor___init},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ChaVisitor::_current_icode */
-/* 3: Attribute ChaVisitor::_builder */
-void INIT_ATTRIBUTES__analysis___cha_analysis___ChaVisitor(val_t p0){
+/* 2: Attribute RtaVisitor::_current_icode */
+/* 3: Attribute RtaVisitor::_builder */
+static const char LOCATE_INIT_ATTRIBUTES__global___rta_analysis___RtaVisitor[] = "init var of RtaVisitor";
+void INIT_ATTRIBUTES__global___rta_analysis___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__analysis___cha_analysis___ChaVisitor;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__global___rta_analysis___RtaVisitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_tools.nit:29 */
+  /* icode/icode_tools.nit:29 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_tools___ICodeVisitor____current_icode(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_analysis___cha_analysis___ChaVisitor(void)
+val_t NEW_global___rta_analysis___RtaVisitor(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_analysis___cha_analysis___ChaVisitor;
+  obj->vft = (classtable_elt_t*)VFT_global___rta_analysis___RtaVisitor;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_analysis___cha_analysis___ChaVisitor(val_t p0){
+static const char LOCATE_CHECKNEW_global___rta_analysis___RtaVisitor[] = "check new RtaVisitor";
+void CHECKNEW_global___rta_analysis___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_analysis___cha_analysis___ChaVisitor;
+  fra.me.meth = LOCATE_CHECKNEW_global___rta_analysis___RtaVisitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_analysis___cha_analysis___ChaVisitor____builder(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_global___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_ChaVisitor_analysis___cha_analysis___ChaVisitor___init(val_t p0){
+static const char LOCATE_NEW_RtaVisitor_global___rta_analysis___RtaVisitor___init[] = "new RtaVisitor rta_analysis::RtaVisitor::init";
+val_t NEW_RtaVisitor_global___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 = 126;
-  fra.me.meth = LOCATE_NEW_ChaVisitor_analysis___cha_analysis___ChaVisitor___init;
+  fra.me.line = 238;
+  fra.me.meth = LOCATE_NEW_RtaVisitor_global___rta_analysis___RtaVisitor___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./analysis//cha_analysis.nit:126 */
-  fra.me.REG[1] = NEW_analysis___cha_analysis___ChaVisitor();
-  INIT_ATTRIBUTES__analysis___cha_analysis___ChaVisitor(fra.me.REG[1]);
-  analysis___cha_analysis___ChaVisitor___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_analysis___cha_analysis___ChaVisitor(fra.me.REG[1]);
+  /* global/rta_analysis.nit:238 */
+  fra.me.REG[1] = NEW_global___rta_analysis___RtaVisitor();
+  INIT_ATTRIBUTES__global___rta_analysis___RtaVisitor(fra.me.REG[1]);
+  global___rta_analysis___RtaVisitor___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_global___rta_analysis___RtaVisitor(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_analysis___instantiated_type_analysis___InstantiatedTypeAnalysis[54] = {
-  {(bigint) 203 /* 0: Identity */},
+const classtable_elt_t VFT_global___reachable_as_init___DefaultReachableAsInitAnalysis[54] = {
+  {(bigint) 3255 /* 0: Identity */},
   {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "InstantiatedTypeAnalysis" /* 2: Class Name */},
-  {(bigint) 3 /* 3: InstantiatedTypeAnalysis < Object: superclass typecheck marker */},
+  {(bigint) "DefaultReachableAsInitAnalysis" /* 2: Class Name */},
+  {(bigint) 3 /* 3: DefaultReachableAsInitAnalysis < Object: superclass typecheck marker */},
+  {(bigint) 83 /* 4: DefaultReachableAsInitAnalysis < ReachableAsInitAnalysis: superclass typecheck marker */},
+  {(bigint) 3255 /* 5: DefaultReachableAsInitAnalysis < DefaultReachableAsInitAnalysis: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 203 /* 5: InstantiatedTypeAnalysis < InstantiatedTypeAnalysis: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -154796,7 +184263,7 @@ const classtable_elt_t VFT_analysis___instantiated_type_analysis___InstantiatedT
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: InstantiatedTypeAnalysis < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: DefaultReachableAsInitAnalysis < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -154812,6 +184279,8 @@ const classtable_elt_t VFT_analysis___instantiated_type_analysis___InstantiatedT
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -154825,73 +184294,78 @@ const classtable_elt_t VFT_analysis___instantiated_type_analysis___InstantiatedT
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 1 /* 51: InstantiatedTypeAnalysis < InstantiatedTypeAnalysis: superclass init_table position */},
-  {(bigint) analysis___instantiated_type_analysis___InstantiatedTypeAnalysis___is_class_instantiated},
-  {(bigint) analysis___instantiated_type_analysis___InstantiatedTypeAnalysis___init},
+  {(bigint) 0 /* 50: DefaultReachableAsInitAnalysis < ReachableAsInitAnalysis: superclass init_table position */},
+  {(bigint) global___reachable_as_init___DefaultReachableAsInitAnalysis___is_method_reachable_as_init},
+  {(bigint) 2 /* 52: DefaultReachableAsInitAnalysis < DefaultReachableAsInitAnalysis: superclass init_table position */},
+  {(bigint) global___reachable_as_init___DefaultReachableAsInitAnalysis___init},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-void INIT_ATTRIBUTES__analysis___instantiated_type_analysis___InstantiatedTypeAnalysis(val_t p0){
+static const char LOCATE_INIT_ATTRIBUTES__global___reachable_as_init___DefaultReachableAsInitAnalysis[] = "init var of DefaultReachableAsInitAnalysis";
+void INIT_ATTRIBUTES__global___reachable_as_init___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__analysis___instantiated_type_analysis___InstantiatedTypeAnalysis;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__global___reachable_as_init___DefaultReachableAsInitAnalysis;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_analysis___instantiated_type_analysis___InstantiatedTypeAnalysis(void)
+val_t NEW_global___reachable_as_init___DefaultReachableAsInitAnalysis(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 2);
-  obj->vft = (classtable_elt_t*)VFT_analysis___instantiated_type_analysis___InstantiatedTypeAnalysis;
+  obj->vft = (classtable_elt_t*)VFT_global___reachable_as_init___DefaultReachableAsInitAnalysis;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_analysis___instantiated_type_analysis___InstantiatedTypeAnalysis(val_t p0){
+static const char LOCATE_CHECKNEW_global___reachable_as_init___DefaultReachableAsInitAnalysis[] = "check new DefaultReachableAsInitAnalysis";
+void CHECKNEW_global___reachable_as_init___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_analysis___instantiated_type_analysis___InstantiatedTypeAnalysis;
+  fra.me.meth = LOCATE_CHECKNEW_global___reachable_as_init___DefaultReachableAsInitAnalysis;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_InstantiatedTypeAnalysis_analysis___instantiated_type_analysis___InstantiatedTypeAnalysis___init(void){
+static const char LOCATE_NEW_DefaultReachableAsInitAnalysis_global___reachable_as_init___DefaultReachableAsInitAnalysis___init[] = "new DefaultReachableAsInitAnalysis reachable_as_init::DefaultReachableAsInitAnalysis::init";
+val_t NEW_DefaultReachableAsInitAnalysis_global___reachable_as_init___DefaultReachableAsInitAnalysis___init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[2] = {0, 0};
+  int init_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_InstantiatedTypeAnalysis_analysis___instantiated_type_analysis___InstantiatedTypeAnalysis___init;
+  fra.me.line = 60;
+  fra.me.meth = LOCATE_NEW_DefaultReachableAsInitAnalysis_global___reachable_as_init___DefaultReachableAsInitAnalysis___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = NEW_analysis___instantiated_type_analysis___InstantiatedTypeAnalysis();
-  INIT_ATTRIBUTES__analysis___instantiated_type_analysis___InstantiatedTypeAnalysis(fra.me.REG[0]);
-  analysis___instantiated_type_analysis___InstantiatedTypeAnalysis___init(fra.me.REG[0], init_table);
-  CHECKNEW_analysis___instantiated_type_analysis___InstantiatedTypeAnalysis(fra.me.REG[0]);
+  /* global/reachable_as_init.nit:60 */
+  fra.me.REG[0] = NEW_global___reachable_as_init___DefaultReachableAsInitAnalysis();
+  INIT_ATTRIBUTES__global___reachable_as_init___DefaultReachableAsInitAnalysis(fra.me.REG[0]);
+  global___reachable_as_init___DefaultReachableAsInitAnalysis___init(fra.me.REG[0], init_table);
+  CHECKNEW_global___reachable_as_init___DefaultReachableAsInitAnalysis(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_analysis___instantiated_type_analysis___DefaultInstantiatedTypeAnalysis[56] = {
-  {(bigint) 2311 /* 0: Identity */},
-  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "DefaultInstantiatedTypeAnalysis" /* 2: Class Name */},
-  {(bigint) 3 /* 3: DefaultInstantiatedTypeAnalysis < Object: superclass typecheck marker */},
+const classtable_elt_t VFT_global___reachable_as_init_impl___ReachableAsInitBuilder[55] = {
+  {(bigint) 79 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReachableAsInitBuilder" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReachableAsInitBuilder < Object: superclass typecheck marker */},
+  {(bigint) 79 /* 4: ReachableAsInitBuilder < ReachableAsInitBuilder: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 203 /* 5: DefaultInstantiatedTypeAnalysis < InstantiatedTypeAnalysis: superclass typecheck marker */},
-  {(bigint) 2311 /* 6: DefaultInstantiatedTypeAnalysis < DefaultInstantiatedTypeAnalysis: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -154903,7 +184377,7 @@ const classtable_elt_t VFT_analysis___instantiated_type_analysis___DefaultInstan
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: DefaultInstantiatedTypeAnalysis < Object: superclass init_table position */},
+  {(bigint) 0 /* 19: ReachableAsInitBuilder < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -154919,6 +184393,8 @@ const classtable_elt_t VFT_analysis___instantiated_type_analysis___DefaultInstan
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -154932,76 +184408,102 @@ const classtable_elt_t VFT_analysis___instantiated_type_analysis___DefaultInstan
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 1 /* 51: DefaultInstantiatedTypeAnalysis < InstantiatedTypeAnalysis: superclass init_table position */},
-  {(bigint) analysis___instantiated_type_analysis___DefaultInstantiatedTypeAnalysis___is_class_instantiated},
-  {(bigint) analysis___instantiated_type_analysis___InstantiatedTypeAnalysis___init},
-  {(bigint) 2 /* 54: DefaultInstantiatedTypeAnalysis < DefaultInstantiatedTypeAnalysis: superclass init_table position */},
-  {(bigint) analysis___instantiated_type_analysis___DefaultInstantiatedTypeAnalysis___init},
+  {(bigint) 1 /* 50: ReachableAsInitBuilder < ReachableAsInitBuilder: superclass init_table position */},
+  {(bigint) global___reachable_as_init_impl___ReachableAsInitBuilder___context},
+  {(bigint) global___reachable_as_init_impl___ReachableAsInitBuilder___program},
+  {(bigint) global___reachable_as_init_impl___ReachableAsInitBuilder___work},
+  {(bigint) global___reachable_as_init_impl___ReachableAsInitBuilder___init},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-void INIT_ATTRIBUTES__analysis___instantiated_type_analysis___DefaultInstantiatedTypeAnalysis(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute ReachableAsInitBuilder::_context */
+/* 3: Attribute ReachableAsInitBuilder::_program */
+static const char LOCATE_INIT_ATTRIBUTES__global___reachable_as_init_impl___ReachableAsInitBuilder[] = "init var of ReachableAsInitBuilder";
+void INIT_ATTRIBUTES__global___reachable_as_init_impl___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__analysis___instantiated_type_analysis___DefaultInstantiatedTypeAnalysis;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__global___reachable_as_init_impl___ReachableAsInitBuilder;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* global/reachable_as_init_impl.nit:24 */
+  fra.me.REG[1] = NEW_ReachableAsInitAnalysisImpl_global___reachable_as_init_impl___ReachableAsInitAnalysisImpl___init();
+  ATTR_global___reachable_as_init_impl___ReachableAsInitBuilder____context(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_analysis___instantiated_type_analysis___DefaultInstantiatedTypeAnalysis(void)
+val_t NEW_global___reachable_as_init_impl___ReachableAsInitBuilder(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 2);
-  obj->vft = (classtable_elt_t*)VFT_analysis___instantiated_type_analysis___DefaultInstantiatedTypeAnalysis;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_global___reachable_as_init_impl___ReachableAsInitBuilder;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_analysis___instantiated_type_analysis___DefaultInstantiatedTypeAnalysis(val_t p0){
+static const char LOCATE_CHECKNEW_global___reachable_as_init_impl___ReachableAsInitBuilder[] = "check new ReachableAsInitBuilder";
+void CHECKNEW_global___reachable_as_init_impl___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_analysis___instantiated_type_analysis___DefaultInstantiatedTypeAnalysis;
+  fra.me.meth = LOCATE_CHECKNEW_global___reachable_as_init_impl___ReachableAsInitBuilder;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_global___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_global___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_DefaultInstantiatedTypeAnalysis_analysis___instantiated_type_analysis___DefaultInstantiatedTypeAnalysis___init(void){
-  struct {struct stack_frame_t me;} fra;
+static const char LOCATE_NEW_ReachableAsInitBuilder_global___reachable_as_init_impl___ReachableAsInitBuilder___init[] = "new ReachableAsInitBuilder reachable_as_init_impl::ReachableAsInitBuilder::init";
+val_t NEW_ReachableAsInitBuilder_global___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[3] = {0, 0, 0};
+  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 = 69;
-  fra.me.meth = LOCATE_NEW_DefaultInstantiatedTypeAnalysis_analysis___instantiated_type_analysis___DefaultInstantiatedTypeAnalysis___init;
+  fra.me.line = 36;
+  fra.me.meth = LOCATE_NEW_ReachableAsInitBuilder_global___reachable_as_init_impl___ReachableAsInitBuilder___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./analysis//instantiated_type_analysis.nit:69 */
-  fra.me.REG[0] = NEW_analysis___instantiated_type_analysis___DefaultInstantiatedTypeAnalysis();
-  INIT_ATTRIBUTES__analysis___instantiated_type_analysis___DefaultInstantiatedTypeAnalysis(fra.me.REG[0]);
-  analysis___instantiated_type_analysis___DefaultInstantiatedTypeAnalysis___init(fra.me.REG[0], init_table);
-  CHECKNEW_analysis___instantiated_type_analysis___DefaultInstantiatedTypeAnalysis(fra.me.REG[0]);
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* global/reachable_as_init_impl.nit:36 */
+  fra.me.REG[1] = NEW_global___reachable_as_init_impl___ReachableAsInitBuilder();
+  INIT_ATTRIBUTES__global___reachable_as_init_impl___ReachableAsInitBuilder(fra.me.REG[1]);
+  global___reachable_as_init_impl___ReachableAsInitBuilder___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_global___reachable_as_init_impl___ReachableAsInitBuilder(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
-const classtable_elt_t VFT_analysis___rta_analysis___RtaContext[58] = {
-  {(bigint) 359 /* 0: Identity */},
-  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "RtaContext" /* 2: Class Name */},
-  {(bigint) 3 /* 3: RtaContext < Object: superclass typecheck marker */},
-  {(bigint) 71 /* 4: RtaContext < ReachableMethodAnalysis: superclass typecheck marker */},
-  {(bigint) 203 /* 5: RtaContext < InstantiatedTypeAnalysis: superclass typecheck marker */},
-  {(bigint) 359 /* 6: RtaContext < RtaContext: superclass typecheck marker */},
+const classtable_elt_t VFT_global___reachable_as_init_impl___ReachableAsInitAnalysisImpl[54] = {
+  {(bigint) 2999 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReachableAsInitAnalysisImpl" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReachableAsInitAnalysisImpl < Object: superclass typecheck marker */},
+  {(bigint) 83 /* 4: ReachableAsInitAnalysisImpl < ReachableAsInitAnalysis: superclass typecheck marker */},
+  {(bigint) 2999 /* 5: ReachableAsInitAnalysisImpl < ReachableAsInitAnalysisImpl: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -155013,7 +184515,7 @@ const classtable_elt_t VFT_analysis___rta_analysis___RtaContext[58] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: RtaContext < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: ReachableAsInitAnalysisImpl < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -155029,6 +184531,8 @@ const classtable_elt_t VFT_analysis___rta_analysis___RtaContext[58] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -155042,100 +184546,91 @@ const classtable_elt_t VFT_analysis___rta_analysis___RtaContext[58] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: RtaContext < ReachableMethodAnalysis: superclass init_table position */},
-  {(bigint) analysis___rta_analysis___RtaContext___is_iroutine_reachable},
-  {(bigint) analysis___rta_analysis___RtaContext___is_method_reachable},
-  {(bigint) analysis___reachable_method_analysis___ReachableMethodAnalysis___init},
-  {(bigint) 2 /* 51: RtaContext < InstantiatedTypeAnalysis: superclass init_table position */},
-  {(bigint) analysis___rta_analysis___RtaContext___is_class_instantiated},
-  {(bigint) analysis___instantiated_type_analysis___InstantiatedTypeAnalysis___init},
-  {(bigint) 3 /* 54: RtaContext < RtaContext: superclass init_table position */},
-  {(bigint) analysis___rta_analysis___RtaContext___init},
-  {(bigint) analysis___rta_analysis___RtaContext___instanciated_classes},
-  {(bigint) analysis___rta_analysis___RtaContext___reachable_iroutines},
+  {(bigint) 0 /* 50: ReachableAsInitAnalysisImpl < ReachableAsInitAnalysis: superclass init_table position */},
+  {(bigint) global___reachable_as_init_impl___ReachableAsInitAnalysisImpl___is_method_reachable_as_init},
+  {(bigint) 2 /* 52: ReachableAsInitAnalysisImpl < ReachableAsInitAnalysisImpl: superclass init_table position */},
+  {(bigint) global___reachable_as_init_impl___ReachableAsInitAnalysisImpl___init},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute RtaContext::_instanciated_classes */
-/* 3: Attribute RtaContext::_reachable_iroutines */
-void INIT_ATTRIBUTES__analysis___rta_analysis___RtaContext(val_t p0){
+/* 2: Attribute ReachableAsInitAnalysisImpl::_methods */
+static const char LOCATE_INIT_ATTRIBUTES__global___reachable_as_init_impl___ReachableAsInitAnalysisImpl[] = "init var of ReachableAsInitAnalysisImpl";
+void INIT_ATTRIBUTES__global___reachable_as_init_impl___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__analysis___rta_analysis___RtaContext;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__global___reachable_as_init_impl___ReachableAsInitAnalysisImpl;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   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_standard___collection___hash_collection___HashSet___init();
-  ATTR_analysis___rta_analysis___RtaContext____instanciated_classes(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./analysis//rta_analysis.nit:33 */
-  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
-  ATTR_analysis___rta_analysis___RtaContext____reachable_iroutines(fra.me.REG[0]) = fra.me.REG[1];
+  /* global/reachable_as_init_impl.nit:45 */
+  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
+  ATTR_global___reachable_as_init_impl___ReachableAsInitAnalysisImpl____methods(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_analysis___rta_analysis___RtaContext(void)
+val_t NEW_global___reachable_as_init_impl___ReachableAsInitAnalysisImpl(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_analysis___rta_analysis___RtaContext;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_global___reachable_as_init_impl___ReachableAsInitAnalysisImpl;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_analysis___rta_analysis___RtaContext(val_t p0){
+static const char LOCATE_CHECKNEW_global___reachable_as_init_impl___ReachableAsInitAnalysisImpl[] = "check new ReachableAsInitAnalysisImpl";
+void CHECKNEW_global___reachable_as_init_impl___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_analysis___rta_analysis___RtaContext;
+  fra.me.meth = LOCATE_CHECKNEW_global___reachable_as_init_impl___ReachableAsInitAnalysisImpl;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_analysis___rta_analysis___RtaContext____instanciated_classes(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_global___reachable_as_init_impl___ReachableAsInitAnalysisImpl____methods(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_analysis___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);
+    nit_abort("Uninitialized attribute %s", "_methods", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_RtaContext_analysis___rta_analysis___RtaContext___init(void){
+static const char LOCATE_NEW_ReachableAsInitAnalysisImpl_global___reachable_as_init_impl___ReachableAsInitAnalysisImpl___init[] = "new ReachableAsInitAnalysisImpl reachable_as_init_impl::ReachableAsInitAnalysisImpl::init";
+val_t NEW_ReachableAsInitAnalysisImpl_global___reachable_as_init_impl___ReachableAsInitAnalysisImpl___init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  int init_table[3] = {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_analysis___rta_analysis___RtaContext___init;
+  fra.me.line = 52;
+  fra.me.meth = LOCATE_NEW_ReachableAsInitAnalysisImpl_global___reachable_as_init_impl___ReachableAsInitAnalysisImpl___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./analysis//rta_analysis.nit:28 */
-  fra.me.REG[0] = NEW_analysis___rta_analysis___RtaContext();
-  INIT_ATTRIBUTES__analysis___rta_analysis___RtaContext(fra.me.REG[0]);
-  analysis___rta_analysis___RtaContext___init(fra.me.REG[0], init_table);
-  CHECKNEW_analysis___rta_analysis___RtaContext(fra.me.REG[0]);
+  /* global/reachable_as_init_impl.nit:52 */
+  fra.me.REG[0] = NEW_global___reachable_as_init_impl___ReachableAsInitAnalysisImpl();
+  INIT_ATTRIBUTES__global___reachable_as_init_impl___ReachableAsInitAnalysisImpl(fra.me.REG[0]);
+  global___reachable_as_init_impl___ReachableAsInitAnalysisImpl___init(fra.me.REG[0], init_table);
+  CHECKNEW_global___reachable_as_init_impl___ReachableAsInitAnalysisImpl(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_analysis___rta_analysis___RtaBuilder[61] = {
-  {(bigint) 63 /* 0: Identity */},
-  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "RtaBuilder" /* 2: Class Name */},
-  {(bigint) 3 /* 3: RtaBuilder < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 4: RtaBuilder < RtaBuilder: superclass typecheck marker */},
+const classtable_elt_t VFT_global___reachable_as_init_impl___RAIVisitor[62] = {
+  {(bigint) 3015 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "RAIVisitor" /* 2: Class Name */},
+  {(bigint) 3 /* 3: RAIVisitor < Object: superclass typecheck marker */},
+  {(bigint) 211 /* 4: RAIVisitor < ICodeVisitor: superclass typecheck marker */},
+  {(bigint) 3015 /* 5: RAIVisitor < RAIVisitor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -155149,7 +184644,7 @@ const classtable_elt_t VFT_analysis___rta_analysis___RtaBuilder[61] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: RtaBuilder < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: RAIVisitor < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -155165,6 +184660,8 @@ const classtable_elt_t VFT_analysis___rta_analysis___RtaBuilder[61] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -155178,127 +184675,103 @@ const classtable_elt_t VFT_analysis___rta_analysis___RtaBuilder[61] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: RtaBuilder < RtaBuilder: superclass init_table position */},
-  {(bigint) analysis___rta_analysis___RtaBuilder___context},
-  {(bigint) analysis___rta_analysis___RtaBuilder___program},
-  {(bigint) analysis___rta_analysis___RtaBuilder___iroutine_to_search},
-  {(bigint) analysis___rta_analysis___RtaBuilder___call_sites},
-  {(bigint) analysis___rta_analysis___RtaBuilder___called_methods},
-  {(bigint) analysis___rta_analysis___RtaBuilder___init},
-  {(bigint) analysis___rta_analysis___RtaBuilder___check_method},
-  {(bigint) analysis___rta_analysis___RtaBuilder___check_call_sites},
-  {(bigint) analysis___rta_analysis___RtaBuilder___add_instantiated_class},
-  {(bigint) analysis___rta_analysis___RtaBuilder___add_reachable_call},
-  {(bigint) analysis___rta_analysis___RtaBuilder___add_reachable_iroutine},
-  {(bigint) analysis___rta_analysis___RtaBuilder___force_some_type_analysis},
-  {(bigint) analysis___rta_analysis___RtaBuilder___work},
+  {(bigint) 0 /* 50: RAIVisitor < ICodeVisitor: superclass init_table position */},
+  {(bigint) icode___icode_tools___ICodeVisitor___visit_iregister_read},
+  {(bigint) icode___icode_tools___ICodeVisitor___visit_iregister_write},
+  {(bigint) icode___icode_tools___ICodeVisitor___current_icode},
+  {(bigint) global___reachable_as_init_impl___RAIVisitor___visit_icode},
+  {(bigint) icode___icode_tools___ICodeVisitor___visit_closure_defs},
+  {(bigint) icode___icode_tools___ICodeVisitor___visit_iroutine},
+  {(bigint) icode___icode_tools___ICodeVisitor___init},
+  {(bigint) 2 /* 58: RAIVisitor < RAIVisitor: superclass init_table position */},
+  {(bigint) global___reachable_as_init_impl___RAIVisitor___builder},
+  {(bigint) icode___icode_tools___ICodeVisitor___visit_icode},
+  {(bigint) global___reachable_as_init_impl___RAIVisitor___init},
 };
 /* 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__analysis___rta_analysis___RtaBuilder(val_t p0){
+/* 2: Attribute RAIVisitor::_current_icode */
+/* 3: Attribute RAIVisitor::_builder */
+static const char LOCATE_INIT_ATTRIBUTES__global___reachable_as_init_impl___RAIVisitor[] = "init var of RAIVisitor";
+void INIT_ATTRIBUTES__global___reachable_as_init_impl___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__analysis___rta_analysis___RtaBuilder;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__global___reachable_as_init_impl___RAIVisitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   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_standard___collection___list___List___init();
-  ATTR_analysis___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_standard___collection___hash_collection___HashSet___init();
-  ATTR_analysis___rta_analysis___RtaBuilder____call_sites(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./analysis//rta_analysis.nit:49 */
-  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
-  ATTR_analysis___rta_analysis___RtaBuilder____called_methods(fra.me.REG[0]) = fra.me.REG[1];
+  /* icode/icode_tools.nit:29 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_tools___ICodeVisitor____current_icode(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_analysis___rta_analysis___RtaBuilder(void)
+val_t NEW_global___reachable_as_init_impl___RAIVisitor(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_analysis___rta_analysis___RtaBuilder;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_global___reachable_as_init_impl___RAIVisitor;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_analysis___rta_analysis___RtaBuilder(val_t p0){
+static const char LOCATE_CHECKNEW_global___reachable_as_init_impl___RAIVisitor[] = "check new RAIVisitor";
+void CHECKNEW_global___reachable_as_init_impl___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_analysis___rta_analysis___RtaBuilder;
+  fra.me.meth = LOCATE_CHECKNEW_global___reachable_as_init_impl___RAIVisitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_analysis___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_analysis___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_analysis___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_analysis___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_analysis___rta_analysis___RtaBuilder____called_methods(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_global___reachable_as_init_impl___RAIVisitor____builder(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_called_methods", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_builder", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_RtaBuilder_analysis___rta_analysis___RtaBuilder___init(val_t p0){
+static const char LOCATE_NEW_RAIVisitor_global___reachable_as_init_impl___RAIVisitor___init[] = "new RAIVisitor reachable_as_init_impl::RAIVisitor::init";
+val_t NEW_RAIVisitor_global___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[2] = {0, 0};
+  int init_table[3] = {0, 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_analysis___rta_analysis___RtaBuilder___init;
+  fra.me.line = 73;
+  fra.me.meth = LOCATE_NEW_RAIVisitor_global___reachable_as_init_impl___RAIVisitor___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   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_analysis___rta_analysis___RtaBuilder();
-  INIT_ATTRIBUTES__analysis___rta_analysis___RtaBuilder(fra.me.REG[1]);
-  analysis___rta_analysis___RtaBuilder___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_analysis___rta_analysis___RtaBuilder(fra.me.REG[1]);
+  /* global/reachable_as_init_impl.nit:73 */
+  fra.me.REG[1] = NEW_global___reachable_as_init_impl___RAIVisitor();
+  INIT_ATTRIBUTES__global___reachable_as_init_impl___RAIVisitor(fra.me.REG[1]);
+  global___reachable_as_init_impl___RAIVisitor___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_global___reachable_as_init_impl___RAIVisitor(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_analysis___rta_analysis___RtaVisitor[59] = {
-  {(bigint) 355 /* 0: Identity */},
-  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "RtaVisitor" /* 2: Class Name */},
-  {(bigint) 3 /* 3: RtaVisitor < Object: superclass typecheck marker */},
-  {(bigint) 223 /* 4: RtaVisitor < ICodeVisitor: superclass typecheck marker */},
-  {(bigint) 355 /* 5: RtaVisitor < RtaVisitor: superclass typecheck marker */},
+const classtable_elt_t VFT_global___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis[55] = {
+  {(bigint) 3251 /* 0: Identity */},
+  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "DefaultReachableFromInitMethodAnalysis" /* 2: Class Name */},
+  {(bigint) 3 /* 3: DefaultReachableFromInitMethodAnalysis < Object: superclass typecheck marker */},
+  {(bigint) 75 /* 4: DefaultReachableFromInitMethodAnalysis < ReachableFromInitMethodAnalysis: superclass typecheck marker */},
+  {(bigint) 3251 /* 5: DefaultReachableFromInitMethodAnalysis < DefaultReachableFromInitMethodAnalysis: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -155311,7 +184784,7 @@ const classtable_elt_t VFT_analysis___rta_analysis___RtaVisitor[59] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: RtaVisitor < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: DefaultReachableFromInitMethodAnalysis < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -155327,6 +184800,8 @@ const classtable_elt_t VFT_analysis___rta_analysis___RtaVisitor[59] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -155340,95 +184815,77 @@ const classtable_elt_t VFT_analysis___rta_analysis___RtaVisitor[59] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: RtaVisitor < ICodeVisitor: superclass init_table position */},
-  {(bigint) icode___icode_tools___ICodeVisitor___visit_iregister_read},
-  {(bigint) icode___icode_tools___ICodeVisitor___visit_iregister_write},
-  {(bigint) icode___icode_tools___ICodeVisitor___current_icode},
-  {(bigint) analysis___rta_analysis___RtaVisitor___visit_icode},
-  {(bigint) icode___icode_tools___ICodeVisitor___visit_closure_defs},
-  {(bigint) icode___icode_tools___ICodeVisitor___visit_iroutine},
-  {(bigint) icode___icode_tools___ICodeVisitor___init},
-  {(bigint) 2 /* 55: RtaVisitor < RtaVisitor: superclass init_table position */},
-  {(bigint) analysis___rta_analysis___RtaVisitor___builder},
-  {(bigint) icode___icode_tools___ICodeVisitor___visit_icode},
-  {(bigint) analysis___rta_analysis___RtaVisitor___init},
+  {(bigint) 0 /* 50: DefaultReachableFromInitMethodAnalysis < ReachableFromInitMethodAnalysis: superclass init_table position */},
+  {(bigint) global___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis___is_iroutine_reachable_from_init},
+  {(bigint) global___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis___is_method_reachable_from_init},
+  {(bigint) 2 /* 53: DefaultReachableFromInitMethodAnalysis < DefaultReachableFromInitMethodAnalysis: superclass init_table position */},
+  {(bigint) global___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis___init},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute RtaVisitor::_current_icode */
-/* 3: Attribute RtaVisitor::_builder */
-void INIT_ATTRIBUTES__analysis___rta_analysis___RtaVisitor(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_INIT_ATTRIBUTES__global___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis[] = "init var of DefaultReachableFromInitMethodAnalysis";
+void INIT_ATTRIBUTES__global___reachable_from_init_method_analysis___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__analysis___rta_analysis___RtaVisitor;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__global___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis;
   fra.me.has_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:29 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_tools___ICodeVisitor____current_icode(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_analysis___rta_analysis___RtaVisitor(void)
+val_t NEW_global___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_analysis___rta_analysis___RtaVisitor;
+  obj = alloc(sizeof(val_t) * 2);
+  obj->vft = (classtable_elt_t*)VFT_global___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_analysis___rta_analysis___RtaVisitor(val_t p0){
+static const char LOCATE_CHECKNEW_global___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis[] = "check new DefaultReachableFromInitMethodAnalysis";
+void CHECKNEW_global___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis(val_t p0){
   struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_analysis___rta_analysis___RtaVisitor;
+  fra.me.meth = LOCATE_CHECKNEW_global___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis;
   fra.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___rta_analysis___RtaVisitor____builder(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_builder", LOCATE_nitc, 0);
-  }
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_RtaVisitor_analysis___rta_analysis___RtaVisitor___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_DefaultReachableFromInitMethodAnalysis_global___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis___init[] = "new DefaultReachableFromInitMethodAnalysis reachable_from_init_method_analysis::DefaultReachableFromInitMethodAnalysis::init";
+val_t NEW_DefaultReachableFromInitMethodAnalysis_global___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 = 247;
-  fra.me.meth = LOCATE_NEW_RtaVisitor_analysis___rta_analysis___RtaVisitor___init;
+  fra.me.line = 68;
+  fra.me.meth = LOCATE_NEW_DefaultReachableFromInitMethodAnalysis_global___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./analysis//rta_analysis.nit:247 */
-  fra.me.REG[1] = NEW_analysis___rta_analysis___RtaVisitor();
-  INIT_ATTRIBUTES__analysis___rta_analysis___RtaVisitor(fra.me.REG[1]);
-  analysis___rta_analysis___RtaVisitor___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_analysis___rta_analysis___RtaVisitor(fra.me.REG[1]);
+  /* global/reachable_from_init_method_analysis.nit:68 */
+  fra.me.REG[0] = NEW_global___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis();
+  INIT_ATTRIBUTES__global___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis(fra.me.REG[0]);
+  global___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis___init(fra.me.REG[0], init_table);
+  CHECKNEW_global___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_analysis___reachable_as_init___ReachableAsInitAnalysis[50] = {
-  {(bigint) 83 /* 0: Identity */},
-  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReachableAsInitAnalysis" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReachableAsInitAnalysis < Object: superclass typecheck marker */},
-  {(bigint) 83 /* 4: ReachableAsInitAnalysis < ReachableAsInitAnalysis: superclass typecheck marker */},
+const classtable_elt_t VFT_global___reachable_from_init_method_analysis_impl___RFIMABuilder[55] = {
+  {(bigint) 87 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "RFIMABuilder" /* 2: Class Name */},
+  {(bigint) 3 /* 3: RFIMABuilder < Object: superclass typecheck marker */},
+  {(bigint) 87 /* 4: RFIMABuilder < RFIMABuilder: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -155442,7 +184899,7 @@ const classtable_elt_t VFT_analysis___reachable_as_init___ReachableAsInitAnalysi
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: ReachableAsInitAnalysis < Object: superclass init_table position */},
+  {(bigint) 0 /* 19: RFIMABuilder < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -155458,6 +184915,8 @@ const classtable_elt_t VFT_analysis___reachable_as_init___ReachableAsInitAnalysi
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -155471,68 +184930,101 @@ const classtable_elt_t VFT_analysis___reachable_as_init___ReachableAsInitAnalysi
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: ReachableAsInitAnalysis < ReachableAsInitAnalysis: superclass init_table position */},
-  {(bigint) analysis___reachable_as_init___ReachableAsInitAnalysis___is_method_reachable_as_init},
-  {(bigint) analysis___reachable_as_init___ReachableAsInitAnalysis___init},
+  {(bigint) 1 /* 50: RFIMABuilder < RFIMABuilder: superclass init_table position */},
+  {(bigint) global___reachable_from_init_method_analysis_impl___RFIMABuilder___program},
+  {(bigint) global___reachable_from_init_method_analysis_impl___RFIMABuilder___context},
+  {(bigint) global___reachable_from_init_method_analysis_impl___RFIMABuilder___init},
+  {(bigint) global___reachable_from_init_method_analysis_impl___RFIMABuilder___work},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-void INIT_ATTRIBUTES__analysis___reachable_as_init___ReachableAsInitAnalysis(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute RFIMABuilder::_program */
+/* 3: Attribute RFIMABuilder::_context */
+static const char LOCATE_INIT_ATTRIBUTES__global___reachable_from_init_method_analysis_impl___RFIMABuilder[] = "init var of RFIMABuilder";
+void INIT_ATTRIBUTES__global___reachable_from_init_method_analysis_impl___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__analysis___reachable_as_init___ReachableAsInitAnalysis;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__global___reachable_from_init_method_analysis_impl___RFIMABuilder;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* global/reachable_from_init_method_analysis_impl.nit:26 */
+  fra.me.REG[1] = NEW_RFIMAContext_global___reachable_from_init_method_analysis_impl___RFIMAContext___init();
+  ATTR_global___reachable_from_init_method_analysis_impl___RFIMABuilder____context(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_analysis___reachable_as_init___ReachableAsInitAnalysis(void)
+val_t NEW_global___reachable_from_init_method_analysis_impl___RFIMABuilder(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 2);
-  obj->vft = (classtable_elt_t*)VFT_analysis___reachable_as_init___ReachableAsInitAnalysis;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_global___reachable_from_init_method_analysis_impl___RFIMABuilder;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_analysis___reachable_as_init___ReachableAsInitAnalysis(val_t p0){
+static const char LOCATE_CHECKNEW_global___reachable_from_init_method_analysis_impl___RFIMABuilder[] = "check new RFIMABuilder";
+void CHECKNEW_global___reachable_from_init_method_analysis_impl___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_analysis___reachable_as_init___ReachableAsInitAnalysis;
+  fra.me.meth = LOCATE_CHECKNEW_global___reachable_from_init_method_analysis_impl___RFIMABuilder;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_global___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_global___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_ReachableAsInitAnalysis_analysis___reachable_as_init___ReachableAsInitAnalysis___init(void){
-  struct {struct stack_frame_t me;} fra;
+static const char LOCATE_NEW_RFIMABuilder_global___reachable_from_init_method_analysis_impl___RFIMABuilder___init[] = "new RFIMABuilder reachable_from_init_method_analysis_impl::RFIMABuilder::init";
+val_t NEW_RFIMABuilder_global___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};
   fra.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_analysis___reachable_as_init___ReachableAsInitAnalysis___init;
+  fra.me.line = 28;
+  fra.me.meth = LOCATE_NEW_RFIMABuilder_global___reachable_from_init_method_analysis_impl___RFIMABuilder___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = NEW_analysis___reachable_as_init___ReachableAsInitAnalysis();
-  INIT_ATTRIBUTES__analysis___reachable_as_init___ReachableAsInitAnalysis(fra.me.REG[0]);
-  analysis___reachable_as_init___ReachableAsInitAnalysis___init(fra.me.REG[0], init_table);
-  CHECKNEW_analysis___reachable_as_init___ReachableAsInitAnalysis(fra.me.REG[0]);
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* global/reachable_from_init_method_analysis_impl.nit:28 */
+  fra.me.REG[1] = NEW_global___reachable_from_init_method_analysis_impl___RFIMABuilder();
+  INIT_ATTRIBUTES__global___reachable_from_init_method_analysis_impl___RFIMABuilder(fra.me.REG[1]);
+  global___reachable_from_init_method_analysis_impl___RFIMABuilder___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_global___reachable_from_init_method_analysis_impl___RFIMABuilder(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
-const classtable_elt_t VFT_analysis___reachable_as_init___DefaultReachableAsInitAnalysis[52] = {
-  {(bigint) 2307 /* 0: Identity */},
-  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "DefaultReachableAsInitAnalysis" /* 2: Class Name */},
-  {(bigint) 3 /* 3: DefaultReachableAsInitAnalysis < Object: superclass typecheck marker */},
-  {(bigint) 83 /* 4: DefaultReachableAsInitAnalysis < ReachableAsInitAnalysis: superclass typecheck marker */},
-  {(bigint) 2307 /* 5: DefaultReachableAsInitAnalysis < DefaultReachableAsInitAnalysis: superclass typecheck marker */},
+const classtable_elt_t VFT_global___reachable_from_init_method_analysis_impl___RFIMAContext[56] = {
+  {(bigint) 3011 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "RFIMAContext" /* 2: Class Name */},
+  {(bigint) 3 /* 3: RFIMAContext < Object: superclass typecheck marker */},
+  {(bigint) 75 /* 4: RFIMAContext < ReachableFromInitMethodAnalysis: superclass typecheck marker */},
+  {(bigint) 3011 /* 5: RFIMAContext < RFIMAContext: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -155545,7 +185037,7 @@ const classtable_elt_t VFT_analysis___reachable_as_init___DefaultReachableAsInit
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: DefaultReachableAsInitAnalysis < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: RFIMAContext < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -155561,6 +185053,8 @@ const classtable_elt_t VFT_analysis___reachable_as_init___DefaultReachableAsInit
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -155574,70 +185068,92 @@ const classtable_elt_t VFT_analysis___reachable_as_init___DefaultReachableAsInit
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: DefaultReachableAsInitAnalysis < ReachableAsInitAnalysis: superclass init_table position */},
-  {(bigint) analysis___reachable_as_init___DefaultReachableAsInitAnalysis___is_method_reachable_as_init},
-  {(bigint) analysis___reachable_as_init___ReachableAsInitAnalysis___init},
-  {(bigint) 2 /* 50: DefaultReachableAsInitAnalysis < DefaultReachableAsInitAnalysis: superclass init_table position */},
-  {(bigint) analysis___reachable_as_init___DefaultReachableAsInitAnalysis___init},
+  {(bigint) 0 /* 50: RFIMAContext < ReachableFromInitMethodAnalysis: superclass init_table position */},
+  {(bigint) global___reachable_from_init_method_analysis_impl___RFIMAContext___is_iroutine_reachable_from_init},
+  {(bigint) global___reachable_from_init_method_analysis_impl___RFIMAContext___is_method_reachable_from_init},
+  {(bigint) 2 /* 53: RFIMAContext < RFIMAContext: superclass init_table position */},
+  {(bigint) global___reachable_from_init_method_analysis_impl___RFIMAContext___reachable_from_init_iroutines},
+  {(bigint) global___reachable_from_init_method_analysis_impl___RFIMAContext___init},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-void INIT_ATTRIBUTES__analysis___reachable_as_init___DefaultReachableAsInitAnalysis(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute RFIMAContext::_reachable_from_init_iroutines */
+static const char LOCATE_INIT_ATTRIBUTES__global___reachable_from_init_method_analysis_impl___RFIMAContext[] = "init var of RFIMAContext";
+void INIT_ATTRIBUTES__global___reachable_from_init_method_analysis_impl___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__analysis___reachable_as_init___DefaultReachableAsInitAnalysis;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__global___reachable_from_init_method_analysis_impl___RFIMAContext;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* global/reachable_from_init_method_analysis_impl.nit:53 */
+  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
+  ATTR_global___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;
 }
-val_t NEW_analysis___reachable_as_init___DefaultReachableAsInitAnalysis(void)
+val_t NEW_global___reachable_from_init_method_analysis_impl___RFIMAContext(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 2);
-  obj->vft = (classtable_elt_t*)VFT_analysis___reachable_as_init___DefaultReachableAsInitAnalysis;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_global___reachable_from_init_method_analysis_impl___RFIMAContext;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_analysis___reachable_as_init___DefaultReachableAsInitAnalysis(val_t p0){
+static const char LOCATE_CHECKNEW_global___reachable_from_init_method_analysis_impl___RFIMAContext[] = "check new RFIMAContext";
+void CHECKNEW_global___reachable_from_init_method_analysis_impl___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_analysis___reachable_as_init___DefaultReachableAsInitAnalysis;
+  fra.me.meth = LOCATE_CHECKNEW_global___reachable_from_init_method_analysis_impl___RFIMAContext;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_global___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_DefaultReachableAsInitAnalysis_analysis___reachable_as_init___DefaultReachableAsInitAnalysis___init(void){
+static const char LOCATE_NEW_RFIMAContext_global___reachable_from_init_method_analysis_impl___RFIMAContext___init[] = "new RFIMAContext reachable_from_init_method_analysis_impl::RFIMAContext::init";
+val_t NEW_RFIMAContext_global___reachable_from_init_method_analysis_impl___RFIMAContext___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_analysis___reachable_as_init___DefaultReachableAsInitAnalysis___init;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_RFIMAContext_global___reachable_from_init_method_analysis_impl___RFIMAContext___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./analysis//reachable_as_init.nit:60 */
-  fra.me.REG[0] = NEW_analysis___reachable_as_init___DefaultReachableAsInitAnalysis();
-  INIT_ATTRIBUTES__analysis___reachable_as_init___DefaultReachableAsInitAnalysis(fra.me.REG[0]);
-  analysis___reachable_as_init___DefaultReachableAsInitAnalysis___init(fra.me.REG[0], init_table);
-  CHECKNEW_analysis___reachable_as_init___DefaultReachableAsInitAnalysis(fra.me.REG[0]);
+  fra.me.REG[0] = NEW_global___reachable_from_init_method_analysis_impl___RFIMAContext();
+  INIT_ATTRIBUTES__global___reachable_from_init_method_analysis_impl___RFIMAContext(fra.me.REG[0]);
+  global___reachable_from_init_method_analysis_impl___RFIMAContext___init(fra.me.REG[0], init_table);
+  CHECKNEW_global___reachable_from_init_method_analysis_impl___RFIMAContext(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_analysis___reachable_as_init_impl___ReachableAsInitBuilder[52] = {
-  {(bigint) 79 /* 0: Identity */},
-  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReachableAsInitBuilder" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReachableAsInitBuilder < Object: superclass typecheck marker */},
-  {(bigint) 79 /* 4: ReachableAsInitBuilder < ReachableAsInitBuilder: superclass typecheck marker */},
+const classtable_elt_t VFT_global___reachable_from_init_method_analysis_impl___RFIMAVisitor[64] = {
+  {(bigint) 3007 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "RFIMAVisitor" /* 2: Class Name */},
+  {(bigint) 3 /* 3: RFIMAVisitor < Object: superclass typecheck marker */},
+  {(bigint) 211 /* 4: RFIMAVisitor < ICodeVisitor: superclass typecheck marker */},
+  {(bigint) 3007 /* 5: RFIMAVisitor < RFIMAVisitor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -155651,7 +185167,7 @@ const classtable_elt_t VFT_analysis___reachable_as_init_impl___ReachableAsInitBu
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: ReachableAsInitBuilder < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: RFIMAVisitor < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -155667,6 +185183,8 @@ const classtable_elt_t VFT_analysis___reachable_as_init_impl___ReachableAsInitBu
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -155680,94 +185198,113 @@ const classtable_elt_t VFT_analysis___reachable_as_init_impl___ReachableAsInitBu
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: ReachableAsInitBuilder < ReachableAsInitBuilder: superclass init_table position */},
-  {(bigint) analysis___reachable_as_init_impl___ReachableAsInitBuilder___context},
-  {(bigint) analysis___reachable_as_init_impl___ReachableAsInitBuilder___program},
-  {(bigint) analysis___reachable_as_init_impl___ReachableAsInitBuilder___work},
-  {(bigint) analysis___reachable_as_init_impl___ReachableAsInitBuilder___init},
+  {(bigint) 0 /* 50: RFIMAVisitor < ICodeVisitor: superclass init_table position */},
+  {(bigint) icode___icode_tools___ICodeVisitor___visit_iregister_read},
+  {(bigint) icode___icode_tools___ICodeVisitor___visit_iregister_write},
+  {(bigint) icode___icode_tools___ICodeVisitor___current_icode},
+  {(bigint) global___reachable_from_init_method_analysis_impl___RFIMAVisitor___visit_icode},
+  {(bigint) icode___icode_tools___ICodeVisitor___visit_closure_defs},
+  {(bigint) icode___icode_tools___ICodeVisitor___visit_iroutine},
+  {(bigint) icode___icode_tools___ICodeVisitor___init},
+  {(bigint) 2 /* 58: RFIMAVisitor < RFIMAVisitor: superclass init_table position */},
+  {(bigint) global___reachable_from_init_method_analysis_impl___RFIMAVisitor___context},
+  {(bigint) global___reachable_from_init_method_analysis_impl___RFIMAVisitor___program},
+  {(bigint) global___reachable_from_init_method_analysis_impl___RFIMAVisitor___init},
+  {(bigint) global___reachable_from_init_method_analysis_impl___RFIMAVisitor___process_call},
+  {(bigint) icode___icode_tools___ICodeVisitor___visit_icode},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReachableAsInitBuilder::_context */
-/* 3: Attribute ReachableAsInitBuilder::_program */
-void INIT_ATTRIBUTES__analysis___reachable_as_init_impl___ReachableAsInitBuilder(val_t p0){
+/* 2: Attribute RFIMAVisitor::_current_icode */
+/* 3: Attribute RFIMAVisitor::_context */
+/* 4: Attribute RFIMAVisitor::_program */
+static const char LOCATE_INIT_ATTRIBUTES__global___reachable_from_init_method_analysis_impl___RFIMAVisitor[] = "init var of RFIMAVisitor";
+void INIT_ATTRIBUTES__global___reachable_from_init_method_analysis_impl___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__analysis___reachable_as_init_impl___ReachableAsInitBuilder;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__global___reachable_from_init_method_analysis_impl___RFIMAVisitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   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_analysis___reachable_as_init_impl___ReachableAsInitAnalysisImpl___init();
-  ATTR_analysis___reachable_as_init_impl___ReachableAsInitBuilder____context(fra.me.REG[0]) = fra.me.REG[1];
+  /* icode/icode_tools.nit:29 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_tools___ICodeVisitor____current_icode(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_analysis___reachable_as_init_impl___ReachableAsInitBuilder(void)
+val_t NEW_global___reachable_from_init_method_analysis_impl___RFIMAVisitor(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_analysis___reachable_as_init_impl___ReachableAsInitBuilder;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_global___reachable_from_init_method_analysis_impl___RFIMAVisitor;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_analysis___reachable_as_init_impl___ReachableAsInitBuilder(val_t p0){
+static const char LOCATE_CHECKNEW_global___reachable_from_init_method_analysis_impl___RFIMAVisitor[] = "check new RFIMAVisitor";
+void CHECKNEW_global___reachable_from_init_method_analysis_impl___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_analysis___reachable_as_init_impl___ReachableAsInitBuilder;
+  fra.me.meth = LOCATE_CHECKNEW_global___reachable_from_init_method_analysis_impl___RFIMAVisitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_analysis___reachable_as_init_impl___ReachableAsInitBuilder____context(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_global___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_analysis___reachable_as_init_impl___ReachableAsInitBuilder____program(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_global___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_ReachableAsInitBuilder_analysis___reachable_as_init_impl___ReachableAsInitBuilder___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_RFIMAVisitor_global___reachable_from_init_method_analysis_impl___RFIMAVisitor___init[] = "new RFIMAVisitor reachable_from_init_method_analysis_impl::RFIMAVisitor::init";
+val_t NEW_RFIMAVisitor_global___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[2] = {0, 0};
+  int init_table[3] = {0, 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_analysis___reachable_as_init_impl___ReachableAsInitBuilder___init;
+  fra.me.line = 69;
+  fra.me.meth = LOCATE_NEW_RFIMAVisitor_global___reachable_from_init_method_analysis_impl___RFIMAVisitor___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./analysis//reachable_as_init_impl.nit:36 */
-  fra.me.REG[1] = NEW_analysis___reachable_as_init_impl___ReachableAsInitBuilder();
-  INIT_ATTRIBUTES__analysis___reachable_as_init_impl___ReachableAsInitBuilder(fra.me.REG[1]);
-  analysis___reachable_as_init_impl___ReachableAsInitBuilder___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_analysis___reachable_as_init_impl___ReachableAsInitBuilder(fra.me.REG[1]);
+  fra.me.REG[1] = p1;
+  /* global/reachable_from_init_method_analysis_impl.nit:69 */
+  fra.me.REG[2] = NEW_global___reachable_from_init_method_analysis_impl___RFIMAVisitor();
+  INIT_ATTRIBUTES__global___reachable_from_init_method_analysis_impl___RFIMAVisitor(fra.me.REG[2]);
+  global___reachable_from_init_method_analysis_impl___RFIMAVisitor___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_global___reachable_from_init_method_analysis_impl___RFIMAVisitor(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[2];
 }
-const classtable_elt_t VFT_analysis___reachable_as_init_impl___ReachableAsInitAnalysisImpl[52] = {
-  {(bigint) 2055 /* 0: Identity */},
-  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReachableAsInitAnalysisImpl" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReachableAsInitAnalysisImpl < Object: superclass typecheck marker */},
-  {(bigint) 83 /* 4: ReachableAsInitAnalysisImpl < ReachableAsInitAnalysis: superclass typecheck marker */},
-  {(bigint) 2055 /* 5: ReachableAsInitAnalysisImpl < ReachableAsInitAnalysisImpl: superclass typecheck marker */},
+const classtable_elt_t VFT_global___inline_get_and_set___InlineGetSetVisitor[62] = {
+  {(bigint) 3163 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "InlineGetSetVisitor" /* 2: Class Name */},
+  {(bigint) 3 /* 3: InlineGetSetVisitor < Object: superclass typecheck marker */},
+  {(bigint) 211 /* 4: InlineGetSetVisitor < ICodeVisitor: superclass typecheck marker */},
+  {(bigint) 3163 /* 5: InlineGetSetVisitor < InlineGetSetVisitor: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -155780,7 +185317,7 @@ const classtable_elt_t VFT_analysis___reachable_as_init_impl___ReachableAsInitAn
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: ReachableAsInitAnalysisImpl < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: InlineGetSetVisitor < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -155796,6 +185333,8 @@ const classtable_elt_t VFT_analysis___reachable_as_init_impl___ReachableAsInitAn
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -155809,86 +185348,115 @@ const classtable_elt_t VFT_analysis___reachable_as_init_impl___ReachableAsInitAn
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: ReachableAsInitAnalysisImpl < ReachableAsInitAnalysis: superclass init_table position */},
-  {(bigint) analysis___reachable_as_init_impl___ReachableAsInitAnalysisImpl___is_method_reachable_as_init},
-  {(bigint) analysis___reachable_as_init___ReachableAsInitAnalysis___init},
-  {(bigint) 2 /* 50: ReachableAsInitAnalysisImpl < ReachableAsInitAnalysisImpl: superclass init_table position */},
-  {(bigint) analysis___reachable_as_init_impl___ReachableAsInitAnalysisImpl___init},
+  {(bigint) 0 /* 50: InlineGetSetVisitor < ICodeVisitor: superclass init_table position */},
+  {(bigint) icode___icode_tools___ICodeVisitor___visit_iregister_read},
+  {(bigint) icode___icode_tools___ICodeVisitor___visit_iregister_write},
+  {(bigint) icode___icode_tools___ICodeVisitor___current_icode},
+  {(bigint) global___inline_get_and_set___InlineGetSetVisitor___visit_icode},
+  {(bigint) icode___icode_tools___ICodeVisitor___visit_closure_defs},
+  {(bigint) icode___icode_tools___ICodeVisitor___visit_iroutine},
+  {(bigint) icode___icode_tools___ICodeVisitor___init},
+  {(bigint) 2 /* 58: InlineGetSetVisitor < InlineGetSetVisitor: superclass init_table position */},
+  {(bigint) global___inline_get_and_set___InlineGetSetVisitor___number_inlined},
+  {(bigint) icode___icode_tools___ICodeVisitor___visit_icode},
+  {(bigint) global___inline_get_and_set___InlineGetSetVisitor___init},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ReachableAsInitAnalysisImpl::_methods */
-void INIT_ATTRIBUTES__analysis___reachable_as_init_impl___ReachableAsInitAnalysisImpl(val_t p0){
+/* 2: Attribute InlineGetSetVisitor::_current_icode */
+/* 3: Attribute InlineGetSetVisitor::_icb */
+/* 4: Attribute InlineGetSetVisitor::_number_inlined */
+static const char LOCATE_INIT_ATTRIBUTES__global___inline_get_and_set___InlineGetSetVisitor[] = "init var of InlineGetSetVisitor";
+void INIT_ATTRIBUTES__global___inline_get_and_set___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__analysis___reachable_as_init_impl___ReachableAsInitAnalysisImpl;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__global___inline_get_and_set___InlineGetSetVisitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   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_standard___collection___hash_collection___HashMap___init();
-  ATTR_analysis___reachable_as_init_impl___ReachableAsInitAnalysisImpl____methods(fra.me.REG[0]) = fra.me.REG[1];
+  /* icode/icode_tools.nit:29 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_tools___ICodeVisitor____current_icode(fra.me.REG[0]) = fra.me.REG[1];
+  /* global/inline_get_and_set.nit:50 */
+  REGB0 = TAG_Int(0);
+  ATTR_global___inline_get_and_set___InlineGetSetVisitor____number_inlined(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_analysis___reachable_as_init_impl___ReachableAsInitAnalysisImpl(void)
+val_t NEW_global___inline_get_and_set___InlineGetSetVisitor(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_analysis___reachable_as_init_impl___ReachableAsInitAnalysisImpl;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_global___inline_get_and_set___InlineGetSetVisitor;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_analysis___reachable_as_init_impl___ReachableAsInitAnalysisImpl(val_t p0){
+static const char LOCATE_CHECKNEW_global___inline_get_and_set___InlineGetSetVisitor[] = "check new InlineGetSetVisitor";
+void CHECKNEW_global___inline_get_and_set___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_analysis___reachable_as_init_impl___ReachableAsInitAnalysisImpl;
+  fra.me.meth = LOCATE_CHECKNEW_global___inline_get_and_set___InlineGetSetVisitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_analysis___reachable_as_init_impl___ReachableAsInitAnalysisImpl____methods(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_global___inline_get_and_set___InlineGetSetVisitor____icb(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_methods", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_icb", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_global___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_ReachableAsInitAnalysisImpl_analysis___reachable_as_init_impl___ReachableAsInitAnalysisImpl___init(void){
-  struct {struct stack_frame_t me;} fra;
+static const char LOCATE_NEW_InlineGetSetVisitor_global___inline_get_and_set___InlineGetSetVisitor___init[] = "new InlineGetSetVisitor inline_get_and_set::InlineGetSetVisitor::init";
+val_t NEW_InlineGetSetVisitor_global___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 = 52;
-  fra.me.meth = LOCATE_NEW_ReachableAsInitAnalysisImpl_analysis___reachable_as_init_impl___ReachableAsInitAnalysisImpl___init;
+  fra.me.line = 79;
+  fra.me.meth = LOCATE_NEW_InlineGetSetVisitor_global___inline_get_and_set___InlineGetSetVisitor___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./analysis//reachable_as_init_impl.nit:52 */
-  fra.me.REG[0] = NEW_analysis___reachable_as_init_impl___ReachableAsInitAnalysisImpl();
-  INIT_ATTRIBUTES__analysis___reachable_as_init_impl___ReachableAsInitAnalysisImpl(fra.me.REG[0]);
-  analysis___reachable_as_init_impl___ReachableAsInitAnalysisImpl___init(fra.me.REG[0], init_table);
-  CHECKNEW_analysis___reachable_as_init_impl___ReachableAsInitAnalysisImpl(fra.me.REG[0]);
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* global/inline_get_and_set.nit:79 */
+  fra.me.REG[2] = NEW_global___inline_get_and_set___InlineGetSetVisitor();
+  INIT_ATTRIBUTES__global___inline_get_and_set___InlineGetSetVisitor(fra.me.REG[2]);
+  global___inline_get_and_set___InlineGetSetVisitor___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_global___inline_get_and_set___InlineGetSetVisitor(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[2];
 }
-const classtable_elt_t VFT_analysis___reachable_as_init_impl___RAIVisitor[59] = {
-  {(bigint) 2071 /* 0: Identity */},
+const classtable_elt_t VFT_global___remove_out_of_init_get_test___IssetCounter[61] = {
+  {(bigint) 3155 /* 0: Identity */},
   {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "RAIVisitor" /* 2: Class Name */},
-  {(bigint) 3 /* 3: RAIVisitor < Object: superclass typecheck marker */},
-  {(bigint) 223 /* 4: RAIVisitor < ICodeVisitor: superclass typecheck marker */},
-  {(bigint) 2071 /* 5: RAIVisitor < RAIVisitor: superclass typecheck marker */},
+  {(bigint) "IssetCounter" /* 2: Class Name */},
+  {(bigint) 3 /* 3: IssetCounter < Object: superclass typecheck marker */},
+  {(bigint) 211 /* 4: IssetCounter < ICodeVisitor: superclass typecheck marker */},
+  {(bigint) 3155 /* 5: IssetCounter < IssetCounter: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -155901,7 +185469,7 @@ const classtable_elt_t VFT_analysis___reachable_as_init_impl___RAIVisitor[59] =
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: RAIVisitor < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: IssetCounter < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -155917,6 +185485,8 @@ const classtable_elt_t VFT_analysis___reachable_as_init_impl___RAIVisitor[59] =
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -155930,95 +185500,102 @@ const classtable_elt_t VFT_analysis___reachable_as_init_impl___RAIVisitor[59] =
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: RAIVisitor < ICodeVisitor: superclass init_table position */},
+  {(bigint) 0 /* 50: IssetCounter < ICodeVisitor: superclass init_table position */},
   {(bigint) icode___icode_tools___ICodeVisitor___visit_iregister_read},
   {(bigint) icode___icode_tools___ICodeVisitor___visit_iregister_write},
   {(bigint) icode___icode_tools___ICodeVisitor___current_icode},
-  {(bigint) analysis___reachable_as_init_impl___RAIVisitor___visit_icode},
+  {(bigint) global___remove_out_of_init_get_test___IssetCounter___visit_icode},
   {(bigint) icode___icode_tools___ICodeVisitor___visit_closure_defs},
   {(bigint) icode___icode_tools___ICodeVisitor___visit_iroutine},
   {(bigint) icode___icode_tools___ICodeVisitor___init},
-  {(bigint) 2 /* 55: RAIVisitor < RAIVisitor: superclass init_table position */},
-  {(bigint) analysis___reachable_as_init_impl___RAIVisitor___builder},
+  {(bigint) 2 /* 58: IssetCounter < IssetCounter: superclass init_table position */},
+  {(bigint) global___remove_out_of_init_get_test___IssetCounter___nb_isset},
   {(bigint) icode___icode_tools___ICodeVisitor___visit_icode},
-  {(bigint) analysis___reachable_as_init_impl___RAIVisitor___init},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute RAIVisitor::_current_icode */
-/* 3: Attribute RAIVisitor::_builder */
-void INIT_ATTRIBUTES__analysis___reachable_as_init_impl___RAIVisitor(val_t p0){
+/* 2: Attribute IssetCounter::_current_icode */
+/* 3: Attribute IssetCounter::_nb_isset */
+static const char LOCATE_INIT_ATTRIBUTES__global___remove_out_of_init_get_test___IssetCounter[] = "init var of IssetCounter";
+void INIT_ATTRIBUTES__global___remove_out_of_init_get_test___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__analysis___reachable_as_init_impl___RAIVisitor;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__global___remove_out_of_init_get_test___IssetCounter;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_tools.nit:29 */
+  /* icode/icode_tools.nit:29 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_tools___ICodeVisitor____current_icode(fra.me.REG[0]) = fra.me.REG[1];
+  /* global/remove_out_of_init_get_test.nit:59 */
+  REGB0 = TAG_Int(0);
+  ATTR_global___remove_out_of_init_get_test___IssetCounter____nb_isset(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_analysis___reachable_as_init_impl___RAIVisitor(void)
+val_t NEW_global___remove_out_of_init_get_test___IssetCounter(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_analysis___reachable_as_init_impl___RAIVisitor;
+  obj->vft = (classtable_elt_t*)VFT_global___remove_out_of_init_get_test___IssetCounter;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_analysis___reachable_as_init_impl___RAIVisitor(val_t p0){
+static const char LOCATE_CHECKNEW_global___remove_out_of_init_get_test___IssetCounter[] = "check new IssetCounter";
+void CHECKNEW_global___remove_out_of_init_get_test___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_analysis___reachable_as_init_impl___RAIVisitor;
+  fra.me.meth = LOCATE_CHECKNEW_global___remove_out_of_init_get_test___IssetCounter;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_analysis___reachable_as_init_impl___RAIVisitor____builder(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_global___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", "_builder", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_nb_isset", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_RAIVisitor_analysis___reachable_as_init_impl___RAIVisitor___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+static const char LOCATE_NEW_IssetCounter_icode___icode_tools___ICodeVisitor___init[] = "new IssetCounter icode_tools::ICodeVisitor::init";
+val_t NEW_IssetCounter_icode___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 = 73;
-  fra.me.meth = LOCATE_NEW_RAIVisitor_analysis___reachable_as_init_impl___RAIVisitor___init;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_IssetCounter_icode___icode_tools___ICodeVisitor___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   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_analysis___reachable_as_init_impl___RAIVisitor();
-  INIT_ATTRIBUTES__analysis___reachable_as_init_impl___RAIVisitor(fra.me.REG[1]);
-  analysis___reachable_as_init_impl___RAIVisitor___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_analysis___reachable_as_init_impl___RAIVisitor(fra.me.REG[1]);
+  fra.me.REG[0] = NEW_global___remove_out_of_init_get_test___IssetCounter();
+  INIT_ATTRIBUTES__global___remove_out_of_init_get_test___IssetCounter(fra.me.REG[0]);
+  icode___icode_tools___ICodeVisitor___init(fra.me.REG[0], init_table);
+  CHECKNEW_global___remove_out_of_init_get_test___IssetCounter(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_analysis___reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis[51] = {
-  {(bigint) 75 /* 0: Identity */},
-  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ReachableFromInitMethodAnalysis" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ReachableFromInitMethodAnalysis < Object: superclass typecheck marker */},
-  {(bigint) 75 /* 4: ReachableFromInitMethodAnalysis < ReachableFromInitMethodAnalysis: superclass typecheck marker */},
+const classtable_elt_t VFT_global___remove_out_of_init_get_test___GetterTestRemover[61] = {
+  {(bigint) 3219 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "GetterTestRemover" /* 2: Class Name */},
+  {(bigint) 3 /* 3: GetterTestRemover < Object: superclass typecheck marker */},
+  {(bigint) 211 /* 4: GetterTestRemover < ICodeVisitor: superclass typecheck marker */},
+  {(bigint) 3219 /* 5: GetterTestRemover < GetterTestRemover: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -156032,7 +185609,7 @@ const classtable_elt_t VFT_analysis___reachable_from_init_method_analysis___Reac
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: ReachableFromInitMethodAnalysis < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: GetterTestRemover < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -156048,6 +185625,8 @@ const classtable_elt_t VFT_analysis___reachable_from_init_method_analysis___Reac
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -156061,69 +185640,103 @@ const classtable_elt_t VFT_analysis___reachable_from_init_method_analysis___Reac
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: ReachableFromInitMethodAnalysis < ReachableFromInitMethodAnalysis: superclass init_table position */},
-  {(bigint) analysis___reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___is_iroutine_reachable_from_init},
-  {(bigint) analysis___reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___is_method_reachable_from_init},
-  {(bigint) analysis___reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___init},
+  {(bigint) 0 /* 50: GetterTestRemover < ICodeVisitor: superclass init_table position */},
+  {(bigint) icode___icode_tools___ICodeVisitor___visit_iregister_read},
+  {(bigint) icode___icode_tools___ICodeVisitor___visit_iregister_write},
+  {(bigint) icode___icode_tools___ICodeVisitor___current_icode},
+  {(bigint) global___remove_out_of_init_get_test___GetterTestRemover___visit_icode},
+  {(bigint) icode___icode_tools___ICodeVisitor___visit_closure_defs},
+  {(bigint) icode___icode_tools___ICodeVisitor___visit_iroutine},
+  {(bigint) icode___icode_tools___ICodeVisitor___init},
+  {(bigint) 2 /* 58: GetterTestRemover < GetterTestRemover: superclass init_table position */},
+  {(bigint) global___remove_out_of_init_get_test___GetterTestRemover___nb_optimized_isset},
+  {(bigint) icode___icode_tools___ICodeVisitor___visit_icode},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-void INIT_ATTRIBUTES__analysis___reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 2: Attribute GetterTestRemover::_current_icode */
+/* 3: Attribute GetterTestRemover::_nb_optimized_isset */
+static const char LOCATE_INIT_ATTRIBUTES__global___remove_out_of_init_get_test___GetterTestRemover[] = "init var of GetterTestRemover";
+void INIT_ATTRIBUTES__global___remove_out_of_init_get_test___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__analysis___reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__global___remove_out_of_init_get_test___GetterTestRemover;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* icode/icode_tools.nit:29 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_tools___ICodeVisitor____current_icode(fra.me.REG[0]) = fra.me.REG[1];
+  /* global/remove_out_of_init_get_test.nit:73 */
+  REGB0 = TAG_Int(0);
+  ATTR_global___remove_out_of_init_get_test___GetterTestRemover____nb_optimized_isset(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_analysis___reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis(void)
+val_t NEW_global___remove_out_of_init_get_test___GetterTestRemover(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 2);
-  obj->vft = (classtable_elt_t*)VFT_analysis___reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_global___remove_out_of_init_get_test___GetterTestRemover;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_analysis___reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis(val_t p0){
+static const char LOCATE_CHECKNEW_global___remove_out_of_init_get_test___GetterTestRemover[] = "check new GetterTestRemover";
+void CHECKNEW_global___remove_out_of_init_get_test___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_analysis___reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis;
+  fra.me.meth = LOCATE_CHECKNEW_global___remove_out_of_init_get_test___GetterTestRemover;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_global___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_ReachableFromInitMethodAnalysis_analysis___reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___init(void){
+static const char LOCATE_NEW_GetterTestRemover_icode___icode_tools___ICodeVisitor___init[] = "new GetterTestRemover icode_tools::ICodeVisitor::init";
+val_t NEW_GetterTestRemover_icode___icode_tools___ICodeVisitor___init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[2] = {0, 0};
+  int init_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_ReachableFromInitMethodAnalysis_analysis___reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___init;
+  fra.me.meth = LOCATE_NEW_GetterTestRemover_icode___icode_tools___ICodeVisitor___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = NEW_analysis___reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis();
-  INIT_ATTRIBUTES__analysis___reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis(fra.me.REG[0]);
-  analysis___reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___init(fra.me.REG[0], init_table);
-  CHECKNEW_analysis___reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis(fra.me.REG[0]);
+  fra.me.REG[0] = NEW_global___remove_out_of_init_get_test___GetterTestRemover();
+  INIT_ATTRIBUTES__global___remove_out_of_init_get_test___GetterTestRemover(fra.me.REG[0]);
+  icode___icode_tools___ICodeVisitor___init(fra.me.REG[0], init_table);
+  CHECKNEW_global___remove_out_of_init_get_test___GetterTestRemover(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_analysis___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis[53] = {
-  {(bigint) 2303 /* 0: Identity */},
-  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "DefaultReachableFromInitMethodAnalysis" /* 2: Class Name */},
-  {(bigint) 3 /* 3: DefaultReachableFromInitMethodAnalysis < Object: superclass typecheck marker */},
-  {(bigint) 75 /* 4: DefaultReachableFromInitMethodAnalysis < ReachableFromInitMethodAnalysis: superclass typecheck marker */},
-  {(bigint) 2303 /* 5: DefaultReachableFromInitMethodAnalysis < DefaultReachableFromInitMethodAnalysis: superclass typecheck marker */},
+const classtable_elt_t VFT_compiling_writer___Writer[60] = {
+  {(bigint) 11 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "Writer" /* 2: Class Name */},
+  {(bigint) 3 /* 3: Writer < Object: superclass typecheck marker */},
+  {(bigint) 11 /* 4: Writer < Writer: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -156136,7 +185749,7 @@ const classtable_elt_t VFT_analysis___reachable_from_init_method_analysis___Defa
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: DefaultReachableFromInitMethodAnalysis < Object: superclass init_table position */},
+  {(bigint) 0 /* 19: Writer < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -156152,6 +185765,8 @@ const classtable_elt_t VFT_analysis___reachable_from_init_method_analysis___Defa
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -156165,71 +185780,119 @@ const classtable_elt_t VFT_analysis___reachable_from_init_method_analysis___Defa
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: DefaultReachableFromInitMethodAnalysis < ReachableFromInitMethodAnalysis: superclass init_table position */},
-  {(bigint) analysis___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis___is_iroutine_reachable_from_init},
-  {(bigint) analysis___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis___is_method_reachable_from_init},
-  {(bigint) analysis___reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___init},
-  {(bigint) 2 /* 51: DefaultReachableFromInitMethodAnalysis < DefaultReachableFromInitMethodAnalysis: superclass init_table position */},
-  {(bigint) analysis___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis___init},
+  {(bigint) 1 /* 50: 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: Object_id */
-void INIT_ATTRIBUTES__analysis___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+/* 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 */
+static const char LOCATE_INIT_ATTRIBUTES__compiling_writer___Writer[] = "init var of Writer";
+void INIT_ATTRIBUTES__compiling_writer___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__analysis___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__compiling_writer___Writer;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* 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_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_writer.nit:53 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_compiling_writer___Writer____last_string(fra.me.REG[0]) = fra.me.REG[1];
+  /* compiling_writer.nit:82 */
+  REGB0 = TAG_Bool(0);
+  ATTR_compiling_writer___Writer____is_writing(fra.me.REG[0]) = REGB0;
+  /* compiling_writer.nit:98 */
+  REGB0 = TAG_Bool(0);
+  ATTR_compiling_writer___Writer____is_frozen(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_analysis___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis(void)
+val_t NEW_compiling_writer___Writer(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 2);
-  obj->vft = (classtable_elt_t*)VFT_analysis___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis;
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_compiling_writer___Writer;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_analysis___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis(val_t p0){
+static const char LOCATE_CHECKNEW_compiling_writer___Writer[] = "check new Writer";
+void CHECKNEW_compiling_writer___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_analysis___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis;
+  fra.me.meth = LOCATE_CHECKNEW_compiling_writer___Writer;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  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;
 }
-val_t NEW_DefaultReachableFromInitMethodAnalysis_analysis___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis___init(void){
+static const char LOCATE_NEW_Writer_compiling_writer___Writer___init[] = "new Writer compiling_writer::Writer::init";
+val_t NEW_Writer_compiling_writer___Writer___init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[3] = {0, 0, 0};
+  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 = 68;
-  fra.me.meth = LOCATE_NEW_DefaultReachableFromInitMethodAnalysis_analysis___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis___init;
+  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.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  /* ./analysis//reachable_from_init_method_analysis.nit:68 */
-  fra.me.REG[0] = NEW_analysis___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis();
-  INIT_ATTRIBUTES__analysis___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis(fra.me.REG[0]);
-  analysis___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis___init(fra.me.REG[0], init_table);
-  CHECKNEW_analysis___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis(fra.me.REG[0]);
+  /* compiling_writer.nit:107 */
+  fra.me.REG[0] = NEW_compiling_writer___Writer();
+  INIT_ATTRIBUTES__compiling_writer___Writer(fra.me.REG[0]);
+  compiling_writer___Writer___init(fra.me.REG[0], init_table);
+  CHECKNEW_compiling_writer___Writer(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_analysis___reachable_from_init_method_analysis_impl___RFIMABuilder[52] = {
-  {(bigint) 87 /* 0: Identity */},
+const classtable_elt_t VFT_compiling_writer___WriterCoreNode[55] = {
+  {(bigint) 323 /* 0: Identity */},
   {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "RFIMABuilder" /* 2: Class Name */},
-  {(bigint) 3 /* 3: RFIMABuilder < Object: superclass typecheck marker */},
-  {(bigint) 87 /* 4: RFIMABuilder < RFIMABuilder: superclass typecheck marker */},
+  {(bigint) "WriterCoreNode" /* 2: Class Name */},
+  {(bigint) 3 /* 3: WriterCoreNode < Object: superclass typecheck marker */},
+  {(bigint) 7 /* 4: WriterCoreNode < WriterNode: superclass typecheck marker */},
+  {(bigint) 323 /* 5: WriterCoreNode < WriterCoreNode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -156243,7 +185906,7 @@ const classtable_elt_t VFT_analysis___reachable_from_init_method_analysis_impl__
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: RFIMABuilder < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: WriterCoreNode < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -156259,6 +185922,8 @@ const classtable_elt_t VFT_analysis___reachable_from_init_method_analysis_impl__
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -156272,94 +185937,96 @@ const classtable_elt_t VFT_analysis___reachable_from_init_method_analysis_impl__
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: RFIMABuilder < RFIMABuilder: superclass init_table position */},
-  {(bigint) analysis___reachable_from_init_method_analysis_impl___RFIMABuilder___program},
-  {(bigint) analysis___reachable_from_init_method_analysis_impl___RFIMABuilder___context},
-  {(bigint) analysis___reachable_from_init_method_analysis_impl___RFIMABuilder___init},
-  {(bigint) analysis___reachable_from_init_method_analysis_impl___RFIMABuilder___work},
+  {(bigint) 0 /* 50: WriterCoreNode < WriterNode: superclass init_table position */},
+  {(bigint) compiling_writer___WriterCoreNode___internal_write_to_stream},
+  {(bigint) compiling_writer___WriterNode___init},
+  {(bigint) 2 /* 53: WriterCoreNode < WriterCoreNode: superclass init_table position */},
+  {(bigint) compiling_writer___WriterCoreNode___init},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute RFIMABuilder::_program */
-/* 3: Attribute RFIMABuilder::_context */
-void INIT_ATTRIBUTES__analysis___reachable_from_init_method_analysis_impl___RFIMABuilder(val_t p0){
+/* 2: Attribute WriterCoreNode::_next_writer */
+/* 3: Attribute WriterCoreNode::_writer */
+static const char LOCATE_INIT_ATTRIBUTES__compiling_writer___WriterCoreNode[] = "init var of WriterCoreNode";
+void INIT_ATTRIBUTES__compiling_writer___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__analysis___reachable_from_init_method_analysis_impl___RFIMABuilder;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__compiling_writer___WriterCoreNode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   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_analysis___reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___init();
-  ATTR_analysis___reachable_from_init_method_analysis_impl___RFIMABuilder____context(fra.me.REG[0]) = fra.me.REG[1];
+  /* 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_analysis___reachable_from_init_method_analysis_impl___RFIMABuilder(void)
+val_t NEW_compiling_writer___WriterCoreNode(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_analysis___reachable_from_init_method_analysis_impl___RFIMABuilder;
+  obj->vft = (classtable_elt_t*)VFT_compiling_writer___WriterCoreNode;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_analysis___reachable_from_init_method_analysis_impl___RFIMABuilder(val_t p0){
+static const char LOCATE_CHECKNEW_compiling_writer___WriterCoreNode[] = "check new WriterCoreNode";
+void CHECKNEW_compiling_writer___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_analysis___reachable_from_init_method_analysis_impl___RFIMABuilder;
+  fra.me.meth = LOCATE_CHECKNEW_compiling_writer___WriterCoreNode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_analysis___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_analysis___reachable_from_init_method_analysis_impl___RFIMABuilder____context(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_compiling_writer___WriterCoreNode____writer(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_context", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_writer", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_RFIMABuilder_analysis___reachable_from_init_method_analysis_impl___RFIMABuilder___init(val_t p0){
+static const char LOCATE_NEW_WriterCoreNode_compiling_writer___WriterCoreNode___init[] = "new WriterCoreNode compiling_writer::WriterCoreNode::init";
+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[2] = {0, 0};
+  int init_table[3] = {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_RFIMABuilder_analysis___reachable_from_init_method_analysis_impl___RFIMABuilder___init;
+  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.nitni_local_ref_head = NULL;
   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_analysis___reachable_from_init_method_analysis_impl___RFIMABuilder();
-  INIT_ATTRIBUTES__analysis___reachable_from_init_method_analysis_impl___RFIMABuilder(fra.me.REG[1]);
-  analysis___reachable_from_init_method_analysis_impl___RFIMABuilder___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_analysis___reachable_from_init_method_analysis_impl___RFIMABuilder(fra.me.REG[1]);
+  /* compiling_writer.nit:126 */
+  fra.me.REG[1] = NEW_compiling_writer___WriterCoreNode();
+  INIT_ATTRIBUTES__compiling_writer___WriterCoreNode(fra.me.REG[1]);
+  compiling_writer___WriterCoreNode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_compiling_writer___WriterCoreNode(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_analysis___reachable_from_init_method_analysis_impl___RFIMAContext[53] = {
-  {(bigint) 2067 /* 0: Identity */},
-  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "RFIMAContext" /* 2: Class Name */},
-  {(bigint) 3 /* 3: RFIMAContext < Object: superclass typecheck marker */},
-  {(bigint) 75 /* 4: RFIMAContext < ReachableFromInitMethodAnalysis: superclass typecheck marker */},
-  {(bigint) 2067 /* 5: RFIMAContext < RFIMAContext: superclass typecheck marker */},
+const classtable_elt_t VFT_compiling_writer___WriterStrings[55] = {
+  {(bigint) 319 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "WriterStrings" /* 2: Class Name */},
+  {(bigint) 3 /* 3: WriterStrings < Object: superclass typecheck marker */},
+  {(bigint) 7 /* 4: WriterStrings < WriterNode: superclass typecheck marker */},
+  {(bigint) 319 /* 5: WriterStrings < WriterStrings: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -156372,7 +186039,7 @@ const classtable_elt_t VFT_analysis___reachable_from_init_method_analysis_impl__
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: RFIMAContext < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: WriterStrings < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -156388,6 +186055,8 @@ const classtable_elt_t VFT_analysis___reachable_from_init_method_analysis_impl__
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -156401,86 +186070,100 @@ const classtable_elt_t VFT_analysis___reachable_from_init_method_analysis_impl__
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: RFIMAContext < ReachableFromInitMethodAnalysis: superclass init_table position */},
-  {(bigint) analysis___reachable_from_init_method_analysis_impl___RFIMAContext___is_iroutine_reachable_from_init},
-  {(bigint) analysis___reachable_from_init_method_analysis_impl___RFIMAContext___is_method_reachable_from_init},
-  {(bigint) analysis___reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___init},
-  {(bigint) 2 /* 51: RFIMAContext < RFIMAContext: superclass init_table position */},
-  {(bigint) analysis___reachable_from_init_method_analysis_impl___RFIMAContext___reachable_from_init_iroutines},
+  {(bigint) 0 /* 50: WriterStrings < WriterNode: superclass init_table position */},
+  {(bigint) compiling_writer___WriterStrings___internal_write_to_stream},
+  {(bigint) compiling_writer___WriterNode___init},
+  {(bigint) 2 /* 53: WriterStrings < WriterStrings: superclass init_table position */},
+  {(bigint) compiling_writer___WriterStrings___init},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute RFIMAContext::_reachable_from_init_iroutines */
-void INIT_ATTRIBUTES__analysis___reachable_from_init_method_analysis_impl___RFIMAContext(val_t p0){
+/* 2: Attribute WriterStrings::_next_writer */
+/* 3: Attribute WriterStrings::_string */
+/* 4: Attribute WriterStrings::_next */
+static const char LOCATE_INIT_ATTRIBUTES__compiling_writer___WriterStrings[] = "init var of WriterStrings";
+void INIT_ATTRIBUTES__compiling_writer___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__analysis___reachable_from_init_method_analysis_impl___RFIMAContext;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__compiling_writer___WriterStrings;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   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_standard___collection___hash_collection___HashSet___init();
-  ATTR_analysis___reachable_from_init_method_analysis_impl___RFIMAContext____reachable_from_init_iroutines(fra.me.REG[0]) = fra.me.REG[1];
+  /* compiling_writer.nit:112 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_compiling_writer___WriterNode____next_writer(fra.me.REG[0]) = fra.me.REG[1];
+  /* compiling_writer.nit:135 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_compiling_writer___WriterStrings____next(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_analysis___reachable_from_init_method_analysis_impl___RFIMAContext(void)
+val_t NEW_compiling_writer___WriterStrings(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_analysis___reachable_from_init_method_analysis_impl___RFIMAContext;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_compiling_writer___WriterStrings;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_analysis___reachable_from_init_method_analysis_impl___RFIMAContext(val_t p0){
+static const char LOCATE_CHECKNEW_compiling_writer___WriterStrings[] = "check new WriterStrings";
+void CHECKNEW_compiling_writer___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_analysis___reachable_from_init_method_analysis_impl___RFIMAContext;
+  fra.me.meth = LOCATE_CHECKNEW_compiling_writer___WriterStrings;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_analysis___reachable_from_init_method_analysis_impl___RFIMAContext____reachable_from_init_iroutines(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_compiling_writer___WriterStrings____string(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_reachable_from_init_iroutines", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_string", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_RFIMAContext_analysis___reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___init(void){
-  struct {struct stack_frame_t me;} fra;
+static const char LOCATE_NEW_WriterStrings_compiling_writer___WriterStrings___init[] = "new WriterStrings compiling_writer::WriterStrings::init";
+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 = 0;
-  fra.me.meth = LOCATE_NEW_RFIMAContext_analysis___reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___init;
+  fra.me.line = 138;
+  fra.me.meth = LOCATE_NEW_WriterStrings_compiling_writer___WriterStrings___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = NEW_analysis___reachable_from_init_method_analysis_impl___RFIMAContext();
-  INIT_ATTRIBUTES__analysis___reachable_from_init_method_analysis_impl___RFIMAContext(fra.me.REG[0]);
-  analysis___reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___init(fra.me.REG[0], init_table);
-  CHECKNEW_analysis___reachable_from_init_method_analysis_impl___RFIMAContext(fra.me.REG[0]);
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* compiling_writer.nit:138 */
+  fra.me.REG[1] = NEW_compiling_writer___WriterStrings();
+  INIT_ATTRIBUTES__compiling_writer___WriterStrings(fra.me.REG[1]);
+  compiling_writer___WriterStrings___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_compiling_writer___WriterStrings(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
-const classtable_elt_t VFT_analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor[61] = {
-  {(bigint) 2063 /* 0: Identity */},
-  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "RFIMAVisitor" /* 2: Class Name */},
-  {(bigint) 3 /* 3: RFIMAVisitor < Object: superclass typecheck marker */},
-  {(bigint) 223 /* 4: RFIMAVisitor < ICodeVisitor: superclass typecheck marker */},
-  {(bigint) 2063 /* 5: RFIMAVisitor < RFIMAVisitor: superclass typecheck marker */},
+const classtable_elt_t VFT_compiling___compiling_base___CProgram[61] = {
+  {(bigint) 291 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "CProgram" /* 2: Class Name */},
+  {(bigint) 3 /* 3: CProgram < Object: superclass typecheck marker */},
+  {(bigint) 291 /* 4: CProgram < CProgram: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -156493,7 +186176,7 @@ const classtable_elt_t VFT_analysis___reachable_from_init_method_analysis_impl__
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: RFIMAVisitor < Object: superclass init_table position */},
+  {(bigint) 0 /* 19: CProgram < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -156509,6 +186192,8 @@ const classtable_elt_t VFT_analysis___reachable_from_init_method_analysis_impl__
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -156522,106 +186207,137 @@ const classtable_elt_t VFT_analysis___reachable_from_init_method_analysis_impl__
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: RFIMAVisitor < ICodeVisitor: superclass init_table position */},
-  {(bigint) icode___icode_tools___ICodeVisitor___visit_iregister_read},
-  {(bigint) icode___icode_tools___ICodeVisitor___visit_iregister_write},
-  {(bigint) icode___icode_tools___ICodeVisitor___current_icode},
-  {(bigint) analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor___visit_icode},
-  {(bigint) icode___icode_tools___ICodeVisitor___visit_closure_defs},
-  {(bigint) icode___icode_tools___ICodeVisitor___visit_iroutine},
-  {(bigint) icode___icode_tools___ICodeVisitor___init},
-  {(bigint) 2 /* 55: RFIMAVisitor < RFIMAVisitor: superclass init_table position */},
-  {(bigint) analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor___context},
-  {(bigint) analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor___program},
-  {(bigint) analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor___init},
-  {(bigint) analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor___process_call},
-  {(bigint) icode___icode_tools___ICodeVisitor___visit_icode},
+  {(bigint) 1 /* 50: CProgram < CProgram: superclass init_table position */},
+  {(bigint) compiling___compiling_base___CProgram___init},
+  {(bigint) compiling___compiling_base___CProgram___program},
+  {(bigint) compiling___compiling_base___CProgram___files},
+  {(bigint) compiling___compiling_base___CProgram___include_dirs},
+  {(bigint) compiling___compiling_base___CProgram___build_file},
+  {(bigint) compiling___compiling_base___CProgram___compdir},
+  {(bigint) compiling___compiling_base___CProgram___module_header_name},
+  {(bigint) compiling___compiling_base___CProgram___get_file_ending},
+  {(bigint) compiling___compiling_base___CProgram___generate_build_file},
+  {(bigint) compiling___compiling_base___CProgram___run_c_compiler},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute RFIMAVisitor::_current_icode */
-/* 3: Attribute RFIMAVisitor::_context */
-/* 4: Attribute RFIMAVisitor::_program */
-void INIT_ATTRIBUTES__analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor(val_t p0){
+/* 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 */
+static const char LOCATE_INIT_ATTRIBUTES__compiling___compiling_base___CProgram[] = "init var of CProgram";
+void INIT_ATTRIBUTES__compiling___compiling_base___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__analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__compiling___compiling_base___CProgram;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_tools.nit:29 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_tools___ICodeVisitor____current_icode(fra.me.REG[0]) = fra.me.REG[1];
+  /* compiling/compiling_base.nit:53 */
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
+  ATTR_compiling___compiling_base___CProgram____files(fra.me.REG[0]) = fra.me.REG[1];
+  /* compiling/compiling_base.nit:56 */
+  fra.me.REG[1] = NEW_ArraySet_standard___collection___array___ArraySet___init();
+  ATTR_compiling___compiling_base___CProgram____include_dirs(fra.me.REG[0]) = fra.me.REG[1];
+  /* compiling/compiling_base.nit:76 */
+  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
+  ATTR_compiling___compiling_base___CProgram____module_include(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor(void)
+val_t NEW_compiling___compiling_base___CProgram(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_compiling___compiling_base___CProgram;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor(val_t p0){
+static const char LOCATE_CHECKNEW_compiling___compiling_base___CProgram[] = "check new CProgram";
+void CHECKNEW_compiling___compiling_base___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_analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor;
+  fra.me.meth = LOCATE_CHECKNEW_compiling___compiling_base___CProgram;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor____context(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_compiling___compiling_base___CProgram____program(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_context", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_program", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor____program(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_compiling___compiling_base___CProgram____files(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_program", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_files", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_compiling___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___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___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___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;
 }
-val_t NEW_RFIMAVisitor_analysis___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;
+static const char LOCATE_NEW_CProgram_compiling___compiling_base___CProgram___init[] = "new CProgram compiling_base::CProgram::init";
+val_t NEW_CProgram_compiling___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[3] = {0, 0, 0};
+  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 = 69;
-  fra.me.meth = LOCATE_NEW_RFIMAVisitor_analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor___init;
+  fra.me.line = 42;
+  fra.me.meth = LOCATE_NEW_CProgram_compiling___compiling_base___CProgram___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   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_analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor();
-  INIT_ATTRIBUTES__analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor(fra.me.REG[2]);
-  analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor(fra.me.REG[2]);
+  /* compiling/compiling_base.nit:42 */
+  fra.me.REG[1] = NEW_compiling___compiling_base___CProgram();
+  INIT_ATTRIBUTES__compiling___compiling_base___CProgram(fra.me.REG[1]);
+  compiling___compiling_base___CProgram___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_compiling___compiling_base___CProgram(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[1];
 }
-const classtable_elt_t VFT_analysis___inline_get_and_set___InlineGetSetVisitor[59] = {
-  {(bigint) 2219 /* 0: Identity */},
-  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "InlineGetSetVisitor" /* 2: Class Name */},
-  {(bigint) 3 /* 3: InlineGetSetVisitor < Object: superclass typecheck marker */},
-  {(bigint) 223 /* 4: InlineGetSetVisitor < ICodeVisitor: superclass typecheck marker */},
-  {(bigint) 2219 /* 5: InlineGetSetVisitor < InlineGetSetVisitor: superclass typecheck marker */},
+const classtable_elt_t VFT_compiling___compiling_base___CompilerVisitor[75] = {
+  {(bigint) 271 /* 0: Identity */},
+  {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "CompilerVisitor" /* 2: Class Name */},
+  {(bigint) 3 /* 3: CompilerVisitor < Object: superclass typecheck marker */},
+  {(bigint) 271 /* 4: CompilerVisitor < CompilerVisitor: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -156634,7 +186350,7 @@ const classtable_elt_t VFT_analysis___inline_get_and_set___InlineGetSetVisitor[5
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: InlineGetSetVisitor < Object: superclass init_table position */},
+  {(bigint) 0 /* 19: CompilerVisitor < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -156650,6 +186366,8 @@ const classtable_elt_t VFT_analysis___inline_get_and_set___InlineGetSetVisitor[5
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -156663,108 +186381,174 @@ const classtable_elt_t VFT_analysis___inline_get_and_set___InlineGetSetVisitor[5
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: InlineGetSetVisitor < ICodeVisitor: superclass init_table position */},
-  {(bigint) icode___icode_tools___ICodeVisitor___visit_iregister_read},
-  {(bigint) icode___icode_tools___ICodeVisitor___visit_iregister_write},
-  {(bigint) icode___icode_tools___ICodeVisitor___current_icode},
-  {(bigint) analysis___inline_get_and_set___InlineGetSetVisitor___visit_icode},
-  {(bigint) icode___icode_tools___ICodeVisitor___visit_closure_defs},
-  {(bigint) icode___icode_tools___ICodeVisitor___visit_iroutine},
-  {(bigint) icode___icode_tools___ICodeVisitor___init},
-  {(bigint) 2 /* 55: InlineGetSetVisitor < InlineGetSetVisitor: superclass init_table position */},
-  {(bigint) analysis___inline_get_and_set___InlineGetSetVisitor___number_inlined},
-  {(bigint) icode___icode_tools___ICodeVisitor___visit_icode},
-  {(bigint) analysis___inline_get_and_set___InlineGetSetVisitor___init},
+  {(bigint) 1 /* 50: CompilerVisitor < CompilerVisitor: superclass init_table position */},
+  {(bigint) compiling___compiling_base___CompilerVisitor___add_decl},
+  {(bigint) compiling___compiling_base___CompilerVisitor___add_instr},
+  {(bigint) compiling___compiling_base___CompilerVisitor___add_indent},
+  {(bigint) compiling___compiling_base___CompilerVisitor___add_line_to},
+  {(bigint) compiling___compiling_base___CompilerVisitor___add_assignment},
+  {(bigint) compiling___compiling_base___CompilerVisitor___new_number},
+  {(bigint) compiling___compiling_base___CompilerVisitor___indent},
+  {(bigint) compiling___compiling_base___CompilerVisitor___unindent},
+  {(bigint) compiling___compiling_base___CompilerVisitor___mmmodule},
+  {(bigint) compiling___compiling_base___CompilerVisitor___header_writer},
+  {(bigint) compiling___compiling_base___CompilerVisitor___header_writer__eq},
+  {(bigint) compiling___compiling_base___CompilerVisitor___writer},
+  {(bigint) compiling___compiling_base___CompilerVisitor___writer__eq},
+  {(bigint) compiling___compiling_base___CompilerVisitor___decl_writer},
+  {(bigint) compiling___compiling_base___CompilerVisitor___decl_writer__eq},
+  {(bigint) compiling___compiling_base___CompilerVisitor___top_writer},
+  {(bigint) compiling___compiling_base___CompilerVisitor___top_writer__eq},
+  {(bigint) compiling___compiling_base___CompilerVisitor___top_decl_writer},
+  {(bigint) compiling___compiling_base___CompilerVisitor___top_decl_writer__eq},
+  {(bigint) compiling___compiling_base___CompilerVisitor___indent_level},
+  {(bigint) compiling___compiling_base___CompilerVisitor___indent_level__eq},
+  {(bigint) compiling___compiling_base___CompilerVisitor___program},
+  {(bigint) compiling___compiling_base___CompilerVisitor___cprogram},
+  {(bigint) compiling___compiling_base___CompilerVisitor___init},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute InlineGetSetVisitor::_current_icode */
-/* 3: Attribute InlineGetSetVisitor::_icb */
-/* 4: Attribute InlineGetSetVisitor::_number_inlined */
-void INIT_ATTRIBUTES__analysis___inline_get_and_set___InlineGetSetVisitor(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+/* 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 */
+static const char LOCATE_INIT_ATTRIBUTES__compiling___compiling_base___CompilerVisitor[] = "init var of CompilerVisitor";
+void INIT_ATTRIBUTES__compiling___compiling_base___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__analysis___inline_get_and_set___InlineGetSetVisitor;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__compiling___compiling_base___CompilerVisitor;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./analysis//inline_get_and_set.nit:50 */
+  /* compiling/compiling_base.nit:184 */
   REGB0 = TAG_Int(0);
-  ATTR_analysis___inline_get_and_set___InlineGetSetVisitor____number_inlined(fra.me.REG[0]) = REGB0;
-  /* ./icode//icode_tools.nit:29 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_tools___ICodeVisitor____current_icode(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_compiling___compiling_base___CompilerVisitor____number_cpt(fra.me.REG[0]) = REGB0;
+  /* compiling/compiling_base.nit:216 */
+  REGB0 = TAG_Int(0);
+  ATTR_compiling___compiling_base___CompilerVisitor____indent_level(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_analysis___inline_get_and_set___InlineGetSetVisitor(void)
+val_t NEW_compiling___compiling_base___CompilerVisitor(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_analysis___inline_get_and_set___InlineGetSetVisitor;
+  obj = alloc(sizeof(val_t) * 12);
+  obj->vft = (classtable_elt_t*)VFT_compiling___compiling_base___CompilerVisitor;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_analysis___inline_get_and_set___InlineGetSetVisitor(val_t p0){
+static const char LOCATE_CHECKNEW_compiling___compiling_base___CompilerVisitor[] = "check new CompilerVisitor";
+void CHECKNEW_compiling___compiling_base___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_analysis___inline_get_and_set___InlineGetSetVisitor;
+  fra.me.meth = LOCATE_CHECKNEW_compiling___compiling_base___CompilerVisitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_analysis___inline_get_and_set___InlineGetSetVisitor____icb(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_compiling___compiling_base___CompilerVisitor____number_cpt(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_icb", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_number_cpt", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_analysis___inline_get_and_set___InlineGetSetVisitor____number_inlined(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_compiling___compiling_base___CompilerVisitor____mmmodule(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_number_inlined", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_mmmodule", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_compiling___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___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___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___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___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___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___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___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_InlineGetSetVisitor_analysis___inline_get_and_set___InlineGetSetVisitor___init(val_t p0, val_t p1){
+static const char LOCATE_NEW_CompilerVisitor_compiling___compiling_base___CompilerVisitor___init[] = "new CompilerVisitor compiling_base::CompilerVisitor::init";
+val_t NEW_CompilerVisitor_compiling___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[3] = {0, 0, 0};
+  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 = 79;
-  fra.me.meth = LOCATE_NEW_InlineGetSetVisitor_analysis___inline_get_and_set___InlineGetSetVisitor___init;
+  fra.me.line = 224;
+  fra.me.meth = LOCATE_NEW_CompilerVisitor_compiling___compiling_base___CompilerVisitor___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   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_analysis___inline_get_and_set___InlineGetSetVisitor();
-  INIT_ATTRIBUTES__analysis___inline_get_and_set___InlineGetSetVisitor(fra.me.REG[2]);
-  analysis___inline_get_and_set___InlineGetSetVisitor___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_analysis___inline_get_and_set___InlineGetSetVisitor(fra.me.REG[2]);
+  /* compiling/compiling_base.nit:224 */
+  fra.me.REG[2] = NEW_compiling___compiling_base___CompilerVisitor();
+  INIT_ATTRIBUTES__compiling___compiling_base___CompilerVisitor(fra.me.REG[2]);
+  compiling___compiling_base___CompilerVisitor___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_compiling___compiling_base___CompilerVisitor(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_analysis___remove_out_of_init_get_test___IssetCounter[58] = {
-  {(bigint) 2211 /* 0: Identity */},
-  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "IssetCounter" /* 2: Class Name */},
-  {(bigint) 3 /* 3: IssetCounter < Object: superclass typecheck marker */},
-  {(bigint) 223 /* 4: IssetCounter < ICodeVisitor: superclass typecheck marker */},
-  {(bigint) 2211 /* 5: IssetCounter < IssetCounter: superclass typecheck marker */},
+const classtable_elt_t VFT_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor[68] = {
+  {(bigint) 3175 /* 0: Identity */},
+  {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "IRegisterSlotAllocationVisitor" /* 2: Class Name */},
+  {(bigint) 3 /* 3: IRegisterSlotAllocationVisitor < Object: superclass typecheck marker */},
+  {(bigint) 211 /* 4: IRegisterSlotAllocationVisitor < ICodeVisitor: superclass typecheck marker */},
+  {(bigint) 3175 /* 5: IRegisterSlotAllocationVisitor < IRegisterSlotAllocationVisitor: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -156777,7 +186561,7 @@ const classtable_elt_t VFT_analysis___remove_out_of_init_get_test___IssetCounter
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: IssetCounter < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: IRegisterSlotAllocationVisitor < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -156793,6 +186577,8 @@ const classtable_elt_t VFT_analysis___remove_out_of_init_get_test___IssetCounter
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -156806,96 +186592,170 @@ const classtable_elt_t VFT_analysis___remove_out_of_init_get_test___IssetCounter
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: IssetCounter < ICodeVisitor: superclass init_table position */},
-  {(bigint) icode___icode_tools___ICodeVisitor___visit_iregister_read},
-  {(bigint) icode___icode_tools___ICodeVisitor___visit_iregister_write},
+  {(bigint) 0 /* 50: IRegisterSlotAllocationVisitor < ICodeVisitor: superclass init_table position */},
+  {(bigint) analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_iregister_read},
+  {(bigint) analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_iregister_write},
   {(bigint) icode___icode_tools___ICodeVisitor___current_icode},
-  {(bigint) analysis___remove_out_of_init_get_test___IssetCounter___visit_icode},
-  {(bigint) icode___icode_tools___ICodeVisitor___visit_closure_defs},
-  {(bigint) icode___icode_tools___ICodeVisitor___visit_iroutine},
+  {(bigint) analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_icode},
+  {(bigint) analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_closure_defs},
+  {(bigint) analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_iroutine},
   {(bigint) icode___icode_tools___ICodeVisitor___init},
-  {(bigint) 2 /* 55: IssetCounter < IssetCounter: superclass init_table position */},
-  {(bigint) analysis___remove_out_of_init_get_test___IssetCounter___nb_isset},
+  {(bigint) 2 /* 58: IRegisterSlotAllocationVisitor < IRegisterSlotAllocationVisitor: superclass init_table position */},
+  {(bigint) analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___mark_locality},
+  {(bigint) analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___deferred_free},
   {(bigint) icode___icode_tools___ICodeVisitor___visit_icode},
+  {(bigint) icode___icode_tools___ICodeVisitor___visit_closure_defs},
+  {(bigint) icode___icode_tools___ICodeVisitor___visit_iroutine},
+  {(bigint) analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___register},
+  {(bigint) analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___free},
+  {(bigint) analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___iroutine_slot_allocation},
+  {(bigint) analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___init},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute IssetCounter::_current_icode */
-/* 3: Attribute IssetCounter::_nb_isset */
-void INIT_ATTRIBUTES__analysis___remove_out_of_init_get_test___IssetCounter(val_t p0){
+/* 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 */
+static const char LOCATE_INIT_ATTRIBUTES__analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor[] = "init var of IRegisterSlotAllocationVisitor";
+void INIT_ATTRIBUTES__analysis___allocate_iregister_slots___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__analysis___remove_out_of_init_get_test___IssetCounter;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   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_analysis___remove_out_of_init_get_test___IssetCounter____nb_isset(fra.me.REG[0]) = REGB0;
-  /* ./icode//icode_tools.nit:29 */
+  /* icode/icode_tools.nit:29 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_tools___ICodeVisitor____current_icode(fra.me.REG[0]) = fra.me.REG[1];
+  /* analysis/allocate_iregister_slots.nit:34 */
+  REGB0 = TAG_Int(0);
+  ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____pass(fra.me.REG[0]) = REGB0;
+  /* analysis/allocate_iregister_slots.nit:85 */
+  REGB0 = TAG_Int(0);
+  ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_rank(fra.me.REG[0]) = REGB0;
+  /* analysis/allocate_iregister_slots.nit:88 */
+  REGB0 = TAG_Int(0);
+  ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____max_rank(fra.me.REG[0]) = REGB0;
+  /* analysis/allocate_iregister_slots.nit:92 */
+  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  ATTR_analysis___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_analysis___allocate_iregister_slots___SlotGroup___init();
+  ATTR_analysis___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_analysis___allocate_iregister_slots___SlotGroup___init();
+  ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____tag_slots(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_analysis___remove_out_of_init_get_test___IssetCounter(void)
+val_t NEW_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_analysis___remove_out_of_init_get_test___IssetCounter;
+  obj = alloc(sizeof(val_t) * 11);
+  obj->vft = (classtable_elt_t*)VFT_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_analysis___remove_out_of_init_get_test___IssetCounter(val_t p0){
+static const char LOCATE_CHECKNEW_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor[] = "check new IRegisterSlotAllocationVisitor";
+void CHECKNEW_analysis___allocate_iregister_slots___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_analysis___remove_out_of_init_get_test___IssetCounter;
+  fra.me.meth = LOCATE_CHECKNEW_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_analysis___remove_out_of_init_get_test___IssetCounter____nb_isset(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____pass(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_nb_isset", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_pass", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_analysis___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_analysis___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_analysis___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_analysis___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_analysis___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_analysis___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_analysis___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_IssetCounter_icode___icode_tools___ICodeVisitor___init(void){
-  struct {struct stack_frame_t me;} fra;
+static const char LOCATE_NEW_IRegisterSlotAllocationVisitor_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___init[] = "new IRegisterSlotAllocationVisitor allocate_iregister_slots::IRegisterSlotAllocationVisitor::init";
+val_t NEW_IRegisterSlotAllocationVisitor_analysis___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 = 0;
-  fra.me.meth = LOCATE_NEW_IssetCounter_icode___icode_tools___ICodeVisitor___init;
+  fra.me.line = 233;
+  fra.me.meth = LOCATE_NEW_IRegisterSlotAllocationVisitor_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = NEW_analysis___remove_out_of_init_get_test___IssetCounter();
-  INIT_ATTRIBUTES__analysis___remove_out_of_init_get_test___IssetCounter(fra.me.REG[0]);
-  icode___icode_tools___ICodeVisitor___init(fra.me.REG[0], init_table);
-  CHECKNEW_analysis___remove_out_of_init_get_test___IssetCounter(fra.me.REG[0]);
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* analysis/allocate_iregister_slots.nit:233 */
+  fra.me.REG[1] = NEW_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor();
+  INIT_ATTRIBUTES__analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor(fra.me.REG[1]);
+  analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
-const classtable_elt_t VFT_analysis___remove_out_of_init_get_test___GetterTestRemover[58] = {
-  {(bigint) 2275 /* 0: Identity */},
+const classtable_elt_t VFT_analysis___allocate_iregister_slots___SlotGroup[54] = {
+  {(bigint) 47 /* 0: Identity */},
   {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "GetterTestRemover" /* 2: Class Name */},
-  {(bigint) 3 /* 3: GetterTestRemover < Object: superclass typecheck marker */},
-  {(bigint) 223 /* 4: GetterTestRemover < ICodeVisitor: superclass typecheck marker */},
-  {(bigint) 2275 /* 5: GetterTestRemover < GetterTestRemover: superclass typecheck marker */},
+  {(bigint) "SlotGroup" /* 2: Class Name */},
+  {(bigint) 3 /* 3: SlotGroup < Object: superclass typecheck marker */},
+  {(bigint) 47 /* 4: SlotGroup < SlotGroup: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -156908,7 +186768,7 @@ const classtable_elt_t VFT_analysis___remove_out_of_init_get_test___GetterTestRe
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: GetterTestRemover < Object: superclass init_table position */},
+  {(bigint) 0 /* 19: SlotGroup < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -156924,6 +186784,8 @@ const classtable_elt_t VFT_analysis___remove_out_of_init_get_test___GetterTestRe
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -156937,96 +186799,101 @@ const classtable_elt_t VFT_analysis___remove_out_of_init_get_test___GetterTestRe
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: GetterTestRemover < ICodeVisitor: superclass init_table position */},
-  {(bigint) icode___icode_tools___ICodeVisitor___visit_iregister_read},
-  {(bigint) icode___icode_tools___ICodeVisitor___visit_iregister_write},
-  {(bigint) icode___icode_tools___ICodeVisitor___current_icode},
-  {(bigint) analysis___remove_out_of_init_get_test___GetterTestRemover___visit_icode},
-  {(bigint) icode___icode_tools___ICodeVisitor___visit_closure_defs},
-  {(bigint) icode___icode_tools___ICodeVisitor___visit_iroutine},
-  {(bigint) icode___icode_tools___ICodeVisitor___init},
-  {(bigint) 2 /* 55: GetterTestRemover < GetterTestRemover: superclass init_table position */},
-  {(bigint) analysis___remove_out_of_init_get_test___GetterTestRemover___nb_optimized_isset},
-  {(bigint) icode___icode_tools___ICodeVisitor___visit_icode},
+  {(bigint) 1 /* 50: SlotGroup < SlotGroup: superclass init_table position */},
+  {(bigint) analysis___allocate_iregister_slots___SlotGroup___register},
+  {(bigint) analysis___allocate_iregister_slots___SlotGroup___free},
+  {(bigint) analysis___allocate_iregister_slots___SlotGroup___init},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute GetterTestRemover::_current_icode */
-/* 3: Attribute GetterTestRemover::_nb_optimized_isset */
-void INIT_ATTRIBUTES__analysis___remove_out_of_init_get_test___GetterTestRemover(val_t p0){
+/* 2: Attribute SlotGroup::_free */
+/* 3: Attribute SlotGroup::_next_index */
+static const char LOCATE_INIT_ATTRIBUTES__analysis___allocate_iregister_slots___SlotGroup[] = "init var of SlotGroup";
+void INIT_ATTRIBUTES__analysis___allocate_iregister_slots___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__analysis___remove_out_of_init_get_test___GetterTestRemover;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__analysis___allocate_iregister_slots___SlotGroup;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   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 */
+  /* analysis/allocate_iregister_slots.nit:243 */
+  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+  ATTR_analysis___allocate_iregister_slots___SlotGroup____free(fra.me.REG[0]) = fra.me.REG[1];
+  /* analysis/allocate_iregister_slots.nit:246 */
   REGB0 = TAG_Int(0);
-  ATTR_analysis___remove_out_of_init_get_test___GetterTestRemover____nb_optimized_isset(fra.me.REG[0]) = REGB0;
-  /* ./icode//icode_tools.nit:29 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_icode___icode_tools___ICodeVisitor____current_icode(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_analysis___allocate_iregister_slots___SlotGroup____next_index(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_analysis___remove_out_of_init_get_test___GetterTestRemover(void)
+val_t NEW_analysis___allocate_iregister_slots___SlotGroup(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_analysis___remove_out_of_init_get_test___GetterTestRemover;
+  obj->vft = (classtable_elt_t*)VFT_analysis___allocate_iregister_slots___SlotGroup;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_analysis___remove_out_of_init_get_test___GetterTestRemover(val_t p0){
+static const char LOCATE_CHECKNEW_analysis___allocate_iregister_slots___SlotGroup[] = "check new SlotGroup";
+void CHECKNEW_analysis___allocate_iregister_slots___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_analysis___remove_out_of_init_get_test___GetterTestRemover;
+  fra.me.meth = LOCATE_CHECKNEW_analysis___allocate_iregister_slots___SlotGroup;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_analysis___remove_out_of_init_get_test___GetterTestRemover____nb_optimized_isset(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___SlotGroup____free(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_nb_optimized_isset", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_free", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_analysis___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_GetterTestRemover_icode___icode_tools___ICodeVisitor___init(void){
+static const char LOCATE_NEW_SlotGroup_analysis___allocate_iregister_slots___SlotGroup___init[] = "new SlotGroup allocate_iregister_slots::SlotGroup::init";
+val_t NEW_SlotGroup_analysis___allocate_iregister_slots___SlotGroup___init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[3] = {0, 0, 0};
+  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_GetterTestRemover_icode___icode_tools___ICodeVisitor___init;
+  fra.me.meth = LOCATE_NEW_SlotGroup_analysis___allocate_iregister_slots___SlotGroup___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = NEW_analysis___remove_out_of_init_get_test___GetterTestRemover();
-  INIT_ATTRIBUTES__analysis___remove_out_of_init_get_test___GetterTestRemover(fra.me.REG[0]);
-  icode___icode_tools___ICodeVisitor___init(fra.me.REG[0], init_table);
-  CHECKNEW_analysis___remove_out_of_init_get_test___GetterTestRemover(fra.me.REG[0]);
+  fra.me.REG[0] = NEW_analysis___allocate_iregister_slots___SlotGroup();
+  INIT_ATTRIBUTES__analysis___allocate_iregister_slots___SlotGroup(fra.me.REG[0]);
+  analysis___allocate_iregister_slots___SlotGroup___init(fra.me.REG[0], init_table);
+  CHECKNEW_analysis___allocate_iregister_slots___SlotGroup(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_compiling___icode_generator___FileICodeDumper[63] = {
-  {(bigint) 2279 /* 0: Identity */},
-  {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "FileICodeDumper" /* 2: Class Name */},
-  {(bigint) 3 /* 3: FileICodeDumper < Object: superclass typecheck marker */},
-  {(bigint) 231 /* 4: FileICodeDumper < ICodeDumper: superclass typecheck marker */},
-  {(bigint) 2279 /* 5: FileICodeDumper < FileICodeDumper: superclass typecheck marker */},
+const classtable_elt_t VFT_analysis___icode_dump___ICodeDumper[64] = {
+  {(bigint) 219 /* 0: Identity */},
+  {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ICodeDumper" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ICodeDumper < Object: superclass typecheck marker */},
+  {(bigint) 219 /* 4: ICodeDumper < ICodeDumper: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -157039,7 +186906,7 @@ const classtable_elt_t VFT_compiling___icode_generator___FileICodeDumper[63] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: FileICodeDumper < Object: superclass init_table position */},
+  {(bigint) 0 /* 19: ICodeDumper < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -157055,6 +186922,8 @@ const classtable_elt_t VFT_compiling___icode_generator___FileICodeDumper[63] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -157068,7 +186937,7 @@ const classtable_elt_t VFT_compiling___icode_generator___FileICodeDumper[63] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: FileICodeDumper < ICodeDumper: superclass init_table position */},
+  {(bigint) 1 /* 50: ICodeDumper < ICodeDumper: superclass init_table position */},
   {(bigint) analysis___icode_dump___ICodeDumper___dump_locations},
   {(bigint) analysis___icode_dump___ICodeDumper___dump_line_numbers},
   {(bigint) analysis___icode_dump___ICodeDumper___init},
@@ -157078,83 +186947,79 @@ const classtable_elt_t VFT_compiling___icode_generator___FileICodeDumper[63] = {
   {(bigint) analysis___icode_dump___ICodeDumper___lab},
   {(bigint) analysis___icode_dump___ICodeDumper___line},
   {(bigint) analysis___icode_dump___ICodeDumper___has_lab},
-  {(bigint) compiling___icode_generator___FileICodeDumper___write},
+  {(bigint) analysis___icode_dump___ICodeDumper___write},
   {(bigint) analysis___icode_dump___ICodeDumper___indent_level},
   {(bigint) analysis___icode_dump___ICodeDumper___indent},
   {(bigint) analysis___icode_dump___ICodeDumper___unindent},
-  {(bigint) 2 /* 61: FileICodeDumper < FileICodeDumper: superclass init_table position */},
-  {(bigint) compiling___icode_generator___FileICodeDumper___init},
 };
 /* 0: Pointer to the classtable */
 /* 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__compiling___icode_generator___FileICodeDumper(val_t p0){
+/* 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 */
+static const char LOCATE_INIT_ATTRIBUTES__analysis___icode_dump___ICodeDumper[] = "init var of ICodeDumper";
+void INIT_ATTRIBUTES__analysis___icode_dump___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__compiling___icode_generator___FileICodeDumper;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__analysis___icode_dump___ICodeDumper;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./analysis//icode_dump.nit:70 */
+  /* analysis/icode_dump.nit:70 */
   fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
   ATTR_analysis___icode_dump___ICodeDumper____ids(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./analysis//icode_dump.nit:71 */
+  /* analysis/icode_dump.nit:71 */
   REGB0 = TAG_Int(0);
   ATTR_analysis___icode_dump___ICodeDumper____last_value(fra.me.REG[0]) = REGB0;
-  /* ./analysis//icode_dump.nit:118 */
+  /* analysis/icode_dump.nit:118 */
   REGB0 = TAG_Int(0);
   ATTR_analysis___icode_dump___ICodeDumper____last_clos(fra.me.REG[0]) = REGB0;
-  /* ./analysis//icode_dump.nit:134 */
+  /* analysis/icode_dump.nit:134 */
   REGB0 = TAG_Int(0);
   ATTR_analysis___icode_dump___ICodeDumper____last_label(fra.me.REG[0]) = REGB0;
-  /* ./analysis//icode_dump.nit:149 */
+  /* analysis/icode_dump.nit:149 */
   REGB0 = TAG_Int(0);
   ATTR_analysis___icode_dump___ICodeDumper____last_line(fra.me.REG[0]) = REGB0;
-  /* ./analysis//icode_dump.nit:178 */
+  /* analysis/icode_dump.nit:178 */
   REGB0 = TAG_Int(0);
   ATTR_analysis___icode_dump___ICodeDumper____indent_level(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_compiling___icode_generator___FileICodeDumper(void)
+val_t NEW_analysis___icode_dump___ICodeDumper(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 11);
-  obj->vft = (classtable_elt_t*)VFT_compiling___icode_generator___FileICodeDumper;
+  obj = alloc(sizeof(val_t) * 10);
+  obj->vft = (classtable_elt_t*)VFT_analysis___icode_dump___ICodeDumper;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_compiling___icode_generator___FileICodeDumper(val_t p0){
+static const char LOCATE_CHECKNEW_analysis___icode_dump___ICodeDumper[] = "check new ICodeDumper";
+void CHECKNEW_analysis___icode_dump___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_compiling___icode_generator___FileICodeDumper;
+  fra.me.meth = LOCATE_CHECKNEW_analysis___icode_dump___ICodeDumper;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_compiling___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_analysis___icode_dump___ICodeDumper____dump_locations(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -157197,33 +187062,189 @@ void CHECKNEW_compiling___icode_generator___FileICodeDumper(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_FileICodeDumper_compiling___icode_generator___FileICodeDumper___init(val_t p0){
+static const char LOCATE_NEW_ICodeDumper_analysis___icode_dump___ICodeDumper___init[] = "new ICodeDumper icode_dump::ICodeDumper::init";
+val_t NEW_ICodeDumper_analysis___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};
+  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_analysis___icode_dump___ICodeDumper___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  REGB1 = p1;
+  /* analysis/icode_dump.nit:73 */
+  fra.me.REG[0] = NEW_analysis___icode_dump___ICodeDumper();
+  INIT_ATTRIBUTES__analysis___icode_dump___ICodeDumper(fra.me.REG[0]);
+  analysis___icode_dump___ICodeDumper___init(fra.me.REG[0], REGB0, REGB1, init_table);
+  CHECKNEW_analysis___icode_dump___ICodeDumper(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_analysis___inline_methods___InlineMethodVisitor[61] = {
+  {(bigint) 3159 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "InlineMethodVisitor" /* 2: Class Name */},
+  {(bigint) 3 /* 3: InlineMethodVisitor < Object: superclass typecheck marker */},
+  {(bigint) 211 /* 4: InlineMethodVisitor < ICodeVisitor: superclass typecheck marker */},
+  {(bigint) 3159 /* 5: InlineMethodVisitor < InlineMethodVisitor: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: InlineMethodVisitor < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 50: InlineMethodVisitor < ICodeVisitor: superclass init_table position */},
+  {(bigint) icode___icode_tools___ICodeVisitor___visit_iregister_read},
+  {(bigint) icode___icode_tools___ICodeVisitor___visit_iregister_write},
+  {(bigint) icode___icode_tools___ICodeVisitor___current_icode},
+  {(bigint) analysis___inline_methods___InlineMethodVisitor___visit_icode},
+  {(bigint) icode___icode_tools___ICodeVisitor___visit_closure_defs},
+  {(bigint) icode___icode_tools___ICodeVisitor___visit_iroutine},
+  {(bigint) icode___icode_tools___ICodeVisitor___init},
+  {(bigint) 2 /* 58: InlineMethodVisitor < InlineMethodVisitor: superclass init_table position */},
+  {(bigint) icode___icode_tools___ICodeVisitor___visit_icode},
+  {(bigint) analysis___inline_methods___InlineMethodVisitor___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute InlineMethodVisitor::_current_icode */
+/* 3: Attribute InlineMethodVisitor::_pass */
+/* 4: Attribute InlineMethodVisitor::_icb */
+static const char LOCATE_INIT_ATTRIBUTES__analysis___inline_methods___InlineMethodVisitor[] = "init var of InlineMethodVisitor";
+void INIT_ATTRIBUTES__analysis___inline_methods___InlineMethodVisitor(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
   val_t tmp;
-  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 41;
-  fra.me.meth = LOCATE_NEW_FileICodeDumper_compiling___icode_generator___FileICodeDumper___init;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__analysis___inline_methods___InlineMethodVisitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//icode_generator.nit:41 */
-  fra.me.REG[1] = NEW_compiling___icode_generator___FileICodeDumper();
-  INIT_ATTRIBUTES__compiling___icode_generator___FileICodeDumper(fra.me.REG[1]);
-  compiling___icode_generator___FileICodeDumper___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_compiling___icode_generator___FileICodeDumper(fra.me.REG[1]);
+  /* icode/icode_tools.nit:29 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode___icode_tools___ICodeVisitor____current_icode(fra.me.REG[0]) = fra.me.REG[1];
+  /* analysis/inline_methods.nit:24 */
+  REGB0 = TAG_Int(0);
+  ATTR_analysis___inline_methods___InlineMethodVisitor____pass(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
 }
-const classtable_elt_t VFT_compiling___table_computation___ColorContext[52] = {
-  {(bigint) 279 /* 0: Identity */},
-  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "ColorContext" /* 2: Class Name */},
-  {(bigint) 3 /* 3: ColorContext < Object: superclass typecheck marker */},
-  {(bigint) 279 /* 4: ColorContext < ColorContext: superclass typecheck marker */},
+val_t NEW_analysis___inline_methods___InlineMethodVisitor(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_analysis___inline_methods___InlineMethodVisitor;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_analysis___inline_methods___InlineMethodVisitor[] = "check new InlineMethodVisitor";
+void CHECKNEW_analysis___inline_methods___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_analysis___inline_methods___InlineMethodVisitor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_analysis___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_analysis___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;
+}
+static const char LOCATE_NEW_InlineMethodVisitor_analysis___inline_methods___InlineMethodVisitor___init[] = "new InlineMethodVisitor inline_methods::InlineMethodVisitor::init";
+val_t NEW_InlineMethodVisitor_analysis___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_analysis___inline_methods___InlineMethodVisitor___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  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_analysis___inline_methods___InlineMethodVisitor();
+  INIT_ATTRIBUTES__analysis___inline_methods___InlineMethodVisitor(fra.me.REG[2]);
+  analysis___inline_methods___InlineMethodVisitor___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_analysis___inline_methods___InlineMethodVisitor(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_compiling___icode_generator___FileICodeDumper[66] = {
+  {(bigint) 3223 /* 0: Identity */},
+  {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "FileICodeDumper" /* 2: Class Name */},
+  {(bigint) 3 /* 3: FileICodeDumper < Object: superclass typecheck marker */},
+  {(bigint) 219 /* 4: FileICodeDumper < ICodeDumper: superclass typecheck marker */},
+  {(bigint) 3223 /* 5: FileICodeDumper < FileICodeDumper: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -157237,7 +187258,7 @@ const classtable_elt_t VFT_compiling___table_computation___ColorContext[52] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: ColorContext < Object: superclass init_table position */},
+  {(bigint) 0 /* 19: FileICodeDumper < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -157253,6 +187274,8 @@ const classtable_elt_t VFT_compiling___table_computation___ColorContext[52] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -157266,85 +187289,170 @@ const classtable_elt_t VFT_compiling___table_computation___ColorContext[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: ColorContext < ColorContext: superclass init_table position */},
-  {(bigint) compiling___table_computation___ColorContext___color},
-  {(bigint) compiling___table_computation___ColorContext___has_color},
-  {(bigint) compiling___table_computation___ColorContext___color__eq},
-  {(bigint) compiling___table_computation___ColorContext___init},
+  {(bigint) 1 /* 50: FileICodeDumper < ICodeDumper: superclass init_table position */},
+  {(bigint) analysis___icode_dump___ICodeDumper___dump_locations},
+  {(bigint) analysis___icode_dump___ICodeDumper___dump_line_numbers},
+  {(bigint) analysis___icode_dump___ICodeDumper___init},
+  {(bigint) analysis___icode_dump___ICodeDumper___register},
+  {(bigint) analysis___icode_dump___ICodeDumper___register_all},
+  {(bigint) analysis___icode_dump___ICodeDumper___closdecl},
+  {(bigint) analysis___icode_dump___ICodeDumper___lab},
+  {(bigint) analysis___icode_dump___ICodeDumper___line},
+  {(bigint) analysis___icode_dump___ICodeDumper___has_lab},
+  {(bigint) compiling___icode_generator___FileICodeDumper___write},
+  {(bigint) analysis___icode_dump___ICodeDumper___indent_level},
+  {(bigint) analysis___icode_dump___ICodeDumper___indent},
+  {(bigint) analysis___icode_dump___ICodeDumper___unindent},
+  {(bigint) 2 /* 64: FileICodeDumper < FileICodeDumper: superclass init_table position */},
+  {(bigint) compiling___icode_generator___FileICodeDumper___init},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ColorContext::_colors */
-void INIT_ATTRIBUTES__compiling___table_computation___ColorContext(val_t p0){
+/* 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 */
+static const char LOCATE_INIT_ATTRIBUTES__compiling___icode_generator___FileICodeDumper[] = "init var of FileICodeDumper";
+void INIT_ATTRIBUTES__compiling___icode_generator___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__compiling___table_computation___ColorContext;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__compiling___icode_generator___FileICodeDumper;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//table_computation.nit:27 */
+  /* analysis/icode_dump.nit:70 */
   fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
-  ATTR_compiling___table_computation___ColorContext____colors(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_analysis___icode_dump___ICodeDumper____ids(fra.me.REG[0]) = fra.me.REG[1];
+  /* analysis/icode_dump.nit:71 */
+  REGB0 = TAG_Int(0);
+  ATTR_analysis___icode_dump___ICodeDumper____last_value(fra.me.REG[0]) = REGB0;
+  /* analysis/icode_dump.nit:118 */
+  REGB0 = TAG_Int(0);
+  ATTR_analysis___icode_dump___ICodeDumper____last_clos(fra.me.REG[0]) = REGB0;
+  /* analysis/icode_dump.nit:134 */
+  REGB0 = TAG_Int(0);
+  ATTR_analysis___icode_dump___ICodeDumper____last_label(fra.me.REG[0]) = REGB0;
+  /* analysis/icode_dump.nit:149 */
+  REGB0 = TAG_Int(0);
+  ATTR_analysis___icode_dump___ICodeDumper____last_line(fra.me.REG[0]) = REGB0;
+  /* analysis/icode_dump.nit:178 */
+  REGB0 = TAG_Int(0);
+  ATTR_analysis___icode_dump___ICodeDumper____indent_level(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_compiling___table_computation___ColorContext(void)
+val_t NEW_compiling___icode_generator___FileICodeDumper(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_compiling___table_computation___ColorContext;
+  obj = alloc(sizeof(val_t) * 11);
+  obj->vft = (classtable_elt_t*)VFT_compiling___icode_generator___FileICodeDumper;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_compiling___table_computation___ColorContext(val_t p0){
+static const char LOCATE_CHECKNEW_compiling___icode_generator___FileICodeDumper[] = "check new FileICodeDumper";
+void CHECKNEW_compiling___icode_generator___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_compiling___table_computation___ColorContext;
+  fra.me.meth = LOCATE_CHECKNEW_compiling___icode_generator___FileICodeDumper;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_compiling___table_computation___ColorContext____colors(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_analysis___icode_dump___ICodeDumper____dump_locations(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_colors", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_dump_locations", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_analysis___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_analysis___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_analysis___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_analysis___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_analysis___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_analysis___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_analysis___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);
+  }
+  REGB0 = TAG_Bool(ATTR_compiling___icode_generator___FileICodeDumper____file(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_file", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ColorContext_compiling___table_computation___ColorContext___init(void){
-  struct {struct stack_frame_t me;} fra;
+static const char LOCATE_NEW_FileICodeDumper_compiling___icode_generator___FileICodeDumper___init[] = "new FileICodeDumper icode_generator::FileICodeDumper::init";
+val_t NEW_FileICodeDumper_compiling___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[2] = {0, 0};
+  int init_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_ColorContext_compiling___table_computation___ColorContext___init;
+  fra.me.line = 41;
+  fra.me.meth = LOCATE_NEW_FileICodeDumper_compiling___icode_generator___FileICodeDumper___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = NEW_compiling___table_computation___ColorContext();
-  INIT_ATTRIBUTES__compiling___table_computation___ColorContext(fra.me.REG[0]);
-  compiling___table_computation___ColorContext___init(fra.me.REG[0], init_table);
-  CHECKNEW_compiling___table_computation___ColorContext(fra.me.REG[0]);
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* compiling/icode_generator.nit:41 */
+  fra.me.REG[1] = NEW_compiling___icode_generator___FileICodeDumper();
+  INIT_ATTRIBUTES__compiling___icode_generator___FileICodeDumper(fra.me.REG[1]);
+  compiling___icode_generator___FileICodeDumper___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_compiling___icode_generator___FileICodeDumper(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
-const classtable_elt_t VFT_compiling___table_computation___TableInformation[55] = {
-  {(bigint) 335 /* 0: Identity */},
+const classtable_elt_t VFT_compiling___table_computation___TableInformation[58] = {
+  {(bigint) 339 /* 0: Identity */},
   {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TableInformation" /* 2: Class Name */},
   {(bigint) 3 /* 3: TableInformation < Object: superclass typecheck marker */},
   {(bigint) 279 /* 4: TableInformation < ColorContext: superclass typecheck marker */},
-  {(bigint) 335 /* 5: TableInformation < TableInformation: superclass typecheck marker */},
+  {(bigint) 339 /* 5: TableInformation < TableInformation: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -157357,7 +187465,7 @@ const classtable_elt_t VFT_compiling___table_computation___TableInformation[55]
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: TableInformation < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: TableInformation < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -157373,6 +187481,8 @@ const classtable_elt_t VFT_compiling___table_computation___TableInformation[55]
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -157386,12 +187496,12 @@ const classtable_elt_t VFT_compiling___table_computation___TableInformation[55]
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: TableInformation < ColorContext: superclass init_table position */},
+  {(bigint) 0 /* 50: TableInformation < ColorContext: superclass init_table position */},
   {(bigint) compiling___table_computation___ColorContext___color},
   {(bigint) compiling___table_computation___ColorContext___has_color},
   {(bigint) compiling___table_computation___ColorContext___color__eq},
   {(bigint) compiling___table_computation___ColorContext___init},
-  {(bigint) 2 /* 52: TableInformation < TableInformation: superclass init_table position */},
+  {(bigint) 2 /* 55: TableInformation < TableInformation: superclass init_table position */},
   {(bigint) compiling___table_computation___TableInformation___max_class_table_length},
   {(bigint) compiling___table_computation___TableInformation___max_class_table_length__eq},
 };
@@ -157399,6 +187509,7 @@ const classtable_elt_t VFT_compiling___table_computation___TableInformation[55]
 /* 1: Object_id */
 /* 2: Attribute TableInformation::_colors */
 /* 3: Attribute TableInformation::_max_class_table_length */
+static const char LOCATE_INIT_ATTRIBUTES__compiling___table_computation___TableInformation[] = "init var of TableInformation";
 void INIT_ATTRIBUTES__compiling___table_computation___TableInformation(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t REGB0;
@@ -157409,15 +187520,16 @@ void INIT_ATTRIBUTES__compiling___table_computation___TableInformation(val_t p0)
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__compiling___table_computation___TableInformation;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   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_compiling___table_computation___TableInformation____max_class_table_length(fra.me.REG[0]) = REGB0;
-  /* ./compiling//table_computation.nit:27 */
+  /* compiling/table_computation.nit:27 */
   fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
   ATTR_compiling___table_computation___ColorContext____colors(fra.me.REG[0]) = fra.me.REG[1];
+  /* compiling/table_computation.nit:57 */
+  REGB0 = TAG_Int(0);
+  ATTR_compiling___table_computation___TableInformation____max_class_table_length(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_compiling___table_computation___TableInformation(void)
@@ -157429,6 +187541,7 @@ val_t NEW_compiling___table_computation___TableInformation(void)
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
+static const char LOCATE_CHECKNEW_compiling___table_computation___TableInformation[] = "check new TableInformation";
 void CHECKNEW_compiling___table_computation___TableInformation(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
@@ -157439,20 +187552,22 @@ void CHECKNEW_compiling___table_computation___TableInformation(val_t p0){
   fra.me.meth = LOCATE_CHECKNEW_compiling___table_computation___TableInformation;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_compiling___table_computation___TableInformation____max_class_table_length(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_compiling___table_computation___ColorContext____colors(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_max_class_table_length", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_colors", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_compiling___table_computation___ColorContext____colors(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_compiling___table_computation___TableInformation____max_class_table_length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_colors", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_max_class_table_length", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
+static const char LOCATE_NEW_TableInformation_compiling___table_computation___ColorContext___init[] = "new TableInformation table_computation::ColorContext::init";
 val_t NEW_TableInformation_compiling___table_computation___ColorContext___init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
@@ -157463,6 +187578,7 @@ val_t NEW_TableInformation_compiling___table_computation___ColorContext___init(v
   fra.me.meth = LOCATE_NEW_TableInformation_compiling___table_computation___ColorContext___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = NEW_compiling___table_computation___TableInformation();
   INIT_ATTRIBUTES__compiling___table_computation___TableInformation(fra.me.REG[0]);
@@ -157471,13 +187587,14 @@ val_t NEW_TableInformation_compiling___table_computation___ColorContext___init(v
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_compiling___table_computation___CompiledClass[63] = {
-  {(bigint) 2331 /* 0: Identity */},
+const classtable_elt_t VFT_compiling___table_computation___CompiledClass[66] = {
+  {(bigint) 3279 /* 0: Identity */},
   {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "CompiledClass" /* 2: Class Name */},
   {(bigint) 3 /* 3: CompiledClass < Object: superclass typecheck marker */},
   {(bigint) 279 /* 4: CompiledClass < ColorContext: superclass typecheck marker */},
-  {(bigint) 2331 /* 5: CompiledClass < CompiledClass: superclass typecheck marker */},
+  {(bigint) 3279 /* 5: CompiledClass < CompiledClass: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -157490,7 +187607,7 @@ const classtable_elt_t VFT_compiling___table_computation___CompiledClass[63] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: CompiledClass < Object: superclass init_table position */},
+  {(bigint) 1 /* 19: CompiledClass < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -157506,6 +187623,8 @@ const classtable_elt_t VFT_compiling___table_computation___CompiledClass[63] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -157519,12 +187638,12 @@ const classtable_elt_t VFT_compiling___table_computation___CompiledClass[63] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: CompiledClass < ColorContext: superclass init_table position */},
+  {(bigint) 0 /* 50: CompiledClass < ColorContext: superclass init_table position */},
   {(bigint) compiling___table_computation___ColorContext___color},
   {(bigint) compiling___table_computation___ColorContext___has_color},
   {(bigint) compiling___table_computation___ColorContext___color__eq},
   {(bigint) compiling___table_computation___ColorContext___init},
-  {(bigint) 2 /* 52: CompiledClass < CompiledClass: superclass init_table position */},
+  {(bigint) 2 /* 55: CompiledClass < CompiledClass: superclass init_table position */},
   {(bigint) compiling___table_computation___CompiledClass___local_class},
   {(bigint) compiling___table_computation___CompiledClass___id},
   {(bigint) compiling___table_computation___CompiledClass___id__eq},
@@ -157545,6 +187664,7 @@ const classtable_elt_t VFT_compiling___table_computation___CompiledClass[63] = {
 /* 6: Attribute CompiledClass::_instance_table */
 /* 7: Attribute CompiledClass::_class_layout */
 /* 8: Attribute CompiledClass::_instance_layout */
+static const char LOCATE_INIT_ATTRIBUTES__compiling___table_computation___CompiledClass[] = "init var of CompiledClass";
 void INIT_ATTRIBUTES__compiling___table_computation___CompiledClass(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t REGB0;
@@ -157555,31 +187675,32 @@ void INIT_ATTRIBUTES__compiling___table_computation___CompiledClass(val_t p0){
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__compiling___table_computation___CompiledClass;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//table_computation.nit:67 */
+  /* compiling/table_computation.nit:27 */
+  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
+  ATTR_compiling___table_computation___ColorContext____colors(fra.me.REG[0]) = fra.me.REG[1];
+  /* compiling/table_computation.nit:67 */
   REGB0 = TAG_Int(0);
   ATTR_compiling___table_computation___CompiledClass____id(fra.me.REG[0]) = REGB0;
-  /* ./compiling//table_computation.nit:70 */
+  /* compiling/table_computation.nit:70 */
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
   ATTR_compiling___table_computation___CompiledClass____class_table(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./compiling//table_computation.nit:73 */
+  /* compiling/table_computation.nit:73 */
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
   ATTR_compiling___table_computation___CompiledClass____instance_table(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./compiling//table_computation.nit:75 */
+  /* compiling/table_computation.nit:75 */
   fra.me.REG[1] = fra.me.REG[0];
-  /* ./compiling//table_computation.nit:76 */
+  /* compiling/table_computation.nit:76 */
   fra.me.REG[1] = NEW_TableEltComposite_compiling___table_computation___TableEltComposite___init(fra.me.REG[1]);
   ATTR_compiling___table_computation___CompiledClass____class_layout(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./compiling//table_computation.nit:78 */
+  /* compiling/table_computation.nit:78 */
   fra.me.REG[1] = fra.me.REG[0];
-  /* ./compiling//table_computation.nit:79 */
+  /* compiling/table_computation.nit:79 */
   fra.me.REG[1] = NEW_TableEltComposite_compiling___table_computation___TableEltComposite___init(fra.me.REG[1]);
   ATTR_compiling___table_computation___CompiledClass____instance_layout(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./compiling//table_computation.nit:27 */
-  fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
-  ATTR_compiling___table_computation___ColorContext____colors(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_compiling___table_computation___CompiledClass(void)
@@ -157591,6 +187712,7 @@ val_t NEW_compiling___table_computation___CompiledClass(void)
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
+static const char LOCATE_CHECKNEW_compiling___table_computation___CompiledClass[] = "check new CompiledClass";
 void CHECKNEW_compiling___table_computation___CompiledClass(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
@@ -157601,8 +187723,14 @@ void CHECKNEW_compiling___table_computation___CompiledClass(val_t p0){
   fra.me.meth = LOCATE_CHECKNEW_compiling___table_computation___CompiledClass;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_compiling___table_computation___ColorContext____colors(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_colors", LOCATE_nitc, 0);
+  }
   REGB0 = TAG_Bool(ATTR_compiling___table_computation___CompiledClass____local_class(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -157633,13 +187761,9 @@ void CHECKNEW_compiling___table_computation___CompiledClass(val_t p0){
   } else {
     nit_abort("Uninitialized attribute %s", "_instance_layout", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_compiling___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;
 }
+static const char LOCATE_NEW_CompiledClass_compiling___table_computation___CompiledClass___init[] = "new CompiledClass table_computation::CompiledClass::init";
 val_t NEW_CompiledClass_compiling___table_computation___CompiledClass___init(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
@@ -157650,10 +187774,11 @@ val_t NEW_CompiledClass_compiling___table_computation___CompiledClass___init(val
   fra.me.meth = LOCATE_NEW_CompiledClass_compiling___table_computation___CompiledClass___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//table_computation.nit:81 */
+  /* compiling/table_computation.nit:81 */
   fra.me.REG[1] = NEW_compiling___table_computation___CompiledClass();
   INIT_ATTRIBUTES__compiling___table_computation___CompiledClass(fra.me.REG[1]);
   compiling___table_computation___CompiledClass___init(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -157661,15 +187786,16 @@ val_t NEW_CompiledClass_compiling___table_computation___CompiledClass___init(val
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_compiling___table_computation___ModuleTableEltGroup[59] = {
-  {(bigint) 2815 /* 0: Identity */},
+const classtable_elt_t VFT_compiling___table_computation___ModuleTableEltGroup[62] = {
+  {(bigint) 3495 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ModuleTableEltGroup" /* 2: Class Name */},
   {(bigint) 3 /* 3: ModuleTableEltGroup < Object: superclass typecheck marker */},
-  {(bigint) 303 /* 4: ModuleTableEltGroup < AbsTableElt: superclass typecheck marker */},
+  {(bigint) 311 /* 4: ModuleTableEltGroup < AbsTableElt: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {(bigint) 3059 /* 6: ModuleTableEltGroup < ModuleTableElt: superclass typecheck marker */},
+  {(bigint) 3495 /* 7: ModuleTableEltGroup < ModuleTableEltGroup: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 2115 /* 6: ModuleTableEltGroup < ModuleTableElt: superclass typecheck marker */},
-  {(bigint) 2815 /* 7: ModuleTableEltGroup < ModuleTableEltGroup: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -157680,7 +187806,7 @@ const classtable_elt_t VFT_compiling___table_computation___ModuleTableEltGroup[5
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: ModuleTableEltGroup < Object: superclass init_table position */},
+  {(bigint) 2 /* 19: ModuleTableEltGroup < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -157696,6 +187822,8 @@ const classtable_elt_t VFT_compiling___table_computation___ModuleTableEltGroup[5
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -157710,21 +187838,22 @@ const classtable_elt_t VFT_compiling___table_computation___ModuleTableEltGroup[5
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
   {(bigint) compiling___compiling_global___ModuleTableEltGroup___compile_macros},
-  {(bigint) 1 /* 48: ModuleTableEltGroup < AbsTableElt: superclass init_table position */},
-  {(bigint) compiling___table_computation___AbsTableElt___init},
+  {(bigint) 1 /* 51: ModuleTableEltGroup < AbsTableElt: superclass init_table position */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) compiling___compiling_global___ModuleTableEltGroup___value},
-  {(bigint) 0 /* 56: ModuleTableEltGroup < ModuleTableElt: superclass init_table position */},
-  {(bigint) 3 /* 57: ModuleTableEltGroup < ModuleTableEltGroup: superclass init_table position */},
+  {(bigint) 0 /* 58: ModuleTableEltGroup < ModuleTableElt: superclass init_table position */},
+  {(bigint) 3 /* 59: ModuleTableEltGroup < ModuleTableEltGroup: superclass init_table position */},
   {(bigint) compiling___table_computation___ModuleTableEltGroup___elements},
+  {(bigint) compiling___table_computation___ModuleTableEltGroup___init},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
 /* 2: Attribute ModuleTableEltGroup::_elements */
+static const char LOCATE_INIT_ATTRIBUTES__compiling___table_computation___ModuleTableEltGroup[] = "init var of ModuleTableEltGroup";
 void INIT_ATTRIBUTES__compiling___table_computation___ModuleTableEltGroup(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
@@ -157734,10 +187863,11 @@ void INIT_ATTRIBUTES__compiling___table_computation___ModuleTableEltGroup(val_t
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__compiling___table_computation___ModuleTableEltGroup;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//table_computation.nit:440 */
+  /* compiling/table_computation.nit:440 */
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
   ATTR_compiling___table_computation___ModuleTableEltGroup____elements(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -157751,6 +187881,7 @@ val_t NEW_compiling___table_computation___ModuleTableEltGroup(void)
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
+static const char LOCATE_CHECKNEW_compiling___table_computation___ModuleTableEltGroup[] = "check new ModuleTableEltGroup";
 void CHECKNEW_compiling___table_computation___ModuleTableEltGroup(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
@@ -157761,6 +187892,7 @@ void CHECKNEW_compiling___table_computation___ModuleTableEltGroup(val_t p0){
   fra.me.meth = LOCATE_CHECKNEW_compiling___table_computation___ModuleTableEltGroup;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_compiling___table_computation___ModuleTableEltGroup____elements(fra.me.REG[0])!=NIT_NULL);
@@ -157770,157 +187902,36 @@ void CHECKNEW_compiling___table_computation___ModuleTableEltGroup(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ModuleTableEltGroup_compiling___table_computation___AbsTableElt___init(void){
+static const char LOCATE_NEW_ModuleTableEltGroup_compiling___table_computation___ModuleTableEltGroup___init[] = "new ModuleTableEltGroup table_computation::ModuleTableEltGroup::init";
+val_t NEW_ModuleTableEltGroup_compiling___table_computation___ModuleTableEltGroup___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_ModuleTableEltGroup_compiling___table_computation___AbsTableElt___init;
+  fra.me.meth = LOCATE_NEW_ModuleTableEltGroup_compiling___table_computation___ModuleTableEltGroup___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = NEW_compiling___table_computation___ModuleTableEltGroup();
   INIT_ATTRIBUTES__compiling___table_computation___ModuleTableEltGroup(fra.me.REG[0]);
-  compiling___table_computation___AbsTableElt___init(fra.me.REG[0], init_table);
+  compiling___table_computation___ModuleTableEltGroup___init(fra.me.REG[0], init_table);
   CHECKNEW_compiling___table_computation___ModuleTableEltGroup(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_compiling___table_computation___TableEltMeth[59] = {
-  {(bigint) 3159 /* 0: Identity */},
+const classtable_elt_t VFT_compiling___table_computation___TableEltMeth[61] = {
+  {(bigint) 3875 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TableEltMeth" /* 2: Class Name */},
   {(bigint) 3 /* 3: TableEltMeth < Object: superclass typecheck marker */},
-  {(bigint) 303 /* 4: TableEltMeth < AbsTableElt: superclass typecheck marker */},
-  {(bigint) 339 /* 5: TableEltMeth < TableElt: superclass typecheck marker */},
-  {(bigint) 2387 /* 6: TableEltMeth < TableEltProp: superclass typecheck marker */},
-  {(bigint) 3159 /* 7: TableEltMeth < TableEltMeth: 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) 311 /* 4: TableEltMeth < AbsTableElt: superclass typecheck marker */},
+  {(bigint) 343 /* 5: TableEltMeth < TableElt: superclass typecheck marker */},
+  {(bigint) 3347 /* 6: TableEltMeth < TableEltProp: superclass typecheck marker */},
+  {(bigint) 3875 /* 7: TableEltMeth < TableEltMeth: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 18: TableEltMeth < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
-  {(bigint) standard___file___Object___printn},
-  {(bigint) standard___file___Object___print},
-  {(bigint) standard___file___Object___getc},
-  {(bigint) standard___file___Object___gets},
-  {(bigint) standard___file___Object___stdin},
-  {(bigint) standard___file___Object___stdout},
-  {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
-  {(bigint) standard___string___Object___native_class_name},
-  {(bigint) standard___string___Object___class_name},
-  {(bigint) standard___string___Object___inspect},
-  {(bigint) standard___string___Object___inspect_head},
-  {(bigint) standard___string___Object___args},
-  {(bigint) standard___hash___Object___hash},
-  {(bigint) standard___math___Object___atan2},
-  {(bigint) standard___math___Object___pi},
-  {(bigint) standard___math___Object___srand_from},
-  {(bigint) standard___math___Object___srand},
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) compiling___compiling_global___TableEltMeth___compile_macros},
-  {(bigint) 2 /* 48: TableEltMeth < AbsTableElt: superclass init_table position */},
-  {(bigint) compiling___table_computation___AbsTableElt___init},
-  {(bigint) compiling___compiling_global___TableEltMeth___compile_to_c},
-  {(bigint) 1 /* 51: TableEltMeth < TableElt: superclass init_table position */},
-  {(bigint) compiling___table_computation___TableElt___is_related_to},
-  {(bigint) compiling___table_computation___TableElt___length},
-  {(bigint) compiling___table_computation___TableElt___item},
-  {(bigint) 0 /* 55: TableEltMeth < TableEltProp: superclass init_table position */},
-  {(bigint) compiling___table_computation___TableEltProp___property},
-  {(bigint) compiling___table_computation___TableEltProp___init},
-  {(bigint) 4 /* 58: TableEltMeth < TableEltMeth: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Object_id */
-/* 2: Attribute TableEltMeth::_property */
-void INIT_ATTRIBUTES__compiling___table_computation___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__compiling___table_computation___TableEltMeth;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
-  stack_frame_head = fra.me.prev;
-}
-val_t NEW_compiling___table_computation___TableEltMeth(void)
-{
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_compiling___table_computation___TableEltMeth;
-  obj[1].object_id = object_id_counter;
-  object_id_counter = object_id_counter + 1;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_compiling___table_computation___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_compiling___table_computation___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_compiling___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___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};
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_nitc;
-  fra.me.line = 448;
-  fra.me.meth = LOCATE_NEW_TableEltMeth_compiling___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:448 */
-  fra.me.REG[1] = NEW_compiling___table_computation___TableEltMeth();
-  INIT_ATTRIBUTES__compiling___table_computation___TableEltMeth(fra.me.REG[1]);
-  compiling___table_computation___TableEltProp___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_compiling___table_computation___TableEltMeth(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_compiling___table_computation___TableEltVTClassColor[59] = {
-  {(bigint) 3151 /* 0: Identity */},
-  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TableEltVTClassColor" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TableEltVTClassColor < Object: superclass typecheck marker */},
-  {(bigint) 303 /* 4: TableEltVTClassColor < AbsTableElt: superclass typecheck marker */},
-  {(bigint) 339 /* 5: TableEltVTClassColor < TableElt: superclass typecheck marker */},
-  {(bigint) 2387 /* 6: TableEltVTClassColor < TableEltProp: superclass typecheck marker */},
-  {(bigint) 3151 /* 7: TableEltVTClassColor < TableEltVTClassColor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -157931,7 +187942,7 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltVTClassColor[
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 18: TableEltVTClassColor < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: TableEltMeth < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -157947,6 +187958,8 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltVTClassColor[
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -157960,52 +187973,55 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltVTClassColor[
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) compiling___compiling_global___TableEltVTClassColor___compile_macros},
-  {(bigint) 2 /* 48: TableEltVTClassColor < AbsTableElt: superclass init_table position */},
-  {(bigint) compiling___table_computation___AbsTableElt___init},
-  {(bigint) compiling___compiling_global___TableEltVTClassColor___compile_to_c},
-  {(bigint) 1 /* 51: TableEltVTClassColor < TableElt: superclass init_table position */},
+  {(bigint) compiling___compiling_global___TableEltMeth___compile_macros},
+  {(bigint) 2 /* 51: TableEltMeth < AbsTableElt: superclass init_table position */},
+  {(bigint) compiling___compiling_global___TableEltMeth___compile_to_c},
+  {(bigint) 1 /* 53: TableEltMeth < TableElt: superclass init_table position */},
   {(bigint) compiling___table_computation___TableElt___is_related_to},
   {(bigint) compiling___table_computation___TableElt___length},
   {(bigint) compiling___table_computation___TableElt___item},
-  {(bigint) 0 /* 55: TableEltVTClassColor < TableEltProp: superclass init_table position */},
+  {(bigint) 0 /* 57: TableEltMeth < TableEltProp: superclass init_table position */},
   {(bigint) compiling___table_computation___TableEltProp___property},
   {(bigint) compiling___table_computation___TableEltProp___init},
-  {(bigint) 4 /* 58: TableEltVTClassColor < TableEltVTClassColor: superclass init_table position */},
+  {(bigint) 4 /* 60: TableEltMeth < TableEltMeth: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TableEltVTClassColor::_property */
-void INIT_ATTRIBUTES__compiling___table_computation___TableEltVTClassColor(val_t p0){
+/* 2: Attribute TableEltMeth::_property */
+static const char LOCATE_INIT_ATTRIBUTES__compiling___table_computation___TableEltMeth[] = "init var of TableEltMeth";
+void INIT_ATTRIBUTES__compiling___table_computation___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__compiling___table_computation___TableEltVTClassColor;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__compiling___table_computation___TableEltMeth;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_compiling___table_computation___TableEltVTClassColor(void)
+val_t NEW_compiling___table_computation___TableEltMeth(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_compiling___table_computation___TableEltVTClassColor;
+  obj->vft = (classtable_elt_t*)VFT_compiling___table_computation___TableEltMeth;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_compiling___table_computation___TableEltVTClassColor(val_t p0){
+static const char LOCATE_CHECKNEW_compiling___table_computation___TableEltMeth[] = "check new TableEltMeth";
+void CHECKNEW_compiling___table_computation___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_compiling___table_computation___TableEltVTClassColor;
+  fra.me.meth = LOCATE_CHECKNEW_compiling___table_computation___TableEltMeth;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_compiling___table_computation___TableEltProp____property(fra.me.REG[0])!=NIT_NULL);
@@ -158015,36 +188031,39 @@ void CHECKNEW_compiling___table_computation___TableEltVTClassColor(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TableEltVTClassColor_compiling___table_computation___TableEltProp___init(val_t p0){
+static const char LOCATE_NEW_TableEltMeth_compiling___table_computation___TableEltProp___init[] = "new TableEltMeth table_computation::TableEltProp::init";
+val_t NEW_TableEltMeth_compiling___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};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 448;
-  fra.me.meth = LOCATE_NEW_TableEltVTClassColor_compiling___table_computation___TableEltProp___init;
+  fra.me.meth = LOCATE_NEW_TableEltMeth_compiling___table_computation___TableEltProp___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//table_computation.nit:448 */
-  fra.me.REG[1] = NEW_compiling___table_computation___TableEltVTClassColor();
-  INIT_ATTRIBUTES__compiling___table_computation___TableEltVTClassColor(fra.me.REG[1]);
+  /* compiling/table_computation.nit:448 */
+  fra.me.REG[1] = NEW_compiling___table_computation___TableEltMeth();
+  INIT_ATTRIBUTES__compiling___table_computation___TableEltMeth(fra.me.REG[1]);
   compiling___table_computation___TableEltProp___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_compiling___table_computation___TableEltVTClassColor(fra.me.REG[1]);
+  CHECKNEW_compiling___table_computation___TableEltMeth(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_compiling___table_computation___TableEltVTClassId[59] = {
-  {(bigint) 3147 /* 0: Identity */},
+const classtable_elt_t VFT_compiling___table_computation___TableEltVTClassColor[61] = {
+  {(bigint) 3867 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TableEltVTClassId" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TableEltVTClassId < Object: superclass typecheck marker */},
-  {(bigint) 303 /* 4: TableEltVTClassId < AbsTableElt: superclass typecheck marker */},
-  {(bigint) 339 /* 5: TableEltVTClassId < TableElt: superclass typecheck marker */},
-  {(bigint) 2387 /* 6: TableEltVTClassId < TableEltProp: superclass typecheck marker */},
-  {(bigint) 3147 /* 7: TableEltVTClassId < TableEltVTClassId: superclass typecheck marker */},
+  {(bigint) "TableEltVTClassColor" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TableEltVTClassColor < Object: superclass typecheck marker */},
+  {(bigint) 311 /* 4: TableEltVTClassColor < AbsTableElt: superclass typecheck marker */},
+  {(bigint) 343 /* 5: TableEltVTClassColor < TableElt: superclass typecheck marker */},
+  {(bigint) 3347 /* 6: TableEltVTClassColor < TableEltProp: superclass typecheck marker */},
+  {(bigint) 3867 /* 7: TableEltVTClassColor < TableEltVTClassColor: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -158055,7 +188074,7 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltVTClassId[59]
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 18: TableEltVTClassId < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: TableEltVTClassColor < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -158071,6 +188090,8 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltVTClassId[59]
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -158084,52 +188105,55 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltVTClassId[59]
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) compiling___compiling_global___TableEltVTClassId___compile_macros},
-  {(bigint) 2 /* 48: TableEltVTClassId < AbsTableElt: superclass init_table position */},
-  {(bigint) compiling___table_computation___AbsTableElt___init},
-  {(bigint) compiling___compiling_global___TableEltVTClassId___compile_to_c},
-  {(bigint) 1 /* 51: TableEltVTClassId < TableElt: superclass init_table position */},
+  {(bigint) compiling___compiling_global___TableEltVTClassColor___compile_macros},
+  {(bigint) 2 /* 51: TableEltVTClassColor < AbsTableElt: superclass init_table position */},
+  {(bigint) compiling___compiling_global___TableEltVTClassColor___compile_to_c},
+  {(bigint) 1 /* 53: TableEltVTClassColor < TableElt: superclass init_table position */},
   {(bigint) compiling___table_computation___TableElt___is_related_to},
   {(bigint) compiling___table_computation___TableElt___length},
   {(bigint) compiling___table_computation___TableElt___item},
-  {(bigint) 0 /* 55: TableEltVTClassId < TableEltProp: superclass init_table position */},
+  {(bigint) 0 /* 57: TableEltVTClassColor < TableEltProp: superclass init_table position */},
   {(bigint) compiling___table_computation___TableEltProp___property},
   {(bigint) compiling___table_computation___TableEltProp___init},
-  {(bigint) 4 /* 58: TableEltVTClassId < TableEltVTClassId: superclass init_table position */},
+  {(bigint) 4 /* 60: TableEltVTClassColor < TableEltVTClassColor: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TableEltVTClassId::_property */
-void INIT_ATTRIBUTES__compiling___table_computation___TableEltVTClassId(val_t p0){
+/* 2: Attribute TableEltVTClassColor::_property */
+static const char LOCATE_INIT_ATTRIBUTES__compiling___table_computation___TableEltVTClassColor[] = "init var of TableEltVTClassColor";
+void INIT_ATTRIBUTES__compiling___table_computation___TableEltVTClassColor(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__compiling___table_computation___TableEltVTClassId;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__compiling___table_computation___TableEltVTClassColor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_compiling___table_computation___TableEltVTClassId(void)
+val_t NEW_compiling___table_computation___TableEltVTClassColor(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_compiling___table_computation___TableEltVTClassId;
+  obj->vft = (classtable_elt_t*)VFT_compiling___table_computation___TableEltVTClassColor;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_compiling___table_computation___TableEltVTClassId(val_t p0){
+static const char LOCATE_CHECKNEW_compiling___table_computation___TableEltVTClassColor[] = "check new TableEltVTClassColor";
+void CHECKNEW_compiling___table_computation___TableEltVTClassColor(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_compiling___table_computation___TableEltVTClassId;
+  fra.me.meth = LOCATE_CHECKNEW_compiling___table_computation___TableEltVTClassColor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_compiling___table_computation___TableEltProp____property(fra.me.REG[0])!=NIT_NULL);
@@ -158139,36 +188163,39 @@ void CHECKNEW_compiling___table_computation___TableEltVTClassId(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TableEltVTClassId_compiling___table_computation___TableEltProp___init(val_t p0){
+static const char LOCATE_NEW_TableEltVTClassColor_compiling___table_computation___TableEltProp___init[] = "new TableEltVTClassColor table_computation::TableEltProp::init";
+val_t NEW_TableEltVTClassColor_compiling___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};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 448;
-  fra.me.meth = LOCATE_NEW_TableEltVTClassId_compiling___table_computation___TableEltProp___init;
+  fra.me.meth = LOCATE_NEW_TableEltVTClassColor_compiling___table_computation___TableEltProp___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//table_computation.nit:448 */
-  fra.me.REG[1] = NEW_compiling___table_computation___TableEltVTClassId();
-  INIT_ATTRIBUTES__compiling___table_computation___TableEltVTClassId(fra.me.REG[1]);
+  /* compiling/table_computation.nit:448 */
+  fra.me.REG[1] = NEW_compiling___table_computation___TableEltVTClassColor();
+  INIT_ATTRIBUTES__compiling___table_computation___TableEltVTClassColor(fra.me.REG[1]);
   compiling___table_computation___TableEltProp___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_compiling___table_computation___TableEltVTClassId(fra.me.REG[1]);
+  CHECKNEW_compiling___table_computation___TableEltVTClassColor(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_compiling___table_computation___TableEltSuper[59] = {
-  {(bigint) 3155 /* 0: Identity */},
+const classtable_elt_t VFT_compiling___table_computation___TableEltVTClassId[61] = {
+  {(bigint) 3863 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TableEltSuper" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TableEltSuper < Object: superclass typecheck marker */},
-  {(bigint) 303 /* 4: TableEltSuper < AbsTableElt: superclass typecheck marker */},
-  {(bigint) 339 /* 5: TableEltSuper < TableElt: superclass typecheck marker */},
-  {(bigint) 2387 /* 6: TableEltSuper < TableEltProp: superclass typecheck marker */},
-  {(bigint) 3155 /* 7: TableEltSuper < TableEltSuper: superclass typecheck marker */},
+  {(bigint) "TableEltVTClassId" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TableEltVTClassId < Object: superclass typecheck marker */},
+  {(bigint) 311 /* 4: TableEltVTClassId < AbsTableElt: superclass typecheck marker */},
+  {(bigint) 343 /* 5: TableEltVTClassId < TableElt: superclass typecheck marker */},
+  {(bigint) 3347 /* 6: TableEltVTClassId < TableEltProp: superclass typecheck marker */},
+  {(bigint) 3863 /* 7: TableEltVTClassId < TableEltVTClassId: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -158179,7 +188206,7 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltSuper[59] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 18: TableEltSuper < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: TableEltVTClassId < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -158195,6 +188222,8 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltSuper[59] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -158208,52 +188237,55 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltSuper[59] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) compiling___compiling_global___TableEltSuper___compile_macros},
-  {(bigint) 2 /* 48: TableEltSuper < AbsTableElt: superclass init_table position */},
-  {(bigint) compiling___table_computation___AbsTableElt___init},
-  {(bigint) compiling___compiling_global___TableEltSuper___compile_to_c},
-  {(bigint) 1 /* 51: TableEltSuper < TableElt: superclass init_table position */},
+  {(bigint) compiling___compiling_global___TableEltVTClassId___compile_macros},
+  {(bigint) 2 /* 51: TableEltVTClassId < AbsTableElt: superclass init_table position */},
+  {(bigint) compiling___compiling_global___TableEltVTClassId___compile_to_c},
+  {(bigint) 1 /* 53: TableEltVTClassId < TableElt: superclass init_table position */},
   {(bigint) compiling___table_computation___TableElt___is_related_to},
   {(bigint) compiling___table_computation___TableElt___length},
   {(bigint) compiling___table_computation___TableElt___item},
-  {(bigint) 0 /* 55: TableEltSuper < TableEltProp: superclass init_table position */},
+  {(bigint) 0 /* 57: TableEltVTClassId < TableEltProp: superclass init_table position */},
   {(bigint) compiling___table_computation___TableEltProp___property},
   {(bigint) compiling___table_computation___TableEltProp___init},
-  {(bigint) 4 /* 58: TableEltSuper < TableEltSuper: superclass init_table position */},
+  {(bigint) 4 /* 60: TableEltVTClassId < TableEltVTClassId: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TableEltSuper::_property */
-void INIT_ATTRIBUTES__compiling___table_computation___TableEltSuper(val_t p0){
+/* 2: Attribute TableEltVTClassId::_property */
+static const char LOCATE_INIT_ATTRIBUTES__compiling___table_computation___TableEltVTClassId[] = "init var of TableEltVTClassId";
+void INIT_ATTRIBUTES__compiling___table_computation___TableEltVTClassId(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__compiling___table_computation___TableEltSuper;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__compiling___table_computation___TableEltVTClassId;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_compiling___table_computation___TableEltSuper(void)
+val_t NEW_compiling___table_computation___TableEltVTClassId(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_compiling___table_computation___TableEltSuper;
+  obj->vft = (classtable_elt_t*)VFT_compiling___table_computation___TableEltVTClassId;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_compiling___table_computation___TableEltSuper(val_t p0){
+static const char LOCATE_CHECKNEW_compiling___table_computation___TableEltVTClassId[] = "check new TableEltVTClassId";
+void CHECKNEW_compiling___table_computation___TableEltVTClassId(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_compiling___table_computation___TableEltSuper;
+  fra.me.meth = LOCATE_CHECKNEW_compiling___table_computation___TableEltVTClassId;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_compiling___table_computation___TableEltProp____property(fra.me.REG[0])!=NIT_NULL);
@@ -158263,36 +188295,39 @@ void CHECKNEW_compiling___table_computation___TableEltSuper(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TableEltSuper_compiling___table_computation___TableEltProp___init(val_t p0){
+static const char LOCATE_NEW_TableEltVTClassId_compiling___table_computation___TableEltProp___init[] = "new TableEltVTClassId table_computation::TableEltProp::init";
+val_t NEW_TableEltVTClassId_compiling___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};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 448;
-  fra.me.meth = LOCATE_NEW_TableEltSuper_compiling___table_computation___TableEltProp___init;
+  fra.me.meth = LOCATE_NEW_TableEltVTClassId_compiling___table_computation___TableEltProp___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//table_computation.nit:448 */
-  fra.me.REG[1] = NEW_compiling___table_computation___TableEltSuper();
-  INIT_ATTRIBUTES__compiling___table_computation___TableEltSuper(fra.me.REG[1]);
+  /* compiling/table_computation.nit:448 */
+  fra.me.REG[1] = NEW_compiling___table_computation___TableEltVTClassId();
+  INIT_ATTRIBUTES__compiling___table_computation___TableEltVTClassId(fra.me.REG[1]);
   compiling___table_computation___TableEltProp___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_compiling___table_computation___TableEltSuper(fra.me.REG[1]);
+  CHECKNEW_compiling___table_computation___TableEltVTClassId(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_compiling___table_computation___TableEltAttr[59] = {
-  {(bigint) 3171 /* 0: Identity */},
+const classtable_elt_t VFT_compiling___table_computation___TableEltSuper[61] = {
+  {(bigint) 3871 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TableEltAttr" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TableEltAttr < Object: superclass typecheck marker */},
-  {(bigint) 303 /* 4: TableEltAttr < AbsTableElt: superclass typecheck marker */},
-  {(bigint) 339 /* 5: TableEltAttr < TableElt: superclass typecheck marker */},
-  {(bigint) 2387 /* 6: TableEltAttr < TableEltProp: superclass typecheck marker */},
-  {(bigint) 3171 /* 7: TableEltAttr < TableEltAttr: superclass typecheck marker */},
+  {(bigint) "TableEltSuper" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TableEltSuper < Object: superclass typecheck marker */},
+  {(bigint) 311 /* 4: TableEltSuper < AbsTableElt: superclass typecheck marker */},
+  {(bigint) 343 /* 5: TableEltSuper < TableElt: superclass typecheck marker */},
+  {(bigint) 3347 /* 6: TableEltSuper < TableEltProp: superclass typecheck marker */},
+  {(bigint) 3871 /* 7: TableEltSuper < TableEltSuper: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -158303,7 +188338,7 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltAttr[59] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 18: TableEltAttr < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: TableEltSuper < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -158319,6 +188354,8 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltAttr[59] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -158332,52 +188369,55 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltAttr[59] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) compiling___compiling_global___TableEltAttr___compile_macros},
-  {(bigint) 2 /* 48: TableEltAttr < AbsTableElt: superclass init_table position */},
-  {(bigint) compiling___table_computation___AbsTableElt___init},
-  {(bigint) compiling___compiling_global___TableEltAttr___compile_to_c},
-  {(bigint) 1 /* 51: TableEltAttr < TableElt: superclass init_table position */},
+  {(bigint) compiling___compiling_global___TableEltSuper___compile_macros},
+  {(bigint) 2 /* 51: TableEltSuper < AbsTableElt: superclass init_table position */},
+  {(bigint) compiling___compiling_global___TableEltSuper___compile_to_c},
+  {(bigint) 1 /* 53: TableEltSuper < TableElt: superclass init_table position */},
   {(bigint) compiling___table_computation___TableElt___is_related_to},
   {(bigint) compiling___table_computation___TableElt___length},
   {(bigint) compiling___table_computation___TableElt___item},
-  {(bigint) 0 /* 55: TableEltAttr < TableEltProp: superclass init_table position */},
+  {(bigint) 0 /* 57: TableEltSuper < TableEltProp: superclass init_table position */},
   {(bigint) compiling___table_computation___TableEltProp___property},
   {(bigint) compiling___table_computation___TableEltProp___init},
-  {(bigint) 4 /* 58: TableEltAttr < TableEltAttr: superclass init_table position */},
+  {(bigint) 4 /* 60: TableEltSuper < TableEltSuper: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TableEltAttr::_property */
-void INIT_ATTRIBUTES__compiling___table_computation___TableEltAttr(val_t p0){
+/* 2: Attribute TableEltSuper::_property */
+static const char LOCATE_INIT_ATTRIBUTES__compiling___table_computation___TableEltSuper[] = "init var of TableEltSuper";
+void INIT_ATTRIBUTES__compiling___table_computation___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__compiling___table_computation___TableEltAttr;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__compiling___table_computation___TableEltSuper;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_compiling___table_computation___TableEltAttr(void)
+val_t NEW_compiling___table_computation___TableEltSuper(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_compiling___table_computation___TableEltAttr;
+  obj->vft = (classtable_elt_t*)VFT_compiling___table_computation___TableEltSuper;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_compiling___table_computation___TableEltAttr(val_t p0){
+static const char LOCATE_CHECKNEW_compiling___table_computation___TableEltSuper[] = "check new TableEltSuper";
+void CHECKNEW_compiling___table_computation___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_compiling___table_computation___TableEltAttr;
+  fra.me.meth = LOCATE_CHECKNEW_compiling___table_computation___TableEltSuper;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_compiling___table_computation___TableEltProp____property(fra.me.REG[0])!=NIT_NULL);
@@ -158387,163 +188427,40 @@ void CHECKNEW_compiling___table_computation___TableEltAttr(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TableEltAttr_compiling___table_computation___TableEltProp___init(val_t p0){
+static const char LOCATE_NEW_TableEltSuper_compiling___table_computation___TableEltProp___init[] = "new TableEltSuper table_computation::TableEltProp::init";
+val_t NEW_TableEltSuper_compiling___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};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 448;
-  fra.me.meth = LOCATE_NEW_TableEltAttr_compiling___table_computation___TableEltProp___init;
+  fra.me.meth = LOCATE_NEW_TableEltSuper_compiling___table_computation___TableEltProp___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//table_computation.nit:448 */
-  fra.me.REG[1] = NEW_compiling___table_computation___TableEltAttr();
-  INIT_ATTRIBUTES__compiling___table_computation___TableEltAttr(fra.me.REG[1]);
+  /* compiling/table_computation.nit:448 */
+  fra.me.REG[1] = NEW_compiling___table_computation___TableEltSuper();
+  INIT_ATTRIBUTES__compiling___table_computation___TableEltSuper(fra.me.REG[1]);
   compiling___table_computation___TableEltProp___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_compiling___table_computation___TableEltAttr(fra.me.REG[1]);
+  CHECKNEW_compiling___table_computation___TableEltSuper(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_compiling___table_computation___AbsTableEltClass[61] = {
-  {(bigint) 2367 /* 0: Identity */},
+const classtable_elt_t VFT_compiling___table_computation___TableEltAttr[61] = {
+  {(bigint) 3887 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "AbsTableEltClass" /* 2: Class Name */},
-  {(bigint) 3 /* 3: AbsTableEltClass < Object: superclass typecheck marker */},
-  {(bigint) 303 /* 4: AbsTableEltClass < AbsTableElt: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 2367 /* 7: AbsTableEltClass < AbsTableEltClass: superclass typecheck marker */},
-  {0} /* 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) standard___time___Object___get_time},
-  {(bigint) 1 /* 18: AbsTableEltClass < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
-  {(bigint) standard___file___Object___printn},
-  {(bigint) standard___file___Object___print},
-  {(bigint) standard___file___Object___getc},
-  {(bigint) standard___file___Object___gets},
-  {(bigint) standard___file___Object___stdin},
-  {(bigint) standard___file___Object___stdout},
-  {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Object___to_s},
-  {(bigint) standard___string___Object___native_class_name},
-  {(bigint) standard___string___Object___class_name},
-  {(bigint) standard___string___Object___inspect},
-  {(bigint) standard___string___Object___inspect_head},
-  {(bigint) standard___string___Object___args},
-  {(bigint) standard___hash___Object___hash},
-  {(bigint) standard___math___Object___atan2},
-  {(bigint) standard___math___Object___pi},
-  {(bigint) standard___math___Object___srand_from},
-  {(bigint) standard___math___Object___srand},
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) compiling___compiling_global___AbsTableEltClass___compile_macros},
-  {(bigint) 0 /* 48: AbsTableEltClass < AbsTableElt: superclass init_table position */},
-  {(bigint) compiling___table_computation___AbsTableElt___init},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) "TableEltAttr" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TableEltAttr < Object: superclass typecheck marker */},
+  {(bigint) 311 /* 4: TableEltAttr < AbsTableElt: superclass typecheck marker */},
+  {(bigint) 343 /* 5: TableEltAttr < TableElt: superclass typecheck marker */},
+  {(bigint) 3347 /* 6: TableEltAttr < TableEltProp: superclass typecheck marker */},
+  {(bigint) 3887 /* 7: TableEltAttr < TableEltAttr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) compiling___compiling_global___AbsTableEltClass___symbol},
-  {(bigint) 2 /* 58: AbsTableEltClass < AbsTableEltClass: superclass init_table position */},
-  {(bigint) compiling___table_computation___AbsTableEltClass___local_class},
-  {(bigint) compiling___table_computation___AbsTableEltClass___init},
-};
-/* 0: Pointer to the classtable */
-/* 1: Object_id */
-/* 2: Attribute AbsTableEltClass::_local_class */
-void INIT_ATTRIBUTES__compiling___table_computation___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__compiling___table_computation___AbsTableEltClass;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
-  stack_frame_head = fra.me.prev;
-}
-val_t NEW_compiling___table_computation___AbsTableEltClass(void)
-{
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_compiling___table_computation___AbsTableEltClass;
-  obj[1].object_id = object_id_counter;
-  object_id_counter = object_id_counter + 1;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_compiling___table_computation___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_compiling___table_computation___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_compiling___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_compiling___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 = 485;
-  fra.me.meth = LOCATE_NEW_AbsTableEltClass_compiling___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:485 */
-  fra.me.REG[1] = NEW_compiling___table_computation___AbsTableEltClass();
-  INIT_ATTRIBUTES__compiling___table_computation___AbsTableEltClass(fra.me.REG[1]);
-  compiling___table_computation___AbsTableEltClass___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_compiling___table_computation___AbsTableEltClass(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_compiling___table_computation___TableEltClass[62] = {
-  {(bigint) 2415 /* 0: Identity */},
-  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TableEltClass" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TableEltClass < Object: superclass typecheck marker */},
-  {(bigint) 303 /* 4: TableEltClass < AbsTableElt: superclass typecheck marker */},
-  {(bigint) 339 /* 5: TableEltClass < TableElt: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 2367 /* 7: TableEltClass < AbsTableEltClass: superclass typecheck marker */},
-  {(bigint) 2415 /* 8: TableEltClass < TableEltClass: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -158553,7 +188470,7 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltClass[62] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TableEltClass < Object: superclass init_table position */},
+  {(bigint) 3 /* 19: TableEltAttr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -158569,6 +188486,8 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltClass[62] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -158582,94 +188501,97 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltClass[62] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) compiling___compiling_global___AbsTableEltClass___compile_macros},
-  {(bigint) 1 /* 48: TableEltClass < AbsTableElt: superclass init_table position */},
-  {(bigint) compiling___table_computation___AbsTableElt___init},
-  {(bigint) compiling___compiling_global___TableElt___compile_to_c},
-  {(bigint) 0 /* 51: TableEltClass < TableElt: superclass init_table position */},
-  {(bigint) compiling___table_computation___TableEltClass___is_related_to},
+  {(bigint) compiling___compiling_global___TableEltAttr___compile_macros},
+  {(bigint) 2 /* 51: TableEltAttr < AbsTableElt: superclass init_table position */},
+  {(bigint) compiling___compiling_global___TableEltAttr___compile_to_c},
+  {(bigint) 1 /* 53: TableEltAttr < TableElt: superclass init_table position */},
+  {(bigint) compiling___table_computation___TableElt___is_related_to},
   {(bigint) compiling___table_computation___TableElt___length},
   {(bigint) compiling___table_computation___TableElt___item},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling___compiling_global___AbsTableEltClass___symbol},
-  {(bigint) 3 /* 58: TableEltClass < AbsTableEltClass: superclass init_table position */},
-  {(bigint) compiling___table_computation___AbsTableEltClass___local_class},
-  {(bigint) compiling___table_computation___AbsTableEltClass___init},
-  {(bigint) 4 /* 61: TableEltClass < TableEltClass: superclass init_table position */},
+  {(bigint) 0 /* 57: TableEltAttr < TableEltProp: superclass init_table position */},
+  {(bigint) compiling___table_computation___TableEltProp___property},
+  {(bigint) compiling___table_computation___TableEltProp___init},
+  {(bigint) 4 /* 60: TableEltAttr < TableEltAttr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TableEltClass::_local_class */
-void INIT_ATTRIBUTES__compiling___table_computation___TableEltClass(val_t p0){
+/* 2: Attribute TableEltAttr::_property */
+static const char LOCATE_INIT_ATTRIBUTES__compiling___table_computation___TableEltAttr[] = "init var of TableEltAttr";
+void INIT_ATTRIBUTES__compiling___table_computation___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__compiling___table_computation___TableEltClass;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__compiling___table_computation___TableEltAttr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_compiling___table_computation___TableEltClass(void)
+val_t NEW_compiling___table_computation___TableEltAttr(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_compiling___table_computation___TableEltClass;
+  obj->vft = (classtable_elt_t*)VFT_compiling___table_computation___TableEltAttr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_compiling___table_computation___TableEltClass(val_t p0){
+static const char LOCATE_CHECKNEW_compiling___table_computation___TableEltAttr[] = "check new TableEltAttr";
+void CHECKNEW_compiling___table_computation___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_compiling___table_computation___TableEltClass;
+  fra.me.meth = LOCATE_CHECKNEW_compiling___table_computation___TableEltAttr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_compiling___table_computation___AbsTableEltClass____local_class(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_compiling___table_computation___TableEltProp____property(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_property", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TableEltClass_compiling___table_computation___AbsTableEltClass___init(val_t p0){
+static const char LOCATE_NEW_TableEltAttr_compiling___table_computation___TableEltProp___init[] = "new TableEltAttr table_computation::TableEltProp::init";
+val_t NEW_TableEltAttr_compiling___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};
   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_TableEltClass_compiling___table_computation___AbsTableEltClass___init;
+  fra.me.line = 448;
+  fra.me.meth = LOCATE_NEW_TableEltAttr_compiling___table_computation___TableEltProp___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//table_computation.nit:485 */
-  fra.me.REG[1] = NEW_compiling___table_computation___TableEltClass();
-  INIT_ATTRIBUTES__compiling___table_computation___TableEltClass(fra.me.REG[1]);
-  compiling___table_computation___AbsTableEltClass___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_compiling___table_computation___TableEltClass(fra.me.REG[1]);
+  /* compiling/table_computation.nit:448 */
+  fra.me.REG[1] = NEW_compiling___table_computation___TableEltAttr();
+  INIT_ATTRIBUTES__compiling___table_computation___TableEltAttr(fra.me.REG[1]);
+  compiling___table_computation___TableEltProp___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_compiling___table_computation___TableEltAttr(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_compiling___table_computation___TableEltClassId[61] = {
-  {(bigint) 2411 /* 0: Identity */},
+const classtable_elt_t VFT_compiling___table_computation___TableEltClassId[63] = {
+  {(bigint) 3371 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TableEltClassId" /* 2: Class Name */},
   {(bigint) 3 /* 3: TableEltClassId < Object: superclass typecheck marker */},
-  {(bigint) 303 /* 4: TableEltClassId < AbsTableElt: superclass typecheck marker */},
-  {(bigint) 2411 /* 5: TableEltClassId < TableEltClassId: superclass typecheck marker */},
-  {(bigint) 2115 /* 6: TableEltClassId < ModuleTableElt: superclass typecheck marker */},
-  {(bigint) 2367 /* 7: TableEltClassId < AbsTableEltClass: superclass typecheck marker */},
+  {(bigint) 311 /* 4: TableEltClassId < AbsTableElt: superclass typecheck marker */},
+  {(bigint) 3371 /* 5: TableEltClassId < TableEltClassId: superclass typecheck marker */},
+  {(bigint) 3059 /* 6: TableEltClassId < ModuleTableElt: superclass typecheck marker */},
+  {(bigint) 3315 /* 7: TableEltClassId < AbsTableEltClass: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -158680,7 +188602,7 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltClassId[61] =
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TableEltClassId < Object: superclass init_table position */},
+  {(bigint) 2 /* 19: TableEltClassId < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -158696,6 +188618,8 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltClassId[61] =
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -158710,23 +188634,23 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltClassId[61] =
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
   {(bigint) compiling___compiling_global___AbsTableEltClass___compile_macros},
-  {(bigint) 1 /* 48: TableEltClassId < AbsTableElt: superclass init_table position */},
-  {(bigint) compiling___table_computation___AbsTableElt___init},
-  {(bigint) 4 /* 50: TableEltClassId < TableEltClassId: superclass init_table position */},
+  {(bigint) 1 /* 51: TableEltClassId < AbsTableElt: superclass init_table position */},
+  {(bigint) 4 /* 52: TableEltClassId < TableEltClassId: superclass init_table position */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) compiling___compiling_global___TableEltClassId___value},
-  {(bigint) 0 /* 56: TableEltClassId < ModuleTableElt: superclass init_table position */},
+  {(bigint) 0 /* 58: TableEltClassId < ModuleTableElt: superclass init_table position */},
   {(bigint) compiling___compiling_global___TableEltClassId___symbol},
-  {(bigint) 3 /* 58: TableEltClassId < AbsTableEltClass: superclass init_table position */},
+  {(bigint) 3 /* 60: TableEltClassId < AbsTableEltClass: superclass init_table position */},
   {(bigint) compiling___table_computation___AbsTableEltClass___local_class},
   {(bigint) compiling___table_computation___AbsTableEltClass___init},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
 /* 2: Attribute TableEltClassId::_local_class */
+static const char LOCATE_INIT_ATTRIBUTES__compiling___table_computation___TableEltClassId[] = "init var of TableEltClassId";
 void INIT_ATTRIBUTES__compiling___table_computation___TableEltClassId(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
@@ -158736,6 +188660,7 @@ void INIT_ATTRIBUTES__compiling___table_computation___TableEltClassId(val_t p0){
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__compiling___table_computation___TableEltClassId;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_compiling___table_computation___TableEltClassId(void)
@@ -158747,6 +188672,7 @@ val_t NEW_compiling___table_computation___TableEltClassId(void)
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
+static const char LOCATE_CHECKNEW_compiling___table_computation___TableEltClassId[] = "check new TableEltClassId";
 void CHECKNEW_compiling___table_computation___TableEltClassId(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
@@ -158757,6 +188683,7 @@ void CHECKNEW_compiling___table_computation___TableEltClassId(val_t p0){
   fra.me.meth = LOCATE_CHECKNEW_compiling___table_computation___TableEltClassId;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_compiling___table_computation___AbsTableEltClass____local_class(fra.me.REG[0])!=NIT_NULL);
@@ -158766,6 +188693,7 @@ void CHECKNEW_compiling___table_computation___TableEltClassId(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
+static const char LOCATE_NEW_TableEltClassId_compiling___table_computation___AbsTableEltClass___init[] = "new TableEltClassId table_computation::AbsTableEltClass::init";
 val_t NEW_TableEltClassId_compiling___table_computation___AbsTableEltClass___init(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
@@ -158776,10 +188704,11 @@ val_t NEW_TableEltClassId_compiling___table_computation___AbsTableEltClass___ini
   fra.me.meth = LOCATE_NEW_TableEltClassId_compiling___table_computation___AbsTableEltClass___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//table_computation.nit:485 */
+  /* compiling/table_computation.nit:485 */
   fra.me.REG[1] = NEW_compiling___table_computation___TableEltClassId();
   INIT_ATTRIBUTES__compiling___table_computation___TableEltClassId(fra.me.REG[1]);
   compiling___table_computation___AbsTableEltClass___init(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -158787,17 +188716,18 @@ val_t NEW_TableEltClassId_compiling___table_computation___AbsTableEltClass___ini
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_compiling___table_computation___TableEltClassInitTable[63] = {
-  {(bigint) 3163 /* 0: Identity */},
+const classtable_elt_t VFT_compiling___table_computation___TableEltClassInitTable[65] = {
+  {(bigint) 3879 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TableEltClassInitTable" /* 2: Class Name */},
   {(bigint) 3 /* 3: TableEltClassInitTable < Object: superclass typecheck marker */},
-  {(bigint) 303 /* 4: TableEltClassInitTable < AbsTableElt: superclass typecheck marker */},
-  {(bigint) 339 /* 5: TableEltClassInitTable < TableElt: superclass typecheck marker */},
+  {(bigint) 311 /* 4: TableEltClassInitTable < AbsTableElt: superclass typecheck marker */},
+  {(bigint) 343 /* 5: TableEltClassInitTable < TableElt: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {(bigint) 3315 /* 7: TableEltClassInitTable < AbsTableEltClass: superclass typecheck marker */},
+  {(bigint) 3375 /* 8: TableEltClassInitTable < TableEltClass: superclass typecheck marker */},
+  {(bigint) 3879 /* 9: TableEltClassInitTable < TableEltClassInitTable: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 2367 /* 7: TableEltClassInitTable < AbsTableEltClass: superclass typecheck marker */},
-  {(bigint) 2415 /* 8: TableEltClassInitTable < TableEltClass: superclass typecheck marker */},
-  {(bigint) 3163 /* 9: TableEltClassInitTable < TableEltClassInitTable: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -158806,7 +188736,7 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltClassInitTabl
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TableEltClassInitTable < Object: superclass init_table position */},
+  {(bigint) 4 /* 19: TableEltClassInitTable < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -158822,6 +188752,8 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltClassInitTabl
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -158836,25 +188768,25 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltClassInitTabl
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
   {(bigint) compiling___compiling_global___AbsTableEltClass___compile_macros},
-  {(bigint) 1 /* 48: TableEltClassInitTable < AbsTableElt: superclass init_table position */},
-  {(bigint) compiling___table_computation___AbsTableElt___init},
+  {(bigint) 3 /* 51: TableEltClassInitTable < AbsTableElt: superclass init_table position */},
   {(bigint) compiling___compiling_global___TableEltClassInitTable___compile_to_c},
-  {(bigint) 0 /* 51: TableEltClassInitTable < TableElt: superclass init_table position */},
+  {(bigint) 1 /* 53: TableEltClassInitTable < TableElt: superclass init_table position */},
   {(bigint) compiling___table_computation___TableEltClass___is_related_to},
   {(bigint) compiling___table_computation___TableElt___length},
   {(bigint) compiling___table_computation___TableElt___item},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) compiling___compiling_global___TableEltClassInitTable___symbol},
-  {(bigint) 3 /* 58: TableEltClassInitTable < AbsTableEltClass: superclass init_table position */},
+  {(bigint) 2 /* 60: TableEltClassInitTable < AbsTableEltClass: superclass init_table position */},
   {(bigint) compiling___table_computation___AbsTableEltClass___local_class},
   {(bigint) compiling___table_computation___AbsTableEltClass___init},
-  {(bigint) 4 /* 61: TableEltClassInitTable < TableEltClass: superclass init_table position */},
-  {(bigint) 5 /* 62: TableEltClassInitTable < TableEltClassInitTable: superclass init_table position */},
+  {(bigint) 0 /* 63: TableEltClassInitTable < TableEltClass: superclass init_table position */},
+  {(bigint) 5 /* 64: TableEltClassInitTable < TableEltClassInitTable: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
 /* 2: Attribute TableEltClassInitTable::_local_class */
+static const char LOCATE_INIT_ATTRIBUTES__compiling___table_computation___TableEltClassInitTable[] = "init var of TableEltClassInitTable";
 void INIT_ATTRIBUTES__compiling___table_computation___TableEltClassInitTable(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
@@ -158864,6 +188796,7 @@ void INIT_ATTRIBUTES__compiling___table_computation___TableEltClassInitTable(val
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__compiling___table_computation___TableEltClassInitTable;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_compiling___table_computation___TableEltClassInitTable(void)
@@ -158875,6 +188808,7 @@ val_t NEW_compiling___table_computation___TableEltClassInitTable(void)
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
+static const char LOCATE_CHECKNEW_compiling___table_computation___TableEltClassInitTable[] = "check new TableEltClassInitTable";
 void CHECKNEW_compiling___table_computation___TableEltClassInitTable(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
@@ -158885,6 +188819,7 @@ void CHECKNEW_compiling___table_computation___TableEltClassInitTable(val_t p0){
   fra.me.meth = LOCATE_CHECKNEW_compiling___table_computation___TableEltClassInitTable;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_compiling___table_computation___AbsTableEltClass____local_class(fra.me.REG[0])!=NIT_NULL);
@@ -158894,6 +188829,7 @@ void CHECKNEW_compiling___table_computation___TableEltClassInitTable(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
+static const char LOCATE_NEW_TableEltClassInitTable_compiling___table_computation___AbsTableEltClass___init[] = "new TableEltClassInitTable table_computation::AbsTableEltClass::init";
 val_t NEW_TableEltClassInitTable_compiling___table_computation___AbsTableEltClass___init(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
@@ -158904,10 +188840,11 @@ val_t NEW_TableEltClassInitTable_compiling___table_computation___AbsTableEltClas
   fra.me.meth = LOCATE_NEW_TableEltClassInitTable_compiling___table_computation___AbsTableEltClass___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//table_computation.nit:485 */
+  /* compiling/table_computation.nit:485 */
   fra.me.REG[1] = NEW_compiling___table_computation___TableEltClassInitTable();
   INIT_ATTRIBUTES__compiling___table_computation___TableEltClassInitTable(fra.me.REG[1]);
   compiling___table_computation___AbsTableEltClass___init(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -158915,17 +188852,18 @@ val_t NEW_TableEltClassInitTable_compiling___table_computation___AbsTableEltClas
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_compiling___table_computation___TableEltClassColor[63] = {
-  {(bigint) 3167 /* 0: Identity */},
+const classtable_elt_t VFT_compiling___table_computation___TableEltClassColor[65] = {
+  {(bigint) 3883 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TableEltClassColor" /* 2: Class Name */},
   {(bigint) 3 /* 3: TableEltClassColor < Object: superclass typecheck marker */},
-  {(bigint) 303 /* 4: TableEltClassColor < AbsTableElt: superclass typecheck marker */},
-  {(bigint) 339 /* 5: TableEltClassColor < TableElt: superclass typecheck marker */},
-  {(bigint) 2115 /* 6: TableEltClassColor < ModuleTableElt: superclass typecheck marker */},
-  {(bigint) 2367 /* 7: TableEltClassColor < AbsTableEltClass: superclass typecheck marker */},
-  {(bigint) 2415 /* 8: TableEltClassColor < TableEltClass: superclass typecheck marker */},
-  {(bigint) 3167 /* 9: TableEltClassColor < TableEltClassColor: superclass typecheck marker */},
+  {(bigint) 311 /* 4: TableEltClassColor < AbsTableElt: superclass typecheck marker */},
+  {(bigint) 343 /* 5: TableEltClassColor < TableElt: superclass typecheck marker */},
+  {(bigint) 3059 /* 6: TableEltClassColor < ModuleTableElt: superclass typecheck marker */},
+  {(bigint) 3315 /* 7: TableEltClassColor < AbsTableEltClass: superclass typecheck marker */},
+  {(bigint) 3375 /* 8: TableEltClassColor < TableEltClass: superclass typecheck marker */},
+  {(bigint) 3883 /* 9: TableEltClassColor < TableEltClassColor: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -158934,7 +188872,7 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltClassColor[63
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TableEltClassColor < Object: superclass init_table position */},
+  {(bigint) 4 /* 19: TableEltClassColor < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -158950,6 +188888,8 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltClassColor[63
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -158964,25 +188904,25 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltClassColor[63
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
   {(bigint) compiling___compiling_global___AbsTableEltClass___compile_macros},
-  {(bigint) 1 /* 48: TableEltClassColor < AbsTableElt: superclass init_table position */},
-  {(bigint) compiling___table_computation___AbsTableElt___init},
+  {(bigint) 3 /* 51: TableEltClassColor < AbsTableElt: superclass init_table position */},
   {(bigint) compiling___compiling_global___TableEltClassColor___compile_to_c},
-  {(bigint) 0 /* 51: TableEltClassColor < TableElt: superclass init_table position */},
+  {(bigint) 1 /* 53: TableEltClassColor < TableElt: superclass init_table position */},
   {(bigint) compiling___table_computation___TableEltClass___is_related_to},
   {(bigint) compiling___table_computation___TableElt___length},
   {(bigint) compiling___table_computation___TableElt___item},
   {(bigint) compiling___compiling_global___TableEltClassColor___value},
-  {(bigint) 5 /* 56: TableEltClassColor < ModuleTableElt: superclass init_table position */},
+  {(bigint) 5 /* 58: TableEltClassColor < ModuleTableElt: superclass init_table position */},
   {(bigint) compiling___compiling_global___TableEltClassColor___symbol},
-  {(bigint) 3 /* 58: TableEltClassColor < AbsTableEltClass: superclass init_table position */},
+  {(bigint) 2 /* 60: TableEltClassColor < AbsTableEltClass: superclass init_table position */},
   {(bigint) compiling___table_computation___AbsTableEltClass___local_class},
   {(bigint) compiling___table_computation___AbsTableEltClass___init},
-  {(bigint) 4 /* 61: TableEltClassColor < TableEltClass: superclass init_table position */},
-  {(bigint) 6 /* 62: TableEltClassColor < TableEltClassColor: superclass init_table position */},
+  {(bigint) 0 /* 63: TableEltClassColor < TableEltClass: superclass init_table position */},
+  {(bigint) 6 /* 64: TableEltClassColor < TableEltClassColor: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
 /* 2: Attribute TableEltClassColor::_local_class */
+static const char LOCATE_INIT_ATTRIBUTES__compiling___table_computation___TableEltClassColor[] = "init var of TableEltClassColor";
 void INIT_ATTRIBUTES__compiling___table_computation___TableEltClassColor(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
@@ -158992,6 +188932,7 @@ void INIT_ATTRIBUTES__compiling___table_computation___TableEltClassColor(val_t p
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__compiling___table_computation___TableEltClassColor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_compiling___table_computation___TableEltClassColor(void)
@@ -159003,6 +188944,7 @@ val_t NEW_compiling___table_computation___TableEltClassColor(void)
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
+static const char LOCATE_CHECKNEW_compiling___table_computation___TableEltClassColor[] = "check new TableEltClassColor";
 void CHECKNEW_compiling___table_computation___TableEltClassColor(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
@@ -159013,6 +188955,7 @@ void CHECKNEW_compiling___table_computation___TableEltClassColor(val_t p0){
   fra.me.meth = LOCATE_CHECKNEW_compiling___table_computation___TableEltClassColor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_compiling___table_computation___AbsTableEltClass____local_class(fra.me.REG[0])!=NIT_NULL);
@@ -159022,6 +188965,7 @@ void CHECKNEW_compiling___table_computation___TableEltClassColor(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
+static const char LOCATE_NEW_TableEltClassColor_compiling___table_computation___AbsTableEltClass___init[] = "new TableEltClassColor table_computation::AbsTableEltClass::init";
 val_t NEW_TableEltClassColor_compiling___table_computation___AbsTableEltClass___init(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
@@ -159032,10 +188976,11 @@ val_t NEW_TableEltClassColor_compiling___table_computation___AbsTableEltClass___
   fra.me.meth = LOCATE_NEW_TableEltClassColor_compiling___table_computation___AbsTableEltClass___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//table_computation.nit:485 */
+  /* compiling/table_computation.nit:485 */
   fra.me.REG[1] = NEW_compiling___table_computation___TableEltClassColor();
   INIT_ATTRIBUTES__compiling___table_computation___TableEltClassColor(fra.me.REG[1]);
   compiling___table_computation___AbsTableEltClass___init(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -159043,14 +188988,15 @@ val_t NEW_TableEltClassColor_compiling___table_computation___AbsTableEltClass___
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_compiling___table_computation___TableEltComposite[58] = {
-  {(bigint) 2395 /* 0: Identity */},
+const classtable_elt_t VFT_compiling___table_computation___TableEltComposite[60] = {
+  {(bigint) 3355 /* 0: Identity */},
   {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TableEltComposite" /* 2: Class Name */},
   {(bigint) 3 /* 3: TableEltComposite < Object: superclass typecheck marker */},
-  {(bigint) 303 /* 4: TableEltComposite < AbsTableElt: superclass typecheck marker */},
-  {(bigint) 339 /* 5: TableEltComposite < TableElt: superclass typecheck marker */},
-  {(bigint) 2395 /* 6: TableEltComposite < TableEltComposite: superclass typecheck marker */},
+  {(bigint) 311 /* 4: TableEltComposite < AbsTableElt: superclass typecheck marker */},
+  {(bigint) 343 /* 5: TableEltComposite < TableElt: superclass typecheck marker */},
+  {(bigint) 3355 /* 6: TableEltComposite < TableEltComposite: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -159062,7 +189008,7 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltComposite[58]
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TableEltComposite < Object: superclass init_table position */},
+  {(bigint) 2 /* 19: TableEltComposite < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -159078,6 +189024,8 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltComposite[58]
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -159092,14 +189040,13 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltComposite[58]
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
   {(bigint) compiling___compiling_global___AbsTableElt___compile_macros},
-  {(bigint) 1 /* 48: TableEltComposite < AbsTableElt: superclass init_table position */},
-  {(bigint) compiling___table_computation___AbsTableElt___init},
+  {(bigint) 1 /* 51: TableEltComposite < AbsTableElt: superclass init_table position */},
   {(bigint) compiling___compiling_global___TableEltComposite___compile_to_c},
-  {(bigint) 0 /* 51: TableEltComposite < TableElt: superclass init_table position */},
+  {(bigint) 0 /* 53: TableEltComposite < TableElt: superclass init_table position */},
   {(bigint) compiling___table_computation___TableEltComposite___is_related_to},
   {(bigint) compiling___table_computation___TableEltComposite___length},
   {(bigint) compiling___table_computation___TableEltComposite___item},
-  {(bigint) 3 /* 55: TableEltComposite < TableEltComposite: superclass init_table position */},
+  {(bigint) 3 /* 57: TableEltComposite < TableEltComposite: superclass init_table position */},
   {(bigint) compiling___table_computation___TableEltComposite___add},
   {(bigint) compiling___table_computation___TableEltComposite___init},
 };
@@ -159108,6 +189055,7 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltComposite[58]
 /* 2: Attribute TableEltComposite::_table */
 /* 3: Attribute TableEltComposite::_cc */
 /* 4: Attribute TableEltComposite::_offsets */
+static const char LOCATE_INIT_ATTRIBUTES__compiling___table_computation___TableEltComposite[] = "init var of TableEltComposite";
 void INIT_ATTRIBUTES__compiling___table_computation___TableEltComposite(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
@@ -159117,6 +189065,7 @@ void INIT_ATTRIBUTES__compiling___table_computation___TableEltComposite(val_t p0
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__compiling___table_computation___TableEltComposite;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_compiling___table_computation___TableEltComposite(void)
@@ -159128,6 +189077,7 @@ val_t NEW_compiling___table_computation___TableEltComposite(void)
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
+static const char LOCATE_CHECKNEW_compiling___table_computation___TableEltComposite[] = "check new TableEltComposite";
 void CHECKNEW_compiling___table_computation___TableEltComposite(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
@@ -159138,6 +189088,7 @@ void CHECKNEW_compiling___table_computation___TableEltComposite(val_t p0){
   fra.me.meth = LOCATE_CHECKNEW_compiling___table_computation___TableEltComposite;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_compiling___table_computation___TableEltComposite____table(fra.me.REG[0])!=NIT_NULL);
@@ -159157,6 +189108,7 @@ void CHECKNEW_compiling___table_computation___TableEltComposite(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
+static const char LOCATE_NEW_TableEltComposite_compiling___table_computation___TableEltComposite___init[] = "new TableEltComposite table_computation::TableEltComposite::init";
 val_t NEW_TableEltComposite_compiling___table_computation___TableEltComposite___init(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
@@ -159167,10 +189119,11 @@ val_t NEW_TableEltComposite_compiling___table_computation___TableEltComposite___
   fra.me.meth = LOCATE_NEW_TableEltComposite_compiling___table_computation___TableEltComposite___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//table_computation.nit:539 */
+  /* compiling/table_computation.nit:539 */
   fra.me.REG[1] = NEW_compiling___table_computation___TableEltComposite();
   INIT_ATTRIBUTES__compiling___table_computation___TableEltComposite(fra.me.REG[1]);
   compiling___table_computation___TableEltComposite___init(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -159178,14 +189131,15 @@ val_t NEW_TableEltComposite_compiling___table_computation___TableEltComposite___
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_compiling___table_computation___TableEltClassSelfId[56] = {
-  {(bigint) 2403 /* 0: Identity */},
+const classtable_elt_t VFT_compiling___table_computation___TableEltClassSelfId[59] = {
+  {(bigint) 3363 /* 0: Identity */},
   {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TableEltClassSelfId" /* 2: Class Name */},
   {(bigint) 3 /* 3: TableEltClassSelfId < Object: superclass typecheck marker */},
-  {(bigint) 303 /* 4: TableEltClassSelfId < AbsTableElt: superclass typecheck marker */},
-  {(bigint) 339 /* 5: TableEltClassSelfId < TableElt: superclass typecheck marker */},
-  {(bigint) 2403 /* 6: TableEltClassSelfId < TableEltClassSelfId: superclass typecheck marker */},
+  {(bigint) 311 /* 4: TableEltClassSelfId < AbsTableElt: superclass typecheck marker */},
+  {(bigint) 343 /* 5: TableEltClassSelfId < TableElt: superclass typecheck marker */},
+  {(bigint) 3363 /* 6: TableEltClassSelfId < TableEltClassSelfId: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -159197,7 +189151,7 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltClassSelfId[5
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TableEltClassSelfId < Object: superclass init_table position */},
+  {(bigint) 2 /* 19: TableEltClassSelfId < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -159213,6 +189167,8 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltClassSelfId[5
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -159227,17 +189183,18 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltClassSelfId[5
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
   {(bigint) compiling___compiling_global___AbsTableElt___compile_macros},
-  {(bigint) 1 /* 48: TableEltClassSelfId < AbsTableElt: superclass init_table position */},
-  {(bigint) compiling___table_computation___AbsTableElt___init},
+  {(bigint) 1 /* 51: TableEltClassSelfId < AbsTableElt: superclass init_table position */},
   {(bigint) compiling___compiling_global___TableEltClassSelfId___compile_to_c},
-  {(bigint) 0 /* 51: TableEltClassSelfId < TableElt: superclass init_table position */},
+  {(bigint) 0 /* 53: TableEltClassSelfId < TableElt: superclass init_table position */},
   {(bigint) compiling___table_computation___TableEltClassSelfId___is_related_to},
   {(bigint) compiling___table_computation___TableElt___length},
   {(bigint) compiling___table_computation___TableElt___item},
-  {(bigint) 3 /* 55: TableEltClassSelfId < TableEltClassSelfId: superclass init_table position */},
+  {(bigint) 3 /* 57: TableEltClassSelfId < TableEltClassSelfId: superclass init_table position */},
+  {(bigint) compiling___table_computation___TableEltClassSelfId___init},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
+static const char LOCATE_INIT_ATTRIBUTES__compiling___table_computation___TableEltClassSelfId[] = "init var of TableEltClassSelfId";
 void INIT_ATTRIBUTES__compiling___table_computation___TableEltClassSelfId(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
@@ -159247,6 +189204,7 @@ void INIT_ATTRIBUTES__compiling___table_computation___TableEltClassSelfId(val_t
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__compiling___table_computation___TableEltClassSelfId;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_compiling___table_computation___TableEltClassSelfId(void)
@@ -159258,6 +189216,7 @@ val_t NEW_compiling___table_computation___TableEltClassSelfId(void)
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
+static const char LOCATE_CHECKNEW_compiling___table_computation___TableEltClassSelfId[] = "check new TableEltClassSelfId";
 void CHECKNEW_compiling___table_computation___TableEltClassSelfId(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
@@ -159267,34 +189226,38 @@ void CHECKNEW_compiling___table_computation___TableEltClassSelfId(val_t p0){
   fra.me.meth = LOCATE_CHECKNEW_compiling___table_computation___TableEltClassSelfId;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TableEltClassSelfId_compiling___table_computation___AbsTableElt___init(void){
+static const char LOCATE_NEW_TableEltClassSelfId_compiling___table_computation___TableEltClassSelfId___init[] = "new TableEltClassSelfId table_computation::TableEltClassSelfId::init";
+val_t NEW_TableEltClassSelfId_compiling___table_computation___TableEltClassSelfId___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_TableEltClassSelfId_compiling___table_computation___AbsTableElt___init;
+  fra.me.meth = LOCATE_NEW_TableEltClassSelfId_compiling___table_computation___TableEltClassSelfId___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = NEW_compiling___table_computation___TableEltClassSelfId();
   INIT_ATTRIBUTES__compiling___table_computation___TableEltClassSelfId(fra.me.REG[0]);
-  compiling___table_computation___AbsTableElt___init(fra.me.REG[0], init_table);
+  compiling___table_computation___TableEltClassSelfId___init(fra.me.REG[0], init_table);
   CHECKNEW_compiling___table_computation___TableEltClassSelfId(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_compiling___table_computation___TableEltClassSelfName[56] = {
-  {(bigint) 2399 /* 0: Identity */},
+const classtable_elt_t VFT_compiling___table_computation___TableEltClassSelfName[59] = {
+  {(bigint) 3359 /* 0: Identity */},
   {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TableEltClassSelfName" /* 2: Class Name */},
   {(bigint) 3 /* 3: TableEltClassSelfName < Object: superclass typecheck marker */},
-  {(bigint) 303 /* 4: TableEltClassSelfName < AbsTableElt: superclass typecheck marker */},
-  {(bigint) 339 /* 5: TableEltClassSelfName < TableElt: superclass typecheck marker */},
-  {(bigint) 2399 /* 6: TableEltClassSelfName < TableEltClassSelfName: superclass typecheck marker */},
+  {(bigint) 311 /* 4: TableEltClassSelfName < AbsTableElt: superclass typecheck marker */},
+  {(bigint) 343 /* 5: TableEltClassSelfName < TableElt: superclass typecheck marker */},
+  {(bigint) 3359 /* 6: TableEltClassSelfName < TableEltClassSelfName: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -159306,7 +189269,7 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltClassSelfName
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TableEltClassSelfName < Object: superclass init_table position */},
+  {(bigint) 2 /* 19: TableEltClassSelfName < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -159322,6 +189285,8 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltClassSelfName
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -159336,17 +189301,18 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltClassSelfName
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
   {(bigint) compiling___compiling_global___AbsTableElt___compile_macros},
-  {(bigint) 1 /* 48: TableEltClassSelfName < AbsTableElt: superclass init_table position */},
-  {(bigint) compiling___table_computation___AbsTableElt___init},
+  {(bigint) 1 /* 51: TableEltClassSelfName < AbsTableElt: superclass init_table position */},
   {(bigint) compiling___compiling_global___TableEltClassSelfName___compile_to_c},
-  {(bigint) 0 /* 51: TableEltClassSelfName < TableElt: superclass init_table position */},
+  {(bigint) 0 /* 53: TableEltClassSelfName < TableElt: superclass init_table position */},
   {(bigint) compiling___table_computation___TableEltClassSelfName___is_related_to},
   {(bigint) compiling___table_computation___TableElt___length},
   {(bigint) compiling___table_computation___TableElt___item},
-  {(bigint) 3 /* 55: TableEltClassSelfName < TableEltClassSelfName: superclass init_table position */},
+  {(bigint) 3 /* 57: TableEltClassSelfName < TableEltClassSelfName: superclass init_table position */},
+  {(bigint) compiling___table_computation___TableEltClassSelfName___init},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
+static const char LOCATE_INIT_ATTRIBUTES__compiling___table_computation___TableEltClassSelfName[] = "init var of TableEltClassSelfName";
 void INIT_ATTRIBUTES__compiling___table_computation___TableEltClassSelfName(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
@@ -159356,6 +189322,7 @@ void INIT_ATTRIBUTES__compiling___table_computation___TableEltClassSelfName(val_
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__compiling___table_computation___TableEltClassSelfName;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_compiling___table_computation___TableEltClassSelfName(void)
@@ -159367,6 +189334,7 @@ val_t NEW_compiling___table_computation___TableEltClassSelfName(void)
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
+static const char LOCATE_CHECKNEW_compiling___table_computation___TableEltClassSelfName[] = "check new TableEltClassSelfName";
 void CHECKNEW_compiling___table_computation___TableEltClassSelfName(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
@@ -159376,34 +189344,38 @@ void CHECKNEW_compiling___table_computation___TableEltClassSelfName(val_t p0){
   fra.me.meth = LOCATE_CHECKNEW_compiling___table_computation___TableEltClassSelfName;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TableEltClassSelfName_compiling___table_computation___AbsTableElt___init(void){
+static const char LOCATE_NEW_TableEltClassSelfName_compiling___table_computation___TableEltClassSelfName___init[] = "new TableEltClassSelfName table_computation::TableEltClassSelfName::init";
+val_t NEW_TableEltClassSelfName_compiling___table_computation___TableEltClassSelfName___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_TableEltClassSelfName_compiling___table_computation___AbsTableElt___init;
+  fra.me.meth = LOCATE_NEW_TableEltClassSelfName_compiling___table_computation___TableEltClassSelfName___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = NEW_compiling___table_computation___TableEltClassSelfName();
   INIT_ATTRIBUTES__compiling___table_computation___TableEltClassSelfName(fra.me.REG[0]);
-  compiling___table_computation___AbsTableElt___init(fra.me.REG[0], init_table);
+  compiling___table_computation___TableEltClassSelfName___init(fra.me.REG[0], init_table);
   CHECKNEW_compiling___table_computation___TableEltClassSelfName(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_compiling___table_computation___TableEltClassObjectSize[56] = {
-  {(bigint) 2407 /* 0: Identity */},
+const classtable_elt_t VFT_compiling___table_computation___TableEltClassObjectSize[59] = {
+  {(bigint) 3367 /* 0: Identity */},
   {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TableEltClassObjectSize" /* 2: Class Name */},
   {(bigint) 3 /* 3: TableEltClassObjectSize < Object: superclass typecheck marker */},
-  {(bigint) 303 /* 4: TableEltClassObjectSize < AbsTableElt: superclass typecheck marker */},
-  {(bigint) 339 /* 5: TableEltClassObjectSize < TableElt: superclass typecheck marker */},
-  {(bigint) 2407 /* 6: TableEltClassObjectSize < TableEltClassObjectSize: superclass typecheck marker */},
+  {(bigint) 311 /* 4: TableEltClassObjectSize < AbsTableElt: superclass typecheck marker */},
+  {(bigint) 343 /* 5: TableEltClassObjectSize < TableElt: superclass typecheck marker */},
+  {(bigint) 3367 /* 6: TableEltClassObjectSize < TableEltClassObjectSize: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -159415,7 +189387,7 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltClassObjectSi
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TableEltClassObjectSize < Object: superclass init_table position */},
+  {(bigint) 2 /* 19: TableEltClassObjectSize < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -159431,6 +189403,8 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltClassObjectSi
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -159445,17 +189419,18 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltClassObjectSi
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
   {(bigint) compiling___compiling_global___AbsTableElt___compile_macros},
-  {(bigint) 1 /* 48: TableEltClassObjectSize < AbsTableElt: superclass init_table position */},
-  {(bigint) compiling___table_computation___AbsTableElt___init},
+  {(bigint) 1 /* 51: TableEltClassObjectSize < AbsTableElt: superclass init_table position */},
   {(bigint) compiling___compiling_global___TableEltClassObjectSize___compile_to_c},
-  {(bigint) 0 /* 51: TableEltClassObjectSize < TableElt: superclass init_table position */},
+  {(bigint) 0 /* 53: TableEltClassObjectSize < TableElt: superclass init_table position */},
   {(bigint) compiling___table_computation___TableEltClassObjectSize___is_related_to},
   {(bigint) compiling___table_computation___TableElt___length},
   {(bigint) compiling___table_computation___TableElt___item},
-  {(bigint) 3 /* 55: TableEltClassObjectSize < TableEltClassObjectSize: superclass init_table position */},
+  {(bigint) 3 /* 57: TableEltClassObjectSize < TableEltClassObjectSize: superclass init_table position */},
+  {(bigint) compiling___table_computation___TableEltClassObjectSize___init},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
+static const char LOCATE_INIT_ATTRIBUTES__compiling___table_computation___TableEltClassObjectSize[] = "init var of TableEltClassObjectSize";
 void INIT_ATTRIBUTES__compiling___table_computation___TableEltClassObjectSize(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
@@ -159465,6 +189440,7 @@ void INIT_ATTRIBUTES__compiling___table_computation___TableEltClassObjectSize(va
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__compiling___table_computation___TableEltClassObjectSize;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_compiling___table_computation___TableEltClassObjectSize(void)
@@ -159476,6 +189452,7 @@ val_t NEW_compiling___table_computation___TableEltClassObjectSize(void)
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
+static const char LOCATE_CHECKNEW_compiling___table_computation___TableEltClassObjectSize[] = "check new TableEltClassObjectSize";
 void CHECKNEW_compiling___table_computation___TableEltClassObjectSize(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
@@ -159485,34 +189462,38 @@ void CHECKNEW_compiling___table_computation___TableEltClassObjectSize(val_t p0){
   fra.me.meth = LOCATE_CHECKNEW_compiling___table_computation___TableEltClassObjectSize;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TableEltClassObjectSize_compiling___table_computation___AbsTableElt___init(void){
+static const char LOCATE_NEW_TableEltClassObjectSize_compiling___table_computation___TableEltClassObjectSize___init[] = "new TableEltClassObjectSize table_computation::TableEltClassObjectSize::init";
+val_t NEW_TableEltClassObjectSize_compiling___table_computation___TableEltClassObjectSize___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_compiling___table_computation___AbsTableElt___init;
+  fra.me.meth = LOCATE_NEW_TableEltClassObjectSize_compiling___table_computation___TableEltClassObjectSize___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = NEW_compiling___table_computation___TableEltClassObjectSize();
   INIT_ATTRIBUTES__compiling___table_computation___TableEltClassObjectSize(fra.me.REG[0]);
-  compiling___table_computation___AbsTableElt___init(fra.me.REG[0], init_table);
+  compiling___table_computation___TableEltClassObjectSize___init(fra.me.REG[0], init_table);
   CHECKNEW_compiling___table_computation___TableEltClassObjectSize(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_compiling___table_computation___TableEltObjectId[56] = {
-  {(bigint) 2391 /* 0: Identity */},
+const classtable_elt_t VFT_compiling___table_computation___TableEltObjectId[59] = {
+  {(bigint) 3351 /* 0: Identity */},
   {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TableEltObjectId" /* 2: Class Name */},
   {(bigint) 3 /* 3: TableEltObjectId < Object: superclass typecheck marker */},
-  {(bigint) 303 /* 4: TableEltObjectId < AbsTableElt: superclass typecheck marker */},
-  {(bigint) 339 /* 5: TableEltObjectId < TableElt: superclass typecheck marker */},
-  {(bigint) 2391 /* 6: TableEltObjectId < TableEltObjectId: superclass typecheck marker */},
+  {(bigint) 311 /* 4: TableEltObjectId < AbsTableElt: superclass typecheck marker */},
+  {(bigint) 343 /* 5: TableEltObjectId < TableElt: superclass typecheck marker */},
+  {(bigint) 3351 /* 6: TableEltObjectId < TableEltObjectId: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -159524,7 +189505,7 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltObjectId[56]
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TableEltObjectId < Object: superclass init_table position */},
+  {(bigint) 2 /* 19: TableEltObjectId < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -159540,6 +189521,8 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltObjectId[56]
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -159554,17 +189537,18 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltObjectId[56]
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
   {(bigint) compiling___compiling_global___AbsTableElt___compile_macros},
-  {(bigint) 1 /* 48: TableEltObjectId < AbsTableElt: superclass init_table position */},
-  {(bigint) compiling___table_computation___AbsTableElt___init},
+  {(bigint) 1 /* 51: TableEltObjectId < AbsTableElt: superclass init_table position */},
   {(bigint) compiling___compiling_global___TableEltObjectId___compile_to_c},
-  {(bigint) 0 /* 51: TableEltObjectId < TableElt: superclass init_table position */},
+  {(bigint) 0 /* 53: TableEltObjectId < TableElt: superclass init_table position */},
   {(bigint) compiling___table_computation___TableEltObjectId___is_related_to},
   {(bigint) compiling___table_computation___TableElt___length},
   {(bigint) compiling___table_computation___TableElt___item},
-  {(bigint) 3 /* 55: TableEltObjectId < TableEltObjectId: superclass init_table position */},
+  {(bigint) 3 /* 57: TableEltObjectId < TableEltObjectId: superclass init_table position */},
+  {(bigint) compiling___table_computation___TableEltObjectId___init},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
+static const char LOCATE_INIT_ATTRIBUTES__compiling___table_computation___TableEltObjectId[] = "init var of TableEltObjectId";
 void INIT_ATTRIBUTES__compiling___table_computation___TableEltObjectId(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
@@ -159574,6 +189558,7 @@ void INIT_ATTRIBUTES__compiling___table_computation___TableEltObjectId(val_t p0)
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__compiling___table_computation___TableEltObjectId;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_compiling___table_computation___TableEltObjectId(void)
@@ -159585,6 +189570,7 @@ val_t NEW_compiling___table_computation___TableEltObjectId(void)
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
+static const char LOCATE_CHECKNEW_compiling___table_computation___TableEltObjectId[] = "check new TableEltObjectId";
 void CHECKNEW_compiling___table_computation___TableEltObjectId(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
@@ -159594,34 +189580,38 @@ void CHECKNEW_compiling___table_computation___TableEltObjectId(val_t p0){
   fra.me.meth = LOCATE_CHECKNEW_compiling___table_computation___TableEltObjectId;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TableEltObjectId_compiling___table_computation___AbsTableElt___init(void){
+static const char LOCATE_NEW_TableEltObjectId_compiling___table_computation___TableEltObjectId___init[] = "new TableEltObjectId table_computation::TableEltObjectId::init";
+val_t NEW_TableEltObjectId_compiling___table_computation___TableEltObjectId___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_compiling___table_computation___AbsTableElt___init;
+  fra.me.meth = LOCATE_NEW_TableEltObjectId_compiling___table_computation___TableEltObjectId___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = NEW_compiling___table_computation___TableEltObjectId();
   INIT_ATTRIBUTES__compiling___table_computation___TableEltObjectId(fra.me.REG[0]);
-  compiling___table_computation___AbsTableElt___init(fra.me.REG[0], init_table);
+  compiling___table_computation___TableEltObjectId___init(fra.me.REG[0], init_table);
   CHECKNEW_compiling___table_computation___TableEltObjectId(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_compiling___table_computation___TableEltVftPointer[56] = {
-  {(bigint) 2383 /* 0: Identity */},
+const classtable_elt_t VFT_compiling___table_computation___TableEltVftPointer[59] = {
+  {(bigint) 3343 /* 0: Identity */},
   {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TableEltVftPointer" /* 2: Class Name */},
   {(bigint) 3 /* 3: TableEltVftPointer < Object: superclass typecheck marker */},
-  {(bigint) 303 /* 4: TableEltVftPointer < AbsTableElt: superclass typecheck marker */},
-  {(bigint) 339 /* 5: TableEltVftPointer < TableElt: superclass typecheck marker */},
-  {(bigint) 2383 /* 6: TableEltVftPointer < TableEltVftPointer: superclass typecheck marker */},
+  {(bigint) 311 /* 4: TableEltVftPointer < AbsTableElt: superclass typecheck marker */},
+  {(bigint) 343 /* 5: TableEltVftPointer < TableElt: superclass typecheck marker */},
+  {(bigint) 3343 /* 6: TableEltVftPointer < TableEltVftPointer: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -159633,7 +189623,7 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltVftPointer[56
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 18: TableEltVftPointer < Object: superclass init_table position */},
+  {(bigint) 2 /* 19: TableEltVftPointer < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -159649,6 +189639,8 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltVftPointer[56
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -159663,17 +189655,18 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltVftPointer[56
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
   {(bigint) compiling___compiling_global___AbsTableElt___compile_macros},
-  {(bigint) 1 /* 48: TableEltVftPointer < AbsTableElt: superclass init_table position */},
-  {(bigint) compiling___table_computation___AbsTableElt___init},
+  {(bigint) 1 /* 51: TableEltVftPointer < AbsTableElt: superclass init_table position */},
   {(bigint) compiling___compiling_global___TableEltVftPointer___compile_to_c},
-  {(bigint) 0 /* 51: TableEltVftPointer < TableElt: superclass init_table position */},
+  {(bigint) 0 /* 53: TableEltVftPointer < TableElt: superclass init_table position */},
   {(bigint) compiling___table_computation___TableEltVftPointer___is_related_to},
   {(bigint) compiling___table_computation___TableElt___length},
   {(bigint) compiling___table_computation___TableElt___item},
-  {(bigint) 3 /* 55: TableEltVftPointer < TableEltVftPointer: superclass init_table position */},
+  {(bigint) 3 /* 57: TableEltVftPointer < TableEltVftPointer: superclass init_table position */},
+  {(bigint) compiling___table_computation___TableEltVftPointer___init},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
+static const char LOCATE_INIT_ATTRIBUTES__compiling___table_computation___TableEltVftPointer[] = "init var of TableEltVftPointer";
 void INIT_ATTRIBUTES__compiling___table_computation___TableEltVftPointer(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
@@ -159683,6 +189676,7 @@ void INIT_ATTRIBUTES__compiling___table_computation___TableEltVftPointer(val_t p
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__compiling___table_computation___TableEltVftPointer;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_compiling___table_computation___TableEltVftPointer(void)
@@ -159694,6 +189688,7 @@ val_t NEW_compiling___table_computation___TableEltVftPointer(void)
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
+static const char LOCATE_CHECKNEW_compiling___table_computation___TableEltVftPointer[] = "check new TableEltVftPointer";
 void CHECKNEW_compiling___table_computation___TableEltVftPointer(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
@@ -159703,32 +189698,36 @@ void CHECKNEW_compiling___table_computation___TableEltVftPointer(val_t p0){
   fra.me.meth = LOCATE_CHECKNEW_compiling___table_computation___TableEltVftPointer;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TableEltVftPointer_compiling___table_computation___AbsTableElt___init(void){
+static const char LOCATE_NEW_TableEltVftPointer_compiling___table_computation___TableEltVftPointer___init[] = "new TableEltVftPointer table_computation::TableEltVftPointer::init";
+val_t NEW_TableEltVftPointer_compiling___table_computation___TableEltVftPointer___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_TableEltVftPointer_compiling___table_computation___AbsTableElt___init;
+  fra.me.meth = LOCATE_NEW_TableEltVftPointer_compiling___table_computation___TableEltVftPointer___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = NEW_compiling___table_computation___TableEltVftPointer();
   INIT_ATTRIBUTES__compiling___table_computation___TableEltVftPointer(fra.me.REG[0]);
-  compiling___table_computation___AbsTableElt___init(fra.me.REG[0], init_table);
+  compiling___table_computation___TableEltVftPointer___init(fra.me.REG[0], init_table);
   CHECKNEW_compiling___table_computation___TableEltVftPointer(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_compiling___compiling_icode___I2CCompilerVisitor[77] = {
-  {(bigint) 247 /* 0: Identity */},
+const classtable_elt_t VFT_compiling___compiling_icode___I2CCompilerVisitor[80] = {
+  {(bigint) 235 /* 0: Identity */},
   {(bigint) 17 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "I2CCompilerVisitor" /* 2: Class Name */},
   {(bigint) 3 /* 3: I2CCompilerVisitor < Object: superclass typecheck marker */},
-  {(bigint) 247 /* 4: I2CCompilerVisitor < I2CCompilerVisitor: superclass typecheck marker */},
+  {(bigint) 235 /* 4: I2CCompilerVisitor < I2CCompilerVisitor: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -159742,7 +189741,7 @@ const classtable_elt_t VFT_compiling___compiling_icode___I2CCompilerVisitor[77]
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: I2CCompilerVisitor < Object: superclass init_table position */},
+  {(bigint) 0 /* 19: I2CCompilerVisitor < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -159758,6 +189757,8 @@ const classtable_elt_t VFT_compiling___compiling_icode___I2CCompilerVisitor[77]
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -159771,7 +189772,7 @@ const classtable_elt_t VFT_compiling___compiling_icode___I2CCompilerVisitor[77]
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: I2CCompilerVisitor < I2CCompilerVisitor: superclass init_table position */},
+  {(bigint) 1 /* 50: I2CCompilerVisitor < I2CCompilerVisitor: superclass init_table position */},
   {(bigint) compiling___compiling_icode___I2CCompilerVisitor___register},
   {(bigint) compiling___compiling_icode___I2CCompilerVisitor___registers},
   {(bigint) compiling___compiling_icode___I2CCompilerVisitor___new_number},
@@ -159819,6 +189820,7 @@ const classtable_elt_t VFT_compiling___compiling_icode___I2CCompilerVisitor[77]
 /* 14: Attribute I2CCompilerVisitor::_last_location */
 /* 15: Attribute I2CCompilerVisitor::_next_location */
 /* 16: Attribute I2CCompilerVisitor::_basecname */
+static const char LOCATE_INIT_ATTRIBUTES__compiling___compiling_icode___I2CCompilerVisitor[] = "init var of I2CCompilerVisitor";
 void INIT_ATTRIBUTES__compiling___compiling_icode___I2CCompilerVisitor(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t REGB0;
@@ -159829,43 +189831,44 @@ void INIT_ATTRIBUTES__compiling___compiling_icode___I2CCompilerVisitor(val_t p0)
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__compiling___compiling_icode___I2CCompilerVisitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//compiling_icode.nit:28 */
+  /* compiling/compiling_icode.nit:28 */
   fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
   ATTR_compiling___compiling_icode___I2CCompilerVisitor____ids(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./compiling//compiling_icode.nit:30 */
+  /* compiling/compiling_icode.nit:30 */
   fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
   ATTR_compiling___compiling_icode___I2CCompilerVisitor____ids2(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./compiling//compiling_icode.nit:77 */
+  /* compiling/compiling_icode.nit:77 */
   REGB0 = TAG_Int(0);
   ATTR_compiling___compiling_icode___I2CCompilerVisitor____last_number(fra.me.REG[0]) = REGB0;
-  /* ./compiling//compiling_icode.nit:98 */
+  /* compiling/compiling_icode.nit:98 */
   fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
   ATTR_compiling___compiling_icode___I2CCompilerVisitor____closures(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./compiling//compiling_icode.nit:101 */
+  /* compiling/compiling_icode.nit:101 */
   fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
   ATTR_compiling___compiling_icode___I2CCompilerVisitor____clostypes(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./compiling//compiling_icode.nit:104 */
+  /* compiling/compiling_icode.nit:104 */
   fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
   ATTR_compiling___compiling_icode___I2CCompilerVisitor____local_labels(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./compiling//compiling_icode.nit:108 */
+  /* compiling/compiling_icode.nit:108 */
   fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
   ATTR_compiling___compiling_icode___I2CCompilerVisitor____escaped_labels(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./compiling//compiling_icode.nit:144 */
+  /* compiling/compiling_icode.nit:144 */
   fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
   ATTR_compiling___compiling_icode___I2CCompilerVisitor____marks_to_seq(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./compiling//compiling_icode.nit:147 */
-  REGB0 = TAG_Bool(false);
+  /* compiling/compiling_icode.nit:147 */
+  REGB0 = TAG_Bool(0);
   ATTR_compiling___compiling_icode___I2CCompilerVisitor____closure(fra.me.REG[0]) = REGB0;
-  /* ./compiling//compiling_icode.nit:155 */
+  /* compiling/compiling_icode.nit:155 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_compiling___compiling_icode___I2CCompilerVisitor____return_label(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./compiling//compiling_icode.nit:202 */
+  /* compiling/compiling_icode.nit:202 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_compiling___compiling_icode___I2CCompilerVisitor____last_location(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./compiling//compiling_icode.nit:203 */
+  /* compiling/compiling_icode.nit:203 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_compiling___compiling_icode___I2CCompilerVisitor____next_location(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -159879,6 +189882,7 @@ val_t NEW_compiling___compiling_icode___I2CCompilerVisitor(void)
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
+static const char LOCATE_CHECKNEW_compiling___compiling_icode___I2CCompilerVisitor[] = "check new I2CCompilerVisitor";
 void CHECKNEW_compiling___compiling_icode___I2CCompilerVisitor(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
@@ -159889,6 +189893,7 @@ void CHECKNEW_compiling___compiling_icode___I2CCompilerVisitor(val_t p0){
   fra.me.meth = LOCATE_CHECKNEW_compiling___compiling_icode___I2CCompilerVisitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_compiling___compiling_icode___I2CCompilerVisitor____ids(fra.me.REG[0])!=NIT_NULL);
@@ -159953,6 +189958,7 @@ void CHECKNEW_compiling___compiling_icode___I2CCompilerVisitor(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
+static const char LOCATE_NEW_I2CCompilerVisitor_compiling___compiling_icode___I2CCompilerVisitor___init[] = "new I2CCompilerVisitor compiling_icode::I2CCompilerVisitor::init";
 val_t NEW_I2CCompilerVisitor_compiling___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;
@@ -159963,6 +189969,7 @@ val_t NEW_I2CCompilerVisitor_compiling___compiling_icode___I2CCompilerVisitor___
   fra.me.meth = LOCATE_NEW_I2CCompilerVisitor_compiling___compiling_icode___I2CCompilerVisitor___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -159970,7 +189977,7 @@ val_t NEW_I2CCompilerVisitor_compiling___compiling_icode___I2CCompilerVisitor___
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./compiling//compiling_icode.nit:222 */
+  /* compiling/compiling_icode.nit:222 */
   fra.me.REG[3] = NEW_compiling___compiling_icode___I2CCompilerVisitor();
   INIT_ATTRIBUTES__compiling___compiling_icode___I2CCompilerVisitor(fra.me.REG[3]);
   compiling___compiling_icode___I2CCompilerVisitor___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
@@ -159978,12 +189985,13 @@ val_t NEW_I2CCompilerVisitor_compiling___compiling_icode___I2CCompilerVisitor___
   stack_frame_head = fra.me.prev;
   return fra.me.REG[3];
 }
-const classtable_elt_t VFT_native_interface___ni_tools___FunctionCompiler[56] = {
-  {(bigint) 255 /* 0: Identity */},
+const classtable_elt_t VFT_native_interface___ni_tools___FunctionCompiler[59] = {
+  {(bigint) 243 /* 0: Identity */},
   {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "FunctionCompiler" /* 2: Class Name */},
   {(bigint) 3 /* 3: FunctionCompiler < Object: superclass typecheck marker */},
-  {(bigint) 255 /* 4: FunctionCompiler < FunctionCompiler: superclass typecheck marker */},
+  {(bigint) 243 /* 4: FunctionCompiler < FunctionCompiler: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -159997,7 +190005,7 @@ const classtable_elt_t VFT_native_interface___ni_tools___FunctionCompiler[56] =
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: FunctionCompiler < Object: superclass init_table position */},
+  {(bigint) 0 /* 19: FunctionCompiler < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -160013,6 +190021,8 @@ const classtable_elt_t VFT_native_interface___ni_tools___FunctionCompiler[56] =
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -160026,7 +190036,7 @@ const classtable_elt_t VFT_native_interface___ni_tools___FunctionCompiler[56] =
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: FunctionCompiler < FunctionCompiler: superclass init_table position */},
+  {(bigint) 1 /* 50: FunctionCompiler < FunctionCompiler: superclass init_table position */},
   {(bigint) native_interface___ni_tools___FunctionCompiler___signature},
   {(bigint) native_interface___ni_tools___FunctionCompiler___signature__eq},
   {(bigint) native_interface___ni_tools___FunctionCompiler___decls},
@@ -160041,6 +190051,7 @@ const classtable_elt_t VFT_native_interface___ni_tools___FunctionCompiler[56] =
 /* 2: Attribute FunctionCompiler::@signature */
 /* 3: Attribute FunctionCompiler::@decls */
 /* 4: Attribute FunctionCompiler::@exprs */
+static const char LOCATE_INIT_ATTRIBUTES__native_interface___ni_tools___FunctionCompiler[] = "init var of FunctionCompiler";
 void INIT_ATTRIBUTES__native_interface___ni_tools___FunctionCompiler(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
@@ -160050,14 +190061,15 @@ void INIT_ATTRIBUTES__native_interface___ni_tools___FunctionCompiler(val_t p0){
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__native_interface___ni_tools___FunctionCompiler;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./native_interface//ni_tools.nit:25 */
-  fra.me.REG[1] = NEW_Writer_compiling___compiling_writer___Writer___init();
+  /* native_interface/ni_tools.nit:25 */
+  fra.me.REG[1] = NEW_Writer_compiling_writer___Writer___init();
   ATTR_native_interface___ni_tools___FunctionCompiler_____atdecls(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./native_interface//ni_tools.nit:26 */
-  fra.me.REG[1] = NEW_Writer_compiling___compiling_writer___Writer___init();
+  /* native_interface/ni_tools.nit:26 */
+  fra.me.REG[1] = NEW_Writer_compiling_writer___Writer___init();
   ATTR_native_interface___ni_tools___FunctionCompiler_____atexprs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
 }
@@ -160070,6 +190082,7 @@ val_t NEW_native_interface___ni_tools___FunctionCompiler(void)
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
+static const char LOCATE_CHECKNEW_native_interface___ni_tools___FunctionCompiler[] = "check new FunctionCompiler";
 void CHECKNEW_native_interface___ni_tools___FunctionCompiler(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
@@ -160080,6 +190093,7 @@ void CHECKNEW_native_interface___ni_tools___FunctionCompiler(val_t p0){
   fra.me.meth = LOCATE_CHECKNEW_native_interface___ni_tools___FunctionCompiler;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_native_interface___ni_tools___FunctionCompiler_____atsignature(fra.me.REG[0])!=NIT_NULL);
@@ -160099,6 +190113,7 @@ void CHECKNEW_native_interface___ni_tools___FunctionCompiler(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
+static const char LOCATE_NEW_FunctionCompiler_native_interface___ni_tools___FunctionCompiler___init[] = "new FunctionCompiler ni_tools::FunctionCompiler::init";
 val_t NEW_FunctionCompiler_native_interface___ni_tools___FunctionCompiler___init(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
@@ -160109,6 +190124,7 @@ val_t NEW_FunctionCompiler_native_interface___ni_tools___FunctionCompiler___init
   fra.me.meth = LOCATE_NEW_FunctionCompiler_native_interface___ni_tools___FunctionCompiler___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
@@ -160119,12 +190135,281 @@ val_t NEW_FunctionCompiler_native_interface___ni_tools___FunctionCompiler___init
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_native_interface___frontier___FrontierVisitor[67] = {
-  {(bigint) 259 /* 0: Identity */},
+const classtable_elt_t VFT_native_interface___frontier___ReceiverVariable[63] = {
+  {(bigint) 2995 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReceiverVariable" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReceiverVariable < Object: superclass typecheck marker */},
+  {(bigint) 119 /* 4: ReceiverVariable < NiVariable: superclass typecheck marker */},
+  {(bigint) 2995 /* 5: ReceiverVariable < ReceiverVariable: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: ReceiverVariable < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 50: ReceiverVariable < NiVariable: superclass init_table position */},
+  {(bigint) native_interface___frontier___ReceiverVariable___ni_from_name},
+  {(bigint) native_interface___frontier___ReceiverVariable___ni_to_name},
+  {(bigint) native_interface___frontier___ReceiverVariable___ni_type},
+  {(bigint) native_interface___frontier___NiVariable___needs_preparation},
+  {(bigint) native_interface___frontier___NiVariable___prepare_for_nit},
+  {(bigint) native_interface___frontier___NiVariable___prepare_for_c},
+  {(bigint) native_interface___frontier___NiVariable___as_arg_to_nit},
+  {(bigint) native_interface___frontier___NiVariable___as_arg_to_c},
+  {(bigint) native_interface___frontier___NiVariable___init},
+  {(bigint) 2 /* 60: ReceiverVariable < ReceiverVariable: superclass init_table position */},
+  {(bigint) native_interface___frontier___ReceiverVariable___ni_type__eq},
+  {(bigint) native_interface___frontier___ReceiverVariable___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ReceiverVariable::@ni_type */
+static const char LOCATE_INIT_ATTRIBUTES__native_interface___frontier___ReceiverVariable[] = "init var of ReceiverVariable";
+void INIT_ATTRIBUTES__native_interface___frontier___ReceiverVariable(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__native_interface___frontier___ReceiverVariable;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_native_interface___frontier___ReceiverVariable(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_native_interface___frontier___ReceiverVariable;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_native_interface___frontier___ReceiverVariable[] = "check new ReceiverVariable";
+void CHECKNEW_native_interface___frontier___ReceiverVariable(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_native_interface___frontier___ReceiverVariable;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_native_interface___frontier___ReceiverVariable_____atni_type(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@ni_type", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_ReceiverVariable_native_interface___frontier___ReceiverVariable___init[] = "new ReceiverVariable frontier::ReceiverVariable::init";
+val_t NEW_ReceiverVariable_native_interface___frontier___ReceiverVariable___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 = 99;
+  fra.me.meth = LOCATE_NEW_ReceiverVariable_native_interface___frontier___ReceiverVariable___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* native_interface/frontier.nit:99 */
+  fra.me.REG[1] = NEW_native_interface___frontier___ReceiverVariable();
+  INIT_ATTRIBUTES__native_interface___frontier___ReceiverVariable(fra.me.REG[1]);
+  native_interface___frontier___ReceiverVariable___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_native_interface___frontier___ReceiverVariable(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_native_interface___frontier___ReturnVariable[63] = {
+  {(bigint) 371 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ReturnVariable" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ReturnVariable < Object: superclass typecheck marker */},
+  {(bigint) 119 /* 4: ReturnVariable < NiVariable: superclass typecheck marker */},
+  {(bigint) 371 /* 5: ReturnVariable < ReturnVariable: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 1 /* 19: ReturnVariable < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 50: ReturnVariable < NiVariable: superclass init_table position */},
+  {(bigint) native_interface___frontier___ReturnVariable___ni_from_name},
+  {(bigint) native_interface___frontier___ReturnVariable___ni_to_name},
+  {(bigint) native_interface___frontier___ReturnVariable___ni_type},
+  {(bigint) native_interface___frontier___NiVariable___needs_preparation},
+  {(bigint) native_interface___frontier___ReturnVariable___prepare_for_nit},
+  {(bigint) native_interface___frontier___ReturnVariable___prepare_for_c},
+  {(bigint) native_interface___frontier___NiVariable___as_arg_to_nit},
+  {(bigint) native_interface___frontier___NiVariable___as_arg_to_c},
+  {(bigint) native_interface___frontier___NiVariable___init},
+  {(bigint) 2 /* 60: ReturnVariable < ReturnVariable: superclass init_table position */},
+  {(bigint) native_interface___frontier___ReturnVariable___ni_type__eq},
+  {(bigint) native_interface___frontier___ReturnVariable___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ReturnVariable::@ni_type */
+static const char LOCATE_INIT_ATTRIBUTES__native_interface___frontier___ReturnVariable[] = "init var of ReturnVariable";
+void INIT_ATTRIBUTES__native_interface___frontier___ReturnVariable(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__native_interface___frontier___ReturnVariable;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_native_interface___frontier___ReturnVariable(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_native_interface___frontier___ReturnVariable;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_native_interface___frontier___ReturnVariable[] = "check new ReturnVariable";
+void CHECKNEW_native_interface___frontier___ReturnVariable(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_native_interface___frontier___ReturnVariable;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_native_interface___frontier___ReturnVariable_____atni_type(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@ni_type", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_ReturnVariable_native_interface___frontier___ReturnVariable___init[] = "new ReturnVariable frontier::ReturnVariable::init";
+val_t NEW_ReturnVariable_native_interface___frontier___ReturnVariable___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 = 109;
+  fra.me.meth = LOCATE_NEW_ReturnVariable_native_interface___frontier___ReturnVariable___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* native_interface/frontier.nit:109 */
+  fra.me.REG[1] = NEW_native_interface___frontier___ReturnVariable();
+  INIT_ATTRIBUTES__native_interface___frontier___ReturnVariable(fra.me.REG[1]);
+  native_interface___frontier___ReturnVariable___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_native_interface___frontier___ReturnVariable(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_native_interface___frontier___FrontierVisitor[70] = {
+  {(bigint) 247 /* 0: Identity */},
   {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "FrontierVisitor" /* 2: Class Name */},
   {(bigint) 3 /* 3: FrontierVisitor < Object: superclass typecheck marker */},
-  {(bigint) 259 /* 4: FrontierVisitor < FrontierVisitor: superclass typecheck marker */},
+  {(bigint) 247 /* 4: FrontierVisitor < FrontierVisitor: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -160138,7 +190423,7 @@ const classtable_elt_t VFT_native_interface___frontier___FrontierVisitor[67] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 18: FrontierVisitor < Object: superclass init_table position */},
+  {(bigint) 0 /* 19: FrontierVisitor < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -160154,6 +190439,8 @@ const classtable_elt_t VFT_native_interface___frontier___FrontierVisitor[67] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
   {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
@@ -160167,7 +190454,7 @@ const classtable_elt_t VFT_native_interface___frontier___FrontierVisitor[67] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 47: FrontierVisitor < FrontierVisitor: superclass init_table position */},
+  {(bigint) 1 /* 50: FrontierVisitor < FrontierVisitor: superclass init_table position */},
   {(bigint) native_interface___frontier___FrontierVisitor___header_top},
   {(bigint) native_interface___frontier___FrontierVisitor___header_top__eq},
   {(bigint) native_interface___frontier___FrontierVisitor___header},
@@ -160198,6 +190485,7 @@ const classtable_elt_t VFT_native_interface___frontier___FrontierVisitor[67] = {
 /* 7: Attribute FrontierVisitor::@casts */
 /* 8: Attribute FrontierVisitor::@mmmodule */
 /* 9: Attribute FrontierVisitor::@cprogram */
+static const char LOCATE_INIT_ATTRIBUTES__native_interface___frontier___FrontierVisitor[] = "init var of FrontierVisitor";
 void INIT_ATTRIBUTES__native_interface___frontier___FrontierVisitor(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
@@ -160207,25 +190495,26 @@ void INIT_ATTRIBUTES__native_interface___frontier___FrontierVisitor(val_t p0){
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__native_interface___frontier___FrontierVisitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./native_interface//frontier.nit:267 */
-  fra.me.REG[1] = NEW_Writer_compiling___compiling_writer___Writer___init();
+  /* native_interface/frontier.nit:361 */
+  fra.me.REG[1] = NEW_Writer_compiling_writer___Writer___init();
   ATTR_native_interface___frontier___FrontierVisitor_____atheader_top(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./native_interface//frontier.nit:270 */
-  fra.me.REG[1] = NEW_Writer_compiling___compiling_writer___Writer___init();
+  /* native_interface/frontier.nit:364 */
+  fra.me.REG[1] = NEW_Writer_compiling_writer___Writer___init();
   ATTR_native_interface___frontier___FrontierVisitor_____atheader(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./native_interface//frontier.nit:273 */
-  fra.me.REG[1] = NEW_Writer_compiling___compiling_writer___Writer___init();
+  /* native_interface/frontier.nit:367 */
+  fra.me.REG[1] = NEW_Writer_compiling_writer___Writer___init();
   ATTR_native_interface___frontier___FrontierVisitor_____atbody(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./native_interface//frontier.nit:276 */
+  /* native_interface/frontier.nit:370 */
   fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
   ATTR_native_interface___frontier___FrontierVisitor_____atfriendlys(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./native_interface//frontier.nit:279 */
+  /* native_interface/frontier.nit:373 */
   fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
   ATTR_native_interface___frontier___FrontierVisitor_____attypes(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./native_interface//frontier.nit:282 */
+  /* native_interface/frontier.nit:376 */
   fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
   ATTR_native_interface___frontier___FrontierVisitor_____atcasts(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -160239,6 +190528,7 @@ val_t NEW_native_interface___frontier___FrontierVisitor(void)
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
+static const char LOCATE_CHECKNEW_native_interface___frontier___FrontierVisitor[] = "check new FrontierVisitor";
 void CHECKNEW_native_interface___frontier___FrontierVisitor(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
@@ -160249,6 +190539,7 @@ void CHECKNEW_native_interface___frontier___FrontierVisitor(val_t p0){
   fra.me.meth = LOCATE_CHECKNEW_native_interface___frontier___FrontierVisitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = TAG_Bool(ATTR_native_interface___frontier___FrontierVisitor_____atheader_top(fra.me.REG[0])!=NIT_NULL);
@@ -160293,6 +190584,7 @@ void CHECKNEW_native_interface___frontier___FrontierVisitor(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
+static const char LOCATE_NEW_FrontierVisitor_native_interface___frontier___FrontierVisitor___init[] = "new FrontierVisitor frontier::FrontierVisitor::init";
 val_t NEW_FrontierVisitor_native_interface___frontier___FrontierVisitor___init(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t tmp;
@@ -160303,6 +190595,7 @@ val_t NEW_FrontierVisitor_native_interface___frontier___FrontierVisitor___init(v
   fra.me.meth = LOCATE_NEW_FrontierVisitor_native_interface___frontier___FrontierVisitor___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -160315,6 +190608,664 @@ val_t NEW_FrontierVisitor_native_interface___frontier___FrontierVisitor___init(v
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
+const classtable_elt_t VFT_c_tools___CCompilationUnit[70] = {
+  {(bigint) 299 /* 0: Identity */},
+  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "CCompilationUnit" /* 2: Class Name */},
+  {(bigint) 3 /* 3: CCompilationUnit < Object: superclass typecheck marker */},
+  {(bigint) 299 /* 4: CCompilationUnit < CCompilationUnit: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 0 /* 19: CCompilationUnit < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 50: CCompilationUnit < CCompilationUnit: superclass init_table position */},
+  {(bigint) c_tools___CCompilationUnit___header_c_base},
+  {(bigint) c_tools___CCompilationUnit___header_c_base__eq},
+  {(bigint) c_tools___CCompilationUnit___header_custom},
+  {(bigint) c_tools___CCompilationUnit___header_custom__eq},
+  {(bigint) c_tools___CCompilationUnit___header_c_types},
+  {(bigint) c_tools___CCompilationUnit___header_c_types__eq},
+  {(bigint) c_tools___CCompilationUnit___header_decl},
+  {(bigint) c_tools___CCompilationUnit___header_decl__eq},
+  {(bigint) c_tools___CCompilationUnit___body_decl},
+  {(bigint) c_tools___CCompilationUnit___body_decl__eq},
+  {(bigint) c_tools___CCompilationUnit___body_custom},
+  {(bigint) c_tools___CCompilationUnit___body_custom__eq},
+  {(bigint) c_tools___CCompilationUnit___body_impl},
+  {(bigint) c_tools___CCompilationUnit___body_impl__eq},
+  {(bigint) c_tools___CCompilationUnit___add_local_function},
+  {(bigint) c_tools___CCompilationUnit___add_exported_function},
+  {(bigint) c_tools___CCompilationUnit___compile_header_core},
+  {(bigint) c_tools___CCompilationUnit___compile_body_core},
+  {(bigint) c_tools___CCompilationUnit___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute CCompilationUnit::@header_c_base */
+/* 3: Attribute CCompilationUnit::@header_custom */
+/* 4: Attribute CCompilationUnit::@header_c_types */
+/* 5: Attribute CCompilationUnit::@header_decl */
+/* 6: Attribute CCompilationUnit::@body_decl */
+/* 7: Attribute CCompilationUnit::@body_custom */
+/* 8: Attribute CCompilationUnit::@body_impl */
+static const char LOCATE_INIT_ATTRIBUTES__c_tools___CCompilationUnit[] = "init var of CCompilationUnit";
+void INIT_ATTRIBUTES__c_tools___CCompilationUnit(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__c_tools___CCompilationUnit;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* c_tools.nit:26 */
+  fra.me.REG[1] = NEW_Writer_compiling_writer___Writer___init();
+  ATTR_c_tools___CCompilationUnit_____atheader_c_base(fra.me.REG[0]) = fra.me.REG[1];
+  /* c_tools.nit:29 */
+  fra.me.REG[1] = NEW_Writer_compiling_writer___Writer___init();
+  ATTR_c_tools___CCompilationUnit_____atheader_custom(fra.me.REG[0]) = fra.me.REG[1];
+  /* c_tools.nit:32 */
+  fra.me.REG[1] = NEW_Writer_compiling_writer___Writer___init();
+  ATTR_c_tools___CCompilationUnit_____atheader_c_types(fra.me.REG[0]) = fra.me.REG[1];
+  /* c_tools.nit:35 */
+  fra.me.REG[1] = NEW_Writer_compiling_writer___Writer___init();
+  ATTR_c_tools___CCompilationUnit_____atheader_decl(fra.me.REG[0]) = fra.me.REG[1];
+  /* c_tools.nit:39 */
+  fra.me.REG[1] = NEW_Writer_compiling_writer___Writer___init();
+  ATTR_c_tools___CCompilationUnit_____atbody_decl(fra.me.REG[0]) = fra.me.REG[1];
+  /* c_tools.nit:42 */
+  fra.me.REG[1] = NEW_Writer_compiling_writer___Writer___init();
+  ATTR_c_tools___CCompilationUnit_____atbody_custom(fra.me.REG[0]) = fra.me.REG[1];
+  /* c_tools.nit:45 */
+  fra.me.REG[1] = NEW_Writer_compiling_writer___Writer___init();
+  ATTR_c_tools___CCompilationUnit_____atbody_impl(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_c_tools___CCompilationUnit(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 9);
+  obj->vft = (classtable_elt_t*)VFT_c_tools___CCompilationUnit;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_c_tools___CCompilationUnit[] = "check new CCompilationUnit";
+void CHECKNEW_c_tools___CCompilationUnit(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_c_tools___CCompilationUnit;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_c_tools___CCompilationUnit_____atheader_c_base(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@header_c_base", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_c_tools___CCompilationUnit_____atheader_custom(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@header_custom", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_c_tools___CCompilationUnit_____atheader_c_types(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@header_c_types", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_c_tools___CCompilationUnit_____atheader_decl(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@header_decl", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_c_tools___CCompilationUnit_____atbody_decl(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@body_decl", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_c_tools___CCompilationUnit_____atbody_custom(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@body_custom", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_c_tools___CCompilationUnit_____atbody_impl(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@body_impl", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_CCompilationUnit_c_tools___CCompilationUnit___init[] = "new CCompilationUnit c_tools::CCompilationUnit::init";
+val_t NEW_CCompilationUnit_c_tools___CCompilationUnit___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_CCompilationUnit_c_tools___CCompilationUnit___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = NEW_c_tools___CCompilationUnit();
+  INIT_ATTRIBUTES__c_tools___CCompilationUnit(fra.me.REG[0]);
+  c_tools___CCompilationUnit___init(fra.me.REG[0], init_table);
+  CHECKNEW_c_tools___CCompilationUnit(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_c_tools___CFunction[59] = {
+  {(bigint) 295 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "CFunction" /* 2: Class Name */},
+  {(bigint) 3 /* 3: CFunction < Object: superclass typecheck marker */},
+  {(bigint) 295 /* 4: CFunction < CFunction: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 0 /* 19: CFunction < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 50: CFunction < CFunction: superclass init_table position */},
+  {(bigint) c_tools___CFunction___signature},
+  {(bigint) c_tools___CFunction___signature__eq},
+  {(bigint) c_tools___CFunction___decls},
+  {(bigint) c_tools___CFunction___decls__eq},
+  {(bigint) c_tools___CFunction___exprs},
+  {(bigint) c_tools___CFunction___exprs__eq},
+  {(bigint) c_tools___CFunction___to_writer},
+  {(bigint) c_tools___CFunction___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute CFunction::@signature */
+/* 3: Attribute CFunction::@decls */
+/* 4: Attribute CFunction::@exprs */
+static const char LOCATE_INIT_ATTRIBUTES__c_tools___CFunction[] = "init var of CFunction";
+void INIT_ATTRIBUTES__c_tools___CFunction(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__c_tools___CFunction;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* c_tools.nit:84 */
+  fra.me.REG[1] = NEW_Writer_compiling_writer___Writer___init();
+  ATTR_c_tools___CFunction_____atdecls(fra.me.REG[0]) = fra.me.REG[1];
+  /* c_tools.nit:85 */
+  fra.me.REG[1] = NEW_Writer_compiling_writer___Writer___init();
+  ATTR_c_tools___CFunction_____atexprs(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_c_tools___CFunction(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_c_tools___CFunction;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_c_tools___CFunction[] = "check new CFunction";
+void CHECKNEW_c_tools___CFunction(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_c_tools___CFunction;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_c_tools___CFunction_____atsignature(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@signature", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_c_tools___CFunction_____atdecls(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@decls", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_c_tools___CFunction_____atexprs(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;
+}
+static const char LOCATE_NEW_CFunction_c_tools___CFunction___init[] = "new CFunction c_tools::CFunction::init";
+val_t NEW_CFunction_c_tools___CFunction___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 = 0;
+  fra.me.meth = LOCATE_NEW_CFunction_c_tools___CFunction___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_c_tools___CFunction();
+  INIT_ATTRIBUTES__c_tools___CFunction(fra.me.REG[1]);
+  c_tools___CFunction___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_c_tools___CFunction(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ffi___ffi_base___ExternImportSet[60] = {
+  {(bigint) 263 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ExternImportSet" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ExternImportSet < Object: superclass typecheck marker */},
+  {(bigint) 263 /* 4: ExternImportSet < ExternImportSet: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 0 /* 19: ExternImportSet < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 50: ExternImportSet < ExternImportSet: superclass init_table position */},
+  {(bigint) ffi___ffi_base___ExternImportSet___callbacks},
+  {(bigint) ffi___ffi_base___ExternImportSet___callbacks__eq},
+  {(bigint) ffi___ffi_base___ExternImportSet___supers},
+  {(bigint) ffi___ffi_base___ExternImportSet___supers__eq},
+  {(bigint) ffi___ffi_base___ExternImportSet___types},
+  {(bigint) ffi___ffi_base___ExternImportSet___types__eq},
+  {(bigint) ffi___ffi_base___ExternImportSet___casts},
+  {(bigint) ffi___ffi_base___ExternImportSet___casts__eq},
+  {(bigint) ffi___ffi_base___ExternImportSet___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ExternImportSet::@callbacks */
+/* 3: Attribute ExternImportSet::@supers */
+/* 4: Attribute ExternImportSet::@types */
+/* 5: Attribute ExternImportSet::@casts */
+static const char LOCATE_INIT_ATTRIBUTES__ffi___ffi_base___ExternImportSet[] = "init var of ExternImportSet";
+void INIT_ATTRIBUTES__ffi___ffi_base___ExternImportSet(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__ffi___ffi_base___ExternImportSet;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ffi/ffi_base.nit:74 */
+  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
+  ATTR_ffi___ffi_base___ExternImportSet_____atcallbacks(fra.me.REG[0]) = fra.me.REG[1];
+  /* ffi/ffi_base.nit:77 */
+  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
+  ATTR_ffi___ffi_base___ExternImportSet_____atsupers(fra.me.REG[0]) = fra.me.REG[1];
+  /* ffi/ffi_base.nit:80 */
+  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
+  ATTR_ffi___ffi_base___ExternImportSet_____attypes(fra.me.REG[0]) = fra.me.REG[1];
+  /* ffi/ffi_base.nit:83 */
+  fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
+  ATTR_ffi___ffi_base___ExternImportSet_____atcasts(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ffi___ffi_base___ExternImportSet(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_ffi___ffi_base___ExternImportSet;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_ffi___ffi_base___ExternImportSet[] = "check new ExternImportSet";
+void CHECKNEW_ffi___ffi_base___ExternImportSet(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ffi___ffi_base___ExternImportSet;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_ffi___ffi_base___ExternImportSet_____atcallbacks(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@callbacks", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_ffi___ffi_base___ExternImportSet_____atsupers(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@supers", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_ffi___ffi_base___ExternImportSet_____attypes(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@types", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_ffi___ffi_base___ExternImportSet_____atcasts(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@casts", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_ExternImportSet_ffi___ffi_base___ExternImportSet___init[] = "new ExternImportSet ffi_base::ExternImportSet::init";
+val_t NEW_ExternImportSet_ffi___ffi_base___ExternImportSet___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_ExternImportSet_ffi___ffi_base___ExternImportSet___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = NEW_ffi___ffi_base___ExternImportSet();
+  INIT_ATTRIBUTES__ffi___ffi_base___ExternImportSet(fra.me.REG[0]);
+  ffi___ffi_base___ExternImportSet___init(fra.me.REG[0], init_table);
+  CHECKNEW_ffi___ffi_base___ExternImportSet(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ffi___ffi_base___FFIVisitor[59] = {
+  {(bigint) 255 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "FFIVisitor" /* 2: Class Name */},
+  {(bigint) 3 /* 3: FFIVisitor < Object: superclass typecheck marker */},
+  {(bigint) 255 /* 4: FFIVisitor < FFIVisitor: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* 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) standard___time___Object___get_time},
+  {(bigint) 0 /* 19: FFIVisitor < Object: superclass init_table position */},
+  {(bigint) standard___kernel___Object___object_id},
+  {(bigint) standard___kernel___Object___is_same_type},
+  {(bigint) standard___kernel___Object_____eqeq},
+  {(bigint) standard___kernel___Object_____neq},
+  {(bigint) standard___kernel___Object___output},
+  {(bigint) standard___kernel___Object___output_class_name},
+  {(bigint) standard___kernel___Object___exit},
+  {(bigint) standard___kernel___Object___sys},
+  {(bigint) standard___file___Object___printn},
+  {(bigint) standard___file___Object___print},
+  {(bigint) standard___file___Object___getc},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___stream___Object___poll},
+  {(bigint) standard___stream___Object___intern_poll},
+  {(bigint) standard___string___Object___to_s},
+  {(bigint) standard___string___Object___native_class_name},
+  {(bigint) standard___string___Object___class_name},
+  {(bigint) standard___string___Object___inspect},
+  {(bigint) standard___string___Object___inspect_head},
+  {(bigint) standard___string___Object___args},
+  {(bigint) standard___hash___Object___hash},
+  {(bigint) standard___math___Object___atan2},
+  {(bigint) standard___math___Object___pi},
+  {(bigint) standard___math___Object___srand_from},
+  {(bigint) standard___math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) ffi___FFIVisitor___compile},
+  {(bigint) 1 /* 51: FFIVisitor < FFIVisitor: superclass init_table position */},
+  {(bigint) ffi___ffi_base___FFIVisitor___tc},
+  {(bigint) ffi___ffi_base___FFIVisitor___tc__eq},
+  {(bigint) ffi___ffi_base___FFIVisitor___mmmodule},
+  {(bigint) ffi___ffi_base___FFIVisitor___mmmodule__eq},
+  {(bigint) ffi___ffi_base___FFIVisitor___compilation_unit},
+  {(bigint) ffi___ffi_base___FFIVisitor___compilation_unit__eq},
+  {(bigint) ffi___ffi_base___FFIVisitor___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute FFIVisitor::@tc */
+/* 3: Attribute FFIVisitor::@mmmodule */
+/* 4: Attribute FFIVisitor::@compilation_unit */
+static const char LOCATE_INIT_ATTRIBUTES__ffi___ffi_base___FFIVisitor[] = "init var of FFIVisitor";
+void INIT_ATTRIBUTES__ffi___ffi_base___FFIVisitor(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__ffi___ffi_base___FFIVisitor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ffi/ffi_base.nit:124 */
+  fra.me.REG[1] = NEW_CCompilationUnit_c_tools___CCompilationUnit___init();
+  ATTR_ffi___ffi_base___FFIVisitor_____atcompilation_unit(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ffi___ffi_base___FFIVisitor(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_ffi___ffi_base___FFIVisitor;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+static const char LOCATE_CHECKNEW_ffi___ffi_base___FFIVisitor[] = "check new FFIVisitor";
+void CHECKNEW_ffi___ffi_base___FFIVisitor(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ffi___ffi_base___FFIVisitor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_ffi___ffi_base___FFIVisitor_____attc(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@tc", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_ffi___ffi_base___FFIVisitor_____atmmmodule(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@mmmodule", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_ffi___ffi_base___FFIVisitor_____atcompilation_unit(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@compilation_unit", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+static const char LOCATE_NEW_FFIVisitor_ffi___ffi_base___FFIVisitor___init[] = "new FFIVisitor ffi_base::FFIVisitor::init";
+val_t NEW_FFIVisitor_ffi___ffi_base___FFIVisitor___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 = 0;
+  fra.me.meth = LOCATE_NEW_FFIVisitor_ffi___ffi_base___FFIVisitor___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  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_ffi___ffi_base___FFIVisitor();
+  INIT_ATTRIBUTES__ffi___ffi_base___FFIVisitor(fra.me.REG[2]);
+  ffi___ffi_base___FFIVisitor___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_ffi___ffi_base___FFIVisitor(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
 classtable_t TAG2VFT[4] = {NULL, (const classtable_t)VFT_standard___kernel___Int, (const classtable_t)VFT_standard___kernel___Char, (const classtable_t)VFT_standard___kernel___Bool};
 int main(int argc, char **argv) {
   prepare_signals();